Windows 系统冷关机可能会损坏系统文件,为什么以Windows 基础的街机基板支持冷关机?
嘿又是个我实际做过研究的奇怪问题。
是这样,我之前的工作做过一些关于最小系统的事情,这个OS的全部功能就是通过PXE启动后运行一些hardware inventory的事情(就差不多等于把所有硬件都跑起来然后记录一下各种ID、SN什么的),做一些自动化操作,向远程发一些数据,然后关机。然后这个操作因为合规性限制,不能用Linux,只能用Win。
同时,由于并行数量大、运行时间长(就,比如啊,有的牌子的RAID Controller我读一个ID需要1100秒),所以这个OS的默认部署方式是PXE启动但直接格掉本地磁盘把自己装上去。而且,在这个过程中并不能保证电源(网都难保证),所以这个OS部署要尽可能可靠,不能动不动就需要重新PXE boot,也最好不能操作到一半死那儿了就没人知道。
这种神奇的需求讲实话世界上可能真的只有我做过…但这个答案的重点是回答这个问题——Windows冷关机一定会损坏系统文件吗,和什么情况下可以支持冷关机?
那么先说结论——冷关机因素本身的故障率可以有效地控制在万分之一以下。我们怎么知道万分之一以下的?实际冷关机了一万次,没出问题,并且操作系统的数据每次都有全部验证过证明没有出问题。当年跑这个测试跑了一个半月。
当然这个结论是有限制的,比如说PXE Boot过程中、正在将OS写入磁盘的时候冷关机那极大概率是不可能好的。所以结论说的是OS部署完成后、操作进行中的时候冷关机的影响。至于做到这个程度的原理也很简单——磁盘写入同步。读随便读,但是写入是在IO Driver层面做了一个同步,每秒只写入一次。当然能这么做是因为需要写入的量很小。
所以这个结论套用到街机上,大概也是同样道理——街机上需要写入持久存储的机会极少。正常玩街机的时候只有在保存高分的时候需要实际写入持久存储,甚至有的店可能连这个都不写入持久存储。而Windows启动过程有太多方法避免对存储进行写入了——在很多层面上都可以将系统写入转到纯内存,确保持久存储只读取。
当然冷关机和热插拔一样,需要对应的硬件设计来保证上电、掉电顺序是合理的,来防止硬件层面的损坏。但至少PC AT/ATX标准内这一切都应该有所保证。