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