- 日记模式
data=journal 模式提供完整的数据和元数据日志。所有新数据首先写入日志,然后写入其最终位置。
如果发生崩溃,可以重播日志,使数据和元数据处于一致状态。这种模式是最慢的,除非需要同时从磁盘读取数据和将数据写入磁盘,它的性能优于所有其他模式。启用此模式将禁用延迟分配和 O_DIRECT 支持。
在这里我有几个问题,请看一下:
配置data=journal,然后用户调用write(),是数据写入journal成功后write()返回,还是进入pagecache后返回用户成功?如果是后者,就说明journal是异步提交的,那么ext4的journal的意义就是保证文件系统本身的一致性,不保证用户数据不会丢失?
如果ext4异步提交日志,什么时候触发日志?
是否有任何其他文件系统允许在 write() 成功返回之前同步日志?
根据我本地实验的结果,推断该期刊应该是异步提交的。我使用了一个单独的 ssd 分区作为 journal_dev。我用fio测试写文件的时候发现journal_dev的io是断断续续的,不是一直都有IO。