Infelizmente o assunto é bastante extenso, mas ao decorrer do tutorial vou sempre dar exemplos para tornar a leitura bastante didática e clara.
Vamos falar sobre uma ferramenta bastante difundida, o LVM, mas que as vezes por falta de informação acaba deixando de ser usada.
O LVM (Logical Volume Manager) é um “Gerênciador de Volumes Lógicos”, bastante flexivel, sua implementação no Linux segue os mesmos padrões (comandos) do HP-UX, então este tutorial servirá também para o HP-UX, visto a similaridade dos comandos.
Oque muda no HP-UX, é que pra saber quais são os discos usa o comando
# /usr/sbin/ioscan -fC disk
Não pense que você não precisaria do LVM, por saber usar o “parted”, são coisas distintas, o LVM vai bem mais além do que simplesmente aumentar uma partição…
Quando começamos a instalação de um novo servidor, geralmente já temos em mente qual será a sua aplicação, a partir dessas informações, definimos quantos filesystems teremos, qual vai ser o tamanho deles, quantos discos etc…
Mas como nem tudo é perfeito, esse servidor pode ter depois um trafego maior do que o esperado, um numero de usuarios maior do que planejamos, enfim, são varias possibilidades que podem definitivamente te dar algum trabalho extra, de ter que aumentar uma partição, adcionar mais um disco, mas como fazer isso da melhor maneira possivel e sem traumas ?
A resposta está no LVM…
O objetivo deste tutorial é tornar mais facil o uso do LVM por usuários de todos os niveis, visto que o LVM vem se tornando um importante recurso na administração de servidores.
Antes de iniciar a parte prática, vamos entender alguns conceitos do LVM…
PV = Phisical Volume : O disco em si, a partição fisica do disco.
PE = Phisical Extends : Extensões fisicas, ou seja, pequenos pedaços de um VG, um VG é dividido em varios PEs
VG = Volume Group : Como o nome já diz, grupo de volumes. Um VG é responsavel por agrupar um ou mais dicos/Partições (PV – Volumes fisicos).
LV = Logical Volume : É o volume lógico, ou seja, é uma partição (lógica) de um VG (Volume físico).
Algumas observações importantes…
- Para alterar um LVOL, você deve desmonta-lo antes.
- NUNCA deixe de fazer backup (faça dois, cuidado nunca é demais) antes de alterar uma configuração de LVM.
- Você pode ter mais de um VG em um mesmo sistema (VG01, VG02, VG03), cada qual com um ou mais discos…
- Não misture discos SCSI/SATA/IDE em um mesmo VG, isso afeta a performance visto que eles tem velocidades diferentes, se você estiver nesta situação, faça VGs distintos para cada tipo.
- NUNCA deixe de fazer backup (por via das dúvidas estou escrecendo novamente esta observação!).
- Não tenha medo de usar LVM, ele já é usado a bastante em *nix e bastante seguro, você só tem a ganhar com sua utilização.
No exemplo abaixo usaremos um disco de 20GB para ilustrar…
Vamos criar varias partiçoes no mesmo disco para melhor ilustrar o uso de LVM, lembramos que no caso de vários discos você criaria uma partição por disco.
Criamos 4 partições no /dev/hdd
Saida do FDISK
Disk /dev/hdd: 20.0 GB, 20060135424 bytes 16 heads, 63 sectors/track, 38869 cylinders Units = cilindros of 1008 * 512 = 516096 bytes Dispositivo Boot Start End Blocks Id System /dev/hdd1 1 9689 4883224+ 83 Linux /dev/hdd2 9690 19378 4883256 83 Linux /dev/hdd3 19379 29067 4883256 83 Linux /dev/hdd4 29068 38756 4883256 83 Linux
Notem que elas estão com o “tipo” Linux (default do fdisk na hora d criação), prontas para receber o filesystem (ext2, ext3, reiserfs etc), mas não pra receberem LVM, precisamos alterar isso..
[root@server root]# fdisk /dev/hdd
O número de cilindros para este disco está configurado para 38869. Não existe nada de errado, mas isto é maior que 1024, e pode em certas configurações causar problemas com: 1) programas que executam em tempo de inicialização (versões velhas do LILO) 2) inicialização e programas de particionamento de outros OSs (p.ex., DOS FDISK, OS/2 FDISK)
Comando (m para ajuda): p Disk /dev/hdd: 20.0 GB, 20060135424 bytes 16 heads, 63 sectors/track, 38869 cylinders Units = cilindros of 1008 * 512 = 516096 bytes Dispositivo Boot Start End Blocks Id System /dev/hdd1 1 9689 4883224+ 83 Linux /dev/hdd2 9690 19378 4883256 83 Linux /dev/hdd3 19379 29067 4883256 83 Linux /dev/hdd4 29068 38756 4883256 83 Linux Comando (m para ajuda): t Número da partição (1-4): 1 Código hexadecimal (digite L para listar os códigos): 8e O tipo da partição 1 foi alterado para 8e (Linux LVM) Comando (m para ajuda): t Número da partição (1-4): 2 Código hexadecimal (digite L para listar os códigos): 8e O tipo da partição 2 foi alterado para 8e (Linux LVM) Comando (m para ajuda): t Número da partição (1-4): 3 Código hexadecimal (digite L para listar os códigos): 8e O tipo da partição 3 foi alterado para 8e (Linux LVM) Comando (m para ajuda): t Número da partição (1-4): 4 Código hexadecimal (digite L para listar os códigos): 8e O tipo da partição 4 foi alterado para 8e (Linux LVM) Comando (m para ajuda): p Disk /dev/hdd: 20.0 GB, 20060135424 bytes 16 heads, 63 sectors/track, 38869 cylinders Units = cilindros of 1008 * 512 = 516096 bytes Dispositivo Boot Start End Blocks Id System /dev/hdd1 1 9689 4883224+ 8e Linux LVM /dev/hdd2 9690 19378 4883256 8e Linux LVM /dev/hdd3 19379 29067 4883256 8e Linux LVM /dev/hdd4 29068 38756 4883256 8e Linux LVM Comando (m para ajuda): w A tabela de partições foi alterada! Chamando ioctl() para reler tabela de partições. Sincronizando discos. [root@server root]# </prompt>
Notem que alteramos o tipo da partição para “Linux LVM”. *Acima você pode notar como isso foi feito no fdisk, para maiores informações digite ‘h’ no fdisk ou consulte o manual.
Agora vamos dizer ao LVM oque (quais PVs) temos disponivel pra ele.
Criando os PVs.
[root@server root]# pvcreate /dev/hdd1 No physical volume label read from /dev/hdd1 Physical volume "/dev/hdd1" successfully created [root@server root]# pvcreate /dev/hdd2 No physical volume label read from /dev/hdd2 Physical volume "/dev/hdd2" successfully created [root@server root]# pvcreate /dev/hdd3 No physical volume label read from /dev/hdd3 Physical volume "/dev/hdd3" successfully created [root@server root]# pvcreate /dev/hdd4 No physical volume label read from /dev/hdd4 Physical volume "/dev/hdd4" successfully created [root@server root]# </prompt>
Pronto, já mostramos para o LVM que ele tem 4 PVs disponiveis… Mas como sei se ele sabe disso ???
Use o comando.. #pvdisplay
[root@server root]# pvdisplay --- NEW Physical volume --- PV Name /dev/hdd1 VG Name PV Size 4,66 GB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID RiWHqR-gyYe-jlIQ-pjku-cdI8-cQ8M-Lkj2Y4 --- NEW Physical volume --- PV Name /dev/hdd2 VG Name PV Size 4,66 GB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID oEcEui-mhig-RF06-fBd5-opAK-1Psf-bV1FLp --- NEW Physical volume --- PV Name /dev/hdd3 VG Name PV Size 4,66 GB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID SwPpNo-Q1NR-OYPU-Tkah-y3ps-GsRs-3W4pSG --- NEW Physical volume --- PV Name /dev/hdd4 VG Name PV Size 4,66 GB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID BFGFCi-2rKb-As0v-ucBy-ghkn-y869-yXcIm0
Criamos 4 PVs (Phisical Volume) em um disco… *Vale lembrar que esses PVs podem (e é o comum) estarem em discos separados, estamos fazendo em um mesmo disco por não poder utilizar mais que um disco aqui (o servidor é de produção!). 😉
Vamos criar 2 VGs… cada um com 2 PVs, usando o comando #vgcreate
[root@server root]# vgcreate VG01 /dev/hdd1 /dev/hdd2 Volume group "VG01" successfully created [root@server root]# vgcreate VG02 /dev/hdd3 /dev/hdd4 Volume group "VG02" successfully created [root@server root]#
Com o comando #vgcreate , criei 2 VGs, com o nome de VG01 e VG02 * O nome pode ser qualquer um, eu faço com VG01 e VG02, por ficar mais facil de identificar mas você pode criar por exemplo com nome ‘bancodedados’,’email’,’www’ e por ai vai…
Vamos verificar se os VGs foram criados com o comando #vgdisplay.
[root@server root]# vgdisplay --- Volume group --- VG Name VG02 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 255 Cur LV 0 Open LV 0 Max PV 255 Cur PV 2 Act PV 2 VG Size 9,31 GB PE Size 4,00 MB Total PE 2384 Alloc PE / Size 0 / 0 Free PE / Size 2384 / 9,31 GB VG UUID iWiIv6-L0FT-K0gV-JzJh-a8l5-1ouZ-H4r3yN --- Volume group --- VG Name VG01 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 255 Cur LV 0 Open LV 0 Max PV 255 Cur PV 2 Act PV 2 VG Size 9,31 GB PE Size 4,00 MB Total PE 2384 Alloc PE / Size 0 / 0 Free PE / Size 2384 / 9,31 GB VG UUID B0o0rf-zvO1-uYT0-GW9L-kOez-H37z-0RzHIh
Podemos ver que realmente criamos 2 VG, cada um com 2 PV…
Vamos agora explicar algumas linhas (as mais importantes) da saida do comando #vgdisplay
Nome do VG: VG Name VG02 Acesso: VG Access read/write Status: VG Status resizable Numero maximo de LVs (Logical Volume) : MAX LV 255 Numero de LVs no VG : Cur LV 0 Numero de LVs montados : Open LV 0 Numero maximo de PVs no VG : Max PV 255 Numero atual de PVs no VG : Cur PV 2 Tamanho do VG em GB/MB : VG Size 9,31 GB Tamanho de cada PE no VG (padrão 4MB) : PE Size 4,00 MB Quantidade de PEs no VG. (multiplique este numero por 4 para saber o tamanho do VG) : Total PE 2384 Numero de PEs alocados : Alloc PE / Size 0 / 0 Numero de PEs livres : Free PE / Size 2384 / 9,31 GB
Acima explicamos a saida do #vgdisplay, atentem bastante para os valores em PE, que geralmente são os mais importantes.
Agora que já temos os VGs, temos que criar os LVs (LVOL), vamos utilizar o comando #lvcreate.
[root@server root]# lvcreate -l 1000 -n LV01 VG01 Logical volume "LV01" created Para verificar oque você fez, use o comando #lvdisplay Explicando o comando... lvcreate -l <numero de PEs> -n <nome do LV> <Nome do VG que você quer criar o LV>
Dica : Você também pode usar o L (Maiúsculo) para determinar o tamanho em MB, para maiores informações #man lvcreate .
[root@server root]# lvdisplay --- Logical volume --- LV Name /dev/VG01/LV01 VG Name VG01 LV UUID rQw1cG-jppl-TSJj-1wVw-8kud-oE5L-Jr1c46 LV Write Access read/write LV Status available # open 0 LV Size 3,91 GB Current LE 1000 Segments 1 Allocation next free (default) Read ahead sectors 0 Block device 253:0
Criamos um LV com 3.91GB, mas como se eu não informei o tamanho ? Informamos sim o tamanho, mas em PE, e vamos lembrar que cada PE equivale a 4MB…
Logo 1000 x 4 = 4gb , que em miudos deu 3.91GB.
Só a titulo de curiosidade, vou novamente executar o comando vgdisplay, para ver oque mudou…
[root@server root]# vgdisplay VG01 --- Volume group --- VG Name VG01 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 255 Cur LV 1 Open LV 0 Max PV 255 Cur PV 2 Act PV 2 VG Size 9,31 GB PE Size 4,00 MB Total PE 2384 Alloc PE / Size 1000 / 3,91 GB Free PE / Size 1384 / 5,41 GB VG UUID B0o0rf-zvO1-uYT0-GW9L-kOez-H37z-0RzHIh
Notem as linhas:
Cur LV 1 Alloc PE / Size 1000 / 3,91 GB Free PE / Size 1384 / 5,41 GB
Dispensa explicações, visto que já falamos sobre o assunto um pouco acima… Dica : Use o comando #vgdisplay com a opção ‘-v’ para ter maiores informações sobre o VG.
Já criamos um VG, um LV mas ainda não estamos utilizando eles. Agora basta formatar o mesmo com o filesystem desejado e começar a utilizar.
Por exemplo, vamos formatar ele com ext2.
Vamos formatar onde ? /dev/hdd1, /dev/hdd2 ??? Não..! Lembra do comando lvdisplay, lá temos o local que devemos usar agora, que nada mais é do que uma partição (lógica) do LVM.
Vamos formatar este com o sistema de arquivos ext2.
Ele está em /dev/<nome_do_VG>/<nome_do_LV>
[root@server root]# mke2fs /dev/VG01/LV01 mke2fs 1.35 (28-Feb-2004) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 768544 inodes, 1536000 blocks 76800 blocks (5.00%) reserved for the super user First data block=0 47 block groups 32768 blocks per group, 32768 fragments per group 16352 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 25 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
Agora vamos montar o sistema de arquivos….
[root@server root]# mkdir /LVM1 [root@server root]# mount /dev/VG01/LV01 /LVM1 [root@server root]# df -h Sist. Arq. Tam Usad Disp Uso% Montado em /dev/hda2 28G 16G 10G 62% / /dev/hda1 145M 5,9M 132M 5% /boot none 507M 0 507M 0% /dev/shm /dev/mapper/VG01-LV01 3,9G 33M 3,7G 1% /LVM1
Pronto, o seu LVM está pronto pra usar… Mas ainda não conseguimos ver a principal utilidade do LVM com os exemplos acima.. A principal utilidade do LVM é que você pode aumentar ou diminuir seu LV…
Como exemplo vamos aumentar o nosso primeiro LV.
Ele tem 3.9GB
Usaremos o comando #lvextend
[root@server root]# umount /LVM1 [root@server root]# lvextend -l+500 /dev/VG01/LV01 Extending logical volume LV01 to 5,86 GB Logical volume LV01 successfully resized [root@server root]# mount /dev/VG01/LV01 /LVM1/ [root@server root]# df -h Sist. Arq. Tam Usad Disp Uso% Montado em /dev/hda2 28G 16G 10G 62% / /dev/hda1 145M 5,9M 132M 5% /boot none 507M 0 507M 0% /dev/shm /dev/mapper/VG01-LV01 5,8G 20K 5,5G 1% /LVM1
Aumentamos o nosso LV01 em mais 500 PEs, totalizando agora 5,86GB (antes 3,9GB). Mas não aumentamos ainda o sistema de arquivos nos novos PEs..
Para isso usaremos o #resize2fs.
Desmonte o seu LV antes.
[root@server root]# umount /LVM1 [root@server root]# resize2fs /dev/VG01/LV01 resize2fs 1.35 (28-Feb-2004) The filesystem is already 1536000 blocks long. Nothing to do!
Nota.. Para sistemas de arquivos reiserfs, utilize o comando #resize_reiserfs
Pronto, agora já aumentamos um determinado LV, mas e como reduzi-lo ???
Essa opção também é bastante comum, visto que as vezes podemos ter necessidade de mais espaço em disco e não temos a opção de comprar ou colocar mais um disco, oque podemos fazer é diminuir um determinado LV para poder alocar mais PEs em outro LV. Vale lembrar que eles devem estar no mesmo VG.
Utilizaremos o comando #lvreduce.
*Neste caso, faça backup, pois você VAI perder seus dados.. O Backup é importante tanto pra aumentar o LV quanto para diminuir, mas no caso de aumentar, você só perde dados se der algum problema ‘anormal’ (ex: queda de energia durante o processo), mas mesmo assim é bastante importante fazer backup, nunca se sabe !
[root@server root]# umount /LVM1/ [root@server root]# lvreduce -l-800 /dev/VG01/LV01 WARNING: Reducing active logical volume to 2,73 GB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce LV01? [y/n]: y Logical volume LV01 successfully resized [root@server root]# mke2fs /dev/VG01/LV01 mke2fs 1.35 (28-Feb-2004) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 359040 inodes, 716800 blocks 35840 blocks (5.00%) reserved for the super user First data block=0 22 block groups 32768 blocks per group, 32768 fragments per group 16320 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 27 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@server root]# mount /dev/VG01/LV01 /LVM1/ [root@server root]# df -h Sist. Arq. Tam Usad Disp Uso% Montado em /dev/hda2 28G 16G 10G 62% / /dev/hda1 145M 5,9M 132M 5% /boot none 507M 0 507M 0% /dev/shm /dev/mapper/VG01-LV01 2,7G 20K 2,6G 1% /LVM1
Utilizamos o #lvreduce para diminuir o tamanho de um LV.
Mas existem casos também que temos que aumentar o tamano de um VG, e como fariamos ? Como temos 4 PVs, vamos tirar um do VG02 e colocar no VG01.
Vamos criar um segundo LV (LV02) no VG01 para preencher todo o espaço do VG01 (para ilustrar um caso real), para que quando adcionar o novo PV, ele aumente o espaço em PE que é de 0 (zero).
*Relembrando – lvcreate -l <numero de PEs> -n <nome do LV> <Nome do VG>
[root@server root]# lvcreate -l 1684 -n LV02 VG01 Logical volume "LV02" created [root@server root]# mkfs.ext2 /dev/VG01/LV02 mke2fs 1.35 (28-Feb-2004) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 863264 inodes, 1724416 blocks 86220 blocks (5.00%) reserved for the super user First data block=0 53 block groups 32768 blocks per group, 32768 fragments per group 16288 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 39 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@server root]# vgdisplay VG01 --- Volume group --- VG Name VG01 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 7 VG Access read/write VG Status resizable MAX LV 255 Cur LV 2 Open LV 1 Max PV 255 Cur PV 2 Act PV 2 VG Size 9,31 GB PE Size 4,00 MB Total PE 2384 Alloc PE / Size 2384 / 9,31 GB Free PE / Size 0 / 0 VG UUID B0o0rf-zvO1-uYT0-GW9L-kOez-H37z-0RzHIh
Podemos notar que agora o VG01 não tem mais nenhum PE livre. Free PE / Size 0 / 0
Abaixo vamos conferir o resultado de um #df e do comando vgdisplay, agora com os dois LVs
[root@server root]# mkdir /LVM2 [root@server root]# mount /dev/VG01/LV02 /LVM2 [root@server root]# df -h Sist. Arq. Tam Usad Disp Uso% Montado em /dev/hda2 28G 16G 10G 62% / /dev/hda1 145M 5,9M 132M 5% /boot none 507M 0 507M 0% /dev/shm /dev/mapper/VG01-LV01 2,7G 20K 2,6G 1% /LVM1 /dev/mapper/VG01-LV02 6,5G 20K 6,2G 1% /LVM2
Podemos notar agora que o nosso VG está com todos os seus PEs alocados, mas temos a situação que preciso aumentar a partição LV01, como faço ?
[root@server root]# vgdisplay -v VG01 Using volume group(s) on command line Finding volume group "VG01" --- Volume group --- VG Name VG01 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 7 VG Access read/write VG Status resizable MAX LV 255 Cur LV 2 Open LV 2 Max PV 255 Cur PV 2 Act PV 2 VG Size 9,31 GB PE Size 4,00 MB Total PE 2384 Alloc PE / Size 2384 / 9,31 GB Free PE / Size 0 / 0 VG UUID B0o0rf-zvO1-uYT0-GW9L-kOez-H37z-0RzHIh --- Logical volume --- LV Name /dev/VG01/LV01 VG Name VG01 LV UUID rQw1cG-jppl-TSJj-1wVw-8kud-oE5L-Jr1c46 LV Write Access read/write LV Status available # open 1 LV Size 2,73 GB Current LE 700 Segments 1 Allocation next free (default) Read ahead sectors 0 Block device 253:0 --- Logical volume --- LV Name /dev/VG01/LV02 VG Name VG01 LV UUID SXgnqF-GZrH-dEax-LKno-4y44-SRp3-Q9rFU4 LV Write Access read/write LV Status available # open 1 LV Size 6,58 GB Current LE 1684 Segments 2 Allocation next free (default) Read ahead sectors 0 Block device 253:1 --- Physical volumes --- PV Name /dev/hdd1 PV UUID RiWHqR-gyYe-jlIQ-pjku-cdI8-cQ8M-Lkj2Y4 PV Status allocatable Total PE / Free PE 1192 / 0 PV Name /dev/hdd2 PV UUID oEcEui-mhig-RF06-fBd5-opAK-1Psf-bV1FLp PV Status allocatable Total PE / Free PE 1192 / 0
Não tenho mais discos, apenas tenho PV sobrando no VG02, por isso vou tirar ele de lá e colocar no VG01 para depois aumentar o espaço daquela partição.
Utilizaremos o comando #vgreduce.
[root@server root]# vgreduce VG02 /dev/hdd3 Removed "/dev/hdd3" from volume group "VG02" [root@server root]# vgdisplay -v VG02 Using volume group(s) on command line Finding volume group "VG02" --- Volume group --- VG Name VG02 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 255 Cur LV 0 Open LV 0 Max PV 255 Cur PV 1 Act PV 1 VG Size 4,66 GB PE Size 4,00 MB Total PE 1192 Alloc PE / Size 0 / 0 Free PE / Size 1192 / 4,66 GB VG UUID iWiIv6-L0FT-K0gV-JzJh-a8l5-1ouZ-H4r3yN --- Physical volumes --- PV Name /dev/hdd4 PV UUID BFGFCi-2rKb-As0v-ucBy-ghkn-y869-yXcIm0 PV Status allocatable Total PE / Free PE 1192 / 1192
Notamos que o PV /dev/hdd3 não está mais no VG02.
Agora vamos adciona-lo ao nosso VG01 que está necessitando de espaço.
[root@server root]# vgextend VG01 /dev/hdd3 Volume group "VG01" successfully extended
Agora vamos verificar que o nosso VG01 tem mais PEs livres (não tinha, estava com 0, lembra ?), devido a nossa ação de adcionar mais um PV neste VG.
Comando #vgdisplay
[root@server root]# vgdisplay VG01 --- Volume group --- VG Name VG01 System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 8 VG Access read/write VG Status resizable MAX LV 255 Cur LV 2 Open LV 2 Max PV 255 Cur PV 3 Act PV 3 VG Size 13,96 GB PE Size 4,00 MB Total PE 3575 Alloc PE / Size 2384 / 9,31 GB Free PE / Size 1191 / 4,65 GB VG UUID B0o0rf-zvO1-uYT0-GW9L-kOez-H37z-0RzHIh
Agora o nosso VG01 tem mais 1191 PEs disponiveis, e vou adcionar ele ao LV01
Abaixo a sequencia de comandos para verificar e para adcionar.
[root@server root]# lvextend -l+1191 /dev/VG01/LV01 Extending logical volume LV01 to 7,39 GB Logical volume LV01 successfully resized [root@server root]# resize2fs /dev/VG01/LV01 resize2fs 1.35 (28-Feb-2004) Please run 'e2fsck -f /dev/VG01/LV01' first. [root@server root]# e2fsck -f /dev/VG01/LV01 e2fsck 1.35 (28-Feb-2004) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/VG01/LV01: 11/359040 files (0.0% non-contiguous), 11281/716800 blocks [root@server root]# resize2fs /dev/VG01/LV01 resize2fs 1.35 (28-Feb-2004) Resizing the filesystem on /dev/VG01/LV01 to 1936384 (4k) blocks. The filesystem on /dev/VG01/LV01 is now 1936384 blocks long. [root@server root]# mount /dev/VG01/LV01 /LVM1 [root@server root]# df -h Sist. Arq. Tam Usad Disp Uso% Montado em /dev/hda2 28G 16G 10G 62% / /dev/hda1 145M 5,9M 132M 5% /boot none 507M 0 507M 0% /dev/shm /dev/mapper/VG01-LV02 6,5G 20K 6,2G 1% /LVM2 /dev/mapper/VG01-LV01 7,3G 20K 7,0G 1% /LVM1
Notem que a nossa partição LVM1 (LV01) já está redimensionada.
Abaixo a titulo didático, vou apagar o VG02, já que não o utilizamos, criamos ele apenas para fins didáticos, e vamos apaga-lo para demonstrar mais alguns comandos do pacote LVM
Vou criar um LV no VG02 apenas para demonstrar como deleta-lo.
[root@server root]# lvcreate -l1000 -n LV03 VG02 Logical volume "LV03" created [root@server root]# vgdisplay -v VG02 Using volume group(s) on command line Finding volume group "VG02" --- Volume group --- VG Name VG02 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 255 Cur LV 1 Open LV 0 Max PV 255 Cur PV 1 Act PV 1 VG Size 4,66 GB PE Size 4,00 MB Total PE 1192 Alloc PE / Size 1000 / 3,91 GB Free PE / Size 192 / 768,00 MB VG UUID iWiIv6-L0FT-K0gV-JzJh-a8l5-1ouZ-H4r3yN --- Logical volume --- LV Name /dev/VG02/LV03 VG Name VG02 LV UUID PPAHOG-v4d2-hClM-nUKy-crnG-0V3A-kwb6pw LV Write Access read/write LV Status available # open 0 LV Size 3,91 GB Current LE 1000 Segments 1 Allocation next free (default) Read ahead sectors 0 Block device 253:2 --- Physical volumes --- PV Name /dev/hdd4 PV UUID BFGFCi-2rKb-As0v-ucBy-ghkn-y869-yXcIm0 PV Status allocatable Total PE / Free PE 1192 / 192
Deletando o LV (LV03) que acabamos de criar.
[root@server root]# lvremove /dev/VG02/LV03 Do you really want to remove active logical volume "LV03"? [y/n]: y Logical volume "LV03" successfully removed [root@server root]# vgdisplay -v VG02 Using volume group(s) on command line Finding volume group "VG02" --- Volume group --- VG Name VG02 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 255 Cur LV 0 Open LV 0 Max PV 255 Cur PV 1 Act PV 1 VG Size 4,66 GB PE Size 4,00 MB Total PE 1192 Alloc PE / Size 0 / 0 Free PE / Size 1192 / 4,66 GB VG UUID iWiIv6-L0FT-K0gV-JzJh-a8l5-1ouZ-H4r3yN --- Physical volumes --- PV Name /dev/hdd4 PV UUID BFGFCi-2rKb-As0v-ucBy-ghkn-y869-yXcIm0 PV Status allocatable Total PE / Free PE 1192 / 1192
Deletando o VG02
[root@server root]# vgremove VG02 Volume group "VG02" successfully removed
Deletando o PV do LVM, vamos supor que este disco tenha dado problemas fisicos, e você vái tirar este disco (neste caso é uma partição), mas em produção seria um disco.
comando #pvremove
[root@server root]# pvremove /dev/hdd4 Labels on physical volume "/dev/hdd4" successfully wiped You have new mail in /var/spool/mail/root
Coloque outro disco, particione, formate pra LVM, crie o PV, adcione ele a um VG, e depois a um LV… Bem vindo ao LVM. 🙂
*Dica: caso algum VG esteja inativo, ative-o com o comando #vgchange -ay , isso ativará todos os VGs disponiveis.