O processo de substituição de um dispositivo pode demorar um longo período de tempo, dependendo do tamanho do dispositivo e da quantidade de dados do conjunto. O processo de mover os dados de um dispositivo a outro é conhecido como resilvering e pode ser monitorado com a utilização do comando zpool status.
Os sistemas de arquivos tradicionais realizam resilvering de dados no nível do bloco. O ZFS, por eliminar a estrutura em camadas artificiais do gerenciador de volumes, pode realizar resilvering de uma forma muito mais eficaz e controlada. A duas principais vantagens deste recurso são:
O ZFS realiza resilvering somente da quantidade mínima de dados necessária. No caso de uma curta interrupção (como oposição a uma substituição completa do dispositivo), o disco inteiro pode ser resilvered em questão de minutos ou segundos. Quando todo o disco é substituído, o processo de resilvering leva o tempo proporcional à quantidade de dados usados no disco. Substituir um disco de 500 GB pode levar alguns segundos se o conjunto só possuir poucos gigabytes de espaço em disco utilizado.
O resilvering é um processo seguro e que pode ser interrompido. Se o sistema perder energia ou for reinicializado, o processo de resilvering recomeça exatamente de onde parou, sem necessidade de nenhuma intervenção manual.
Para exibir o processo de resilvering, use o comando zpool status. Por exemplo:
# zpool status tank
pool: tank
state: DEGRADED
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scrub: resilver in progress for 0h0m, 22.60% done, 0h1m to go
config:
NAME STATE READ WRITE CKSUM
tank DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
replacing-0 DEGRADED 0 0 0
c1t0d0 UNAVAIL 0 0 0 cannot open
c2t0d0 ONLINE 0 0 0 85.0M resilvered
c1t1d0 ONLINE 0 0 0
errors: No known data errors
|
Neste exemplo, o disco c1t0d0 está sendo substituído pelo c2t0d0. Esse evento é observado na saída de status pela presença do dispositivo virtual substituição na configuração. Esse dispositivo não é real, não é possível criar um conjunto utilizando-o. O propósito desse dispositivo é exclusivamente exibir o progresso do resilvering e identificar qual dispositivo está sendo substituído.
Note que qualquer conjunto atualmente submetido ao resilvering é colocado em estado ONLINE ou DEGRADED porque o conjunto não pode fornecer o nível desejado de redundância até o processo de resilvering estar completo. Apesar de a E/S estar sempre programada com uma prioridade menor do que a E/S solicitada pelo usuário, o resilvering é realizado o mais rápido possível para minimizar o impacto no sistema. Depois que o resilvering estiver completo, a configuração reverte para a nova e completa configuração. Por exemplo:
# zpool status tank
pool: tank
state: ONLINE
scrub: resilver completed after 0h1m with 0 errors on Tue Feb 2 13:54:30 2010
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
c2t0d0 ONLINE 0 0 0 377M resilvered
c1t1d0 ONLINE 0 0 0
errors: No known data errors
|
O conjunto está novamente ONLINE e o disco falho original (c1t0d0) foi removido da configuração.