LVM

segunda-feira, 25 de setembro de 2017

LVM


O que é LVM ?
Em Inglês, Logical Volume Manager (LVM), em português Gerenciador de Volume Lógico, é um mapeador de dispositivos (device mapper) que fornece gerenciamento de volume lógico para o kernel do Linux. A maioria das distribuições Linux modernas dão suporte ao LVM ao ponto de serem capazes de possuir seus sistemas de arquivo raizes em um volume lógico.
Heinz Mauelshagen escreveu o código original do LVM em 1998, tomando suas primeiras diretrizes de design do gerenciador de volumes do HP-UX.
Volumes Lógicos (LV - logical volume) são considerados pedaços de grupos lógicos (VG - volume groups) que aglutinam diversos discos físicos ou partições do tipo LVM (PV - Physical Volume). Dentro destes Logical Volumes é possível ter-se um filesystem (XFS, EXT4, NTFS, FAT ...) para utilização no S.O. de fato. Alguns críticos consideram que o LVM causa perda de performance à nível de discos, pois se aumenta uma camada lógica dentro do disco físico para leitura e escrita sem uma inteligência especializada, afinal o próprio S.O. gerencia, coordena, organiza e usa tais partições.


Pros and Cons
Atualmente, quase todas as distribuições Linux, por padrão, definem seu esquema de particionamento aplicando LVM. 
"Mas afinal, se todos utilizam por padrão, não deve ser tão ruim assim" 
Veja bem, o LVM disponibiliza uma flexibilidade no momento em que o espaço em disco atual de um servidor (virtual ou não) está ficando escasso e o responsável pelo hardware (seja ele virtual ou físico) dispõe da possibilidade de expandir os discos "físicos" deste servidor, seja adicionando mais um disco ou expandindo o disco utilizado atualmente.
 Desta forma o LVM se torna bastante útil na prevenção de perda de dados, por ser uma partição lógica a expansão e redução das partições se torna mais flexível e organiza os dados de uma forma que durante o processo eles não sejam sobrescritos pelos novos blocos que serão adicionados ou removidos.
É importante lembrar que a flexibilidade na redução de uma partição se dá no próprio filesystem existente, o modelo XFS por exemplo não nos permite reduzir uma partição neste filesystem, seja ela alocada sob LVM ou como primária.
A flexibilidade tão falada aqui sobre LVM seria a possibilidade de adicionarmos outro disco (físico ou virtual), formatarmos ele com uma única partição do tipo LVM (8E) e adicioná-lo ao "pool" de discos que o LVM gerencia para seus VG's e, consequentemente, LV's. Assim, um VG pode ter um tamanho de 100GB de espaço total composto por dois discos físicos (PV's) de 50GB cada, no final, para o LV estes discos de 50GB cada será transparente, vendo um pool de 100GB disponíveis apenas.
Device Mapper
Como o LVM se comunica com o kernel Linux/Unix e possibilita todo este gerenciamento e reconhecimento do S.O. destes VG's ?
Simples, com o Device Mapper.
O Device Mapper é o módulo do kernel Linux que gerencia dispositivos de blocos lógicos para o S.O., em outras palavras ele é o responsável por identificar e transformar discos lógicos fornecidos por terceiros reconhecíveis e utilizáveis pelo S.O.
Estes dispositivos de blocos lógicos podem ser fornecidos por diversas entidades, o LVM seria uma delas, assim como storages fornecendo LUN's por vários caminhos para o servidor e sendo reconhecidas e agrupadas como um disco de fato pelo multipath.
A Estrutura LVM
Pense no LVM como camadas, estas camadas fornecem toda a estrutura para o LVM.
Temos os Physical Volumes, que são os discos físicos formatados com pelo menos uma partição no formato LVM (8E no Linux). Os PV's compõem os Volume Groups para disponibilizar o espaço utilizável pela partições no final do processo.
Temos os Volume Groups, que são os discos lógicos onde agrupam todo o espaço fornecido pelos PV's como um único volume. Os VG's podem ser considerados pools de espaço total disponível para os LV's.

E temos os Logical Volumes e abaixo deles os File Systems. Os LV's são a última camada do LVM antes dos arquivos de fato. Estes componentes podem ser formatados com filesystems para utilização real do S.O. Os LV's são as unidades lógicas criadas utilizando o espaço disponível em seu VG owner.

Criando um PV
Com o disco físico identificado no S.O. crie uma partição do tipo LVM (8E) com fdisk ou cfdisk (não iremos abordar como particionar discos neste procedimento).
Adicione esta partição como um PV para o LVM:

[root@localhost ~/]# fdisk -l
Disk /dev/sdb: 85.9 GB, 85899345920 bytes, 167772160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              63   167772159    83886048+  8e  Linux LVM


[root@localhost ~/]# pvcreate /dev/sdb1

Physical Volume "/dev/sdb1" Successfully Created

Criando/Expandindo um VG
Insira o PV recém-criado no VG alvo. Com este PV criado é possível criar um VG novo também.
vgextend vg_alvo pv_criado_expandido
vgcreate nome_do_vg pv_criado:

[root@localhost ~/]# vgextend rhel /dev/sdb1
Volume Group "rhel" Successfully Extended


OU


[root@localhost ~/]# vgcreate rhel /dev/sdb1
Volume Group "rhel" Successfully Created
Criando/Expandindo um LV
Confirmado que o VG owner do LV alvo possui espaço disponível para utilização com o comando vgdisplay siga os passos abaixo com a sintaxe:
lvextend -L +tamanhoG /path/do/lv
lvcreate  -L tamanhoG -n nome_do_lv nome_do_vg_owner

[root@localhost ~/]# lvextend -L +80G /dev/rhel/root
Logical Volume "root" Successfully Expanded


OU


[root@localhost ~/]# lvextend -L +80G -n root rhel
Logical Volume "root" Successfully Created

Comandos Úteis
pvdisplay
vgdisplay
lvdisplay
pvcreate
pvscan
vgcreate
lvcreate
vgextend
lvextend
cfdisk
fdisk

0 comentários :

Postar um comentário