似乎在严重崩溃中,特别是 UPS 无法保持系统运行时,某些日志内容会由于文件系统缓存而丢失。作为实验,我尝试使用同步选项安装 /var 分区。启动时磁盘噪音明显增加,但显示停止程序正在尝试运行 apt。磁盘发出重击声,而 apt 则坐在那里毫无反应。
挂载 /varsync 是否是一个错误,或者成功需要 relatime、strictatime 或 noatime 等选项之一?如果是这样,在 /var 上使用这些选项之一是否安全?
答案1
在文件系统级别启用sync
通常不是一个好的解决方案(通常,并非总是)。启用后sync
,它不仅会在每次写入时强制刷新缓冲区,还会削弱文件系统重新排序写入以优化 IO 的能力(通过写入更大的块)。这也会导致更高的碎片。
更好的解决方案是让您正在使用的任何应用程序都使用fsync
(或fdatasync
) 来代替。当应用程序写出数据时,它可以进行调用fsync
,将数据强制写入磁盘。这样,只有某些数据一直在同步,而不是整个文件系统。它也更加智能,因为fsync
一旦应用程序写入了所有数据就可以调用它,而不是每一个数据位。
如果您使用 syslog-ng,它能够fsync
在每个文件目标上启用(文档)。 rsyslog 可能也有这个功能,但我不知道。