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 status
hä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 replace
kein 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 -h
da 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 status
sagt:
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.
Antworten:
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.
quelle
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
failmode
Wert des Pools aufcontinue
(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.)
quelle
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:
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:
Jetzt konnte ich die obige Nummer verwenden, um die Disc zu ersetzen, indem ich:
Jetzt wurde das Laufwerk im "zpool status" ersetzt:
Es dauerte "nur" ungefähr 48 Stunden, nicht die geschätzten 282 oben. :-)
quelle