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.