Imaginamos a seguinte situação em que temos uma máquina com Linux instalado em um único HD, e será necessário adicionar mais um HD para que seja feito o RAID1 sem perder os dados.
Essa máquina está instalada da seguinte forma:
Device Montada em tipo Tamanho
/dev/sda1 /boot ext3 256M
/dev/sda2 LVM Full (Resto do disco)
Com Volume Group chamado rn_vg, com os seguintes Logical Volume LV:
Logical Volume Mondado em Tipo Tamanho
CO_i386_root / ext3 3072M
swap0 none swap 2048M
O primeiro passo é adicionar o segundo HD, ficando por exemplo:
/dev/sdb
Após certificar que o HD está devidamente instalado devemos deixar as partições do mesmo tamanho, para isso pode utilizar o seguinte comando:
dd if=/dev/sda of=/dev/sdb bs=512 cont=1
Agora vamos deixar as partições do /dev/sdb, com o tipo Detecção automática de RAID Linux ou (atudodetect RAID), com fdisk.
fdisk /dev/sdb
Após deixar os discos com formato autodetect RAID, vamos criar um RAID1 com device missing o comando abaixo realiza essa tarefa
mdadm -C /dev/md0 -l1 -n2 /dev/sdb1 missing
mdadm -C /dev/md1 -l1 -n2 /dev/sdb2 missing
O device /dev/md0 vai conter o /boot então devemos formatar com formato etx3 como em:
mkfs.ext3 /dev/md0
O device /dev/md1 vai ser do tipo LVM para que seja possível importar o /dev/sda2 que é do tipo LVM, para isso faça:
pvcreate /dev/md1
Agora edite o arquivo /boot/grub/device.map para que o mesmo fique da seguinte forma:
(hd0) /dev/sda
(hd1) /dev/sdb
Esse foi a primeira parte, agora vamos exportar os dados que estão no nosso /dev/sda[1,2] para o nosso RAID /dev/md[0,1].
Primeiramente vamos exportar o /boot para tal precisamos montar o /dev/md0 no /mnt, por exemplo:
mount /dev/md0 /mnt
depois de montado vamos passar toda as informações do /boot para o /mnt, como o exemplo abaixo mostra:
rsync -aHv /boot/* /mnt/
Agora vamos mover os dados que estão Phisical Volume que está no /dev/sda2 para o nosso /dev/md1 para isso siga os passos:
vgextend rn_vg /dev/md1
Agora vamos mover todas as informações para o device /dev/md1 fazendo o seguinte:
desabilitando a memória swap, afinal temo um swap0 como Logical Volume então temos que desativar temporariamente.
swapoff -a
agora vamos mover as informações
pvmove /dev/sda2 /dev/md1
será exibido algo como:
/dev/sda2: Moved: 66.9%
aguarde finalizar o processo....
Remova o /dev/sda2 do rn_vg:
vgreduce rn_vg /dev/sda2
Pronto suas informações estão migradas, agora vamos criar um initrd com suporte a RAID1, como nessa etapa o RAID está ativo e funcionando vamos criar um novo initrd com os seguinte comando:
mkinitrd initrd-2.6.25.11-60.fc8.img 2.6.25.11-60.fc8
Rode novamente o comando rsync -aHv /boot/* /mnt/, para que seja atualizado os arquivos, como por exemplo o initrd que foi criado.
Edite o seu /etc/fstab, para que monte o /dev/md0 em /boot.
/dev/md0 /boot ext3 defaults 1 2
Desmonte o /boot e o /mnt, da seguinte forma:
umount /boot
umount /mnt
Adicione o /dev/sda1 ao /dev/md0 com o seguinte comando:
mdadm /dev/md0 -a /dev/sda1 # Partição onde está o /boot
Reinicie o micro após dar boot logado como root, deixe as partições do seu /dev/sda como Detecção automática de RAID Linux ou (atudodetect RAID).
E adicione no RAID1 com o seguinte comando:
mdadm /dev/md1 -a /dev/sda2 # Partição LVM, onde estão todos Logical Volumes.
Agora basta acompanhar a sincronização dos discos com o seguinte comando:
cat /prom/mdstat
Para saber como funcionada o RAID acesse:
http://pt.wikipedia.org/wiki/RAIDPara saber como funciona o LVM acesse:
http://www.devin.com.br/lvm/