我有一个嵌入式 Linux 应用程序,它以相当慢的速度写入文件(50 字节/秒左右)。该文件位于硬盘驱动器 XFS 文件系统上。该文件是通过调用 write()
而不是 fwrite()
写入的。
如果我重新启动系统并检查文件,超过一分钟的数据丢失了。我认为默认的 Linux 行为是每 5s 同步磁盘缓存(我可以容忍 5s 丢失数据,所以他们对此没有问题)。我应该检查什么以了解为什么它很长时间没有同步? /proc/sys/vm/dirty_writeback_centisecs
是 500。我应该检查其他可变的东西吗?它看起来肯定是磁盘缓存问题 - 如果我 ls -l
文件,大小符合预期,并且在电源循环之后它小于以前。
最佳答案
五秒行为仅适用于 ext3/ext4 文件系统,您可以通过提交挂载选项(默认为 commit=5)来控制它。我不知道 XFS 的行为如何。
您的意思可能是 VM 子系统中的 30 秒限制。默认情况下,Linux 最多可以等待 30 秒来写入数据。您可以使用以下方式获取/设置限制:
# cat /proc/sys/vm/dirty_expire_centiseconds
3000
显示成百上千秒。
关于linux - 超过一分钟未提交到磁盘的小文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11884650/