Beheben Sie einen permanenten ZFS-Fehler in einem fehlerfreien Pool

20

Ich habe heute meinen Pool gesäubert und nach Abschluss des Schrubbens festgestellt, dass ein Fehler aufgetreten ist, der eine Datei beschädigt hat. Die Datei war mir egal, deshalb habe ich sie gelöscht. Leider bleibt der Fehler bestehen (jetzt referenziert durch eine hexadezimale ID und keinen Dateinamen), und ich weiß nicht, wie ich ihn beseitigen soll.

  • Sollte ich besorgt sein? Bin ich noch nicht wirklich frei von diesem Fehler?
  • Kann ich den Fehler beheben? Wenn die Datei nicht mehr vorhanden ist, möchte ich diesen Fehler in Zukunft nicht mehr sehen.

Als Referenz sind hier die Befehle, die ich ausgegeben habe, und die Ausgabe mit Anmerkungen:

Status überprüfen

kevin@atlas:~$ sudo zpool status -v

pool: zstorage
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: zfsonlinux.org/msg/ZFS-8000-8A
scan: scrub repaired 1.81M in 7h19m with 1 errors on Wed Feb 19 10:04:44 2014
config:

    NAME                                          STATE     READ WRITE CKSUM
    zstorage                                      ONLINE       0     0     0
    raidz1-0                                    ONLINE       0     0     0
        ata-WDC_WD30EZRX-00DC0B0_WD-WCC1T1735698  ONLINE       0     0     0
        ata-WDC_WD30EZRX-00DC0B0_WD-WMC1T0506289  ONLINE       0     0     0
        ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ2711600  ONLINE       0     0     0

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

        /zstorage/owncloud/kevin/files/Archives/Music/Kev Rev 7/graveyard/Old/Four Tet/Pause/03 Harmony One.mp3

Zum Root wechseln und die Datei löschen - ich brauche sie nicht

kevin@atlas:~$ sudo -i

root@atlas:~# cd /zstorage/owncloud/kevin/files/Archives/Music/Kev\ Rev\ 7/graveyard/Old/Four\ Tet/Pause/

root@atlas:/zstorage/owncloud/kevin/files/Archives/Music/Kev Rev 7/graveyard/Old/Four Tet/Pause# rm 03\ Harmony\ One.mp3

Status erneut prüfen

root@atlas:/zstorage/owncloud/kevin/files/Archives/Music/Kev Rev 7/graveyard/Old/Four Tet/Pause# zpool status -v

pool: zstorage
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: zfsonlinux.org/msg/ZFS-8000-8A
scan: scrub repaired 1.81M in 7h19m with 1 errors on Wed Feb 19 10:04:44 2014
config:

    NAME                                          STATE     READ WRITE CKSUM
    zstorage                                      ONLINE       0     0     1
    raidz1-0                                    ONLINE       0     0     2
        ata-WDC_WD30EZRX-00DC0B0_WD-WCC1T1735698  ONLINE       0     0     0
        ata-WDC_WD30EZRX-00DC0B0_WD-WMC1T0506289  ONLINE       0     0     0
        ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ2711600  ONLINE       0     0     0

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

        zstorage:<0x9f115>

Oh oh. Vielleicht kann ich den Fehler beheben?

root@atlas:/zstorage/owncloud/kevin/files/Archives/Music/Kev Rev 7/graveyard/Old/Four Tet/Pause# zpool clear zstorage

root@atlas:/zstorage/owncloud/kevin/files/Archives/Music/Kev Rev 7/graveyard/Old/Four Tet/Pause# zpool status -v

pool: zstorage
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: zfsonlinux.org/msg/ZFS-8000-8A
scan: scrub repaired 1.81M in 7h19m with 1 errors on Wed Feb 19 10:04:44 2014
config:

    NAME                                          STATE     READ WRITE CKSUM
    zstorage                                      ONLINE       0     0     0
    raidz1-0                                    ONLINE       0     0     0
        ata-WDC_WD30EZRX-00DC0B0_WD-WCC1T1735698  ONLINE       0     0     0
        ata-WDC_WD30EZRX-00DC0B0_WD-WMC1T0506289  ONLINE       0     0     0
        ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ2711600  ONLINE       0     0     0

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

        zstorage:<0x9f115>

Das sieht nicht gut aus!

Kevin Wood
quelle
Ist die Datei Teil eines Snapshots (zfs list -t all) und wird sie daher beibehalten?
Lundman

Antworten:

14

Schrubben Sie Ihren Pool erneut (falls noch nicht geschehen):

zpool scrub zstorage

Dieser Fehler weist darauf hin, dass Inode <0x9f115> beschädigt ist (beim Löschen der Datei wurde die Inode-Zuordnung für Dateiname-> unterbrochen, sodass nur der Inode gemeldet wird). Entweder ist die Datei noch geöffnet, oder die Metadaten müssen nur bereinigt werden (was ein Scrub tun sollte).

Um den Fehler zu beheben, wenn ein Scrub nicht ausgeführt werden soll, müssen Sie sich mit zdb anfreunden, was nicht öffentlich von oracle (und an anderer Stelle schlecht dokumentiert) dokumentiert ist - und auf jeden Fall wahrscheinlich auf etwas grundlegenderes hinweist.

vierfach glücklich
quelle
7

Ich weiß, dass ich zu spät zur Party komme, aber ich wollte nur hinzufügen, dass, wenn die zusätzlichen Scrubs Probleme wie diese nicht beheben, anstatt zdbdich anzusehen, du einfach ein Scrub starten und es ein paar Minuten laufen lassen kannst, und dann hör auf mit zpool scrub -s zstorage. Das hat bei mir beim Löschen permanenter Fehler für Dateien funktioniert, wenn alle Lese- / Schreib- / Prüfsummenfehler Null waren.

http://unixetc.co.uk/2012/01/22/zfs-corruption-persists-in-unlinked-files/

BEARBEITEN: Nachdem ich dies einige Male getan habe, wurde mir auch klar, dass das Timing, wie lange Sie das Scrub ausführen lassen, sich darauf auswirkt, ob es funktioniert (abhängig davon, welche Blöcke es zuerst sieht). Wenn es zunächst nicht funktioniert, versuchen Sie es noch ein paar Mal und passen Sie das Timing an, wenn Sie es anhalten.

4oo4
quelle
Bei mir hat das nicht geklappt - die permanenten Fehler sind immer noch da, und ich werde sie wieder sehen, wenn ich ein vollständiges Peeling mache.
William Stein
3
Das hat es für mich getan. Ich hatte ein vollständiges Peeling durchgeführt und die Fehler wurden nicht behoben, aber dann habe ich den Start -> Stopp ausgeführt und es ist sauber. Vielen Dank.
Stu
Jetzt scheint es für mich zu funktionieren (ich verwende jetzt die neueste Version von ZFS unter Linux).
William Stein