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