Tengo un grupo grande (> 100TB) ZFS (FUSE) en Debian que perdió dos unidades. Como las unidades fallaron, las reemplacé con repuestos hasta que pude programar una interrupción y reemplazar físicamente los discos defectuosos.
Cuando apagué el sistema y reemplacé las unidades, el grupo comenzó a recuperarse como se esperaba, pero cuando se completa aproximadamente el 80% (esto generalmente toma alrededor de 100 horas) se reinicia nuevamente.
No estoy seguro si el reemplazo de dos unidades a la vez creó una condición de carrera, o si debido al tamaño del grupo el resistencias demora tanto que otros procesos del sistema lo están interrumpiendo y haciendo que se reinicie, pero no hay ninguna indicación obvia en el resultados del 'estado de zpool' o los registros del sistema que apuntan a un problema.
Desde entonces, modifiqué la forma en que establezco estos grupos para mejorar el rendimiento de recuperación, pero apreciamos cualquier pista o consejo sobre cómo volver a poner este sistema en producción.
Salida del estado de zpool (los errores son nuevos desde la última vez que lo verifiqué):
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
zpool status
-v
?Respuestas:
Felicidades y uh-oh. Te has topado con una de las mejores cosas de ZFS, pero también cometiste un pecado de configuración.
Primero, dado que está usando raidz1, solo tiene un disco con datos de paridad. Sin embargo, tuvo dos unidades que fallaron simultáneamente. El único resultado posible aquí es la pérdida de datos . Ninguna cantidad de resistencia va a arreglar eso.
Sus repuestos lo ayudaron un poco aquí y lo salvaron de una falla completamente catastrófica. Voy a salir de aquí y decir que las dos unidades que fallaron no fallaron al mismo tiempo y que el primer repuesto solo se recuperó parcialmente antes de que fallara la segunda unidad.
Eso parece difícil de seguir. Aquí hay una foto:
En realidad, esto es algo bueno porque si se tratara de una matriz RAID tradicional, toda su matriz simplemente se habría desconectado tan pronto como fallara la segunda unidad y no tendría ninguna posibilidad de una recuperación in situ. Pero como se trata de ZFS, aún puede ejecutarse usando las piezas que tiene y simplemente devuelve errores de nivel de bloque o archivo para las piezas que no tiene.
Así es como lo arregla: a corto plazo, obtenga una lista de archivos dañados
zpool status -v
y copie esos archivos de la copia de seguridad en sus ubicaciones originales. O eliminar los archivos. Esto permitirá que el resiliente se reanude y complete.Aquí está su pecado de configuración: tiene demasiadas unidades en un grupo raidz.
A largo plazo: necesita reconfigurar sus unidades. Una configuración más apropiada sería organizar las unidades en pequeños grupos de 5 unidades más o menos en raidz1. ZFS se dividirá automáticamente en esos pequeños grupos. Esto reduce significativamente el tiempo de recuperación cuando falla una unidad porque solo 5 unidades deben participar en lugar de todas. El comando para hacer esto sería algo como:
fuente