ZFS ofrece un método integrado para examinar el estado de dispositivos y agrupaciones. La situación de una agrupación la determina el estado de todos sus dispositivos. Esta información sobre el estado se obtiene con el comando zpool status. Además, fmd informa de posibles errores en dispositivos y agrupaciones, que se muestran en la consola del sistema y en el archivo /var/adm/messages.
Esta sección describe cómo determinar el estado de grupos y dispositivos. En este capítulo no se explica cómo reparar o recuperarse de grupos cuyo estado es defectuoso. Para obtener más información sobre la resolución de problemas y la recuperación de datos, consulte el Chapter 10, Recuperación de agrupaciones y solución de problemas de Oracle Solaris ZFS.
El estado de una agrupación se describe mediante uno de cuatro estados:
Una agrupación con uno o varios dispositivos fallidos, pero cuyos datos permanecen disponibles debido a una configuración redundante.
Una agrupación cuyos dispositivos funcionan con normalidad.
Una agrupación en espera de restauración de la conectividad del dispositivo. Una agrupación SUSPENDED se mantiene en estado de espera hasta que se resuelve el problema del dispositivo.
Una agrupación con metadatos dañados, o uno o varios dispositivos no disponibles, y réplicas insuficientes para seguir funcionando.
Cada dispositivo de agrupación puede tener uno de los estados siguientes:
El dispositivo virtual ha sufrido un fallo pero sigue funcionando. Es el estado más habitual si un dispositivo RAID-Z o un reflejo pierden uno o más dispositivos constituyentes. La tolerancia a errores de la agrupación puede verse comprometida: un error posterior en otro dispositivo puede llegar a ser irrecuperable.
El administrador ha dejado expresamente sin conexión el dispositivo.
El dispositivo o dispositivo virtual funciona normalmente. Quizá haya algunos errores transitorios, pero el dispositivo funciona.
Se ha extraído físicamente el dispositivo mientras el sistema estaba ejecutándose. La detección de extracción de dispositivos depende del hardware y quizá no se admita en todas las plataformas.
El dispositivo o dispositivo virtual no se puede abrir. En algunos casos, las agrupaciones con dispositivos en estado UNAVAIL se muestran en modo DEGRADED. Si un dispositivo virtual de nivel superior tiene estado UNAVAIL, la agrupación queda completamente inaccesible.
El estado de una agrupación lo determina el estado de todos sus dispositivos virtuales de nivel superior. Si todos los dispositivos virtuales están ONLINE, la agrupación también está ONLINE. Si uno de los dispositivos virtuales tiene el estado DEGRADED o UNAVAIL, la agrupación también tiene el estado DEGRADED. Si un dispositivo virtual de nivel superior tiene el estado UNAVAIL o OFFLINE, la agrupación también tiene el estado UNAVAIL o SUSPENDED. Una agrupación con el estado UNAVAIL o SUSPENDED es completamente inaccesible. La recuperación de datos no es factible hasta que los dispositivos necesarios se conectan o reparan. Una agrupación con estado DEGRADED sigue funcionando, pero quizá no obtenga el mismo nivel de redundancia o rendimiento de datos que si tuviera conexión.
El comando zpool status también proporciona detalles sobre operaciones de reconstrucción y limpieza de datos.
Informe de reconstrucción en curso. Por ejemplo:
scan: resilver in progress since Wed Jun 20 14:19:38 2012 7.43G scanned 7.43G resilvered at 26.8M/s, 10.35% done, 0h30m to go
Informe de limpieza en curso. Por ejemplo:
scan: scrub in progress since Wed Jun 20 14:56:52 2012 529M scanned out of 71.8G at 48.1M/s, 0h25m to go 0 repaired, 0.72% done
Mensaje de reconstrucción finalizada. Por ejemplo:
scan: resilvered 71.8G in 0h14m with 0 errors on Wed Jun 20 14:33:42 2012
Mensaje de limpieza finalizada. Por ejemplo:
scan: scrub repaired 0 in 0h11m with 0 errors on Wed Jun 20 15:08:23 2012
Mensaje de cancelación de limpieza en curso. Por ejemplo:
scan: scrub canceled on Wed Jun 20 16:04:40 2012
Los mensajes de finalización de limpieza y reconstrucción se mantienen durante los reinicios del sistema.
Puede revisar rápidamente el estado de salud de la agrupación mediante el comando zpool status de la siguiente manera:
# zpool status -x all pools are healthy
Si desea examinar una determinada agrupación, indique su nombre en la sintaxis de comando. Cualquier grupo que no esté en estado ONLINE debe comprobarse para descartar problemas potenciales, tal como se explica en la sección siguiente.
Puede solicitar un resumen de estado más detallado mediante la opción –v. Por ejemplo:
# zpool status -v pond pool: pond state: DEGRADED status: One or more devices are unavailable in response to persistent errors. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Determine if the device needs to be replaced, and clear the errors using 'zpool clear' or 'fmadm repaired', or replace the device with 'zpool replace'. scan: scrub repaired 0 in 0h0m with 0 errors on Wed Jun 20 15:38:08 2012 config: NAME STATE READ WRITE CKSUM pond DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 UNAVAIL 0 0 0 mirror-1 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335DC60Fd0 ONLINE 0 0 0 device details: c0t5000C500335F907Fd0 UNAVAIL cannot open status: ZFS detected errors on this device. The device was missing. see: http://support.oracle.com/msg/ZFS-8000-LR for recovery errors: No known data errors
Esta salida muestra la descripción completa de por qué el grupo se encuentra en un estado determinado, incluida una descripción legible del problema y un enlace a un artículo sobre la materia para obtener más información. Cada artículo técnico ofrece información actualizada sobre el mejor método de resolución del problema actual. El uso de la información de configuración detallada permite determinar el dispositivo dañado y la forma de reparar la agrupación.
En el ejemplo anterior, debe reemplazarse el dispositivo UNAVAIL. Una vez reemplazado el dispositivo, utilice el comando zpool online para conectar el dispositivo, si es necesario. Por ejemplo:
# zpool online pond c0t5000C500335F907Fd0 warning: device 'c0t5000C500335DC60Fd0' onlined, but remains in degraded state # zpool status -x all pools are healthy
La salida anterior indica que el dispositivo permanece en un estado degradado hasta completar la reconstrucción.
Si la propiedad autoreplace está activada, es posible que no sea necesario conectar el dispositivo reemplazado.
Si una agrupación tiene un dispositivo sin conexión, la salida del comando identifica la agrupación problemática. Por ejemplo:
# zpool status -x pool: pond state: DEGRADED status: One or more devices has been taken offline by the administrator. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Online the device using 'zpool online' or replace the device with 'zpool replace'. config: NAME STATE READ WRITE CKSUM pond DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 OFFLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335DC60Fd0 ONLINE 0 0 0 errors: No known data errors
Las columnas READ y WRITE ofrecen un recuento de errores de E/S producidos en el dispositivo; y la columna CKSUM ofrece un recuento de errores de suma de comprobación del dispositivo que no pueden corregirse. Ambos recuentos de errores indican un error potencial del dispositivo y las pertinentes acciones correctivas. Si se informa de que un dispositivo virtual de nivel superior tiene errores distintos de cero, quizá ya no se pueda acceder a algunas porciones de datos.
El campo errors: identifica cualquier error de datos conocido.
En la salida del ejemplo anterior, el dispositivo que no está conectado no provoca errores de datos.
Para obtener más información sobre el diagnóstico y la reparación de datos y agrupaciones UNAVAIL, consulte Chapter 10, Recuperación de agrupaciones y solución de problemas de Oracle Solaris ZFS.
Puede utilizar las opciones de recuento e intervalo zpool status para recopilar estadísticas durante un período. Además, puede mostrar una indicación de hora mediante la opción –T. Por ejemplo:
# zpool status -T d 3 2 Wed Jun 20 16:10:09 MDT 2012 pool: pond state: ONLINE scan: resilvered 9.50K in 0h0m with 0 errors on Wed Jun 20 16:07:34 2012 config: NAME STATE READ WRITE CKSUM pond ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335DC60Fd0 ONLINE 0 0 0 errors: No known data errors pool: rpool state: ONLINE scan: scrub repaired 0 in 0h11m with 0 errors on Wed Jun 20 15:08:23 2012 config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335BA8C3d0s0 ONLINE 0 0 0 c0t5000C500335FC3E7d0s0 ONLINE 0 0 0 errors: No known data errors Wed Jun 20 16:10:12 MDT 2012 pool: pond state: ONLINE scan: resilvered 9.50K in 0h0m with 0 errors on Wed Jun 20 16:07:34 2012 config: NAME STATE READ WRITE CKSUM pond ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335DC60Fd0 ONLINE 0 0 0 errors: No known data errors pool: rpool state: ONLINE scan: scrub repaired 0 in 0h11m with 0 errors on Wed Jun 20 15:08:23 2012 config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335BA8C3d0s0 ONLINE 0 0 0 c0t5000C500335FC3E7d0s0 ONLINE 0 0 0 errors: No known data errors