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 |