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

12

Eu uso minha máquina Ubuntu como um servidor de arquivos para clientes Windows / Linux / Mac usando um compartilhamento Samba. Eu preciso que ele seja facilmente expansível adicionando mais discos rígidos sem ter que 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 errado ou o que eu poderia fazer melhor?

Criando a matriz inicial de 3 unidades

Eu comecei com três drives vazios: / 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 um array RAID5:

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

Agora, o array RAID5 é criado e já está sendo construído. Leva tempo, mas você pode prosseguir 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

Em seguida, 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 "Total PE" em extensões físicas. Vamos imaginar que é 509. Agora, crie um novo volume lógico que tome todo o espaço disponível:

$ lvcreate -l 509 vg_raid -n lv_raid

Finalmente, podemos criar um sistema de arquivos sobre esse 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 usar. Mas para ele 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 o array 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, o array RAID5 inclui quatro drives, que somente três estão em uso atualmente. O array precisa ser expandido para incluir todos os quatro drives:

$ 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 seja agora 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 online e montado:

$ xfs_grow /raid

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

$ mdadm --detail --scan >> /etc/mdadm/mdadm.conf
    
por Taskinen 18.02.2010 / 23:24

1 resposta

5

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

Pessoalmente, se eu estivesse desenvolvendo um volume LVM, eu não estaria desenvolvendo uma matriz RAID para fazê-lo. Eu criaria outro array RAID, criaria um novo physvol dele e o adicionaria ao mesmo grupo de volume. Essa é uma operação muito mais segura (não envolve reescrever todo o array RAID5 no novo conjunto de discos) e mantém o tamanho de seus arrays baixos.

    
por 19.02.2010 / 01:13