ZFS: Eine Festplatte in einem nicht verfügbaren Pool online bringen

ZFS: Eine Festplatte in einem nicht verfügbaren Pool online bringen

Ich habe einen Heimserver mit FreeBSD und ZFS, der in den letzten 5 Jahren gut funktioniert hat, und ich habe bei mehreren Gelegenheiten fehlerhafte Festplatten erfolgreich ersetzt.

Heute ist jedoch eine kleine Katastrophe passiert und ich hoffe, eine Lösung zu finden.

Ich habe einen Pool der obersten Ebene, der aus 3 vdevs besteht, von denen jedes ein raidz1-Pool ist, sodass bis zu 3 Festplatten ausfallen können – vorausgesetzt, dass sie alle zu unterschiedlichen vdevs gehören – und die Datenintegrität erhalten bleibt.

Gestern habe ich festgestellt, dass eine Festplatte in einem vdev ziemlich viele Fehler meldet. Erfahrungsgemäß deutet dies normalerweise darauf hin, dass die Festplatte kurz vor dem Ausfall steht. Daher mache ich das, was ich normalerweise mache:

  1. Offline-Verteilung der Festplatte: zpool offline tank gpt/ta4
  2. Ersetzen Sie die Festplatte physisch
  3. Richten Sie die neue Festplatte mit gpart ein und ersetzen Sie dann zpool tank gpt/ta4

Doch dieses Mal passierte zwischen Schritt 2 und 3 das Unglück: Als ich den Server nach der Installation des neuen Laufwerks einschaltete, roch ich etwas Verbranntes, und mein HBA zeigte an, dass4der Laufwerke waren nicht verfügbar! Durch einen unglaublichen Pechstoß muss es zu einem Spannungsstoß gekommen sein, denn ein anderes Laufwerk im selben VDEV (gpt/ta2) ist jetzt völlig tot, und eine Sichtprüfung zeigt, dass einer der MOSFETs auf der Leiterplatte durchgebrannt ist.

Daher ist gpt/ta2 jetzt NICHT VERFÜGBAR und gpt/ta4 ist OFFLINE. Daher ist vdev, also raidz1, offensichtlich auch NICHT VERFÜGBAR.

Meine Fragen sind: 1) Gibt es eine Möglichkeit, gpt/ta4 wieder online zu bringen? Wenn ich versuche, „zpool online tank gpt/ta4“ einzugeben, wird mir angezeigt, dass der Pool nicht verfügbar ist, sodass ich dies nicht tun kann. Ich kann verstehen, warum das so sein kann, aber ich dachte, dass gpt/ta4, obwohl es einige Lesefehler aufwies, im Grunde immer noch ein „gutes“ Mitglied des raidz1-Pools war, bevor es offline genommen wurde (der zpool-Status meldete, dass keine bekannten Datenfehler vorlagen). Gibt es eine Möglichkeit, dies zu erreichen?

2) Wenn das nicht klappt, gibt es eine Möglichkeit, zumindest den Rest meines Top-Level-Pools (der aus 3 raidz1 vdevs besteht) online zu bringen? Die anderen 2 vdevs sind vollkommen in Ordnung.

Bitte helfen Sie, ich habe viele wertvolle Daten darauf :-)

Dank im Voraus.

Antwort1

Das hilft Ihnen an dieser Stelle zwar nicht weiter, aber genau aus diesem Grund werde ich nie Leuten zur Verwendung von raidz1 raten – und bei Mirror-Sets, wenn große Festplatten verwendet werden, empfehle ich oft Triple-Mirrors.

Es ist /äußerst unwahrscheinlich/, dass Sie den Tank durch irgendeine Maßnahme wieder online bringen können. Damit muss ich anfangen, um Ihnen keine Hoffnungen zu machen.

1: Stellen Sie sicher, dass die Festplatten sicher sind – auch wenn das bedeutet, dass Sie sie alle ausstecken müssen.

2: Aktualisieren Sie auf die neueste Version von FreeBSD – Sie möchten die neuesten ZFS-Teile, die Sie bekommen können.

3: Setzen Sie das ursprüngliche gpt/ta4 (das angeblich „OK“ ist und nur Lesefehler aufweist) wieder in das System ein oder in ein neues System mit neueren ZFS-Bits (ebenso wie alle anderen, wenn Sie sie entfernt haben), booten Sie es und führen Sie es in der richtigen Reihenfolge aus, bis eines funktioniert (Seien Sie gewarnt – diese sind nicht sicher, insbesondere das letzte, da sie bei ihren Versuchen, das System wiederherzustellen, wahrscheinlich ein Rollback durchführen und somit kürzlich geschriebene Daten verlieren):

  • zpool import -f tank
  • zpool import -fF Tank
  • zpool import -fFX tank

Wenn alle 3 fehlschlagen, sind Sie außerhalb des Bereichs der „einfachen“ Wiederherstellung. Wenn Sie nach „Importing Bad Pools“, „zdb“, „zpool import -F“, „zpool import -X“, „zpool import -T“ (Achtung!) und dergleichen googeln, erhalten Sie möglicherweise zusätzliche Blogs und Informationen zu Wiederherstellungsversuchen anderer, aber an diesem Punkt befinden Sie sich bereits auf sehr gefährlichem und möglicherweise weiter datenschädigendem Terrain und Sie betreten schnell das Gebiet kostenpflichtiger Wiederherstellungsdienste (und nicht von herkömmlichen Datenwiederherstellungsunternehmen, die keinerlei Erfahrung mit ZFS haben und Ihnen nicht weiterhelfen können).

Hinweis: Eine präzisere und „sicherere“ Methode wäre „zpool import -o readonly=on -f -T [txg_id] tank“. Damit dies jedoch funktioniert, müssen Sie zunächst selbst zdb verwenden, um eine scheinbar gesunde aktuelle txg_id zu finden, und ich bin nicht bereit, das alles hier zu erklären. Google wird hier Ihr Freund sein – unternehmen Sie nichts, bis Sie genügend Informationen gelesen haben, um sich einigermaßen sicher zu fühlen. Vertrauen Sie keiner einzelnen Quelle.

Hinweis 2: Am sichersten ist es, umgehend Kontakt mit jemandem aufzunehmen, der über Kenntnisse zur ZFS-Wiederherstellung verfügt.

Hinweis 3: Die nächst „sicherste“ Vorgehensweise wäre, die Laufwerke in ein sicheres System einzubauen und jedes komplette Rohlaufwerk ebenfalls auf eine neue Festplatte zu übertragen. Dadurch erhalten Sie theoretisch identische Kopien Ihrer Festplatten. Dies würde jedoch bedeuten, dass Sie eine gleiche Anzahl neuer Festplatten benötigen, vorzugsweise von ähnlicher oder identischer Größe/Art wie die alten, aber nicht unbedingt erforderlich. Und versuchen Sie erst dann eines der oben genannten Verfahren auf einem Satz Laufwerke, während Sie die anderen zur sicheren Aufbewahrung beiseite legen.

verwandte Informationen