为什么需要定期运行fsck?

为什么需要定期运行fsck?

有些系统在经过这么多天或经过这么多次挂载后,每次启动时都会运行 fsck。例如,在我应该多久重新启动一次 Linux 服务器? - 服务器故障他们讨论了实现这一目标的各种策略。为什么这是必要的?如果没有一定的背景,就很难选择策略。

Marc 的博客:btrfs - Btrfs 提示:Btrfs 清理和 Btrfs 文件系统修复,作者声称如果您有文件系统,则没有必要btrfs,并且在数据降级 - 维基百科他们讨论了类似的自我修复功能zfs。也许这是一个ext4特定的要求?

完整性驱动器 - 零静默数据损坏容忍度设计他们暗示宇宙射线不是磁盘的一个因素。但是,CPU 中损坏的数据是否会保留在磁盘上,部分解释了运行的必要性fsck?尽管如此,我几乎没有看到任何fsck讨论统计数据 - 宇宙射线:它们影响程序的概率是多少? - 堆栈溢出

答案1

ZFS 和 Btrfs 背后的想法是将每个块存储两次或更多次,并且每个块上的指针都有一个校验和。

如果发生错误,校验和将用于确定哪个块是好的块。清理是后台任务,它验证每个块是否正常(比较校验和)。然后一切都得到验证。

Fsck 是一种不太深入的验证。它通常用于可能具有一些不一致元数据的文件系统。例如,它将检查标记为空闲的块是否未被文件使用以及类似的其他问题。当文件系统可能因电力短缺、内核恐慌或其他此类问题而损坏时,就会这样做。如今,文件系统具有日志功能(或其他功能,如写入时复制),可以防止这种不一致。大多数情况下不再需要 Fsck,除非存在数据降级(但 Fsck 非常有限)。注意:FAT 没有日志功能。如果您不小心移除了 USB 驱动器,则可能需要对其运行 fsck。

相关内容