Zpool se degrada al conectar una unidad

Zpool se degrada al conectar una unidad

En un esfuerzo por probar qué impacto tendría agregar un dispositivo de registro ZFS a una matriz ZFS, decidí crear un zpool y realizar algunas pruebas comparativas antes de conectar un SSD para que actúe como ZIL.

Desafortunadamente, cada vez que conecto el SSD después de haber creado el zpool, o desconecto el SSD después de haber creado el grupo (cualquier cosa que haga que las letras de las unidades cambien después de que se haya creado el grupo), y luego reinicio, mi grupo se degradará tanto como sea posible. mostrarse ejecutandosudo zpool status

  pool: zpool1
 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: none requested
config:

    NAME                     STATE     READ WRITE CKSUM
    zpool1                   DEGRADED     0     0     0
      mirror-0               DEGRADED     0     0     0
        sda                  ONLINE       0     0     0
        1875547483567261808  UNAVAIL      0     0     0  was /dev/sdc1

Sospecho que el problema se debe al hecho de que creé el grupo usando las letras de unidad de esta manera:

sudo zpool create -f zpool1 mirror /dev/sdb /dev/sdc

Preguntas

Por suerte para mí, esto es sólo una prueba y no hay riesgo de perder datos, pero si esto sucediera en un escenario del mundo real, ¿cuál es la mejor manera de recuperarse de este problema? Obviamente, la unidad todavía existe y está lista para funcionar.

¿Existe una mejor manera de crear zpool sin usar las letras de unidad /dev/sdapara evitar este problema en el futuro? me doy cuenta de quela documentación de Ubuntu dicepara crear un zpool de la misma manera que lo hice yo.

Información extra

  • Sistema operativo: Ubuntu 16.04 Servidor 4.10
  • Zfs instalado desde zfsutils-linuxel paquete de instalación

Respuesta1

Después de recibir ayuda de Dexter_Kane en elForo de técnicos de nivel 1, la respuesta es utilizar /dev/disk/by-id/...rutas al crear los grupos.

P.ej

sudo zpool create zpool1 mirror \
/dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N0PKS6S7 \
/dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N7VXZF6H

Conversión y reparación de grupos existentes

La buena noticia es que puede "convertir" una matriz RAID ZFS existente para usar estas etiquetas, lo que evita que esto suceda en el futuro e incluso resolverá su matriz degradada si esta situación ya le ha sucedido.

sudo zpool export [pool name]
sudo zpool import -d /dev/disk/by-id [pool name]

Solo debe asegurarse de que los conjuntos de datos de los grupos no estén en uso. Por ejemplo, no ejecute los comandos mientras esté dentro del grupo y asegúrese de que no se compartan a través de NFS, etc.

Después de realizar la conversión, la salida de sudo zpool statusdebería ser similar a:

  pool: zpool1
 state: ONLINE
  scan: none requested
config:

        NAME                                          STATE     READ WRITE CKSUM
        zpool1                                        ONLINE       0     0     0
          mirror-0                                    ONLINE       0     0     0
            ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N0PKS6S7  ONLINE       0     0     0
            ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N7VXZF6H  ONLINE       0     0     0

Pruebas realizadas

Me aseguré de probar eso:

  • El uso de rutas by-id evitó que ocurriera el problema.
  • Después de escribir algunos datos mientras el grupo estaba en un estado degradado, aún podía leer todos los archivos después de realizar la exportación/importación y sudo zpool statusno reporté errores.

información relacionada