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/sda
para 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-linux
el 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 status
deberí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 status
no reporté errores.