Error de zfs detrás del controlador raid LSI

Error de zfs detrás del controlador raid LSI

Entonces, ZFS informa algunos "problemas de lectura", por lo que parecería que este disco está fallando, según el hecho de que no se proporciona nada en elZFS-8000-9PSe han producido informes de documentos de los que tenemos conocimiento. Estos discos son bastante nuevos, el único problema que tuvimos recientemente fue un ZFS completo.

El ZFS se ejecuta sobre unLSI MegaRAID 9271-8i, todos los discos ejecutan "raid 0" por disco. No estoy muy familiarizado con esta tarjeta raid, así que encontré un script que devuelve datos derivados de la herramienta de línea de comando megacli. Agregué 1 unidad para mostrar la configuración, todas están configuradas igual. (los discos del sistema son diferentes)

salida de estado de zpool

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

        NAME        STATE     READ WRITE CKSUM
        data        ONLINE       0     0     0
          raidz2-0  ONLINE       0     0     0
            br0c2   ONLINE       0     0     0
            br1c2   ONLINE       0     0     0
            br2c2   ONLINE       0     0     0
            br0c3   ONLINE       0     0     0
            br1c3   ONLINE       0     0     0
            br2c3   ONLINE       0     0     0
            r2c1    ONLINE       0     0     0
            r1c2    ONLINE       0     0     0
            r5c3    ONLINE       0     0     0
            sdb     ONLINE       0     0     0
            sdc     ONLINE       0     0     0
            sdd     ONLINE       0     0     0
            sde     ONLINE       0     0     0
            sdf     ONLINE       0     0     0
            sdg     ONLINE       0     0     0
            r3c1    ONLINE       0     0     0
            r4c1    ONLINE       2     0     0
... cut raidz2-1 ...
errors: No known data errors

La salida del script LSI

Virtual Drive: 32 (Target Id: 32)
Name                :
RAID Level          : Primary-0, Secondary-0, RAID Level Qualifier-0
Size                : 3.637 TB
Sector Size         : 512
Is VD emulated      : No
Parity Size         : 0
State               : Optimal
Strip Size          : 512 KB
Number Of Drives    : 1
Span Depth          : 1
Default Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Default Access Policy: Read/Write
Current Access Policy: Read/Write
Disk Cache Policy   : Disk's Default
Encryption Type     : None
PI type: No PI

Is VD Cached: No

El script no informa ningún disco defectuoso, ni el controlador raid marca la unidad como defectuosa. encontré algunos otros temaserror de zpoolque dio el consejo de borrar el error y ejecutar una limpieza. Ahora mi pregunta es, ¿cuándo es el umbral para ejecutar una limpieza?, ¿cuánto tiempo tomaría esto (asumiendo que esta incursión zfs tendrá un impacto en el rendimiento para ejecutar la limpieza)? Además, cuando este disco esté realmente defectuoso, el intercambio en caliente inicializará una "reconstrucción". ? Todos los discos son "Western Digital RE 4TB, SAS II, 32MB, 7200rpm, empresarial 24/7/365". ¿Existe algún sistema que compruebe si hay errores de zfs, ya que se trata sólo de una comprobación manual de rutina?

Versión de zfs: 0.6.4.1 zfsonlinux

Sé que no se permiten 2 errores de lectura, pero preferiría reemplazar los discos temprano y tarde.

Respuesta1

zfs scrubes el "sistema que comprobará si hay errores de zfs". Tomará el tiempo necesario para leer todos los datos almacenados en el volumen (en orden secuencial de txg, por lo que puede buscar mucho, dependiendo de qué tan lleno esté el grupo y cómo se escribieron los datos). Una vez iniciado, zfs statusmostrará alguna estimación. Se puede detener el fregado en ejecución.

Si desea verificar algo periódicamente zpool status, la forma más sencilla sería ejecutar algo así zpool status | grep -C 100 Statusperiódicamente (una vez cada 6 horas) y enviar por correo electrónico el resultado, si corresponde. Probablemente puedas encontrar un complemento para tu sistema de monitoreo favorito, como nagios. O sería bastante sencillo escribirlo usted mismo.

Simplemente cambiar la unidad en caliente no activará la recuperación. Tendrás que correr zfs replacepara que eso suceda.

El error de lectura que estás viendo también puede ser algún tipo de error en el controlador. Aunque se trata de un hardware empresarial, estos controladores (HW RAID) a veces se comportan de forma extraña. Y estos errores pueden, por ejemplo, ser el resultado de que un comando demore demasiado: el controlador está ocupado con lo que sea. Por eso trato de mantenerme alejado de ellos a menos que sea necesario.

Yo iría a verificar los datos SMART en el disco (ver man smartctl) y limpiar el grupo. Si ambos se ven bien, borre los errores y no juegue con su grupo. Porque si el grupo está casi lleno, leer todos los datos durante la recuperación puede provocar otro error. Empiece a entrar en pánico una vez que vuelva a ver errores en la misma unidad;).

por cierto. Para obtener el mejor rendimiento, debe utilizar n^2+2 unidades en RAIDZ2 vdevs.

Respuesta2

Haría lo que ZFS te dice que hagas en este caso.Por favor, haz una limpieza.

Limpio mis sistemas semanalmente según un cronograma. Yo también uso elzfswatcherdemonio para monitorear el estado de las instalaciones de Linux ZFS.

Es probable que su matriz ZFS no esté sintonizada, por lo que existen algunos valores que pueden ayudar a mejorar el rendimiento de la depuración, pero en este punto, simplemente debería ejecutarlo.

Y para la otra pregunta, su intercambio en caliente probablemente no hará lo que espera... Vea la queja a continuación.


despotricar:

¡Tener un montón de unidades virtuales RAID-0 detrás de un controlador de hardware es una mala idea!

Tienes lo peor de ambos mundos. La recuperabilidad y la verificación de errores son limitadas. Un disco fallido es esencialmente una unidad virtual fallida y existen implicaciones de intercambio en caliente. Digamos que retira los discos en cuestión. Probablemente necesite crear un nuevo disco virtual o terminar con una enumeración de unidades diferente.

En cierto punto, es mejor obtener un HBA real y ejecutar los discos como dispositivos de paso (sin metadatos RAID) osimplemente ejecute ZFS sobre vdevs protegidos por matrices de hardware.Por ejemplo, ejecute un RAID-6 en su controlador e instale ZFS en la parte superior. O ejecute varios grupos RAID-X y haga que ZFS refleje o separe los vdev resultantes.

información relacionada