5 votes

Le pool ZFS se dégrade au redémarrage

J'ai un serveur Ubuntu configuré avec un pool ZFS raidz2 de 14 disques.

Environ 80 % du temps, au redémarrage, je me retrouve avec un pool dégradé dont deux des disques sont marqués comme défectueux. Les disques qui sont en panne ne sont pas toujours les mêmes, mais il s'agit toujours de deux disques exactement. Par exemple :

$ sudo zpool status
  pool: tank
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: http://zfsonlinux.org/msg/ZFS-8000-4J
  scan: resilvered 4K in 0h0m with 0 errors on Sun Sep 30 23:08:51 2018
config:

        NAME                      STATE     READ WRITE CKSUM
        tank                      DEGRADED     0     0     0
          raidz2-0                DEGRADED     0     0     0
            sde                   ONLINE       0     0     0
            sdc                   ONLINE       0     0     0
            sdd                   ONLINE       0     0     0
            sda                   ONLINE       0     0     0
            sdh                   ONLINE       0     0     0
            11521322863231878081  FAULTED      0     0     0  was /dev/sdf1
            15273938560620494453  FAULTED      0     0     0  was /dev/sdg1
            sdb                   ONLINE       0     0     0
            sdi                   ONLINE       0     0     0
            sdj                   ONLINE       0     0     0
            sdk                   ONLINE       0     0     0
            sdl                   ONLINE       0     0     0
            sdm                   ONLINE       0     0     0
            sdn                   ONLINE       0     0     0

errors: No known data errors

Je peux exporter et réimporter le pool, et les disques ne sont plus en défaut. Par exemple :

$ sudo zpool export tank
$ sudo zpool import tank
$ sudo zpool status
  pool: tank
 state: ONLINE
status: One or more devices has experienced an unrecoverable error.  An
        attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
        using 'zpool clear' or replace the device with 'zpool replace'.
   see: http://zfsonlinux.org/msg/ZFS-8000-9P
  scan: resilvered 4K in 0h0m with 0 errors on Sun Sep 30 23:08:51 2018
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          raidz2-0  ONLINE       0     0     0
            sde     ONLINE       0     0     0
            sdc     ONLINE       0     0     0
            sdd     ONLINE       0     0     0
            sda     ONLINE       0     0     0
            sdh     ONLINE       0     0     0
            sdg     ONLINE       0     0     1
            sdf     ONLINE       0     0     0
            sdb     ONLINE       0     0     0
            sdi     ONLINE       0     0     0
            sdj     ONLINE       0     0     0
            sdk     ONLINE       0     0     0
            sdl     ONLINE       0     0     0
            sdm     ONLINE       0     0     0
            sdn     ONLINE       0     0     0

errors: No known data errors

Le HBA utilisé a fonctionné correctement dans un autre serveur.

Y a-t-il autre chose que je puisse essayer pour éviter ces disques défectueux au redémarrage ? J'ai un autre adaptateur de bus hôte que je peux remplacer.

8voto

ewwhite Points 193555

Vous ne devez pas utiliser les noms /dev/sdX pour votre configuration de pool.

Toute modification de l'énumération SCSI, par exemple l'insertion d'un CDROM ou d'une clé USB, peut entraîner une modification des noms de périphériques et provoquer les erreurs que vous rencontrez.

Vous avez la possibilité d'utiliser les noms /dev/disk/by-id.

Faites-le avec un zpool export tank y zpool import -d /dev/disk/by-id tank

0 votes

Merci, cela fonctionne. Le zpool semble maintenant utiliser les noms de périphériques /dev/disk/by-id/wwn-* et s'importe avec succès au redémarrage. Je m'attendais à des noms de périphériques comme ata-* qui utilisent le modèle et le numéro de série du périphérique, plutôt que wwn-* qui est le LU WWN Device ID rapporté par hdparm et smartctl. Pas d'inquiétude cependant, tant que cela fonctionne. Pour ceux qui découvrent ceci plus tard, il y a un problème avec zfs qui utilise cette même solution de contournement. unix.stackexchange.com/questions/288599/

1 votes

Wow @ewwhite ... merci de m'avoir épargné littéralement des heures de corrections. Cela fonctionne parfaitement.

1 votes

@oemb1905 Je suis heureux d'avoir pu aider

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X