2

手册页fsync说:

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

有什么方法可以确保数据物理写入磁盘?

4

1 回答 1

3

不,那里没有。

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

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

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

于 2012-07-23T12:05:58.123 回答