日志文件系统和电源故障

我听说即使是像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. 腐败可能发生
  2. 日志文件系统可以避免腐败

[1] http://en.wikipedia.org/wiki/Journaling_file_system

由于磁盘内重新sorting,大多数现代磁盘也可能发生损坏。

现代磁盘通常会重新sorting用于加速性能的请求(通过重新sorting写入来使整个请求列表不那么困难),这就是所谓的标记命令队列 。

对磁盘上的日志的写入有可能被延迟,因为从当前的磁头位置开始,写入的顺序与操作系统请求的实际顺序不同,这意味着可以在日志之前提交块。

解决这个问题的方法是让操作系统在提交任何更多写入之前明确地等待日志已经被提交。 这被称为障碍。 大多数文件系统在默认情况下不使用这个,并且明确地需要使用挂载选项来启用。

 mount -o barrier=1 /dev/sda /mntpnt 

屏障的一个很大的缺点是他们倾向于减慢I / O速度,有时甚至会大幅下降(大约30%),这就是为什么他们没有被默认启用的原因。 除此之外,当您开始在LVM或Raid之类的标准磁盘上添加逻辑分层时,情况会变得很糟糕。 LVM(相对来说最近)增加了对大多数LVconfiguration的屏障支持,而mdad​​m似乎已经有一段时间了。

大多数日志文件系统(ext3 / 4,ntfs)只是在事务上保护元数据。 如果发生停电,用户数据可能会不一致,但元数据是好的。

Zfs和我认为xfs使用事务和日志来保护元数据和用户数据。

屏障是一种避免电力中断腐败的方法,但是这种安全function带来了性能的提升 。 两全其美(性能/屏障=closures实际上没有腐败风险)花费更多一点:使用具有非易失性,电池支持写入caching的设备。