![是否存在任何 Linux 机制可以在断电时紧急刷新文件系统缓冲区?](https://linux22.com/image/783221/%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%E4%BB%BB%E4%BD%95%20Linux%20%E6%9C%BA%E5%88%B6%E5%8F%AF%E4%BB%A5%E5%9C%A8%E6%96%AD%E7%94%B5%E6%97%B6%E7%B4%A7%E6%80%A5%E5%88%B7%E6%96%B0%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E7%BC%93%E5%86%B2%E5%8C%BA%EF%BC%9F.png)
计算机的一个常见“问题”是突然断电。由于系统突然断电,它没有机会将缓存的文件系统数据刷新到磁盘,这意味着下次系统重新开机时,一些最近“写入”的用户数据可能不存在于磁盘上。
日志文件系统有助于缓解这种情况(即它们通常可以防止文件系统本身被破坏)但它们不能保证用户的文件都将完全保留。
我注意到一些台式机电源具有相当大的“惯性” - 即你可以将计算机的电源插头从墙上拔出,计算机将在最终关闭之前保持运行一段可察觉的时间(例如几秒钟) - 因为它依靠电源内部电容器中剩余的电量运行。
我的问题是,是否有任何协议或标准(Linux 支持)可以让电源硬件通知 Linux OS 它已经失去了输入交流电源,因此很可能在接下来的几秒钟内发生故障?然后 Linux 可以通过快速“紧急”将所有脏文件系统数据刷新到 SSD 来应对这种情况,并希望在系统发生故障之前将所有数据都写入 SSD。(如果任何数据没有及时写入磁盘,另一方面,情况不会比没有此功能时更糟)
有这样的功能吗?如果有,我应该在 Google 中输入哪些关键字来了解它?
答案1
不,这是不可能的。电源将没有足够的电力来为系统供电足够长的时间。你看到的“惯性”可能是幸运的事件(或不幸的:有人浪费钱买了一个哇哇哇比机器所需的电源更强大的电源,并且它不能合理地加载)。
UPS 是专门为此设计的。有标准协议 (USB HID UPS) 和非标准协议 (例如apcupsd
APC UPS) 可实现此目的,当 UPS 电池耗尽且剩余运行时间过低时,可按顺序关闭。