Depois de ter determinado qual dispositivo pode ser substituído, utilize o comando zpool replace para substitui-lo. Se você estiver substituindo o dispositivo danificado por um diferente, utilize uma sintaxe similar a seguinte:
# zpool replace tank c1t1d0 c2t0d0 |
Este comando migra os dados para o novo dispositivo a partir do dispositivo danificado ou de outros dispositivos do conjunto se este estiver em uma configuração redundante. Quando o comando estiver concluído, ele separa o dispositivo danificado da configuração, momento no qual o dispositivo pode ser removido do sistema. Se você já tiver removido o dispositivo e o tiver substituído por um dispositivo novo no mesmo local, use a forma simples de dispositivo do comando. Por exemplo:
# zpool replace tank c1t1d0 |
Este comando pega um disco não formatado, o formata adequadamente e, em seguida, começa a realizar o resilvering dos dados do restante da configuração.
Para obter mais informações sobre o comando zpool replace, consulte Substituindo dispositivos em um pool de armazenamento.
O exemplo a seguir mostra como substituir um dispositivo (c1t3d0) no conjunto de armazenamento espelhado tank em um sistema Sun Fire x4500 do Oracle. Para substituir o disco c1t3d0 por um novo disco no mesmo local (c1t3d0), desconfigure o disco antes de substituí-lo. A etapa básica segue:
Coloque o disco off-line (c1t3d0) para ser substituido. Não é possível desconfigurar um disco que esteja sendo usado.
Utilize o comando cfgadm para identificar o disco (c1t3d0) para ser desconfigurado e desconfigure-o. O conjunto estará degradado com o disco off-line nessa configuração espelhada, mas continuará disponível.
Substitua fisicamente o disco (c1t3d0). Certifique-se de que o LED Ready to Remove azul esteja iluminado antes de remover fisicamente o drive defeituoso.
Reconfigure o disco (c1t3d0).
Coloque o novo disco (c1t3d0) novamente on-line.
Execute o comando zpool replace para substituir o disco (c1t3d0).
Se você definiu anteriormente o autoreplace da propriedade do conjunto para on, qualquer dispositivo novo, encontrado no mesmo local físico que um dispositivo que antes pertencia ao conjunto, será automaticamente formatado e substituído sem o uso do comando zpool replace. Este recurso pode não ser suportado em todos os hardwares.
Se um disco defeituoso for substituído automaticamente por um sobressalente, pode ser necessário desanexar o sobressalente depois que o disco defeituoso for substituído. Por exemplo, se c2t4d0 ainda é um sobressalente ativo depois que o disco falho é substituído, desanexe-o.
# zpool detach tank c2t4d0 |
O exemplo a seguir percorre através das etapas para substituir um disco em um conjunto de armazenamento do ZFS.
# zpool offline tank c1t3d0
# cfgadm | grep c1t3d0
sata1/3::dsk/c1t3d0 disk connected configured ok
# cfgadm -c unconfigure sata1/3
Unconfigure the device at: /devices/pci@0,0/pci1022,7458@2/pci11ab,11ab@1:3
This operation will suspend activity on the SATA device
Continue (yes/no)? yes
# cfgadm | grep sata1/3
sata1/3 disk connected unconfigured ok
<Physically replace the failed disk c1t3d0>
# cfgadm -c configure sata1/3
# cfgadm | grep sata1/3
sata1/3::dsk/c1t3d0 disk connected configured ok
# zpool online tank c1t3d0
# zpool replace tank c1t3d0
# zpool status tank
pool: tank
state: ONLINE
scrub: resilver completed after 0h0m with 0 errors on Tue Feb 2 13:17:32 2010
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
c0t1d0 ONLINE 0 0 0
c1t1d0 ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
c0t2d0 ONLINE 0 0 0
c1t2d0 ONLINE 0 0 0
mirror-2 ONLINE 0 0 0
c0t3d0 ONLINE 0 0 0
c1t3d0 ONLINE 0 0 0
errors: No known data errors
|
Observe que o zpool output anterior pode mostrar o disco novo e o antigo abaixo do cabeçalho replacing. Por exemplo:
replacing DEGRADED 0 0 0 c1t3d0s0/o FAULTED 0 0 0 c1t3d0 ONLINE 0 0 0 |
Esse texto significa que o processo de substituição está em andamento e que disco novo está sendo resilvered.
Se você for substituir um disco (c1t3d0) por outro (c4t3d0), então será necessário apenas executar o comando zpool replace. Por exemplo:
# zpool replace tank c1t3d0 c4t3d0
# zpool status
pool: tank
state: DEGRADED
scrub: resilver completed after 0h0m with 0 errors on Tue Feb 2 13:35:41 2010
config:
NAME STATE READ WRITE CKSUM
tank DEGRADED 0 0 0
mirror-0 ONLINE 0 0 0
c0t1d0 ONLINE 0 0 0
c1t1d0 ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
c0t2d0 ONLINE 0 0 0
c1t2d0 ONLINE 0 0 0
mirror-2 DEGRADED 0 0 0
c0t3d0 ONLINE 0 0 0
replacing DEGRADED 0 0 0
c1t3d0 OFFLINE 0 0 0
c4t3d0 ONLINE 0 0 0
errors: No known data errors
|
Você pode precisar executar o comando zpool status várias vezes até que a substituição do disco seja concluída.
# zpool status tank
pool: tank
state: ONLINE
scrub: resilver completed after 0h0m with 0 errors on Tue Feb 2 13:35:41 2010
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
c0t1d0 ONLINE 0 0 0
c1t1d0 ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
c0t2d0 ONLINE 0 0 0
c1t2d0 ONLINE 0 0 0
mirror-2 ONLINE 0 0 0
c0t3d0 ONLINE 0 0 0
c4t3d0 ONLINE 0 0 0
|
O exemplo a seguir mostra como recuperar de um dispositivo de log falho c0t5d0 no conjunto de armazenamento pool). A etapa básica segue:
Reveja a saída zpool status -x e a mensagem de diagnóstico FMA, aqui descrita:
Substitua fisicamente o dispositivo de registro com falha.
Coloque o dispositivo de log on-line.
Limpe a condição de erro do pool.
# zpool status -x
pool: pool
state: FAULTED
status: One or more of the intent logs could not be read.
Waiting for adminstrator intervention to fix the faulted pool.
action: Either restore the affected device(s) and run 'zpool online',
or ignore the intent log records by running 'zpool clear'.
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
pool FAULTED 0 0 0 bad intent log
mirror ONLINE 0 0 0
c0t1d0 ONLINE 0 0 0
c0t4d0 ONLINE 0 0 0
logs FAULTED 0 0 0 bad intent log
c0t5d0 UNAVAIL 0 0 0 cannot open
<Physically replace the failed log device>
# zpool online pool c0t5d0
# zpool clear pool
|
# zpool status -x
pool: pool
state: FAULTED
status: One or more of the intent logs could not be read.
Waiting for adminstrator intervention to fix the faulted pool.
action: Either restore the affected device(s) and run 'zpool online',
or ignore the intent log records by running 'zpool clear'.
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
pool FAULTED 0 0 0 bad intent log
mirror-0 ONLINE 0 0 0
c0t1d0 ONLINE 0 0 0
c0t4d0 ONLINE 0 0 0
logs FAULTED 0 0 0 bad intent log
c0t5d0 UNAVAIL 0 0 0 cannot open
<Physically replace the failed log device>
# zpool online pool c0t5d0
# zpool clear pool
|