日志文件系统和电源故障

Rya*_*yan 4 linux filesystems ext4 ext3 kernel

我听说即使是像 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.
Run Code Online (Sandbox Code Playgroud)

任何人都可以通过举例来提供更多的细节,当

  1. 腐败可能发生
  2. 日志文件系统避免了损坏

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

Mat*_*Ife 12

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

现代磁盘通常会对用于提高性能的请求进行重新排序(通过重新排序写入以减少整个请求列表的搜索),这称为Tagged Command Queuing

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

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

mount -o barrier=1 /dev/sda /mntpnt
Run Code Online (Sandbox Code Playgroud)

屏障的最大缺点是它们倾向于减慢 I/O,有时会显着降低(大约 30%),这就是它们默认不启用的原因。除此之外,当您开始在标准磁盘(如 LVM 或 Raid)之上添加逻辑分层时,事情就会变得很糟糕。LVM(相对最近)为大多数 LV 配置添加了屏障支持,而 mdadm 似乎已经有一段时间了。

  • @Gaia 碎片整理发生在文件层的连续数据在块层不连续时。数据在磁盘上的顺序和将数据放入磁盘的顺序是两件事。 (2认同)