Physical volumes, Volume groups, and Logical Volumes

LVM significa “Logical Volume Manager”, e no RHEL-7 é o componente de sistema que tem a capacidade de lidar e gerir com partições de forma eficiente e inteligente. Em antigos sistemas UNIX os discos eram apenas divididos em partições, sendo que apesar de cumprirem as suas funções, uma vez criadas estas eram fixas e constantes, sendo impossível modificar as mesmas sem corromper\apagar os dados nelas existentes. Por isso mesmo surgiu o LVM, sendo este um sistema flexível que permite manipular o tamanho das “partições” sem corromper os dados nas mesmas.

As LVM’s , para funcionarem necessitam de 3 pilares:

  • Physical Volumes: Pv ou volume físico, pode ser um disco inteiro ou apenas uma partição do mesmo;

  • Volume Groups: Vg ou Volume em Grupo, contêm um ou mais Pv’s . (Note-se que um Pv só pode estar qualquer instante num Vg);

  • Logical Volumes: Lv ou Volume Lógico representa uma porção de um Vg, é nas lv’s que podemos criar e gerir um sistema de ficheiros. (Note-se que uma Lv só pode estar qualquer instante num Vg);

Para vermos a organização do nosso sistema a nível de sistema de ficheiros, lvm’s e os espaços disponíveis nas mesmas podemos usar o comando lsblk:

# lsblk -a
    NAME     MAJ:MIN     RM    SIZE     RO     TYPE     MOUNTPOINT
    sda 8:0 0 931.5G 0 disk
    ├─sda1 8:1 0 1G 0 part /boot
    └─sda2 8:2 0 930.5G 0 part
    ├─centos_localhost--live-root 253:0 0 50G 0 lvm /
    ├─centos_localhost--live-swap 253:1 0 7.8G 0 lvm [SWAP]
    └─centos_localhost--live-home 253:2 0 872.7G 0 lvm /home
     sr0 11:0 1 1024M 0 rom

Tal como pode ser analisado no output do comando acima, vemos que realmente neste sistema, existem 3 LVM’s, uma aplicada a diretoria root (/), outra para Swap, e uma outra para a diretoria /home. Contudo estas configurações foram feitas de automaticamente aquando instalação inicial de sistema, e muitas vezes temos é a necessidade de criar\remover\aumentar\diminuir alguma LVM, sendo que para isso existem alguns comandos básicos de fácil compreensão:

Para Physical Volumes:

# pvcreate /dev/[disco]

# pvremove /dev/[disco]

# pvdisplay ou # pvs

Para Volume Groups:

# vgcreate -s [Tamanho de Extent] [VG] [PV a Dicionar]

# vgextend [VG] [PV a Adicionar]

# vgreduce [VG] ou # vgreduce [VG] [PV a Remover]

# vgdisplay ou # vgs

Para Logical Volumes:

# lvcreate --size [Tamanho] --name [Nome] [VG a Adicionar]

ou

# lvcreate -l [Extents] --name [Nome] [VG a Adicionar]

# lvremove /dev/[VG]/[LV]

# lvdisplay ou # lvs

Como pode ser visto a sintaxe dos comandos é muito semelhante. Note-se que deve-se ter muita atenção aquando criação do Volume Group pois o [Tamanho de Extent] é o valor que vai definir mais tarde aquando criação do LV, o tamanho de cada Extent que o constitui.

Last updated

Was this helpful?