fsync
的联机帮助页说:
如果底层硬盘启用了写入缓存,则表示数据 fsync()/ fdatasync()时可能不会真正存在永久存储 返回。
有没有办法确保将数据物理写入磁盘?
答案 0 :(得分:3)
不,没有。
使用fsync
告诉您的操作系统将其写入磁盘,就操作系统而言,它已被写入磁盘。
如果磁盘是伪造的,那么不幸的是你不能真正改变它。 使用适当的磁盘系统(即BBU raid设置),您可以简单地启用/禁用写入缓存以避免这种情况。
请注意,如果您指定O_DIRECT
和O_SYNC
标志,则应将其写入磁盘:http://www.kernel.org/doc/man-pages/online/pages/man2/open.2.html