fsck什么时候危险?


37

最近,由于一致性问题,我已经看到远程数据中心中计算机的根文件系统以只读方式重新安装。

重新启动时,显示此错误:

UNEXPECTED INCONSISTENCY: RUN fsck MANUALLY (i.e., without -a or -p options)

按照建议运行fsck,并使用手动接受更正后Y,更正了错误,并且系统现在可以正常运行。

现在,我认为将fsck配置为自动运行并修复所有内容会很有趣,因为在某些情况下(例如这种情况),唯一的选择是亲自到远程数据中心并将控制台连接到受影响的计算机。

我的问题是:默认情况下,为什么fsck要求手动干预?这种程序执行的校正如何以及何时是不安全的?在哪些情况下,系统管理员可能希望将建议的校正搁置一段时间(以执行一些其他操作)或将其全部中止?


15
如果开发人员100%确信该错误可以自动修复,那么它就不会是一个错误。
user253751 '16

Answers:


42

fsck如果底层硬件受到某种程度的损坏,肯定造成的弊大于利;坏的CPU,坏的RAM,快要死的硬盘,磁盘控制器坏了……在那种情况下,更多的损坏是不可避免的。

如有疑问,最好仅使用dd_rescue或其他工具拍摄损坏磁盘的映像,然后查看是否可以成功修复该映像。这样,您仍然可以使用原始设置。


4
我已经为失败的硬件做了很多工作,对此我表示同意。我想做的最后一件事是fsck,如果怀疑有任何类型的不良硬件。我还看到了一个低功耗事件以及随后的恢复,这被自动fsck大大延迟了。
jorfus

举一个具体的例子:我在一台带有磁盘控制器的机器上工作,该机器“随机地”(大约10 ^ 5的1倍)会将对任何设备上的XXXXXXYY的读或写转换为对设备上的000000YY的写。第一台设备。即,它经常将结构化的错误数据和非结构化的错误数据传送到启动扇区以及启动磁盘的各种关键文件系统结构。在这种情况下(数百万次读取)运行fsck可以消除恢复数据的任何剩余机会。
埃里克·塔

2
10 ^ 5中有1个是很多...曾经有10个字节的Mb。
尼尔森

1
@Nelson:有点……是存在“单块传输”的单位,而不是“字节”。因此,每百万个块有十个坏块写入(并且块远大于字节)。
埃里克·塔

21

您已经看到了一个fsck可行的示例,但是我已经看到了很多损坏的文件系统,这些文件根本无法成功运行。如果它可以全自动运行,那么您可能没有机会进行dd磁盘转储之类的操作,或者在许多情况下尝试修复之前,在许多情况下都是不错的主意。

这是永远都不会是一个好主意,试图在所有类似的东西自动的。

哦,现代服务器应该具有远程控制台或至少独立的救援系统,以在不将KVM机架拖到服务器的情况下从类似情况中恢复。


7
实际上,当不是这样时,最好这样说“ 从不,从不 ”。一个好主意的用例:在出现问题的情况下,可以从头开始快速重新创建服务器的主分区。实际上重要的数据通过远程文件系统访问,并具有适当的冗余性。我宁愿抓住fsck -p /and 的机会fsck -p /var,等等,工作正常,并在没有人工干预的情况下启动服务器,并冒着重大灾难的很小的,非零%的机会冒犯这些分区,我可以根据需要重新创建这些分区。
TOOGAM

1
如果可以轻松地重新安装系统,则只需执行此操作...
Sven

1
这将花费更长的时间。选项包括:A)冒险自动这样做。B)让某人告诉fsck自己装扮,然后一切正常。大约需要2分钟。停机直到发生这种情况。C)让某人重新安装操作系统。需要30分钟以上。您选择的是选项C?也许我们的主要不同之处在于,我fsck工作的时间所占的时间比您在答案中所引用的时间要多。我的主要要点不是系统设计(此cheap-o系统不使用远程控制台),而只是说“ 从不,从不 ”太强了,以至于不能准确
TOOGAM

我们只是同意不同意。
斯文

0

首先,您需要了解,对于现代的(经过日志处理的)文件系统,系统崩溃不会损坏文件系统,并且在启动时不需要fsck。

崩溃或系统重置后,Ext3,Ext4,ZFS,btrfs,xfs和所有现代FS保持100%一致。

像ext2或vfat这样的非日志记录的FS对于系统rootfs来说是一个很大的NOGO。

现在,如果您的系统在启动时需要fsck,则应问自己:首先是什么原因?

之后,您应该调查内核日志,以了解发生的时间和时间。您还应该及时返回日志以查找自错误开始以来的时间。您应该使用smartctl检查磁盘。等等...如果您需要在日志化的fs上使用fsck,则实际上可以确定您的硬件出现故障,假设fs未被管理员(使用dd等块级工具)或bug损坏。

因此,使用fsck来“解决”问题却没有调查和解决根本原因(通过更换/升级故障硬件/固件/软件)是愚蠢的。

至少可以说,做一个fsck,完成启动并感到高兴。声明“我在fsck上工作的时间比您引用的要多”,这让我想知道您对“ fsck上班”的含义。fsck可能会丢失进程中的某些文件和数据,从而使fs恢复到一致状态...您是否将其与备份进行了比较?许多人在不注意的情况下丢失文件或获取文件数据损坏...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.