确保fsync完成其工作

时间:2012-07-23 12:03:43

标签: c++ c linux filesystems

fsync的联机帮助页说:

  

如果底层硬盘启用了写入缓存,则表示数据   fsync()/ fdatasync()时可能不会真正存在永久存储   返回。

有没有办法确保将数据物理写入磁盘?

1 个答案:

答案 0 :(得分:3)

不,没有。

使用fsync告诉您的操作系统将其写入磁盘,就操作系统而言,它已被写入磁盘。

如果磁盘是伪造的,那么不幸的是你不能真正改变它。 使用适当的磁盘系统(即BBU raid设置),您可以简单地启用/禁用写入缓存以避免这种情况。

请注意,如果您指定O_DIRECTO_SYNC标志,则将其写入磁盘:http://www.kernel.org/doc/man-pages/online/pages/man2/open.2.html