[英]Can the data=journal mode of EXT4 avoid user data loss?
- 日记模式
data=journal 模式提供完整的数据和元数据日志。 所有新数据首先写入日志,然后写入其最终位置。
如果发生崩溃,可以重播日志,将数据和元数据带入一致的 state。 这种模式是最慢的,除非需要同时从磁盘读取数据和将数据写入磁盘,它的性能优于所有其他模式。 启用此模式将禁用延迟分配和 O_DIRECT 支持。
在这里我有几个问题,请看一下:
配置data=journal,然后用户调用write(),是数据写入journal成功后write()返回,还是进入pagecache后返回用户成功? 如果是后者,就说明journal是异步提交的,那么ext4的journal的意义就是保证文件系统本身的一致性,不保证用户数据不会丢失?
如果ext4异步提交日志,什么时候触发日志?
是否有任何其他文件系统允许在 write() 成功返回之前同步日志?
根据我本地实验的结果,推断该期刊应该是异步提交的。 我使用了一个单独的 ssd 分区作为 journal_dev。 我用fio测试写文件的时候发现journal_dev的io是断断续续的,不是一直都有IO。
open()
上使用任何额外选项)。commit=
)并且可能在任何待处理的sync
/ fsync
等被允许完成之前。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.