Guía de administración de Oracle Solaris ZFS

Resolución de un dispositivo que no se encuentra

Si no se puede abrir un dispositivo, se muestra como UNAVAIL en la salida de zpool status. Este estado indica que ZFS no ha podido abrir el dispositivo la primera vez que se accedió a la agrupación, o que desde entonces el dispositivo ya no está disponible. Si el dispositivo hace que no quede disponible un dispositivo virtual de alto nivel, la agrupación queda completamente inaccesible. De lo contrario, podría verse en peligro la tolerancia a errores de la agrupación. En cualquier caso, sólo tiene que volver a conectar el dispositivo al sistema para restablecer el funcionamiento normal.

Por ejemplo, en pantalla puede aparecer un mensaje parecido al siguiente procedente de fmd tras un error de dispositivo:


SUNW-MSG-ID: ZFS-8000-FD, TYPE: Fault, VER: 1, SEVERITY: Major
EVENT-TIME: Thu Jun 24 10:42:36 PDT 2010
PLATFORM: SUNW,Sun-Fire-T200, CSN: -, HOSTNAME: neo2
SOURCE: zfs-diagnosis, REV: 1.0
EVENT-ID: a1fb66d0-cc51-cd14-a835-961c15696fcb
DESC: The number of I/O errors associated with a ZFS device exceeded
acceptable levels.  Refer to http://sun.com/msg/ZFS-8000-FD for more information.
AUTO-RESPONSE: The device has been offlined and marked as faulted.  An attempt
will be made to activate a hot spare if available. 
IMPACT: Fault tolerance of the pool may be compromised.
REC-ACTION: Run 'zpool status -x' and replace the bad device.

Para ver información más pormenorizada del problema y la resolución, utilice el comando zpool status -x. Por ejemplo:


# zpool status -x
  pool: tank
 state: DEGRADED
status: One or more devices could not be opened.  Sufficient replicas exist for
        the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
   see: http://www.sun.com/msg/ZFS-8000-2Q
 scrub: scrub completed after 0h0m with 0 errors on Tue Feb  2 13:15:20 2010
config:

        NAME        STATE     READ WRITE CKSUM
        tank        DEGRADED     0     0     0
          mirror-0  DEGRADED     0     0     0
            c1t0d0  ONLINE       0     0     0
            c1t1d0  UNAVAIL      0     0     0  cannot open

errors: No known data errors

En esta salida puede observarse que el dispositivo c1t1d0 ausente no funciona. Si determina que se trata de un dispositivo defectuoso, sustitúyalo.

A continuación, utilice el comando zpool online para conectar el dispositivo reemplazado. Por ejemplo:


# zpool online tank c1t1d0

Como último paso, confirme que la agrupación con el dispositivo reemplazado está en buen estado. Por ejemplo:


# zpool status -x tank
pool 'tank' is healthy

Cómo volver a conectar físicamente un dispositivo

La forma de volver a conectar un dispositivo que falta depende del tipo de dispositivo. Si es una unidad de red, se debe restaurar la conectividad a la red. Si se trata de un dispositivo USB u otro medio extraíble, debe volverse a conectar al sistema. Si consiste en un disco local, podría haber fallado un controlador de tal forma que el dispositivo ya no estuviera visible en el sistema. En tal caso, el controlador se debe reemplazar en el punto en que los discos vuelvan a estar disponibles. Pueden darse otros problemas, según el tipo de hardware y su configuración. Si una unidad falla y ya no está visible en el sistema, el dispositivo debe tratarse como si estuviera dañado. Siga los procedimientos que se indican en Sustitución o reparación de un dispositivo dañado.

Notificación de ZFS sobre disponibilidad de dispositivos

Después de que un dispositivo se vuelve a conectar al sistema, ZFS puede detectar o no automáticamente su disponibilidad. Si la agrupación ya tenía errores o el sistema se reinició como parte del procedimiento de conexión, ZFS vuelve a explorar automáticamente todos los dispositivos cuando intenta abrir la agrupación. Si la agrupación se había degradado y el dispositivo se reemplazó cuando el sistema estaba en ejecución, se debe notificar a ZFS que el dispositivo ya está disponible y listo para abrirse de nuevo mediante el comando zpool online. Por ejemplo:


# zpool online tank c0t1d0

Para obtener más información sobre la conexión de dispositivos, consulte Cómo conectar un dispositivo.