Was bedeutet ein permanenter ZFS-Fehler?

18

Einige permanent errorswurden heute in meinem Pool gemeldet.

  pool: seagate3tb
 state: ONLINE
status: One or more devices has experienced an error resulting in data
        corruption.  Applications may be affected.
action: Restore the file in question if possible.  Otherwise restore the
        entire pool from backup.
   see: http://zfsonlinux.org/msg/ZFS-8000-8A
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        seagate3tb  ONLINE       0     0    28
          sda       ONLINE       0     0    56

errors: Permanent errors have been detected in the following files:

        /mnt/seagate3tb/Install.iso
        /mnt/seagate3tb/some-other-file1.txt
        /mnt/seagate3tb/some-other-file2.txt

Bearbeiten: Ich bin mir sicher, ob diese CKSUMWerte korrekt sind. Ich habe Daten redigiert und diese möglicherweise versehentlich entstellt. Sie können 0 gewesen sein. Leider kann ich keine abschließende Antwort in meinen Notizen finden und die Fehler sind jetzt behoben, daher bin ich nicht sicher, aber alles andere ist korrekt / spiegelt wider, was zpool gemeldet hat.

/mnt/seagate3tb/Install.iso ist eine Beispieldatei mit einem dauerhaften Fehler.

Hier bin ich verwirrt. Wenn ich meine "permanent fehlerhaften" Dateien mit Install.isoeiner Sicherung derselben Datei auf einem anderen Dateisystem vergleiche, sehen sie identisch aus.

shasum "/mnt/seagate3tb/Install.iso"
1ade72fe65902b2a978e5504aaebf9a3a08bc328  /mnt/seagate3tb/Install.iso
shasum "/mnt/backup/Install.iso"
1ade72fe65902b2a978e5504aaebf9a3a08bc328  /mnt/backup/Install.iso
cmp /mnt/seagate3tb/Install.iso /mnt/backup/Install.iso
diff /mnt/seagate3tb/Install.iso /mnt/backup/Install.iso

Die Dateien scheinen identisch zu sein. Außerdem funktioniert die Datei einwandfrei. Wenn ich es in einer Anwendung verwende, verhält es sich so, wie ich es erwartet hätte.

Wie es in den Dokumenten heißt :

Datenkorruptionsfehler sind immer schwerwiegend.

Aufgrund meiner rudimentären Dateiüberprüfungen bin ich mir jedoch nicht sicher, ob ich die Definition von verstehe fatal.

Status: Auf einem oder mehreren Geräten ist ein Fehler aufgetreten, der zu einer Beschädigung der Daten geführt hat. Anwendungen können betroffen sein.

Aktion: Stellen Sie die betreffende Datei nach Möglichkeit wieder her. Andernfalls stellen Sie den gesamten Pool von der Sicherung wieder her.

Vielleicht fehlt mir etwas, aber soweit ich das beurteilen kann, scheint die Datei vollkommen in Ordnung zu sein und muss trotz der Empfehlung von ZFS weder wiederhergestellt noch beschädigt werden.

Ich habe andere Artikel mit dem gleichen Fehler gesehen , habe aber noch keine Antwort auf meine Frage gefunden.

Was ist der dauerhafte Fehler mit der Datei? Gibt es ein Problem auf niedrigerer Ebene mit der Datei, das mir nicht sofort auffällt? Wenn ja, warum würde dies nicht durch shasumeinen Unterschied in der Datei erkannt werden ?

Aus der Sicht eines Laien sehe ich nichts, was auf einen Fehler in dieser Datei hindeutet.

Will Haley
quelle
Hast du Schnappschüsse?
Ewwhite
3
Darf ich Sie bei ServerFault begrüßen, da dies noch niemand gesagt hat? Dies scheint mir eine ausgezeichnete erste Frage zu sein, und ich hoffe, dass sie weiterhin lehrreiche Antworten liefert. Ich hoffe, Sie entscheiden sich dafür, bei SF zu bleiben und weitere Beiträge zu leisten.
MadHatter unterstützt Monica
Vielen Dank, dass Sie @ MadHatter! Ich bedanke mich für Ihr freundliches Willkommen und werde mit Sicherheit bei SF bleiben. Ich habe es bereits zu meiner kurzen Liste der SE-Communities hinzugefügt.
Will Haley

Antworten:

22

Der Wortlaut von zpool statusist etwas irreführend. Ein permanenter Fehler (in diesem Kontext) weist darauf hin, dass ein E / A-Fehler aufgetreten ist und im SPA-Fehlerprotokoll (Storage Pool Allocator) für diesen Pool protokolliert wurde. Dies bedeutet nicht unbedingt, dass die Daten unwiderruflich beschädigt sind.

Was Sie tun sollten, ist ein Lauf zpool scrubauf dem Pool. Nach Abschluss der Bereinigung wird das SPA-Fehlerprotokoll gedreht und zeigt keine Fehler mehr vor der Bereinigung an. Wenn das Scrub keine Fehler feststellt, zpool statuswerden keine "permanenten" Fehler mehr angezeigt.

In Bezug auf die Dokumentation heißt es, dass nur "schwerwiegende Fehler" auf diese Weise protokolliert werden. Ein schwerwiegender Fehler ist ein E / A-Fehler, der von ZFS nicht automatisch behoben werden konnte und daher einer Anwendung als fehlgeschlagene E / A angezeigt wurde. Wenn dagegen die E / A sofort erfolgreich wiederholt wurde oder wenn die logische E / A von einem redundanten Gerät erfüllt wurde, wird dies nicht als schwerwiegender Fehler angesehen und daher nicht als Datenverfälschungsfehler protokolliert.

Ein schwerwiegender Fehler bedeutet nicht unbedingt einen dauerhaften Datenverlust, sondern bedeutet lediglich, dass er zu dem Zeitpunkt nicht behoben werden konnte, bevor er an die Anwendung weitergegeben wurde. Beispielsweise kann ein loses Kabel oder ein fehlerhafter Controller vorübergehend schwerwiegende Fehler verursachen, die von ZFS als "permanent" bezeichnet werden. Ob es sich wirklich um ein Problem handelt, hängt von der Art der E / A ab und davon, ob die Anwendung in der Lage ist, E / A-Fehler zu beheben.

EDIT: Stimmen Sie voll und ganz mit @bahamat überein, dass Sie so schnell wie möglich in Redundanz investieren sollten.

Tom Shaw
quelle
Das SPA-Fehlerprotokoll, das dies als "permanent" meldet, scheint in der Tat etwas irreführend zu sein. Sie zpool scrubhaben genau das getan, was Sie @ tom-shaw vorgeschlagen haben, und Ihre Erklärung ist absolut sinnvoll. Nach dem Scrub werden auf diesem Array keine "dauerhaften Fehler" mehr angezeigt. Ich habe nicht über schwerwiegende Fehler im Zusammenhang mit einem fehlgeschlagenen Lesevorgang nachgedacht. Ich denke, es muss nur ein vorübergehender E / A-Fehler bei einem Lesevorgang gewesen sein, wie Sie vorschlagen. Ich stimme auch voll und ganz der Notwendigkeit von Redundanz zu.
Will Haley
Tom, ich habe dich eine Weile nicht gesehen. Willkommen zurück.
The-Wabbit
7

Ein permanenter Fehler bedeutet, dass in der Datei ein Prüfsummenfehler aufgetreten ist und nicht genügend Replikate zum Reparieren vorhanden waren. Dies bedeutet, dass mindestens ein Lesevorgang aufgrund eines E / A-Fehlers beschädigte Daten zurückgegeben hat. Wenn was auch immer den Lesevorgang erhalten hat, dann schreiben Sie das zurück in die gleiche Festplattendatei, die Sie jetzt für eine irreparable Datenbeschädigung halten würden.

Wenn Sie sich Ihre Pool-Konfiguration ansehen, haben Sie anscheinend keine Redundanz. Das ist sehr gefährlich. Sie erhalten keine der Selbstheilungs Vorteile von ZFS, aber es wird die Lage sein , Ihnen zu sagen , wenn es zur Beschädigung von Daten hat. Normalerweise korrigiert ZFS fehlerhafte Lesevorgänge automatisch und unbemerkt, in Ihrem Fall jedoch nicht. Es sieht auch so aus, als ob Sie bereits ausgeführt wurden, zpool clearda die CKSUMAnzahl 0für beide Laufwerke gilt.

Leider gibt es ohne Replikate wirklich keine Möglichkeit, es zu wissen.

Bahamat
quelle
2
Würde zpool clearauch die Fehlermeldung selbst gelöscht, zählt nicht nur der Fehler? Es ist seltsam, dass die Meldung weiterhin angezeigt wird, aber keine Fehler angezeigt werden.
user121391
2
Entschuldigen Sie. Ich hatte die Dateien aus Datenschutzgründen aus der Liste der permanenten Fehler gestrichen. Bei der Bearbeitung dieser Ausgabe habe ich auch die CKSUM-Zählungen entstellt und wertvollen Kontext verloren. Ich habe die Frage bearbeitet, um die Realität widerzuspiegeln. @ user121391
Will Haley
In diesem Fall liegt wahrscheinlich irgendwo ein Hardwarefehler vor, wenn die angezeigten Zahlen korrekt sind. Da beide Festplatten CKSUM countsmöglicherweise den Controller, das Kabel oder eine gemeinsam genutzte Hardware zwischen den beiden Festplatten anzeigen. Es ist auch möglich, dass beide Festplatten ausfallen. In jedem Fall unterstreicht dies die Notwendigkeit, so schnell wie möglich Redundanz hinzuzufügen und die angegebenen Dateien auf Beschädigung zu untersuchen.
Bahamat
OP scheint keine Redundanz zu haben; Der vdev hat 56 CKSUM-Fehler und der Pool hat 28 CKSUM-Fehler. Ich bin mir also nicht sicher, worauf Sie sich in Ihrem vorherigen Kommentar bei "beiden Datenträgern" bezogen haben. Ich stimme Ihrem Standpunkt zum Wert der Redundanz zu.
ein Lebenslauf
Du hast recht. Ich habe den Poolnamen falsch gelesen, als wäre es eine andere Festplatte. Vielen Dank für den Hinweis.
Bahamat