¿Qué indica un error ZFS permanente?

18

Varios permanent errorsfueron reportados en mi zpool hoy.

  pool: seagate3tb
 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://zfsonlinux.org/msg/ZFS-8000-8A
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        seagate3tb  ONLINE       0     0    28
          sda       ONLINE       0     0    56

errors: Permanent errors have been detected in the following files:

        /mnt/seagate3tb/Install.iso
        /mnt/seagate3tb/some-other-file1.txt
        /mnt/seagate3tb/some-other-file2.txt

Editar: estoy seguro de si esos CKSUMvalores son precisos. Estaba redactando datos y podría haberlos destrozado por error. Es posible que hayan sido 0. Desafortunadamente, no puedo encontrar una respuesta concluyente en mis notas y los errores se resuelven ahora, así que no estoy seguro, pero todo lo demás es correcto / refleja lo que Zpool informaba.

/mnt/seagate3tb/Install.iso es un archivo de ejemplo que se informa que tiene un error permanente.

Aquí es donde me confundo. Si comparo mi "error permanente" Install.isocon una copia de seguridad de ese mismo archivo exacto en otro sistema de archivos, se ven idénticos.

shasum "/mnt/seagate3tb/Install.iso"
1ade72fe65902b2a978e5504aaebf9a3a08bc328  /mnt/seagate3tb/Install.iso
shasum "/mnt/backup/Install.iso"
1ade72fe65902b2a978e5504aaebf9a3a08bc328  /mnt/backup/Install.iso
cmp /mnt/seagate3tb/Install.iso /mnt/backup/Install.iso
diff /mnt/seagate3tb/Install.iso /mnt/backup/Install.iso

Los archivos parecen ser idénticos. Además, el archivo funciona perfectamente bien. Si lo uso en una aplicación, se comporta como esperaba.

Como dicen los documentos :

Los errores de corrupción de datos son siempre fatales.

Pero según mis verificaciones de archivo rudimentarias, no estoy seguro de entender la definición de fatal.

estado: uno o más dispositivos han experimentado un error que daña los datos. Las aplicaciones pueden verse afectadas.

acción: Restaurar el archivo en cuestión si es posible. De lo contrario, restaure todo el grupo desde la copia de seguridad.

Tal vez me falta algo, pero el archivo parece perfectamente bien hasta donde puedo decir, y no necesita ninguna restauración ni muestra ninguna corrupción, a pesar de la recomendación de ZFS.

He visto otros artículos con el mismo error , pero aún no he encontrado una respuesta a mi pregunta.

¿Cuál es el error permanente con el archivo? ¿Hay algún problema de nivel inferior con el archivo que no sea evidente para mí? Si es así, ¿por qué eso no sería detectado por a shasumcomo una diferencia en el archivo?

Desde la perspectiva de un laico, no veo nada que indique ningún error con este archivo.

Will Haley
fuente
¿Tienes instantáneas?
ewwhite
3
Will, ya que nadie más lo ha dicho, ¿puedo darle la bienvenida a ServerFault? Esto me parece una excelente primera pregunta, y espero que continúe obteniendo respuestas instructivas. Espero que decidas quedarte con SF y contribuir más.
MadHatter
¡Gracias @MadHatter! Le agradezco su amable bienvenida, y ciertamente me quedaré con SF. Ya lo he agregado a mi breve lista de comunidades SE.
Will Haley

Respuestas:

22

La redacción de zpool statuses un poco engañosa. Un error permanente (en este contexto) indica que se ha producido un error de E / S y se ha registrado en el registro de errores SPA (Asistente de agrupación de almacenamiento) para ese grupo. Esto no significa necesariamente que haya corrupción irrecuperable de datos.

Lo que debe hacer es ejecutar un zpool scruben la piscina. Cuando finalice el fregado, el registro de errores de SPA se rotará y ya no mostrará errores anteriores al fregado. Si el exfoliante no detecta errores zpool status, ya no mostrará ningún error "permanente".

En cuanto a la documentación, dice que solo se registran "errores fatales" de esta manera. Un error fatal es un error de E / S que ZFS no pudo corregir automáticamente y, por lo tanto, estuvo expuesto a una aplicación como E / S fallida. Por el contrario, si la E / S se reintentó inmediatamente con éxito o si la E / S lógica se satisfizo desde un dispositivo redundante, no se consideraría un error fatal y, por lo tanto, no se registraría como un error de corrupción de datos.

Un error fatal no significa necesariamente la pérdida permanente de datos, solo significa que en ese momento no se pudo solucionar antes de que se propagara a la aplicación. Por ejemplo, un cable suelto o un controlador defectuoso podrían causar errores fatales temporales que ZFS describiría como "permanentes". Si realmente es un problema depende de la naturaleza de la E / S y de si la aplicación es capaz de recuperarse de los errores de E / S.

EDITAR: totalmente de acuerdo con @bahamat en que debe invertir en redundancia lo antes posible.

Tom Shaw
fuente
El registro de errores de SPA que informa que esto es "permanente" de hecho parece un poco engañoso. La zpool scrubhicieron exactamente lo que usted sugiere @ tom-Shaw, y su explicación tiene mucho sentido. Ya no veo ningún "error permanente" en esta matriz después de la limpieza. No pensé en errores fatales en el contexto de una lectura fallida. Creo que debe haber sido un error de E / S temporal en una lectura como la que sugiere. También estoy totalmente de acuerdo con la necesidad de redundancia.
Will Haley
Tom, no te he visto en mucho tiempo. Dar una buena acogida.
the-wabbit
7

Un error permanente significa que ha habido un error de suma de verificación en el archivo y que no hubo suficientes réplicas para reparar. Significa que al menos una lectura devolvió datos dañados debido a un error de E / S. Si lo que recibió la lectura, luego lo escribió nuevamente en el mismo archivo de disco, ahora tendría una corrupción de datos irrecuperable.

Mirando la configuración de su grupo, parece que no tiene redundancia. Esto es muy peligroso Usted no recibe ninguno de los beneficios de auto-sanación de ZFS, pero va a ser capaz de decir que cuando se ha producido la corrupción de datos. Normalmente, ZFS corregirá automática y silenciosamente las lecturas corruptas, pero en su caso no puede. También parece que ya se ha ejecutado zpool clearporque el CKSUMrecuento es 0para ambas unidades.

Desafortunadamente, sin réplicas, realmente no hay forma de saberlo.

bahamat
fuente
2
¿No borraría zpool cleartambién el mensaje de error en sí, no solo el error cuenta? Es extraño que el mensaje persista, pero no se muestran errores.
user121391
2
Mis disculpas. Había omitido los archivos de la lista de errores permanentes por privacidad. Al editar esa salida, también destrocé los recuentos de CKSUM y perdí un contexto valioso. He editado la pregunta para reflejar la realidad. @ user121391
Will Haley
En ese caso, si los números que muestra son correctos, entonces es probable que tenga un error de hardware en alguna parte. Dado que ambos discos muestran CKSUM countsque podría ser el controlador, el cable o cualquier hardware compartido entre los dos discos. También es posible que ambos discos estén fallando. En cualquier caso, esto subraya la necesidad de agregar redundancia lo antes posible e inspeccionar los archivos indicados en busca de corrupción.
bahamat
OP no parece tener ninguna redundancia; El vdev tiene 56 errores CKSUM y el grupo tiene 28 errores CKSUM. Así que no estoy seguro de a qué se refería con "ambos discos" en su comentario anterior. Estoy de acuerdo con su punto sobre el valor de la redundancia.
un CVn
Tienes razón. Leí mal el nombre del grupo como si fuera otro disco. Gracias por señalar eso.
bahamat