É possível converter um RAID5 btrfs em RAID6 com os mesmos discos sem perder dados?

É possível converter um RAID5 btrfs em RAID6 com os mesmos discos sem perder dados?

Como eu converteria uma configuração btrfs RAID5 (paridade única) existente em uma configuração RAID6 de paridade dupla, com espaço livre em disco disponível suficiente, usando os mesmos discos, sem trocar dados?

Basicamente, isso deveria ser apenas remover um disco e reter uma unidade de redundância para que o btrfs redistribua tudo nas unidades restantes e adicione novamente o disco removido?

Então, qual é o processo recomendado?

Eu estava pensando em algo nesse sentido

btrfs device delete /dev/sdx /mnt/fs
btrfs balance start -dconvert=raid6 -mconvert=raid6 /mnt/fs
btrfs device add /dev/sdx /mnt/fs

Preciso excluir e adicionar o disco ou posso apenas converter a configuração diretamente? Ou seja

btrfs balance start -dconvert=raid6 -mconvert=raid6 /mnt/fs

Responder1

https://www.howtoforge.com/a-beginners-guide-to-btrfs-p2

Isso afirma que você pode alterar o nível de ataque em um array em execução, desde que tenha espaço livre suficiente. Certifique-se de estar executando o kernel Linux estável mais recente.

Exemplo (do link): btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt

-dconvert é para os dados

-mconvert é para o meta-arquivo (você quer que seja duplicado, confie em mim)

o /mnt é onde o volume BTRFS é montado. Você pode fazer isso desmontado, mas não tentei e quero ser honesto.

Você tem raid0, raid1, raid5 e raid6. Se você tiver espaço livre suficiente, acredito que seja n-2 ou número de unidades [espaço livre] menos 2 para raid6. Embora com o BTRFS você possa economizar menos e, em vez disso, usar os dados para fazer a medição. É possível ter recursos semelhantes ao raid6 com menos do que o número aceitável de unidades se você estiver armazenando uma pequena quantidade de dados. Possível, mas não recomendado.

Observe também que isso demorará um pouco dependendo da quantidade de dados que você possui nas unidades. Há também uma pequena chance de o equilíbrio falhar e eliminar completamente o array ou colocá-lo em um modo somente leitura instável. Como sempre, mantenha backups.

Responder2

RAID6 - Wikipédia

  • RAID5 requer mais de 3 unidades (n) com eficiência de espaço de 1-1/n
  • RAID6 requer mais de 4 unidades (n) com eficiência de espaço de 1-2/n

Espaço total (aproximado) de um array de 1 TiB e alteração (%) de RAID5 -> RAID6:

  • 4 x 250GiB ~ 1 TiB -> RAID5 ~ 768 GiB -> RAID6 ~ 512 GiB -> -50%
  • 5 x 200GiB ~ 1 TiB -> RAID5 ~ 819,2 GiB -> RAID6 ~ 614,4 GiB -> -25%
  • 6 x 170GiB ~ 1 TiB -> RAID5 ~ 853,3 GiB -> RAID6 ~ 682,6 GiB -> -20%

Você pode alterar o nível de ataque em um array em execução, desde que tenha espaço livre e unidades suficientes.

  • não exclua ou remova nenhuma unidade desejada na matriz final
  • excluindo -> adicionando -> convertendo você teria um balanceamento "duplo"
    • durante a remoção/exclusão, os metadados e os pedaços de dados são redistribuídos para as unidades restantes, então você adiciona uma unidade, que precisará ser balanceada novamente quando você converter para RAID6.

Se você precisar adicionar uma(s) unidade(s), adicione-as todas antes de equilibrar/converter.

btrfs device add /dev/sdc /mnt
btrfs device add /dev/sdd /mnt

Filtros de equilíbrio - btrfs.wiki.kernel.org

Exemplo de "conversão" de saldo btrfs do link (atualizado):

btrfs balance start -dusage=90 -dconvert=raid6 -mconvert=raid6 /mnt

-dusage é o limite de uso para o balanceamento de blocos de dados.

-dconvert é para os dados

-mconvert é para os metadados

o /mnt é onde o volume BTRFS é montado. Você não pode fazer isso desmontado.

Os dados e/ou metadados btrfs podem ser:

  1. solteiro
  2. ataque0
  3. ataque01
  4. raid1
  5. raid5
  6. raid6
  7. raid1c3
  8. raid1c4

Comandos para pausar, retomar, cancelar ou obter status podem ser usados.

btrfs balance pause /mnt
btrfs balance resume /mnt
btrfs balance cancel /mnt
btrfs balance status -v /mnt

Ressalvas

  1. Dependendo da quantidade de dados que você possui nas unidades, o equilíbrio leva tempo.
  2. Há uma chance de o equilíbrio falhar e corromper o array e/ou colocá-lo em um modo somente leitura instável.
  3. Faça backup dos dados antes de converter.
  4. Certifique-se de estar executando o kernel Linux estável mais recente.

informação relacionada