"Zpool replace" hängt und sperrt den Pool

7

Bei meinem RAIDZ1 mit vier Festplatten ist eine Festplatte physisch verrauscht und erzeugt noch keine Fehler, klingt aber auch nicht gesund. Deshalb habe ich mich entschlossen, es vorbeugend zu ersetzen.

Ich habe getan:

zpool offline tank0 ad6

Fahren Sie die Festplatte herunter, entfernen Sie sie und ersetzen Sie sie

zpool replace tank0 ad6 ad6

was für immer hängt.

zpool statushängt auch für immer, wie es tut zpool history.

Wenn ich den Computer mit entfernter Festplatte neu starte, funktioniert alles einwandfrei, wie erwartet im herabgesetzten Modus.

Was mache ich jetzt? Besorgt, weil meine Daten jetzt für einen einzelnen Festplattenfehler anfällig sind.

Betriebssystem ist FreeBSD 7.3-RELEASE-p1 - auch bekannt als FreeNAS 7.0.2.5226

Ich habe gerade den gleichen Vorgang in einer VM versucht, obwohl FreeBSD 7.3-RELEASE-p7 (FreeNAS 0.7.2.8191, etwas spätere Version) - funktioniert einwandfrei. Wenn ich es mit der ältesten Version von FreeNAS versuche, kann ich sie jetzt finden (7.0.2.5799) und werde sie später aktualisieren.

Auch dann , wenn zpool replacekein Dateisystem Nutzung benötigen? Es besteht die Möglichkeit, dass ein anderer Daemon auf dem NAS das Dateisystem verwendet. Ich gehe davon aus, dass dies in Ordnung wäre, aber dies kann natürlich falsch sein.


Update, 10.01.2012

Ich habe den Computer mit FreeNAS 8 gebootet und das zpool replace- was gestartet wurde und sofort begann, Stapel von Datenkorruptionsfehlern und Kernel-Paniken zu werfen - trotz eines wöchentlichen Scrub des Pools, bei dem keine Probleme festgestellt wurden. Ich glaube nicht, dass ich etwas Dummes getan habe, wie es zu sagen, dass es die falsche Festplatte ersetzen soll. Ich habe sofort ausgestellt, shutdown -hda ich weiß, dass die Daten in Ordnung waren.

Jedenfalls habe ich jetzt einen verschlechterten Pool, der in einem Zustand steckt, in dem das Ersetzen ausgesetzt ist, und ich kopiere meine Daten auf ein externes 3-TB-Laufwerk, das mit hohen Kosten gekauft wurde, damit ich den Pool zerstören und erneut starten kann. Zum Glück sehen die Daten in Ordnung aus - ich habe zufällig MD5-Summen von ungefähr 100 GB der Dateien, die bisher intakt zu sein scheinen, und ich habe es geschafft, alles wiederherzustellen, was wirklich unersetzbar ist.

Ich warte jetzt darauf, dass mehr RAM ankommt, da FreeNAS 8 immer wieder mit zu kleinen Fehlern in kmem_max in Panik gerät, die ich anscheinend nicht einstellen kann, und der Computer über RAM-Einschränkungen verfügt (1 GB RAM für ein 4-TB-RAIDZ1).

Harte Lektionen über Backups, aber auch das Vertrauen in ZFS / FreeNAS / FreeBSD hat wirklich geklopft.


UPDATE 13/1/12

Nun, meine Daten scheinen jetzt sicher gesichert zu sein.

Der zpool-Status -v hängt auch dann, wenn der Fail-Modus so eingestellt ist, dass er fortgesetzt wird. Hier ist die Ausgabe des Zpool-Status mit der neuen Festplatte (ada1)

  pool: tank0
 state: DEGRADED
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://www.sun.com/msg/ZFS-8000-8A
 scrub: none requested
config:

NAME                       STATE     READ WRITE CKSUM
tank0                      DEGRADED     0     0     0
  raidz1                   DEGRADED     0     0     0
    ada2                   ONLINE       0     0     0
    ada3                   ONLINE       0     0     0
    ada0                   ONLINE       0     0     0
    replacing              DEGRADED     0     0 3.17K
      6540253751212815210  UNAVAIL      0     0     0  was /dev/ada3/old
      ada1                 ONLINE       0     0     0

errors: 3130 data errors, use '-v' for a list

Wenn die alte Festplatte anstelle der neuen angeschlossen ist, importiert ZFS den Pool nicht und zfs statussagt:

tank0          UNAVAIL insufficient replicas
  raidz1       FAULTED corrupted data
    ada2       ONLINE
    ada3       ONLINE
    ada0       FAULTED corrupted data
    replacing  UNAVAIL insufficient replicas
      ada1     FAULTED corrupted data
      ada1     FAULTED corrupted data

Ich verstehe nicht, warum ada0 mit der eingesteckten neuen Festplatte (ada1) fehlerhaft sein sollte, aber ONLINE mit der eingesteckten alten Festplatte? Ich sehe nicht, wie ada0 überhaupt verwandt ist.

Versuchen wir, diesen Pool als Lernübung wiederherzustellen.

Tomfanning
quelle
Gibt es Aktivität auf den Festplatten, während sie hängen? Könnte die neue Festplatte schlecht sein?
Shane Madden
Keine Aktivität. Neue Festplatte in einem USB-Caddy funktioniert auf einem anderen Computer einwandfrei.
Tomfanning
Soll Ihre FreeNAS-Version 0.7.2 oder 7.0.2 sein? Oder sind das die richtigen Zahlen?
Mei
FreeNAS 0.7.2 == FreeNAS 7.2 - genau wie in diesem Blog-Beitrag: blog.freenas.org/2011/06/freenas-0726694-sabanda-released.html
Tomfanning
1 GB RAM ist definitiv winzig. Ich bin nicht sicher, was Ihr Problem verursacht, aber ich kann sagen, dass ZFS unter FreeBSD 8 (und 9) wesentlich besser / robuster ist als unter 7. Ich bin mir nicht sicher, ob FreeNAS diese Entwicklung noch eingeholt hat.
voretaq7

Antworten:

1

Wurde damit wirklich in eine Ecke gedrängt. Haben den Pool reduziert und Dateien von der Sicherung auf FreeNAS 8 wiederhergestellt.

Fühlt sich bisher weitaus stabiler an - neueres x64-Betriebssystem, 4 GB RAM tragen wahrscheinlich alle dazu bei.

Tomfanning
quelle
Ich denke, das ist ungefähr die beste Lösung, auf die Sie hoffen können :-)
voretaq7
Nach einer ähnlichen Wiederholung habe ich schließlich FreeNAS zugunsten von ZFS-on-Linux unter Ubuntu zusammengefasst. Keine Probleme seitdem. Ich frage mich, ob FreeNAS meine Atom-Hardware einfach nicht mochte.
Tomfanning
0

Ich bin kein ZFS-Guru, aber ich werde es versuchen: Es hört sich so an, als ob das ZFS-Subsystem immer noch versucht, auf das ausgefallene Laufwerk zuzugreifen, und aus irgendeinem Grund hängen bleibt. Versuchen Sie, den failmodeWert des Pools auf continue( zpool set failmode=continue) zu setzen, und prüfen Sie, ob dadurch der Hang verschwindet und Sie herausfinden können, was los ist.

(Beachten Sie, dass dies kein Fix ist: Das System kann immer noch nicht auf ein Laufwerk zugreifen, auf das es zugreifen sollte. Es weist es lediglich an, einen Fehler zurückzugeben und weiterzumachen, anstatt zu blockieren, bis eine Antwort eingeht.)

voretaq7
quelle
In der Tat - nachdem ich meine Daten gerettet habe, werde ich versuchen, das Array als Lernübung wiederherzustellen. Das ist also ein guter Ausgangspunkt. Vielen Dank. Vielen Dank auch für das Kopfgeld.
Tomfanning
1
Erwähnenswert ist auch, dass ich hier eine weitere Lektion über Backups gelernt habe.
Tomfanning
0

Ich hatte kürzlich eine ähnliche Situation, obwohl ich keine Hänge hatte, konnte ich das ausgefallene Laufwerk einfach nicht ersetzen. Natürlich war ich in einer völlig anderen Umgebung: Linux mit ZFS-Sicherung. Im Gegensatz zu Ihnen wurde mir jedoch nicht gesagt, dass ich Datenkorruption erfahren habe. Ich sah:

 state: DEGRADED
status: One or more devices could not be opened.  Sufficient replicas exist for
        the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
   see: http://www.sun.com/msg/ZFS-8000-2Q
[...]
disk/by-id/ata-Hitachi_HDS722020ALA330_JK1105B8GNNADX-part4  UNAVAIL      0     0     0  cannot open

Bevor Sie fortfahren, müssen Sie sich darüber im Klaren sein, dass keine der Daten in diesem Pool unersetzlich war, sondern entweder alle Sicherungen oder Sicherungen anderer Systeme. Wenn Sie keine guten Backups dieser Daten haben, möchten Sie wahrscheinlich an dieser Stelle anhalten und Rohkopien der Discs erstellen, bevor Sie etwas anderes tun, falls dies die Situation verschlimmert.

Was ich am Ende getan habe, hat funktioniert.

Zuerst habe ich den Pool mit "zfs export POOLNAME" exportiert. Ich habe dann neu gestartet und einen "zfs import POOLNAME" durchgeführt.

Als ich nun einen "Zpool-Status" hatte, bekam ich Folgendes:

state: DEGRADED
[...]
12640132412556728613                                         UNAVAIL      0     0     0  was /dev/disk/by-id/ata-Hitachi_HDS722020ALA330_JK1105B8GNNADX-part4

Jetzt konnte ich die obige Nummer verwenden, um die Disc zu ersetzen, indem ich:

zpool replace POOLNAME 12640132412556728613 /dev/DEVILCENAME

Jetzt wurde das Laufwerk im "zpool status" ersetzt:

 state: DEGRADED
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
 scrub: resilver in progress for 0h0m, 0.00% done, 282h43m to go

Es dauerte "nur" ungefähr 48 Stunden, nicht die geschätzten 282 oben. :-)

Sean Reifschneider
quelle