Ich habe einen großen (> 100 TB) ZFS (FUSE) -Pool unter Debian, der zwei Laufwerke verloren hat. Als die Laufwerke ausfielen, ersetzte ich sie durch Ersatzteile, bis ich einen Ausfall einplanen und die fehlerhaften Laufwerke physisch ersetzen konnte.
Als ich das System herunterfuhr und die Laufwerke austauschte, wurde der Pool erwartungsgemäß neu gestartet. Wenn er jedoch zu etwa 80% vollständig ist (dies dauert normalerweise etwa 100 Stunden), wird er erneut gestartet.
Ich bin nicht sicher, ob das Ersetzen von zwei Laufwerken gleichzeitig einen Race-Zustand verursacht oder ob der Resilver aufgrund der Größe des Pools so lange dauert, dass andere Systemprozesse ihn unterbrechen und neu starten, aber es gibt keine offensichtlichen Anzeichen in der Ergebnisse von 'zpool status' oder Systemprotokollen, die auf ein Problem hinweisen.
Ich habe seitdem die Anordnung dieser Pools geändert, um die Resilvering-Leistung zu verbessern, aber alle Hinweise oder Ratschläge, wie dieses System wieder in Produktion gehen kann, sind willkommen.
zpool status output (die Fehler sind neu, seit ich das letzte Mal nachgesehen habe):
pool: pod
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: http://www.sun.com/msg/ZFS-8000-8A
scrub: resilver in progress for 85h47m, 62.41% done, 51h40m to go
config:
NAME STATE READ WRITE CKSUM
pod ONLINE 0 0 2.79K
raidz1-0 ONLINE 0 0 5.59K
disk/by-id/wwn-0x5000c5003f216f9a ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CWPK ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQAM ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPVD ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ2Y ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CVA3 ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQHC ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPWW ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09X3Z ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ87 ONLINE 0 0 0
spare-10 ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F20T1K ONLINE 0 0 0 1.45T resilvered
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09BJN ONLINE 0 0 0 1.45T resilvered
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQG7 ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQKM ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQEH ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09C7Y ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CWRF ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ7Y ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0C7LN ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQAD ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CBRC ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPZM ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPT9 ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ0M ONLINE 0 0 0
spare-23 ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F226B4 ONLINE 0 0 0 1.45T resilvered
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CCMV ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0D6NL ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CWA1 ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CVL6 ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0D6TT ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPVX ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09BGJ ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0C9YA ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09B50 ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0AZ20 ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BKJW ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F095Y2 ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F08YLD ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQGQ ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0B2YJ ONLINE 0 0 39 512 resilvered
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQBY ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0C9WZ ONLINE 0 0 0 67.3M resilvered
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQGE ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ5C ONLINE 0 0 0
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CWWH ONLINE 0 0 0
spares
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CCMV INUSE currently in use
disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09BJN INUSE currently in use
errors: 572 data errors, use '-v' for a list
zpool status
-v
?Antworten:
Herzlichen Glückwunsch und ähm. Sie sind über eines der besseren Dinge in Bezug auf ZFS gestolpert, haben aber auch eine Konfigurationssünde begangen.
Erstens haben Sie, da Sie raidz1 verwenden, nur einen Datenträger mit Paritätsdaten. Sie mussten jedoch zwei Laufwerke gleichzeitig ausfallen lassen. Das einzig mögliche Ergebnis ist Datenverlust . Keine Menge Resilvering wird das beheben.
Ihre Ersatzteile haben Ihnen hier ein wenig geholfen und Sie vor einem katastrophalen Ausfall bewahrt. Ich werde hier auf die Probe stellen und sagen, dass die beiden ausgefallenen Laufwerke nicht gleichzeitig ausgefallen sind und dass das erste Ersatzlaufwerk nur teilweise neu versilbert ist, bevor das zweite Laufwerk ausgefallen ist.
Das scheint schwer zu folgen. Hier ist ein Bild:
Dies ist eigentlich eine gute Sache, denn wenn dies ein traditionelles RAID-Array wäre, wäre Ihr gesamtes Array einfach offline gegangen, sobald das zweite Laufwerk ausfällt und Sie hätten KEINE Chance auf eine Wiederherstellung an Ort und Stelle. Da dies jedoch ZFS ist, kann es weiterhin mit den Teilen ausgeführt werden, die es enthält, und es werden einfach Fehler auf Block- oder Dateiebene für die Teile zurückgegeben, die es nicht enthält.
So beheben Sie das Problem: Rufen Sie kurzfristig eine Liste der beschädigten Dateien ab
zpool status -v
und kopieren Sie diese Dateien von der Sicherung an ihren ursprünglichen Speicherort. Oder löschen Sie die Dateien. Dadurch kann der Resilver fortgesetzt und abgeschlossen werden.Hier ist Ihre Konfigurationssünde: Sie haben viel zu viele Laufwerke in einer Raidz-Gruppe.
Langfristig: Sie müssen Ihre Laufwerke neu konfigurieren. Eine geeignetere Konfiguration wäre, die Laufwerke in kleinen Gruppen von etwa 5 Laufwerken in raidz1 anzuordnen. ZFS streift automatisch über diese kleinen Gruppen. Dies reduziert die Resilver-Zeit erheblich, wenn ein Laufwerk ausfällt, da nur 5 statt aller Laufwerke teilnehmen müssen. Der Befehl dazu wäre etwa:
quelle