Fácil de expandir o software Linux RAID 5 com XFS. Melhores Práticas?

13

Eu uso minha máquina Ubuntu como servidor de arquivos para clientes Windows / Linux / Mac usando um compartilhamento Samba. Eu preciso que ele seja facilmente expansível apenas adicionando mais discos rígidos sem precisar mover nenhum dado para frente e para trás.

Foi assim que eu fiz até agora. Eu adicionei com sucesso um quarto disco rígido. Agora, seria bom saber que é assim que deve ser feito? O que estou fazendo de errado ou o que eu poderia fazer melhor?

Criando a matriz inicial de 3 unidades

Comecei com três unidades vazias: / dev / sdb, / dev / sdc e / dev / sdd.

Primeiro, criei partições vazias para todas as unidades:

$ fdisk /dev/sdX
n # Create a new partition
p # Primary
1 # First partition
[enter] # Starting point to first sector (default)
[enter] # Ending point to last sector (default)
t # Change partition type
fd # Type: Linux raid autodetect
w # Write changes to disc

Quando partições RAID vazias foram criadas para todos os três discos, criei uma matriz RAID5:

$ mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1

Agora a matriz RAID5 está criada e já está sendo construída. Leva tempo, mas você pode continuar com a criação de um novo volume físico do LVM2:

$ pvcreate /dev/md0

Agora vamos criar um novo grupo de volumes:

$ vgcreate vd_raid /dev/md0

Então, precisamos criar um novo volume lógico dentro desse grupo de volumes. Primeiro, precisamos descobrir o tamanho exato do grupo de volumes criado:

$ vgdisplay vg_raid

O tamanho pode ser visto na linha que indica o "PE total" em extensões físicas. Vamos imaginar que seja 509. Agora crie um novo volume lógico que ocupa todo o espaço disponível:

$ lvcreate -l 509 vg_raid -n lv_raid

Finalmente, podemos criar um sistema de arquivos em cima desse volume lógico:

$ mkfs.xfs /dev/mapper/vg_raid-lv_raid

Para poder usar nossa matriz RAID recém-criada, precisamos criar um diretório e montá-lo:

$ mkdir /raid
$ mount /dev/mapper/vg_raid-lv_raid /raid

Agora está pronto para uso. Mas, para montar automaticamente após a reinicialização, precisamos salvar a geometria RAID no arquivo de configuração do mdadm:

$ mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Em seguida, adicione a seguinte linha ao / etc / fstab, que monta a matriz RAID automaticamente:

/dev/mapper/vg_raid-lv_raid /raid auto auto,noatime,nodiratime,logbufs=8 0 1

Agora a matriz RAID está pronta para uso e montada automaticamente no diretório / raid após cada inicialização.

Adicionando uma nova unidade à matriz

Vamos imaginar que agora você tenha uma nova unidade, / dev / sde, que deseja adicionar à matriz criada anteriormente sem perder nenhum dado.

Primeiro, a nova unidade precisa ser particionada como todas as outras unidades:

$ fdisk /dev/sde
n # Create a new partition
p # Primary
1 # First partition
[enter] # Starting point to first sector (default)
[enter] # Ending point to last sector (default)
t # Change partition type
fd # Type: Linux raid autodetect
w # Write changes to disc

Em seguida, ele precisa ser adicionado à matriz RAID:

$ mdadm --add /dev/md0 /dev/sde1

Agora, a matriz RAID5 inclui quatro unidades, das quais apenas três estão em uso atualmente. A matriz precisa ser expandida para incluir todas as quatro unidades:

$ mdadm --grow /dev/md0 --raid-devices=4

Em seguida, o volume físico do LVM2 precisa ser expandido:

$ pvresize /dev/md0

Agora o volume físico é redimensionado por padrão para cobrir todo o espaço disponível na matriz RAID. Precisamos descobrir o novo tamanho em extensões físicas:

$ vgdisplay vg_raid

Vamos imaginar que o novo tamanho agora seja 764 (pode ser visto em "Total PE"). Agora expanda o volume lógico para cobrir isso:

$ lvextend /dev/mapper/vg_raid-lv_raid -l 764

Em seguida, expanda o sistema de arquivos XFS. Isso precisa ser feito durante o sistema de arquivos estar online e montado:

$ xfs_grow /raid

Por padrão, ele é expandido para cobrir todo o espaço disponível. Finalmente, a geometria da matriz RAID precisa ser atualizada porque a matriz agora inclui um novo disco. Primeiro exclua a linha adicionada de /etc/mdadm/mdadm.conf e, em seguida, adicione uma nova:

$ mdadm --detail --scan >> /etc/mdadm/mdadm.conf
Taskinen
fonte
3
Não coloque partições nos seus discos. Não é necessário - a detecção automática de RAID no kernel (tipo de partição fd) está obsoleta.
James
Então, ao invés de criar partições do tipo 'fd' com o fdisk, eu deveria apenas criar a matriz / dev / md0 para os dispositivos / dev / sdb, / dev / sdc e / dev / sdd diretamente?
Taskinen
1
Ouvi dizer que nem todos os discos são do mesmo tamanho; portanto, se eu comprar um novo disco de terabyte, talvez ele não seja exatamente do mesmo tamanho. Isso introduziria alguns problemas?
Taskinen

Respostas:

5

Eu acho que você acertou. Certifique-se de entender e seguir os avisos sobre o crescimento do RAID 5 man 8 mdadm.

Pessoalmente, se eu estivesse aumentando um volume LVM, não estaria aumentando uma matriz RAID existente para isso. Eu criaria outro array RAID, criaria um novo physvol e o adicionaria ao mesmo grupo de volumes. Essa é uma operação muito mais segura (não envolve reescrever toda a matriz RAID5 no novo conjunto de discos) e mantém o tamanho de suas matrizes baixo.

Kamil Kisiel
fonte
Concordo absolutamente. vgextend é seu amigo aqui.
Dan Andreatta
1
Em geral, eu entendo, mas e a situação em que eu quero aumentar a matriz de três discos acima mencionada em uma matriz de quatro discos? Não consigo criar uma nova matriz RAID apenas a partir do quarto disco.
Taskinen
1
Eu não estaria expandindo a matriz de disco de um servidor de armazenamento, um disco de cada vez. Passar de uma matriz de três discos para uma matriz de quatro discos fornecerá apenas 50% a mais de armazenamento, pois é necessário usar os discos do mesmo tamanho.
Kamil Kisiel
1
Acordado. Quando você ficar sem espaço, unidades de disco maiores terão um preço baixo. Crie uma segunda matriz RAID em um novo conjunto de unidades maiores e, em seguida, mova seus dados antigos para isso e descomissione o conjunto antigo assim que o pvmove terminar. Tudo isso pode ser feito enquanto os sistemas de arquivos nos volumes lógicos afetados pelo pvmove estão em uso ativo.
Flabdablet