【发布时间】:2010-09-29 12:46:15
【问题描述】:
假设您正在构建一个日志/预写日志存储系统。您可以通过(对于每个事务)附加数据(使用 write(2))、附加提交标记然后 fsync-ing 来简单地实现这一点吗?
要考虑的情况是,如果您对该日志进行大量写入然后对其进行 fsync,并且在 fsync 期间 出现故障。是否仅在刷新所有数据块后才刷新 inode 直接/间接块指针,还是不能保证按顺序刷新块?如果是后者,那么在恢复过程中,如果您在文件末尾看到一个提交标记,则您不能相信它与前一个提交标记之间的数据是有意义的。因此,您必须依靠另一种机制(至少涉及另一个 fsync)来确定日志文件的一致性(例如,写入/fsync 数据,然后写入/fsync 提交标记)。
如果有什么不同,主要是想知道 ext3/ext4 作为上下文。
【问题讨论】:
标签: linux fsync journaling