Então, descobri uma maneira de fazer isso, usando /dev/sdb1
e /dev/sdd1
, sem recompilar a matriz e sem perder dados.
Isso funciona apenas com um kernel moderno (3.5 ou superior) e mdadm versão 3.3 ou superior.
Desmontar o array.
umount /dev/md0
Execute uma verificação do sistema de arquivos. Deve ser feito antes do próximo passo.
e2fsck -f /dev/md0
Redimensione o sistema de arquivos para 5 TB.
resize2fs /dev/md0 5000G
Execute outra verificação no sistema de arquivos. Certifique-se de que não estragamos tudo até agora.
e2fsck -f /dev/md0
Reduza o array para pouco mais de 5 TB. O parâmetro de tamanho aqui é quanto espaço usar em cada disco na matriz. Isso deve ser (size of fs / number of mirrors) + some small extra
. No meu caso, eu fiz o sistema de arquivos 5 TB, eu tenho 4 discos em um ataque 10, então eu tenho uma faixa de 2 espelhos. ISTO DEVE DAR UM TOTALMENTE MAIOR QUE O SEU ARQUIVO DE ARQUIVOS OU VOCÊ PERDERÁ DADOS.
mdadm --verbose --grow --size=2685403136 /dev/md0 # 2.5TB + 1MB
Verifique o sistema de arquivos novamente.
e2fsck -f /dev/md0
Neste ponto, podemos adicionar nossas unidades menores ao ataque 10, mas primeiro, fazer verificações para garantir que seus dados sejam bons. Não confie apenas na verificação do sistema de arquivos. Na verdade, verifique se seus dados são bons.
Agora podemos adicionar as novas unidades!
mdadm --add /dev/md0 /dev/sdf1 /dev/sdg1
E desenvolva o array para usá-los.
mdadm --verbose --grow --raid-devices=6 /dev/md0
Neste ponto, fazer um cat /proc/mdstat
deve mostrar algo como o seguinte:
Personalities : [raid6] [raid5] [raid4] [raid0] [raid10]
md0 : active raid10 sdd1[5] sdb1[4] sdf1[3] sde1[2] sdc1[1] sda1[0]
5370806272 blocks super 1.2 512K chunks 2 near-copies [6/6] [UUUUUU]
[>....................] reshape = 2.8% (151477952/5370806272) finish=458.7min speed=189604K/sec
bitmap: 11/31 pages [44KB], 131072KB chunk
unused devices: <none>
Faça outra verificação do sistema de arquivos após a conclusão da remodelação. (Estou paranóico, vou verificar isso a cada passo do caminho.)
e2fsck -f /dev/md0
Agora, aumente o tamanho da matriz de volta ao máximo que suas unidades suportarão.
mdadm --verbose --grow --size=max /dev/md0
Em seguida, redimensione o sistema de arquivos.
resize2fs /dev/md0
E verifique novamente.
e2fsck -f /dev/md0
Finalmente, podemos montar o novo sistema de arquivos expandido.
mount /dev/md0 /mnt/raid10