Comprobación de la integridad del sistema de archivos ZFS
Comprobación de la integridad del sistema de archivos ZFS
No existe equivalente de utilidad fsck para ZFS. Esta utilidad ha servido tradicionalmente para dos propósitos, los de reparación del sistema de archivos y la validación del sistema de archivos
Reparación del sistema de archivos
Con los sistemas de archivos tradicionales, la forma en que se escriben los datos es intrínsecamente vulnerable a fallos inesperados que causan inconsistencias en el sistema de archivos. Debido a que un sistema de archivos tradicional no es transaccional, es posible que haya bloques sin referencia, recuentos de enlaces incorrectos u otras estructuras inconsistentes del sistema de archivos. La adición del registro en diario resuelve algunos de estos problemas, pero puede presentar problemas adicionales cuando el registro no se puede deshacer. La única forma de que existan datos inconsistentes en el disco en una configuración ZFS es a través de un fallo de hardware (en cuyo caso el grupo debería haber sido redundante) o cuando existe un error en el software ZFS.
La utilidad fsck repara problemas conocidos específicos de los sistemas de archivos UFS. La mayoría de los problemas del grupo de almacenamiento de ZFS generalmente están relacionados con fallas de hardware o fallas de energía. Se pueden evitar muchos problemas mediante el uso de agrupaciones redundantes. Si su grupo está dañado debido a un hardware defectuoso o un corte de energía, consulte Reparación de daños en todo el grupo de almacenamiento de ZFS.
Si su grupo no es redundante, el riesgo de que la corrupción del sistema de archivos pueda hacer que algunos o todos sus datos sean inaccesibles siempre está presente.
Validación del sistema de archivos
Además de realizar la reparación del sistema de archivos, la utilidad fsck valida que los datos en el disco no tengan problemas. Tradicionalmente, esta tarea requiere desmontar el sistema de archivos y ejecutar la utilidad fsck, posiblemente llevando el sistema al modo de usuario único en el proceso. Este escenario da como resultado un tiempo de inactividad que es proporcional al tamaño del sistema de archivos que se está verificando. En lugar de requerir una utilidad explícita para realizar las comprobaciones necesarias, ZFS proporciona un mecanismo para realizar comprobaciones rutinarias de todas las inconsistencias. Esta función, conocida como depuración, se usa comúnmente en la memoria y otros sistemas como un método para detectar y prevenir errores antes de que provoquen una falla de hardware o software.
Controlar la depuración de datos de ZFS ( ZFS Data Scrubbing )
Siempre que ZFS encuentra un error, ya sea mediante la limpieza o al acceder a un archivo bajo demanda, el error se registra internamente para que pueda obtener una descripción general rápida de todos los errores conocidos dentro del grupo.
Depuración explícita de datos de ZFS
La forma más sencilla de verificar la integridad de los datos es iniciar una depuración explícita de todos los datos dentro del grupo. Esta operación atraviesa todos los datos del grupo una vez y verifica que se puedan leer todos los bloques. La limpieza se realiza tan rápido como lo permiten los dispositivos, aunque la prioridad de cualquier E / S permanece por debajo de la de las operaciones normales. Esta operación podría afectar negativamente al rendimiento, aunque los datos del grupo deberían seguir siendo utilizables y casi tan receptivos mientras se realiza la depuración. Para iniciar una limpieza explícita, use el comando zpool scrub. Por ejemplo:
# zpool scrub NOMBRE_DEL_POOL
El estado de la operación de limpieza actual se puede mostrar mediante el comando de status zpool. Por ejemplo:
root@freenas001:/mnt/Data/backups/ashay/cbs # zpool status -v Data pool: Data state: ONLINE status: Some supported features are not enabled on the pool. The pool can still be used, but some features are unavailable. action: Enable all features using 'zpool upgrade'. Once this is done, the pool may no longer be accessible by software that does not support the features. See zpool-features(7) for details. scan: scrub repaired 0 in 0 days 06:17:08 with 0 errors on Sun Mar 28 07:17:10 2021 config: NAME STATE READ WRITE CKSUM Data ONLINE 0 0 0 raidz2-0 ONLINE 0 0 0 gptid/c55616c1-b818-11e7-b781-002590839ad8 ONLINE 0 0 0 gptid/c5e3a0ce-b818-11e7-b781-002590839ad8 ONLINE 0 0 0 gptid/c6676677-b818-11e7-b781-002590839ad8 ONLINE 0 0 0 gptid/c6e79bb5-b818-11e7-b781-002590839ad8 ONLINE 0 0 0 gptid/c76955a5-b818-11e7-b781-002590839ad8 ONLINE 0 0 0 gptid/c7f2cc81-b818-11e7-b781-002590839ad8 ONLINE 0 0 0 gptid/c877cb95-b818-11e7-b781-002590839ad8 ONLINE 0 0 0 gptid/c8fde5d5-b818-11e7-b781-002590839ad8 ONLINE 0 0 0 gptid/c985e91c-b818-11e7-b781-002590839ad8 ONLINE 0 0 0 gptid/ca0cfa64-b818-11e7-b781-002590839ad8 ONLINE 0 0 0 errors: No known data errors
Ejemplo de un pool degradado
root@backup001[~]# zpool status pool: freenas-boot state: ONLINE scan: scrub repaired 0 in 0 days 00:00:06 with 0 errors on Tue Mar 23 03:45:06 2021 config: NAME STATE READ WRITE CKSUM freenas-boot ONLINE 0 0 0 da0p2 ONLINE 0 0 0 errors: No known data errors pool: storage state: DEGRADED 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://illumos.org/msg/ZFS-8000-9P scan: scrub in progress since Mon Mar 29 17:59:23 2021 11.2T scanned at 199M/s, 8.72T issued at 155M/s, 62.0T total 0 repaired, 14.07% done, 4 days 04:22:00 to go config: NAME STATE READ WRITE CKSUM storage DEGRADED 0 0 0 raidz2-0 DEGRADED 0 0 0 gptid/a454f250-70fe-11e9-9d0d-1866dab518d7 ONLINE 0 0 0 gptid/a4d16045-70fe-11e9-9d0d-1866dab518d7 ONLINE 0 0 0 gptid/a555b47b-70fe-11e9-9d0d-1866dab518d7 ONLINE 0 0 0 gptid/a5d78293-70fe-11e9-9d0d-1866dab518d7 ONLINE 0 0 0 gptid/a65d3965-70fe-11e9-9d0d-1866dab518d7 ONLINE 0 0 29 gptid/a70507cd-70fe-11e9-9d0d-1866dab518d7 ONLINE 0 0 29 gptid/772f7a33-1c6c-11eb-ab49-1866dab518d7 ONLINE 0 0 0 gptid/a9211c24-70fe-11e9-9d0d-1866dab518d7 DEGRADED 0 0 53 too many errors gptid/aa2e2dbb-70fe-11e9-9d0d-1866dab518d7 ONLINE 0 0 0 gptid/ab635660-70fe-11e9-9d0d-1866dab518d7 ONLINE 0 0 0 gptid/ac715b96-70fe-11e9-9d0d-1866dab518d7 ONLINE 0 0 0 gptid/ad81a911-70fe-11e9-9d0d-1866dab518d7 ONLINE 0 0 6 errors: No known data errors
Solo se puede realizar una operación de scrub activa por pool a la vez. Puede detener una operación de limpieza en curso mediante la opción -s. Por ejemplo:
# zpool scrub -s NOMBRE_DE_POOL
En la mayoría de los casos, una operación de depuración para garantizar la integridad de los datos debe continuar hasta completarse. Puedes detener la operación de scrub a su tu criterio si el rendimiento del sistema se ve afectado por la operación.
El rendimiento de la rutina de scrubbing garantiza operaciones de E/S continua a todos los discos del sistema. La limpieza de rutina tiene el efecto secundario de evitar que la administración de energía coloque los discos inactivos en modo de bajo consumo. Si el sistema generalmente realiza E/S todo el tiempo, o si el consumo de energía no es un problema, entonces este problema se puede ignorar con seguridad.