Aumentar o ZFS RAID-Z[123] sem degradação?

Aumentar o ZFS RAID-Z[123] sem degradação?

Eu sei que no ZFS, a única maneira de aumentar um vdev RAID-Z (ou RAID-Z2 ou RAID-Z3) é substituir os discos por discos maiores; não há como alterar a geometria. No entanto, é possível fazer isso sem degradar a matriz no processo?

Por exemplo, suponha que eu tenha um array RAID-Z com 4 discos: 1x2TB e 3x1TB geram 3 TB de espaço utilizável. Com todas as unidades funcionando, compro mais 3 TB de 2 TB para aumentar o array (para 6 TB utilizáveis). Se eu remover e substituir cada um dos 1 TB por 2 TB, um de cada vez, para forçar cada resilver, estaria degradando desnecessária e repetidamente o array e aumentando o risco de falha no processo.

O que espero que seja possível é espelhar cada disco antes de substituí-lo. ou seja, adicione os primeiros 2 TB a uma baia sobressalente, espelhe o primeiro disco de 1 TB nela, remova o 1 TB e coloque os 2 TB no slot da unidade removida; em seguida, repita para o segundo e terceiro discos de 1 TB. Isso poderia até evitar a necessidade de resilver - ou de recalcular a paridade, de qualquer maneira.

É possível uma coisa dessas?

Responder1

A solução proposta é possível, mas existem algumas desvantagens substanciais:

  • Você não pode gravar nada no pool ( zpool import -o readonly=on ${YOUR_ZFS_POOL}) enquanto uma clonagem de disco estiver em andamento.
  • Você precisa exportar o pool ( zpool export ${YOUR_ZFS_POOL}) para cada disco que você desliga.

Após clonar um disco vdev, você deve:

  1. Exporte o conjunto ( zpool export ${YOUR_ZFS_POOL}).
  2. Zap ( zpool labelclear ${OLD_DISK_DEVICE}) ou remova fisicamente o disco antigo.
    Aviso:Não há como desfazer se você destruir o disco.
  3. Se necessário, aumente a partição vdev no novo disco.
  4. Importe o conjunto ( zpool import ${YOUR_ZFS_POOL}).
    Aviso:Não há como desfazer após este ponto. O disco antigo não pode mais estar online no mesmo pool.
  5. Expanda o disco ( zpool online -e ${NEW_DISK_VDEV}).

Depois de repetir essas etapas para cada disco que estiver substituindo, a nova capacidade deverá entrar em vigor.


O recurso de substituição integrado do ZFS foi projetado para evitar toda essa complexidade extra descrita na seção acima. Se você tem medo de corromper seu zpool RAID-Z durante um resilver, talvez você deva:

  • criou o pool com mais redundância (RAID-Z2, RAID-Z3) ou
  • faça backup do seu pool em outro lugar enquanto aumenta seu array.

Além disso, se um disco realmente falhar, você ainda ficaria satisfeito com o RAID-Z?

Se você estiver com o orçamento apertado e realmente não puder pagar um local para fazer backup de seus conjuntos de dados, é realmente mais seguro executar seu plano porque os clones seriam operações transacionais do tipo tudo ou nada, mas lembre-se de que seu pool será somente leitura. ou offline por um tempo, e você também corre o risco de cometer um erro durante as etapas pós-clonagem.

Usando zpool replaceseria:

  • seria mais rápido*, porque apenas o armazenamento usado seria copiado, em vez de todo o dispositivo de bloco
    * se você tiver orecurso de limpeza / resilver sequencial
  • não terá tempo de inatividade, porque o pool estaria totalmente operacional enquanto o resilver estivesse acontecendo
  • elimine o erro humano, porque você estaria usando o fluxo de trabalho esperado do ZFS para substituir um disco

informação relacionada