Construa o RAID 5 com mdadm e 1 disco com dados

0

Como não encontrei uma situação semelhante com uma solução que fosse compreensível para um iniciante , pensei em tentar enviar uma pergunta.

Meu objetivo: Eu tenho 3 exatamente as mesmas unidades (4tb ironwolf) onde eu gostaria de fazer um ataque-5 com o uso do MDADM para um pequeno grau de segurança de dados. Agora o problema é que 1 unidade é preenchida com dados que eu não consigo fazer backup.

Sim, eu entendo que, quando a criação e a unidade falhar, todos os meus dados se foram, mas ainda assim, gostaria de tentar o melhor possível.

Para torná-lo mais compreensível, vamos chamá-los de sda1 e sdb1, que estão vazios, e sdc1 com dados.

mdadm --create --verbose /dev/md0 --level=5 --raid-devices=2 /dev/sda1 /dev/sdb1;
rsync -av --exclude-from=excludefile /dev/sdc1 /dev/md0;    
mkfs.ext4 /dev/sdc1;    
mdadm --add /dev/md0 /dev/sdc1;    
mdadm --grow --raid-devices=3 --spare-devices=1 /dev/md0;

Alguém pode confirmar que esta é uma maneira adequada?

    
por Sahbe30 11.10.2018 / 10:10

1 resposta

1

Se você tiver uma pequena quantidade de espaço em disco disponível, poderá testar esses comandos com dispositivos de loopback.

Crie os dispositivos de loopback a, b, c:

dd if=/dev/zero bs=1M count=50 > diska.img    # Plan for RAID5
dd if=/dev/zero bs=1M count=50 > diskb.img    # Likewise
dd if=/dev/zero bs=1M count=50 > diskc.img    # Original data will be here

la=$(losetup --find --show diska.img); echo $la
lb=$(losetup --find --show diskb.img); echo $lb
lc=$(losetup --find --show diskc.img); echo $lc

Crie alguns "dados originais importantes" e coloque-os no terceiro disco ( $lc )

mkfs -t ext4 -L data "$lc"
mount "$lc" /mnt
cp -a /usr/share/man/man1 /mnt
umount /mnt

Agora, tente criar os arrays RAID5 de acordo com suas ideias. Neste cenário, temos $la e $lb como os dois discos em branco e $lc representando seu terceiro disco importante:

mdadm --create --verbose /dev/md0 --level=5 --raid-devices=2 "$la" "$lb"

Sucesso; isso criou um array RAID5 com dois membros. Pessoalmente, eu teria especificado três, com o terceiro elemento como a palavra missing , porque isso deixa mais claro o que eu pretendi:

mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 "$la" "$lb" missing

Seu próximo comando, no entanto, não está certo. rsync copia entre sistemas de arquivos, não entre dispositivos, então primeiro você precisa criar o novo sistema de arquivos e montar ambos:

mkfs -t ext4 -L data /dev/md0
mkdir -p /mnt/src /mnt/dst
mount "$lc" /mnt/src             # Here you could use mount /dev/sdc1 /mnt/src
mount /dev/md0 /mnt/dst
rsync -av --exclude-from=excludefile /mnt/src/ /mnt/dst

Você deve usar rsync --dry-run para verificar o que vai fazer antes de fazer isso.

umount /mnt/src
umount /mnt/dst

Neste ponto, você precisa ter absoluta certeza de ter copiado com sucesso os dados do disco original para o novo array (degradado) RAID5, já que vamos adicionar o disco antigo ao array.

Se você especificou originalmente apenas dois dispositivos, é necessário aumentar o array para incluir um terceiro:

mdadm --grow /dev/md0 --raid-devices=3 --add "$lc"    # /dev/sd1c when you do this for real

Por outro lado, se você pegou minha recomendação e começou com três dispositivos (um dos quais foi missing ), basta adicionar o dispositivo:

mdadm --manage /dev/md0 --add "$lc"

Finalmente, você pode remontar o array RAID 5 na parte desejada do sistema de arquivos. Use cat /proc/mdstat para ver como está a ressincronização.

Para o testbed APENAS, você precisa parar o array e deletar os componentes

mdadm --stop /dev/md0
losetup -d "$la"
losetup -d "$lb"
losetup -d "$lc"
rm diska.img diskb.img diskc.img
    
por 11.10.2018 / 18:31

Tags