Solaris 10 x86: intentando reemplazar el disco en zpool

Solaris 10 x86: intentando reemplazar el disco en zpool

Tengo problemas para reemplazar un disco en un zpool existente en un sistema que ejecuta Solaris 10 en un procesador x86. El zpool se creó originalmente con dos sectores reflejados. Una de las unidades falló, así que la cambié físicamente por una nueva. Ejecuté prvtoc y fmthard para copiar la etiqueta del disco de la unidad en funcionamiento a la nueva unidad:

prtvtoc /dev/rdsk/c1t0d0s2 >/tmp/c1t0d0s2.out
fmthard -s /tmp/c1t0d0s2.out >/dev/rdsk/c1t1d0s2

Luego intenté conectar la nueva unidad y recibí una advertencia acerca de que el dispositivo aún tenía fallas:

$ zpool online pool c1t1d0s6 
warning: device 'c1t1d0s6' onlined, but remains in faulted state

La salida de zpool status -v es:

NAME          STATE     READ WRITE CKSUM
pool          DEGRADED     0     0     0
mirror-0    DEGRADED     0     0     0
c1t0d0s6  ONLINE       0     0     0
c1t1d0s6  UNAVAIL      0     0     0  corrupted data

(c1t1d0 es la unidad reemplazada).

Luego volví a desconectar c1t1d0 e intenté ejecutar el comando zpool replace, pero tampoco funcionó:

$ zpool replace pool c1t1d0s6
invalid vdev specification
use '-f' to override the following errors:
/dev/dsk/c1t1d0s6 overlaps with /dev/dsk/c1t1d0s2

¿Alguien sabe qué está pasando? ¿Es seguro utilizar el indicador '-f'?

Editar:Después de ejecutar zpool replace -f, obtengo:

pool: pool
state: DEGRADED
status: The pool is formatted using an older on-disk format.  The pool can
        still be used, but some features are unavailable.
action: Upgrade the pool using 'zpool upgrade'.  Once this is done, the
    pool will no longer be accessible on older software versions.
scrub: none requested
config:

    NAME                STATE     READ WRITE CKSUM
    pool                DEGRADED     0     0     0
      mirror-0          DEGRADED     0     0     0
        c1t0d0s6        ONLINE       0     0     0
        replacing-1     UNAVAIL      0     0     0  insufficient replicas
          c1t1d0s6/old  OFFLINE      0     0     0
          c1t1d0s6      UNAVAIL      0   342     0  experienced I/O failures

Veo errores en la nueva unidad en la salida de iostat -e. ¿Supongo que el nuevo disco también podría estar defectuoso?

Editar 2: No sé qué está pasando. Probé con una unidad diferente con el mismo procedimiento. Después de ejecutar zpool replace -f, el grupo zfs ejecutó una limpieza, pero el resultado del estado es:

  pool: pool
 state: ONLINE
 status: The pool is formatted using an older on-disk format.  The pool can
    still be used, but some features are unavailable.
 action: Upgrade the pool using 'zpool upgrade'.  Once this is done, the
    pool will no longer be accessible on older software versions.
 scrub: scrub completed after 12h56m with 0 errors on Wed Aug 29 06:49:16 2012
config:

    NAME                STATE     READ WRITE CKSUM
    pool              ONLINE       0     0     0
      mirror-0          ONLINE       0     0     0
        c1t0d0s6        ONLINE       0     0     0
        replacing-1     ONLINE   5.54M 19.9M     0
          c1t1d0s6/old  UNAVAIL      0     0     0  corrupted data
          c1t1d0s6      UNAVAIL      0     0     0  corrupted data

Después de desconectar c1t1d0s6, el resultado del estado de zpool es:

  pool: pool
 state: ONLINE
status: The pool is formatted using an older on-disk format.  The pool can
    still be used, but some features are unavailable.
action: Upgrade the pool using 'zpool upgrade'.  Once this is done, the
    pool will no longer be accessible on older software versions.
scrub: scrub completed after 12h56m with 0 errors on Wed Aug 29 06:49:16 2012
config:

    NAME                STATE     READ WRITE CKSUM
    pool                ONLINE       0     0     0
      mirror-0          ONLINE       0     0     0
        c1t0d0s6        ONLINE       0     0     0
        replacing-1     ONLINE   5.54M 19.9M     0
          c1t1d0s6/old  UNAVAIL      0     0     0  corrupted data
          c1t1d0s6      UNAVAIL      0     0     0  corrupted data

No lo entiendo. ¿No debería el sistema poder reemplazar c1t1d0s6 usando el espejo en c1t0d0s6?

Respuesta1

¿Borraste las alertas en fmadm? Y el zpool clear... Es seguro ejecutar el reemplazo de zpool con el -finterruptor, pero creo que su afirmación es incorrecta, a menos que ya haya eliminado el disco defectuoso.

http://docs.oracle.com/cd/E19253-01/819-5461/gbcet/index.html

Respuesta2

Verifique los cables o el sled y la ranura de la unidad. Una conexión SATA ruidosa producirá errores y fmadm usa esa información para determinar cuándo un dispositivo tiene fallas. He tenido unidades que pensé que estaban defectuosas, pero fue simplemente ZFS el que notó que no estaba obteniendo datos válidos de manera confiable. Noté un cable SATA pinchado, lo reemplacé y ejecuté zpool cleary zpool scrubno más errores.

información relacionada