【发布时间】:2015-04-25 05:33:28
【问题描述】:
通过write(或fwrite)写入的数据是否保证按顺序持久化到磁盘?特别是在容错方面。如果系统在写入过程中发生故障,它是否会表现得好像首先写入第一个字节并且写入中途停止(而不是写入随机块)。
另外,对write/fwrite 的连续调用是否保证是连续的?根据 POSIX,我发现只有调用 read 才能保证考虑以前的 write。
我问的是我正在创建一个持久保存到磁盘的容错数据存储。我的写作逻辑顺序是这样的,错误不会破坏数据,但如果不遵守逻辑顺序,我就有问题了。
注意:我不是在问是否保证持久性。只有当我的写作呼吁最终坚持下去时,他们才会遵守我实际写作的顺序。
【问题讨论】:
-
您介意更详细地定义“fail”吗?
EIO,还是什么? -
@alk 任何故障,程序突然中止,断电,冻结。只是阻止将挂起的磁盘写入刷新到磁盘的任何东西。
-
我认为没有这样的保证。