aumentando o espaço em disco com RAID1 e LVM

Se você já tem dois discos em RAID1 e usa LVM pode aumentar a capacidade disponível usando o roteiro abaixo.
Ele o guiará para adicionar mais dois discos em RAID1 e adicionar estes ao LVM, aumentando o espaço em disco disponível para ser usado.
Este exemplo foi feito numa máquina virtual com 2x2GB e acrescentando mais 2x2GB. Mas foi testado em produção com discos de 2 TB sem nenhum problema.

#1 – identificar discos

ANOTE OS SERIAIS das etiquetas coladas nos disco e compare com o resultados dos comandos

[root@servidor ~]# hdparm -i /dev/sda|grep Serial
Model=VBOX HARDDISK , FwRev=1.0 , SerialNo=VB906bc0b4-4feb12e5

[root@servidor ~]# hdparm -i /dev/sdb|grep Serial
Model=VBOX HARDDISK , FwRev=1.0 , SerialNo=VB74909430-e8dc9724

[root@servidor ~]# hdparm -i /dev/sdc|grep Serial
Model=VBOX HARDDISK , FwRev=1.0 , SerialNo=VBc0ceafa9-234a33fe

[root@servidor ~]# hdparm -i /dev/sdd|grep Serial
Model=VBOX HARDDISK , FwRev=1.0 , SerialNo=VB224fe66e-10839f94
[root@servidor ~]#

Agora verificaremos as particoes

[root@servidor ~]# fdisk -l /dev/sda
Disk /dev/sda: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes

Dispositivo Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 fd Detec### autom###ca de RAID Linux
/dev/sda2 14 522 4088542+ fd Detec### autom###ca de RAID Linux
[root@servidor ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes

Dispositivo Boot Start End Blocks Id System
/dev/sdb1 * 1 13 104391 fd Detec### autom###ca de RAID Linux
/dev/sdb2 14 522 4088542+ fd Detec### autom###ca de RAID Linux
[root@servidor ~]# fdisk -l /dev/sdc

Disk /dev/sdc: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes

O disco /dev/sdc n###cont###uma tabela de parti###s v###da
[root@servidor ~]# fdisk -l /dev/sdd

Disk /dev/sdd: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes

O disco /dev/sdd n###cont###uma tabela de parti###s v###da
[root@servidor ~]#


#2 ) crie partições usando todo disco (nos dois discos) com tipo FD para depois criar mais um RAID1 usando-os
)

#3 ) Criar o RAID entre os dois discos novos

[root@servidor ~]# mdadm –create –verbose /dev/md3 –level=1 –raid-devices=2 /dev/sdc1 /dev/sdd1

#4) formatando o filesystem do novo RAID1 = md3

[root@servidor ~]# mkfs.ext3 /dev/md3

#5) Criando novo volume FISICO para adicionar no LVM

[root@servidor ~]# pvcreate /dev/md3
Writing physical volume data to disk “/dev/md3”
Physical volume “/dev/md3” successfully created

#6) Extendendo volume LVM

[root@servidor ~]# vgextend main /dev/md3
Volume group “main” successfully extended

#7) Extendendo o volume LOGICO do LVM

[root@servidor ~]# lvextend /dev/main/root /dev/md3
Extending logical volume root to 6,31 GB
Logical volume root successfully resized
[root@servidor ~]#


#8 ) Aumentando o FS para usar o espaço vazio disponível

[root@servidor ~]# resize2fs /dev/main/root
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/main/root is mounted on /; on-line resizing required
Performing an on-line resize of /dev/main/root to 1654784 (4k) blocks.
The filesystem on /dev/main/root is now 1654784 blocks long.

#9 ) Verifique se o tamanho foi aumentado realmente

[root@servidor ~]# df -h
Sist. Arq. Tam Usad Disp Uso% Montado em
/dev/mapper/main-root
6,2G 1,7G 4,2G 30% /
/dev/md1 99M 19M 76M 20% /boot
tmpfs 514M 0 514M 0% /dev/shm
[root@servidor ~]#

#10 ) Gerar o novo initrd

Precisamos gerar um initrd novo, sem o qual no proximo boot nao vai achar o novo disco e dar kernel panic!!
[root@servidor ~]# mkinitrd -f /boot/inird-`uname -r`.img `uname -r`

Pronto, você deve ter um novo RAID1 , montado no mesmo LVM e portanto tem mais espaço disponível do que no inicio desse procedimento.

Se por acaso você esqueceu o passo 10, ao reiniciar o Linux não saberá da existencia dos novos discos e reclamará ao montar o physical volume com uma mensagem de erro:
unable to find volume with UUID = xxxxxx

nesse caso, inicialize com um cd de linux e entre em modo rescue, onde ele monta os discos automaticamente.
Depois execute o comando do mkinitrd para cria o initrd.
Se você não sabe que opções usar, eis minha dica:
cat /boot/grub.conf
procure o kernel e o initrd que você está usando… pode ser qualquer um. Eu normalmente faria uma copia da primeira opção e usaria ela como base. Exemplo:

mkinitrd -f /boot/initrd-2.6.48-26.1.1.el5 2.6.48-26.1.1.el5

aqui o importante é escolher números conforme o initrd existente.
Pode ser o mesmo número, deve ser na verdade.
Note que no comando acima o número é igual na parte onde geramos o arquivo e no parametro seguinte, onde dizemos que versão usar!
É assim, porque o que faremos é recriar um initrd com a informação dos novos discos.
Por isso é importante olhar o grub.conf para saber qual a opção certa e usa-la.
Normalmente seu grub.conf terá várias opções, podes usar qualquer uma, mas o melhor é manter a versão que estás usando e que normalmente seria a mais nova.