É possível matrizes RAID de faixas BTRFS?

2

Eu tenho usado uma configuração do sistema de arquivos Ext3 / 4 + lvm2 + mdadm por aproximadamente 5 anos em um servidor de arquivos. Isso tem crescido (e movido processadores algumas vezes) e eu movi discos entre sistemas (exportando / importando grupos de volumes) e movi volumes físicos para novos discos, então estou bastante confortável com isso, mas recentemente comecei a procurar por discos alternativos. sistemas de arquivos como os tempos de verificação e ressincronização do mdadm estão se tornando excessivos e sistemas mais recentes parecem estar usando somas de verificação e recuperação dinâmica para evitar isso.

Minha configuração usa matrizes RAID criadas a partir de partições em vez de discos inteiros, para permitir a mistura de tamanhos de disco; por exemplo, eu já misturei 4 discos, 2 x 3 TB, 1 x 2 TB e 1 x 1 TB para criar uma matriz de 9 TB dando 6 TB de espaço utilizável. Assumindo que os 4 discos estão formatados com partições de 1 TB, os comandos mdadm / lvm2 são:

# mdadm /dev/md0 --create -lraid5 -n3 /dev/sda1 /dev/sdb1 /dev/sdc1
# mdadm /dev/md1 --create -lraid5 -n3 /dev/sda2 /dev/sdb2 /dev/sdc2
# mdadm /dev/md2 --create -lraid5 -n3 /dev/sda3 /dev/sdb3 /dev/sdd1
# pvcreate /dev/md0 /dev/md1 /dev/md2
# vgcreate grp /dev/md0 /dev/md1 /dev/md2
# lvcreate -l100%FREE --name vol grp

Para o ZFS, ignorando o log e qualquer cache, o comando seria:

# zpool create puddle raidz sda1 sdb2 sdc1 raidz sda2 sdb2 sdc2 raidz sda3 sdb3 sdd1

No entanto, com o BTRFS, parece que o melhor que pode ser feito é criar três arrays de raid:

# mkfs.btrfs -draid5 /dev/sda1 /dev/sdb1 /dev/sdc1
# mkfs.btrfs -draid5 /dev/sda2 /dev/sdb2 /dev/sdc2
# mkfs.btrfs -draid5 /dev/sda3 /dev/sdb3 /dev/sdd1

A menos que eu tenha perdido alguma coisa, não parece haver nenhuma maneira dentro do BTRFS de mesclar isso em um único sistema de arquivos (além disso, muitas discussões implicam que a implementação do raid5 é relativamente nova e pode não estar no padrão de produção!). Existe uma maneira de configurar o BTRFS para usar um único sistema de arquivos em 4 discos de tamanhos diferentes, com redundância para a perda de um único disco e com 2/3 do espaço disponível para armazenamento?

Ou a minha escolha está restrita ao ZFS ou à minha pilha ext / lvm / mdadm?

Atualização: Enquanto esperava que o BTRFS RAID5 fosse declarado estável, fui criar uma configuração BTRFS RAID1. Posteriormente, o BTRFS RAID5 / 6 foi declarado como muito quebrado e adequado apenas para configuração experimental, então eu mudei para usar matrizes ZFS RAIDZ2 (RAID6).

    
por StarNamer 05.03.2015 / 01:34

1 resposta

1

Com seus tamanhos de disco de exemplo (2 x 3TB, 1 x 2TB, 1 x 1TB), isso deve funcionar bem com o btrfs raid5, com exatamente 2/3 do espaço disponível para uso, e com paridade suficiente para perder qualquer uma unidade. Nenhum particionamento é necessário, apenas dê ao btrfs todos os dispositivos diretamente.

Você pode usar o site alocador de espaço btrfs para experimentar diferentes configurações para ver quanto espaço seria desperdiçado.

No seu exemplo, eu criaria o array fazendo:

mkfs.btrfs -d raid5 -m raid5 /dev/sd[a-d]

Por favor, note que enquanto o raid0 / 1/10 é razoavelmente estável (ele já está no kernel há muito tempo e, por exemplo, o SuSE Linux Enterprise Server 12 suporta oficialmente esses modos) o código raid5 / 6 só se tornou semi-complete no linux 3.19, e o raid5 ainda é suscetível ao "write hole", então se você experimentar o btrfs raid5 então certifique-se de ter bons backups de quaisquer dados importantes (que todos devem sempre tentar fazer de qualquer maneira, independentemente do sistema de arquivos).

Pessoalmente, eu esperaria mais algumas versões do kernel antes de usar o btrfs raid5 / 6 para configurações não-experimentais.

Para se manter atualizado sobre o status de raid5 / 6, a página wiki btrfs raid56 deve normalmente estar atualizado.

    
por 14.04.2015 / 18:19