A partir do kernel linux versão 2.6.11 você pode criar compartilhamentos ext3 redimensionáveis. Recentemente eu fiz exatamente isso que você está perguntando sobre um servidor CentOS 5.4, que tinha um raid1 usando um drive de 300GB e 500GB. Eu queria atualizar o espelho, então comprei uma unidade de 1 TB que substituiria a unidade de 300 GB.
Primeiro, é como eu criei originalmente o raid1 com as unidades de 300 + 500 GB
Eu normalmente uso o fdisk para criar uma única partição em uma unidade, marcando o tipo de partição como fd (linux RAID). Em seguida, uso o mdadm para criar um array raid1 de software.
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/hda1 /dev/hdb1
Em seguida, coloco um grupo LVM (denominei-o lvm-raid) no topo da matriz raid1.
vgcreate -s 8M lvm-raid /dev/md0
Determine quantas extensões físicas o Volume Group tem disponível. Você pode usar o comando vgdisplay lvm-raid e procurar a linha "Total PE". No meu exemplo, era 59617. Com essa informação, agora posso criar um volume lógico dentro do grupo de volume lvm-raid.
lvcreate -l 59617 lvm-raid -n lvm0
Por fim, coloco a partição ext3 no volume lógico.
mkfs.ext3 /dev/lvm-raid/lvm0
... E aqui está como migrei o raid1 para o disco de 500 GB + 1 TB
Eu adicionei o drive de 1TB como um hot spare para o raid1 e sincronizei como um membro. Uma vez que foi sincronizado eu falhei e, em seguida, posteriormente, removi a unidade de 300GB. Isso me permitiu trazer o array raid1 para até 500GB, já que o drive de 500GB era agora o menor membro da matriz. Minhas anotações sobre esse passo estão faltando detalhes, mas acho que fiz o seguinte:
mdadm --manage --add /dev/md0 /dev/sda1
mdadm --manage /dev/md0 --fail /dev/hda1
...wait for it to sync...
cat /proc/mdstat
...wait for it to sync...
cat /proc/mdstat
...sync is done...
mdadm /dev/md0 -r /dev/hda1
Aumente o ataque ao máximo. tamanho dos membros restantes da matriz. Neste caso, temos uma unidade de 500GB e 1TB na raid 1, para que possamos aumentar a raid para 500GB.
mdadm --grow /dev/md0 --size=max
Uma vez que o array raid tinha até 500GB, eu executei os seguintes comandos para usar o espaço extra disponível no LVM e, eventualmente, o compartilhamento ext3 real.
Primeiro, consegui o volume físico para usar o espaço extra.
pvresize /dev/md0
Em seguida, executei o comando pvdisplay / dev / md0 para determinar quantas "extensões livres" estavam disponíveis. No meu caso, era 23845. Então eu corri este comando para absorvê-los no volume lógico.
lvextend -l +23845 /dev/lvm-raid/lvm0
Por fim, executei o comando resize2fs para adicionar o espaço extra no compartilhamento ext3.
resize2fs /dev/lvm-raid/lvm0
Veja como é o resize2fs quando está em execução:
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/lvm-raid/lvm0 is mounted on /export/raid1; on-line resizing
required Performing an on-line resize of /dev/lvm-raid/lvm0 to 122095616 (4k) blocks.
The filesystem on /dev/lvm-raid/lvm0 is now 122095616 blocks long.
E quando tudo estiver pronto, o df agora mostra isso:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/lvm--raid-lvm0
459G 256G 180G 59% /export/raid1