ZFS Endless Resilvering

29

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
jasongullickson
quelle
Bitte geben Sie die Ausgabe vonzpool status
longneck 15.07.13
Welche Fehler werden gemeldet, wenn Sie verwenden -v?
Bobby
"Fehler: In den folgenden Dateien wurden dauerhafte Fehler festgestellt:" und dann eine Liste von ungefähr 12 Dateien mit Fehlern.
Jasongullickson
Für den "see:" - Teil können Sie hier eine ausführlichere Erklärung lesen: illumos.org/msg/ZFS-8000-8A
Raymond Tau

Antworten:

56

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:

Abfolge von Ereignissen

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 -vund 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:

zpool create tank raidz da0 da1 da2 da3 da4 \
                  raidz da5 da6 da7 da8 da9 \
                  raidz da10 da11 da12 da13 da14 \
                  spare da15 spare da16
langer Hals
quelle
Vielen Dank @longneck für die ausführliche und informative Antwort! Sie kennen die Abfolge der Ereignisse genau und ich habe Ihre Empfehlungen zur Gerätekonfiguration bereits befolgt (das zweite Gerät, das ich gebaut habe, ist fast genau so konfiguriert, wie Sie es beschrieben haben, mit einigen zusätzlichen Überlegungen, um zu gewährleisten, dass jeder Überfall auf die Hardware verteilt wird) die Wahrscheinlichkeit verringern, dass ein ganzer Überfall aufgrund eines Ausfalls der Rückwandplatine usw. verloren geht.
Jasongullickson
Nachdem die beschädigten Dateien gelöscht wurden, gibt "zfs status" jetzt hexadezimale Werte anstelle von Dateinamen zurück. Ich gehe davon aus, dass dies verschwinden wird, wenn das Peeling endlich abgeschlossen ist.
Jasongullickson
@jasongullickson nur, wenn die Metadaten des Dateisystems ebenfalls intakt sind. ZFS ist ziemlich aggressiv, wenn es darum geht, die Metadaten zu schützen, sodass Sie wahrscheinlich gut sind. nur die Zeit kann es verraten.
Longneck
Ich persönlich habe noch nie ein Metadaten-Korruptionsereignis gesehen, daher weiß ich nicht, wie das in Bezug auf Fehlerereignisse aussehen wird.
Longneck
1
@longneck Gotcha, dann sind wir uns einig - es ist definitiv eine schlechte Idee, eine RAID-Z-Gruppe zu haben, die groß genug ist, dass Sie einen Resilver-Engpass haben und ihn verlangsamen. Das andere große Risiko für größere Gruppen ist die erhöhte Wahrscheinlichkeit, dass ein zweites Gerät während des Resilvers ausfällt. Eine erhöhte Anzahl von Paritätsfestplatten (mit RAID-Z2 oder 3) würde bei den Zuverlässigkeitsproblemen helfen, nicht jedoch bei der Geschwindigkeit des Resilvers .
Shane Madden