我的公司销售一种“嵌入式设备”,它被实现为一个无头 Linux 盒,在内部 SSD 上带有 ext4。我们的一些用户习惯于在这个盒子上执行“保存当前设置”,然后在设备报告保存完成(即两秒钟后)后立即切断设备的电源。这会导致保存的文件偶尔损坏,因为在断电之前数据并不总是被刷新到 SSD。因此,我调整了我的软件以在写入文件后立即运行 /bin/sync(在关闭文件句柄之后但在通知用户保存完成之前)。这似乎解决了这个问题,但我的同事说一次调用 /bin/sync 是不够的,为了真正安全,我应该连续运行两次 /bin/sync。
在我看来,这听起来有点偏执……也许是早期版本的 Linux 或 unix 的习惯,其同步实用程序无法可靠地工作。他的建议有道理吗,还是应该调用 /bin/sync 就足够了?
答案1
此链接总结得很好——一次sync
调用就足够了。多次调用肯定是可以的(我自己也坚持这样做),但如果你以编程方式执行,你不会得到任何好处——这是你输入你真正想要的 5 个按键所花费的延迟。
当然真实的答案是正式阻止拔掉电源,而是提供一个关机功能让用户使用,但你总是要处理拔掉电源插头的问题……