Réargenture sans fin ZFS

29

J'ai un grand pool (> 100 To) ZFS (FUSE) sur Debian qui a perdu deux disques. Comme les disques ont échoué, je les ai remplacés par des pièces de rechange jusqu'à ce que je puisse planifier une panne et remplacer physiquement les mauvais disques.

Lorsque j'ai arrêté le système et remplacé les disques, le pool a commencé à se réargenter comme prévu, mais lorsqu'il atteint environ 80% (cela prend généralement environ 100 heures), il redémarre à nouveau.

Je ne sais pas si le remplacement de deux lecteurs à la fois a créé une condition de concurrence critique ou si, en raison de la taille du pool, le résilver prend si longtemps que d'autres processus système l'interrompent et le font redémarrer, mais il n'y a aucune indication évidente dans le les résultats de «zpool status» ou les journaux système qui indiquent un problème.

J'ai depuis modifié la façon dont je dispose ces pools pour améliorer les performances de réargenture, mais tous les prospects ou conseils sur la remise en production de ce système sont appréciés.

sortie d'état zpool (les erreurs sont nouvelles depuis la dernière fois que j'ai vérifié):

  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
la source
veuillez fournir la sortie dezpool status
longneck
Quelles sont les erreurs signalées si vous utilisez -v?
Bobby
"erreurs: des erreurs permanentes ont été détectées dans les fichiers suivants:" puis une liste d'environ 12 fichiers contenant des erreurs.
jasongullickson
Pour la partie 'voir:', vous pouvez lire une explication plus détaillée ici: illumos.org/msg/ZFS-8000-8A
Raymond Tau

Réponses:

56

Félicitations et euh-oh. Vous êtes tombé sur l'une des meilleures choses à propos de ZFS, mais vous avez également commis un péché de configuration.

Tout d'abord, puisque vous utilisez raidz1, vous n'avez qu'un seul disque de données de parité. Cependant, deux disques ont échoué simultanément. Le seul résultat possible ici est la perte de données . Aucune réargenture ne résoudra cela.

Vos pièces de rechange vous ont aidé un peu ici et vous ont sauvé d'une panne complètement catastrophique. Je vais sortir sur une branche ici et dire que les deux disques qui ont échoué n'ont pas échoué en même temps et que la première pièce de rechange n'a été que partiellement réargentée avant que le deuxième disque ne tombe en panne.

Cela semble difficile à suivre. Voici une photo:

séquence d'événements

C'est en fait une bonne chose car s'il s'agissait d'une matrice RAID traditionnelle, votre matrice entière aurait simplement été déconnectée dès que le deuxième disque est tombé en panne et vous n'auriez AUCUNE chance de récupération sur place. Mais comme il s'agit de ZFS, il peut toujours fonctionner en utilisant les morceaux qu'il possède et renvoie simplement des erreurs de niveau de bloc ou de fichier pour les morceaux qu'il n'a pas.

Voici comment y remédier: à court terme, obtenez une liste des fichiers endommagés zpool status -vet copiez ces fichiers de la sauvegarde vers leur emplacement d'origine. Ou supprimez les fichiers. Cela permettra au resilver de reprendre et de terminer.

Voici votre péché de configuration: vous avez bien trop de disques dans un groupe raidz.

À long terme: vous devez reconfigurer vos disques. Une configuration plus appropriée serait d'organiser les disques en petits groupes de 5 disques ou plus dans raidz1. ZFS entrera automatiquement dans ces petits groupes. Cela réduit considérablement le temps de réargenture lorsqu'un disque tombe en panne car seuls 5 disques doivent participer au lieu de tous. La commande pour ce faire serait quelque chose comme:

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
long cou
la source
Merci beaucoup @longneck pour la réponse détaillée et informative! Vous êtes au courant de la séquence des événements, et j'ai déjà suivi vos conseils sur la configuration des appareils (le deuxième appareil que j'ai construit est configuré presque exactement comme vous l'avez décrit, avec quelques considérations supplémentaires pour garder chaque raid réparti sur le matériel pour réduire les chances de perdre un raid entier en raison d'une défaillance du fond de panier, etc.).
jasongullickson
Après avoir supprimé les fichiers corrompus, "zfs status" renvoie désormais des valeurs hexadécimales au lieu des noms de fichiers; Je suppose que cela disparaîtra lorsque le gommage se terminera enfin?
jasongullickson
@jasongullickson uniquement si les métadonnées du système de fichiers sont également intactes. ZFS est assez agressif lorsqu'il s'agit de protéger les métadonnées, vous serez donc probablement bon. seul le temps nous le dira.
longneck
Personnellement, je n'ai jamais rencontré d'événement de corruption de métadonnées auparavant, donc je ne sais pas à quoi cela ressemblera en termes d'événements d'erreur.
longneck
1
@longneck Gotcha, alors nous sommes d'accord - c'est définitivement une mauvaise idée d'avoir un groupe RAID-Z suffisamment grand pour goulot d'étranglement et le ralentir. Et l'autre gros risque des groupes plus importants est la probabilité accrue qu'un deuxième appareil tombe en panne pendant le resilver - un nombre accru de disques de parité (avec RAID-Z2 ou 3) aiderait à résoudre les problèmes de fiabilité, mais pas avec la vitesse du resilver .
Shane Madden