是否同步/var?

cas*_*xer 5 logs mount failure-resistance

似乎在严重崩溃中,尤其是 UPS 无法保持系统运行时,日志的某些内容会由于文件系统缓存而丢失。作为实验,我尝试使用同步选项挂载 /var 分区。启动时有更多的磁盘噪音,但显示停止器试图运行 apt。磁盘砰的一声响起,而 apt 坐在那里没有反应。

挂载 /var sync 是错误,还是成功所需的选项之一,例如 relatime、strictatime 或 noatime?如果是这样,在 /var 上使用这些选项之一是否安全?

phe*_*mer 6

sync在文件系统级别启用通常不是一个好的解决方案(通常,并非总是如此)。当sync启用时,它不仅迫使在每一个写缓冲区刷新,这也否定了文件系统的能力,重新排序写操作优化IO(通过写更大的块)。这也导致更高的碎片化。

更好的解决方案是获取您正在使用的任何应用程序来使用fsync(或fdatasync)。当应用程序写出数据时,它可以调用fsync将强制该数据输出到磁盘。这样,只有某些数据一直在同步,而不是整个文件系统。它也更智能一点,因为fsync一旦应用程序写入所有数据就可以调用它,而不是每一点。

如果您使用的是 syslog-ng,它可以启用fsync每个文件目标(文档)。rsyslog 可能也有这个功能,但我不知道。