Skip to main content

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.