Como eu me recupero de um zpool com falha, onde um dispositivo está OK, mas estava temporariamente off-line?

7

Eu tenho um zpool com 4 discos USB de 2 TB em uma configuração de raidz:

[root@chef /mnt/Chef]# zpool status farcryz1
  pool: farcryz1
 state: ONLINE
 scrub: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    farcryz1    ONLINE       0     0     0
      raidz1    ONLINE       0     0     0
        da1     ONLINE       0     0     0
        da2     ONLINE       0     0     0
        da3     ONLINE       0     0     0
        da4     ONLINE       0     0     0

Para testar o pool, simulei uma falha na unidade puxando o cabo USB de uma das unidades sem colocá-lo off-line:

[root@chef /mnt/Chef]# zpool status farcryz1
  pool: farcryz1
 state: ONLINE
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://www.sun.com/msg/ZFS-8000-9P
 scrub: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    farcryz1    ONLINE       0     0     0
      raidz1    ONLINE       0     0     0
        da4     ONLINE      22     4     0
        da3     ONLINE       0     0     0
        da1     ONLINE       0     0     0
        da2     ONLINE       0     0     0

errors: No known data errors

Os dados ainda estão lá, a piscina ainda está online. Ótimo! Agora vamos tentar restaurar o pool. Liguei a unidade novamente e emiti o comando zpool replace conforme instruído acima:

[root@chef /mnt/Chef]# zpool replace farcryz1 da4
invalid vdev specification
use '-f' to override the following errors:
/dev/da4 is part of active pool 'farcryz1'

Um .... Isso não é útil ... Então eu tentei um zpool clear farcryz1 , mas isso não ajudou em nada. Ainda não consegui substituir da4 . Então, tentei uma combinação de online ing, offline ing, clear ing, replace ing e scrub ing. Agora estou preso aqui:

[root@chef /mnt/Chef]# zpool status -v farcryz1
  pool: farcryz1
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
    invalid.  Sufficient replicas exist for the pool to continue
    functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: http://www.sun.com/msg/ZFS-8000-4J
 scrub: scrub completed after 0h2m with 0 errors on Fri Sep  9 13:43:34 2011
config:

    NAME        STATE     READ WRITE CKSUM
    farcryz1    DEGRADED     0     0     0
      raidz1    DEGRADED     0     0     0
        da4     UNAVAIL      9     0     0  experienced I/O failures
        da3     ONLINE       0     0     0
        da1     ONLINE       0     0     0
        da2     ONLINE       0     0     0

errors: No known data errors
[root@chef /mnt/Chef]# zpool replace farcryz1 da4
cannot replace da4 with da4: da4 is busy

Como posso me recuperar dessa situação, em que um dispositivo no zpool foi desconectado inesperadamente (mas não é um dispositivo com falha) e agora está de volta, pronto para ser resilvered?

EDITAR: Conforme solicitado, um tail de dmesg :

(ses3:umass-sim4:4:0:1): removing device entry
(da4:umass-sim4:4:0:0): removing device entry
ugen3.2: <Western Digital> at usbus3
umass4: <Western Digital My Book 1140, class 0/0, rev 3.00/10.03, addr 1> on usbus3
da4 at umass-sim4 bus 4 scbus6 target 0 lun 0
da4: <WD My Book 1140 1003> Fixed Direct Access SCSI-6 device 
da4: 400.000MB/s transfers
da4: 1907697MB (3906963456 512 byte sectors: 255H 63S/T 243197C)
ses3 at umass-sim4 bus 4 scbus6 target 0 lun 1
ses3: <WD SES Device 1003> Fixed Enclosure Services SCSI-6 device 
ses3: 400.000MB/s transfers
ses3: SCSI-3 SES Device
GEOM: da4: partition 1 does not start on a track boundary.
GEOM: da4: partition 1 does not end on a track boundary.
GEOM: da4: partition 1 does not start on a track boundary.
GEOM: da4: partition 1 does not end on a track boundary.
ugen3.2: <Western Digital> at usbus3 (disconnected)
umass4: at uhub3, port 1, addr 1 (disconnected)
(da4:umass-sim4:4:0:0): lost device
(da4:umass-sim4:4:0:0): removing device entry
(ses3:umass-sim4:4:0:1): lost device
(ses3:umass-sim4:4:0:1): removing device entry
ugen3.2: <Western Digital> at usbus3
umass4: <Western Digital My Book 1140, class 0/0, rev 3.00/10.03, addr 1> on usbus3
da4 at umass-sim4 bus 4 scbus6 target 0 lun 0
da4: <WD My Book 1140 1003> Fixed Direct Access SCSI-6 device 
da4: 400.000MB/s transfers
da4: 1907697MB (3906963456 512 byte sectors: 255H 63S/T 243197C)
ses3 at umass-sim4 bus 4 scbus6 target 0 lun 1
ses3: <WD SES Device 1003> Fixed Enclosure Services SCSI-6 device 
ses3: 400.000MB/s transfers
ses3: SCSI-3 SES Device
    
por Josh 09.09.2011 / 21:32

3 respostas

8

Determine if the device needs to be replaced, and clear the errors using 'zpool clear' or replace the device with 'zpool replace'.

Parece que, após a falha temporária inicial, você só precisa fazer um zpool clear para limpar os erros.

Se você quiser fingir que é uma substituição de unidade, provavelmente precisará limpar os dados da unidade antes de tentar adicioná-la novamente ao pool.

    
por 09.09.2011 / 23:10
2

Se zpool clear não consertar, você pode fazer o zfs esquecer o disco usando zpool labelclear <partition> (disponível em link desde zfs-v0.6.2 ).

Esteja ciente de que, mesmo que você tenha criado o zpool usando um dispositivo inteiro, por exemplo, /dev/sda você tem que especificar a partição que o zfs criou, por exemplo /dev/sda1 .

(Os créditos vão para o DeHackEd, link )

De uma página do zpool :

zpool labelclear [-f] device

Removes ZFS label information from the specified device. The device
must not be part of an active pool configuration.

  -f     Treat exported or foreign devices as inactive.
    
por 15.12.2015 / 16:37
1

Quais foram as saídas dos vários comandos que você tentou? Você tentou a chave -f em algum deles?

Você executou zpool clear poolname device-name ?

No seu caso, zpool clear farcryz1 da4 - Isso deveria ter começado o processo de resilvering.

    
por 09.09.2011 / 22:22