我听说即使是日志文件系统,例如 EXT3/EXT4,在断电时也可能会损坏,例如来自维基百科[1]:
In the event of a system crash or power failure,
such file systems are quicker to bring back online and
less likely to become corrupted.
有人能通过举例提供更多细节吗
- 可能会发生腐败
- 日志文件系统可以避免损坏
答案1
由于磁盘重新排序,大多数现代磁盘也可能发生损坏。
现代磁盘通常会对用于提高性能的请求进行重新排序(通过重新排序写入,使整个请求列表的寻道次数减少),这称为标记命令队列。
磁盘上日志的写入可能会被延迟,因为当前从头部位置开始按照与操作系统请求的实际顺序不同的顺序写入更有效率,这意味着可以在日志之前提交块。
解决此问题的方法是让操作系统明确等待日志提交后再提交任何写入。这称为屏障。大多数文件系统默认不使用此屏障,需要使用挂载选项明确启用。
mount -o barrier=1 /dev/sda /mntpnt
屏障的最大缺点是它们往往会减慢 I/O 速度,有时会显著减慢(约 30%),这就是它们默认不启用的原因。除此之外,当您开始在 LVM 或 Raid 等标准磁盘上添加逻辑层时,情况会变得更加糟糕。LVM(相对较新)为大多数 LV 配置添加了屏障支持,而 mdadm 似乎已经拥有了一段时间。
答案2
大多数日志文件系统(ext3/4、ntfs)仅以事务方式保护元数据。如果发生断电,用户数据可能会出现不一致,但元数据不会受到影响。
Zfs 和我认为 xfs 使用事务和日志保护元数据和用户数据。