4 minutes
Logical Volume Management (LVM)
Logical Volume Management (LVM)
O que é o LVM?
O LVM (Logical Volume Management - Gerenciamento de Volume Lógico), é uma tecnologia de gerenciamento de armazenamento usada em sistemas Linux e que permite gerenciar o espaço em disco de forma mais flexível.
Um bom exemplo, é a possibilidade da criação de Volumes Lógicos (VG) que podem abranger vários discos físicos, permitindo redimensionar, mover e criar Volumes Lógicos sem precisar desligar o sistema ou mover dados.
Estrutura do LVM
A estrutura do LVM consiste em alguns principais componentes, sendo eles:
-
Physical Volumes (PVs): São os discos físicos ou partições de disco que são incorporados ao pool de armazenamento gerenciado pelo LVM. Um PV pode ser um disco inteiro ou uma partição em um disco.
-
Volume Groups (VGs): Um VG é uma coleção de um ou mais PVs (physical volumes). Ele funciona como um pool de armazenamento lógico a partir do qual os Volumes Lógicos são criados. O espaço de armazenamento em todos os PVs pertencentes a um VG é combinado e disponibilizado para alocação.
-
Logical Volumes (LVs): São volumes lógicos que são crioados dentro de um VG. Eles são equivalentes a partições em um sistema de arquivos tradicional, mas com a vantagem de que podem ser redimensionados de forma dinâmica e não estão vinculados a um único Physical Disk (PV). Os LVs são o que os sistemas operacionais enxergam e utilizam como dispositivos de armazenamento.
-
Extents: Não menos importante, os extents são pequenos blocos que o LVM divide o espaço de armazenamento. Esses extents são a menor unidade de alocação e podem variar de tamanho dependendo da configuração do LVM.
Hands-on LVM
No exemplo do hands-on, iremos expandir uma partição (/var) adicionando um novo disco á máquina (/dev/sdb).
Os comandos utilizados funcionam nas distribuições em Ubuntu e CentOS. Nesse ponto, é importante e necessário que você já tenha adicionado um novo disco na sua máquina, seja ela bade metal ou virtual. Para listar os discos e partições, iremos rodar o seguinte comando:
Comandos executados como superusuário.
fdisk -l
A máquina nos retornará os discos e suas partições. Suponhamos que seja o segundo disco que esteja adicionando na máquina e é por isso que ele será o /dev/sdb.
Como estamos com um novo disco, precisamos criar uma nova partição para que possamos seguir com a expansão do /var. Para criar uma partição:
# setando o disco que iremos criar a partição lógica
fdisk /dev/sdb
# comandos para seguir dentro do menu do FDISK
n # criar nova partição
p # dizendo que é uma partição primaria
# AS OPÇÕES DO TAMANHO PODE DEIXAR PADRÃO, VISTO QUE UTILIZAREMOS TODOS OS SETORES DO DISCO.
Ainda no FDISK, depois de criado a partição lógica, é necessário setar que será uma partição do tipo LVM:
# No FDISK
t # para alterar o tipo de partição
8e # o código da partição do tipo LVM
w # para gravar todas as modificações que realizamos no /dev/sdb
Depois de gravar todas as modificações realizadas no disco /dev/sdb, ou seja, a criação da nova partição lógica e a alteração do tipo de partição, caso executemos o comando fidsk -l novamente, ele nos retornará a partição criada, sendo ela /dev/sdb1.
Agora precisamos criar o Physical Volume com a partição lógica que criamos. Execute o comando:
# criando o Physical Volume
pvcreate /dev/sdb1
Com o PV criado, para localizarmos o LV que iremos expandir, execute:
# localizando o LV a ser expandido
lvdisplay
Como dito anteriormente, será o /var. E é de extrema importância que você salve as informações LV Path e VG Name que serão exibidas no seu terminal.
No meu exemplo, os dados serão:
LV Path ———- /dev/vg0/lv-0-var VG Name ——— vg0
Com essas informações, podemos dar continuidade e então realizar utilizar o comando vgextend para estender o Volume Group, utilizando o Physical Volume que criamos. Para isso:
# estendendo o VG com o PV criado
vgextend vg0 /dev/sdb1
Utilizaremos todo o espaço livre o alocando ao LV Path:
lvextend -l +100%FREE /dev/vg0/lv-0-var
Verifique o sistema de arquivos utilizado no seu filesystem, no exemplo, estamos utilizando o ext4.
# para verificar o sistema de arquivos
df -hT
- Caso seja EXT4, para expandir automaticamente o espaço existente:
resize2fs -p /dev/vg0/lv-0-var
- Caso seja XFS, para expandir a partição:
xfs_growfs /dev/vg0/lv-0-var
Para validar a expanção, execute o seguinte comando:
# validando se houve a expanção da partição
df -h
Conclusão
Em conclusão, o LVM é uma ferramenta poderosa para gerenciamento de armazenamento em sistemas Linux, possibilitando uma maior flexibilidade e eficiência na alocação e gerenciamento de espaço em disco.
Espero ter ajudado a entender um pouco sobre o funcionamento e a estrutura do LVM.
Abraços do Golden Retriever.