Varios permanent errors
fueron 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 CKSUM
valores 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.iso
con 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 shasum
como una diferencia en el archivo?
Desde la perspectiva de un laico, no veo nada que indique ningún error con este archivo.
Respuestas:
La redacción de
zpool status
es 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 scrub
en 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 erroreszpool 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.
fuente
zpool scrub
hicieron 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.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 clear
porque elCKSUM
recuento es0
para ambas unidades.Desafortunadamente, sin réplicas, realmente no hay forma de saberlo.
fuente
zpool clear
también el mensaje de error en sí, no solo el error cuenta? Es extraño que el mensaje persista, pero no se muestran errores.CKSUM counts
que 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.