题图:cetteup / CC0
笔记本电脑按住电源键强行关机,对电脑有伤害吗?
知友:老狼(5300+赞同)
这个问题很老了,有很多答案,但所有的答案都没有触及一个根本的问题。那就是按住电源键强制关机和拔电源关机并不一样,这点对笔记本和台式机都是如此。
按住电源键关机,在硬件上看就是拉住 PWRBTN# 引脚,保持一段时间。
在电源键按下后,也就是 PWRBTN# 被致高后,硬件会开启一个时钟 Timer,超过 5 秒还没有抬起,也就是 PWRBTN# 没有被制低,会触发关机动作。
这个关机动作并不是切断电源了事,而是遵循普通的关机硬件流程。
大家要知道,实际上 CPU 和主板上有很多 power rail,关机并不是简简单单切断电源就好了,有复杂的关闭各个 power rail 的时序,要按照一定的顺序来,大家可以看看芯片手册了解一下,这里不再详述。
这时进入的 ACPI 模式是 G2,不是拔电源的 G3。
也就是说按住电源键关机,看起来像一下关闭电源了,实际上还是要经历一个完整的关机硬件流程,和普通的正常关机在硬件流程上没有什么不同。
和正常关机有什么不同?
硬件流程上一样,那么和普通关机在什么地方不同了呢?差别就是操作系统被跳过了。
无论我们是鼠标点选关机,还是按了一下电源键关机(详见:按下电源键后发生了什么?电脑是如何关机的?),操作系统也就是 Windows 或者 Linux 都会受到通知,尝试安全关机。
操作系统和固件在 ACPI 规范下共同工作,不同分工,一步步安全关闭计算机。包括保存文件等等操作。跳过这些动作轻则未保存文件丢失,重则操作系统文件损坏而不能启动。
结论
所以说按住电源键关机对硬件完全没有损伤,硬盘也不会一下掉电而要用到掉电保护的功能。
和正常关机一样。真正需要担忧的是数据的安全问题。
其他
话说回来拔电源或者家里如果停电会伤害硬件吗?
实际上机械硬盘并不需要担心,真正需要担心的是 SSD 和主板。看过我们固态硬盘系列的读者应该都知道 FTL 的存在(杂谈闪存三:FTL)。
FTL 的逻辑块和物理块的转换表必须存储在 NAND Flash 上,否则会造成混乱;高端企业级硬盘上有大量的 DRAM 来加速,其中的内容也必须存储下来。
在正常关电的时候,和机械硬盘类似,SATA 的 STANDBY IMMEDIATE 命令和 SCSI 的 Stop 指令是合适的存储这些信息的机会。SSD 控制器可以从容的将这些信息写在合适的地方。
在意外掉电的情况下,情况就复杂不少。不知道大家注意过没有,现在 M.2 的 SSD 上面有很多很小的电容:
在 Vcc 没电的时候,这些电容的 gate 就会打开,会为主控争取 1ms 左右的时间。主控会立刻放弃现在所有没有存储的数据,而立刻开始存储 FTL 表,保证不会出大问题。
在企业级的 SSD 中,有的 DRAM 大小将近 1GB,而企业 SSD 的数据完整性要求极高,不容有失,不但 FTL 表要存好,DRAM 中没有存储过的,也必须全部存下来。
这就需要很大的电容,来争取更多的时间,如果我们拆开企业 SSD,就会发现很多大黄快:
这个 Micron 的 SSD 有 3 块,而 Intel 的部分 SSD,因为 DRAM 很大,大电容达到 8 块!
有些低端 SSD 厂商,没有电容,或者在长时间使用后电容能力下降。在掉电后,FTL 表并没有存下来。
而是采取在下一次上电的时候重建 FTL 表,这是用户就会发现 SSD 反应很慢,要一会才会恢复正常。SSD 固件写的不好的,SSD 不能用也是可能的。
对主板的伤害主要在于掉电前后的电涌和电流波动,不好的电源 + 劣质主板有可能损坏主板。这样是我推荐电源一定要选个好的原因之一。
继续阅读
阅读原文