/etc/fstab 中有一个选项可以决定发生错误时如何处理磁盘。errors={continue|remount-ro|panic}
内核可以捕获哪些可能的磁盘错误? 是否有其他类型的磁盘错误可能被内核忽略?
答案1
在此上下文中检测到的错误(fstab 的 mount 选项errors=
)基本上是由于磁盘损坏或文件系统严重损坏而导致的写入错误。
请注意,硬盘控制器通常会使用正常扇区/块的动态重映射来屏蔽由于坏块而导致的写入错误。但是,如果磁盘没有其他备用扇区,它将引发不可纠正的错误,从而触发文件系统操作errors=
。
同样,严重损坏的文件系统也会errors=
因无法读取/写入某些元数据块而触发该操作。
答案2
是的,有一个 mount 选项可以确定文件系统在出现严重错误时的行为。您可以在 fstab 文件中像这样写一行(仅作为示例):
/dev/sda5 /srv/foo btrfs relatime,errors=continue 0 1
“Continue”、“remount-ro”和“panic”是此字段中的三个选项。
对于您的第二个问题,重新措辞是合适的,因为应该问“这个特定的文件系统可以捕获什么错误?”这个答案完全取决于您使用的文件系统、文件系统的版本以及您如何检查它。
尽管如此,大多数文件系统在使用 调用检查器时都可以纠正一些非常严重的错误fsck
。几乎所有文件系统都必须处于离线状态才能进行纠正 - 如果在纠正期间处于在线状态,则会产生严重后果。BTRFS 可以执行在线文件系统清理(有限的完整性检查),但还具有针对严重文件系统错误的离线修复功能。
在各种情况下,所有类型的文件系统中的错误都可能被忽视。一种非常常见的错误涉及磁盘在文件系统接口之外更改其数据 - 要么是因为磁盘出现故障,要么是因为它在块级别被直接操作。不过,这只是一个有限的例子。有各种创造性和可怕的方法来破坏数据,但大多数方法都会由正在使用的文件系统模块报告(假设文件系统在线)。