Btrfs: RAID 1 em mais de 3 dispositivos

10

Atualmente, tenho uma partição Btrfs com quatro dispositivos: três unidades de 3 TB e uma unidade de 4 TB. Dados e metadados são RAID 10, então eu tenho 6 TB de espaço útil, que está quase cheio. Eu tinha previsto que o suporte ao RAID 5 no Btrfs estaria maduro quando meu armazenamento fosse preenchido, mas aparentemente não é uma prioridade.

Minha pergunta é: existe um motivo para preferir o RAID 10 ao RAID 1 ? Eu sei que o RAID 1 real no meu hardware atual deve me fornecer 3 TB de espaço útil com 4 cópias de cada bloco, mas o Btrfs aparentemente não se comporta dessa maneira. Do FAQ do Btrfs :

O btrfs combina todos os dispositivos em um pool de armazenamento primeiro e depois duplica os pedaços conforme os dados do arquivo são criados. O RAID-1 é definido atualmente como "2 cópias de todos os dados em diferentes dispositivos". Isso difere do MD-RAID e do dmraid, pois eles fazem exatamente n cópias para n dispositivos. Em um btrfs RAID-1 em três dispositivos de 1 TB, obtemos 1,5 TB de dados utilizáveis. Como cada bloco é copiado apenas para 2 dispositivos, a gravação de um determinado bloco exige apenas exatamente a gravação de 2 dispositivos; a leitura pode ser feita de apenas um.

E de Jens Erat no Stack Overflow :

O Btrfs distribui os dados (e suas cópias RAID 1) em blocos, lidando muito bem com discos rígidos de tamanho diferente. Você receberá a soma de todos os discos rígidos, divididos por dois - e não precisará pensar em como montá-los em pares de tamanhos semelhantes.

Se mais de um disco falhar, você sempre corre o risco de perder dados: o RAID 1 não pode lidar com a perda de dois discos ao mesmo tempo. No exemplo acima, se os dois discos errados morrerem, você sempre perde dados.

Isso significa que o reequilíbrio do RAID 10 para o RAID 1 fornecerá 500 GB extras de dados (6,5 TB em vez de 6 TB) devido à unidade de 4 TB? E há alguma razão para eu ficar com o RAID 10?

Mikkel
fonte
1
O BTRFS RAID-5 é (embora ainda experimental) realmente bastante estável e até muitos cenários típicos de recuperação de dados funcionam na versão atual (sem travar). Você provavelmente deve verificar periodicamente para garantir que seus dados ainda estejam corretos, mas pode valer a pena tentar. É possível converter de RAID-1 (0) para RAID-5.
basic6
@ basic6 É bom saber, obrigado. Eu estava pesquisando que não muito tempo atrás e viu que scrube replaceapoio tinha sido adicionado como de 3,19, mas as pessoas ainda estavam reclamando sobre a falta de alertas de dispositivos de falha. Tenho crons configurados para scrubs semanais e autotestes SMART semanais / mensais, para poder detectar esses problemas. Vou dar uma chance.
Mikkel
As limpezas periódicas (semanais ou mensais) são importantes; se uma limpeza for encontrada e ocorrer um erro porque não pode ser lida em uma unidade, aumentará a contagem de erros. Verifique a contagem de erros usando dev stats, que pode ser outro cronjob .
basic6

Respostas:

5

Sim, você recebe 500 GB extras. Observe que a determinação do espaço disponível no btrfs permanece indescritível. Além disso: dê uma olhada na calculadora de uso de disco btrfs .

Na sua segunda pergunta: você pode perder desempenho na sua matriz. Naturalmente, seus dados são igualmente seguros nas duas configurações de RAID. Ao considerar o desempenho, talvez você possa dar uma olhada nesses benchmarks: kernel.org , phoronix.com .

Você já tentou converter para RAID 1? Em caso afirmativo: quais são suas descobertas?

Laura
fonte
1
Isso não fornece uma resposta para a pergunta. Para criticar ou solicitar esclarecimentos a um autor, deixe um comentário abaixo da postagem - você sempre pode comentar em suas próprias postagens e, quando tiver reputação suficiente , poderá comentar em qualquer post .
DavidPostill
No entanto, para responder à sua pergunta, converti-me e o resultado parece ser consistente com minhas expectativas. Btrfs faz um trabalho pobre de indicar espaço real em disco disponível, mas você pode ver na saída de btrfs fi shque o espaço extra na unidade de 4 TB está sendo aproveitado, e (2,83 + 1,93 + 1,93 + 1,95 ) /2~=4.30 como esperado. Recentemente, sofri uma falha na unidade e fui reconstruído com êxito sem perda de dados, para confirmar em primeira mão que a redundância está intacta.
Mikkel
Desculpe, minha resposta não foi clara @david. Tentei responder às duas perguntas nas duas últimas linhas da postagem original. Além disso, indiquei uma série de incertezas (o que parece intrínseco ao btrfs) e forneci minhas fontes para referência. Na verdade, eu também fiz uma pergunta ao autor, para que outros pudessem aprender com suas descobertas. Fiz isso dentro da resposta por razões que você já explicou. Considerarei seus comentários da próxima vez que responder a uma pergunta sobre troca de pilhas.
Laura
Pode não ser a resposta mais certa, mas meus resultados indicam que suas suposições estão corretas, por isso estou aceitando. Não tenho certeza do seu comentário sobre diferenças de desempenho. Certamente isso vale para o hardware RAID 1 vs 10, mas não tenho certeza se o Btrfs vê um aumento no desempenho do RAID 10. Além disso, o que chama de RAID 1 ainda está distribuído por vários dispositivos aqui, por isso ainda é mais parecido com o RAID 10 do que RAID real 1. Se eu tivesse lido sua resposta antes da conversão, teria feito antes e depois dos benchmarks, mas não vou passar mais uma semana convertendo o array em RAID 10 e vice-versa.
Mikkel
Bem, existe esta página , que mostra benefícios marginais para o RAID 10 sobre o RAID 1, levando em consideração que os benchmarks têm 7 anos de idade.
Mikkel
0

Não use o btrfs raid 5 ou 6, a implementação está cheia de bugs, execute o zfs se você quiser.

Com o raid10, você ganhará velocidade.

A melhor coisa a fazer é criar uma partição de 3 TB na unidade de 4 TB (verifique se todas as 3 são exatamente do mesmo tamanho), combine-as em um RAID10 que terá 6 TB de espaço livre. Use 1 TB extra na unidade de 4 TB para / boot (isso deve ser vfat de qualquer maneira, se você quiser usar o efistub e evitar o grub ou qualquer outro carregador de inicialização que torne sua inicialização um pouco mais rápida), swap (você pode usar um muito grande, o ideal seria uma pequena troca de zram (4 GB funciona bem com 32 GB de RAM, 2 GB deve ser bom com 16 GB, se você tiver menos de 16 idk se vale a pena e provavelmente deve atualizar de qualquer maneira) usado primeiro (defina a prioridade como mais alta) usando o zstd e o maior número de fluxos de compressão que você tiver núcleos / threads ...

orange_juice6000
fonte