Frage Wann ist FSCK gefährlich?


Kürzlich habe ich gesehen, dass das root-Dateisystem eines Rechners in einem entfernten Datencenter aufgrund von Konsistenzproblemen schreibgeschützt erneut bereitgestellt wird.

Beim Neustart wurde dieser Fehler angezeigt:

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

Nach dem Ausführen von fsck wie vorgeschlagen, und die Korrekturen manuell mit akzeptieren Y, die Fehler wurden korrigiert und das System ist jetzt in Ordnung.

Nun, ich denke, dass es interessant wäre, wenn fsck so konfiguriert wäre, dass alles automatisch ausgeführt und repariert wird, da die einzige Alternative in einigen Fällen (wie hier) persönlich in das entfernte Datenzentrum geht und eine Konsole an den betroffenen Rechner anfügt.

Meine Frage ist: Warum fragt fsck standardmäßig nach manuellen Eingriffen? Wie und wann wäre eine von einem solchen Programm durchgeführte Korrektur unsicher? In welchen Fällen kann der Systemadministrator eine vorgeschlagene Korrektur für einige Zeit beiseite lassen (um andere Operationen auszuführen) oder sie insgesamt abbrechen?


35
2018-06-28 09:36


Ursprung


Wenn die Entwickler zu 100% sicher waren, dass der Fehler automatisch behoben werden konnte, wäre das überhaupt kein Fehler. - immibis


Antworten:


fsck verursacht definitiv mehr Schaden als Nutzen, wenn die zugrunde liegende Hardware irgendwie beschädigt ist; schlechte CPU, schlechter RAM, eine austrocknende Festplatte, Festplattencontroller kaputt ... in diesen Fällen ist mehr Korruption unvermeidlich.

Im Zweifelsfall ist es eine gute Idee, nur ein Image der beschädigten Platte mit zu machen dd_rescue oder ein anderes Tool, und dann sehen, ob Sie das Bild erfolgreich reparieren können. Auf diese Weise haben Sie immer noch das ursprüngliche Setup zur Verfügung.


39
2018-06-28 10:20



Ich habe viel mit Hardwareversagen gearbeitet und stimme dem zu. Das letzte, was ich tun möchte, ist fsck, wenn eine schlechte Hardware vermutet wird. Ich habe auch ein Low-Power-Event und eine anschließende Wiederherstellung gesehen, die durch das automatische fsck stark verzögert wurde. - jorfus
Um ein konkretes Beispiel zu geben: Ich habe an einem Rechner mit einem Festplattencontroller gearbeitet, der "zufällig" (etwa 1 mal in 10 ^ 5) einen Lese- oder einen Schreibzugriff auf Block XXXXXXYY auf einem beliebigen Gerät zu einem Schreibzugriff auf Block 000000YY auf dem erstes Gerät. D.h., es hat häufig falsche und unstrukturierte falsche Daten in den Bootsektor und verschiedene kritische Dateisystemstrukturen der Bootdiskette gesprengt. Das Ausführen von fsck in einer solchen Situation (Millionen von Lesevorgängen) kann jede verbleibende Möglichkeit der Datenwiederherstellung eliminieren. - Eric Towers
1 in 10 ^ 5 ist eine Menge ... das sind 10 Bytes je Mb. - Nelson
@Nelson: Es ist irgendwie ... Die Einheit dort ist "Einzel-Block-Transfers", nicht "Bytes". Also zehn schlechte Blockschreibvorgänge pro Million Blöcke (und Blöcke sind wesentlich größer als Bytes). - Eric Towers


Du hast gesehen ein Beispiel wo fsck hat funktioniert, aber ich habe mehr als genug beschädigte Dateisysteme gesehen, wo es überhaupt nicht erfolgreich funktioniert hat. Wenn es vollautomatisch funktioniert, haben Sie möglicherweise keine Möglichkeit, Dinge wie a dd Disk-Dump oder etwas ähnliches, was in vielen Fällen eine ausgezeichnete Idee wäre, bevor eine Reparatur versucht wird.

Es ist niemals eine gute Idee, so etwas automatisch zu versuchen.

Oh, und moderne Server sollten Remote-Konsolen oder zumindest unabhängige Rettungssysteme haben, um sich von so etwas zu erholen, ohne ein KVM-Rack an den Server zu bringen.


20
2018-06-28 09:45



Eigentlich ist es keine gute Idee zu sagen "niemals"So, wenn es nicht wahr ist. Anwendungsfall, wo es eine gute Idee ist: Die Hauptpartitionen des Servers können bei Problemen schnell von Grund auf neu erstellt werden. Tatsächlich wird auf wichtige Daten über ein Remote-Dateisystem zugegriffen, mit geeignete Redundanz für diese Daten, ich würde lieber die Chance nutzen fsck -p / und fsck -p /varusw., funktioniert gut und Server ohne manuelle Intervention, und riskieren die kleine, nicht Null% Chance der Katastrophe auf die Partitionen, die ich nur bei Bedarf neu erstellen kann. - TOOGAM
Wenn das System einfach neu installiert werden kann, mache ich das einfach ... - Sven♦
Das würde länger dauern. Optionen sind: A) Risiko, es automatisch zu tun. B) Lassen Sie jemanden erzählen fsck putzen, und dann funktioniert alles gut. Dauert ungefähr 2 Minuten, wenn das. Ausfallzeit bis das passiert. C) Lassen Sie das Betriebssystem neu installieren. Dauert 30 Minuten. Sie wählen die Option C? Vielleicht ist ein wesentlicher Unterschied, den wir haben fsck Arbeiten Sie einen größeren Prozentsatz der Zeit als Sie in Ihrer Antwort zitieren. Mein Hauptpunkt war nicht das Systemdesign (dieses billige System verwendet keine Remote-Konsole), sondern nur das Sprichwort "niemals"war zu stark ein Ausdruck um genau zu sein - TOOGAM
Lasst uns einfach zustimmen. - Sven♦


Zuallererst müssen Sie verstehen, dass ein Systemabsturz bei modernen (journalisierten) Dateisystemen das Dateisystem nicht beschädigt und kein fsck beim Booten erforderlich ist.

Ext3, Ext4, ZFS, btrfs, xfs und alle modernen FS sind nach einem Absturz oder Systemreset 100% konsistent.

Non journalized FS wie ext2 oder vfat sind eine große NOGO für ein System rootfs.

Wenn Ihr System zur Boot-Zeit einen fsck benötigt, sollten Sie sich fragen: Was war der Grund dafür überhaupt?

Sie sollten danach Ihre Kernel-Logs untersuchen, um herauszufinden, wann und was passiert ist. Sie sollten auch rechtzeitig in den Protokollen nachlesen, seit wann der Fehler aufgetreten ist. Sie sollten Ihre Festplatten mit smartctl überprüfen. Usw... Wenn Sie ein fsck auf einem journalisierten fs benötigen, ist es praktisch sicher, dass Ihre Hardware versagt, vorausgesetzt, das fs wurde nicht durch einen Administrator (mit block-level Tools wie dd) oder durch einen Fehler beschädigt.

Es ist also dumm, fsck zu verwenden, um das Problem zu "reparieren", ohne die Ursache zu untersuchen und zu beheben (durch Ersetzen / Aktualisieren der fehlerhaften Hardware / Firmware / Software).

Einen fsck zu machen, den Stiefel zu beenden und glücklich zu sein ist naiv, um es milde auszudrücken. "Ich habe fsck einen größeren Prozentsatz der Zeit arbeiten als das, was du zitierst" lässt mich fragen, was du mit "fsck work" meinst. fsck hat möglicherweise Ihre fs in einen konsistenten Zustand gebracht, indem Sie einige Dateien und Daten verloren haben ... Haben Sie mit einem Backup verglichen? Viele Leute verlieren Dateien oder erhalten Dateidaten Korruption ohne es zu merken ...


0
2017-08-15 13:43