fsync的手册上写着:
如果底层硬盘启用了写缓存,那么当fsync() /fdat异步c()返回时,数据可能不会真正处于永久存储中。
是否有任何方法确保数据被物理写入磁盘?
发布于 2012-07-23 12:05:58
不,没有。
使用fsync,您可以告诉您的操作系统将其写入磁盘,而就操作系统而言,它已被写入磁盘。
如果磁盘是伪造的,那么不幸的是,这并不是真正可以改变的东西。有了适当的磁盘系统(即BBU设置),您可以简单地启用/禁用写缓存,以避免这种情况。
请注意,如果指定了O_DIRECT和O_SYNC标志,则应该将其写入磁盘:http://www.kernel.org/doc/man-pages/online/pages/man2/open.2.html
https://stackoverflow.com/questions/11612165
复制相似问题