Gerenciamento de Disco com LVM

Olá! Espero que esteja bem caro leitor! Este é o primeiro de diversos artigos que pretendo públicar com base em meus conhecimentos na área de Tecnologia! Espero que esse artigo possa contribuir e te ajudar na sua carreira. Vamos lá!

Bom, você é um Administrador de Redes em sua empresa e atua com servidores Linux que opera em modo LVM? Se sim, já se encontrou em uma situação onde a partição estava completamente cheia ou perto do seu limite e não sabia como resolver? Pois bem, vou te ajudar.

Caso você é um iniciante na área, esse artigo também é para você. Antes de mostrar na prática como gerenciar essas partições, vamos entender o que é LVM!

O que é LVM?

LVM (Logical Volume Manager) é um método de alocar espaço do disco rigido em volumes lógicos que podem ser facilmente redimensionado, pois ele pode trabalhar com um “pool” de discos fisícos os tornando um único volume lógico. O primeiro código do LVM que surgiu em 1998 foi reformulado e atualmente se encontra na “versão” LVM2 que atualmente é suportada pela maioria das distribuições Linux com Kernel superior a 2.6.9 e com muitas melhorias como a compatibilidades com versões anteriores ao LVM, disponibilidade pois esta presente na maior parte das distribuições Linux e também na capacidade de tamanho, o tamanho máximo do sistema / dispositivo de arquivos foi limitado a 2 TB no LVM enquanto seus 16 TB (CPU de 32 bits) e 8EB (CPU de 64 bits) no LVM2. Caso queira se aprofundar no assunto, vou deixar no final do artigo links para melhor compreenção, vai ser fundamental!

Como funciona o LVM?

Podemos trabalhar com o formato de camadas para melhor compreenção do funcionamento do LVM, como podemos ver na imagem a baixo, iremos iniciar da parte inferior para superior:

O LVM posui a seguinte estrutura:

Physical Volume (PV) – Realizamos a inicialização da partição para ser usada no LVM. Inicializamos a partição com o comando pvcreate, o que coloca uma “flag” na partição informando para o sistema que ela esta disponível para criação do nosso grupo de volumes.

Group Volumes (VG) – Como já citado anteriormente, o LVM nos permite a junção lógica dos espaços de cada volume de armazenamento, por exemplo, a junção de 2 volumes de 500GB cada, gerando um volume de 1TB. Para criar um volume com os discos disponível para o LVM usamos o comando vgcreate.

Logical Volume (LV) – Nossa última camada é onde encontramos as nossas partições lógicas propriamente dita, vejamos, para criar uma partição, iremos pegar um valor X de um VG disponível e reservar para a partição lógica.

Para que possamos nos fazer entender, vamos supor um ambiente real ao qual possui uma instalação padrão do Linux, os sistemas Linux em alguma de suas distribuições já configura suas partições em LVM em uma instalação padrão, e quando a instalação padrão trabalha com LVM é criado um VG (Volume Group) obviamente pois o VG faz parte de sua estrutura para funcionamento.

Imagine que um administrador se depara com um problema de espaço na partição /data com 200GB (Já em LVM) ao qual é populado com dados de um banco de dados, e caso o espaço acabe o banco fique indisponível. Ele precisa fazer o ajuste dessa partição e tendo em mente que se é utilizado LVM, ele presume que um volume lógico já existe, qual seria o próximo passo?

Ele não possui espaço disponivel em seu (VG) para distribuir a partição /data.
Ele não possui espaço em outras partições para poder atribuir a /data.

Pense por alguns segundos!

Se a solução pensada for “Adição de um novo dispositivo de armazenamento” você esta correto!

Nosso administrador para contornar o problema:

  1. Adiciona um disco de 100GB, cria uma partição e adiciona a “flag” para esse dispositivo seja iniciado com LVM com o comando pvcreate.
  2. Adiciona 100GB ao volume group (VG) existente
  3. Aplica a partição …/data mais 100GB extendendo-a com o comando lvextend.
  4. Após extender a partição, é aplicado um resize para que o aumento aconteça de fato.

Tudo isso vamos ver na prática, mas para fechar essa etapa, é importante fixar as camadas citadas anteriormente (PV, VG, LV) como elas atuam.

Criando nossa partição em LVM

Agora que conhecemos um pouco sobre o LVM, vamos ver na prática!

ATENÇÃO: Prefira fazer essas modificações em um ambiente de laboratório antes de executar em produção!  

ATENÇÃO: Estou usando usuário root, lembre-se se usar o comando sudo inicialmente caso não esteja com um usuário com privilegios administrativo

No nosso exmplo a ser mostrado, iremos trabalhar com a criação de partições limpas, mas você pode atuar com uma partição já existente do sistema operacional, como por exemplo “/home”

Bom iniciamente estou com uma máquina Linux CentOS8 o qual contem apenas o volume do próprio sistema mais um disco adicional o sdb conforme a saida do comando fdisk

# ls -l /dev/sd*

Como mostrado na imagem acima, ainda não temos a partição criada para o nosso disco sdb1 então vamos criar, ele irá conter 2GB.

Em seu terminal execute o comando sem o (#):

# fdisk /dev/sdb

Será carregado o gerenciador de disco fdisk os passos serão mostrado na imagem a seguir:

Resumindo os passos, eles ficam da seguinte forma

  1. [n] – Cria uma nova partição
  2. [p – e] – Informa se a partição será primária ou extendida, no nosso caso deixamos como primaria
  3. [First Sector] – Informamos o setor do disco onde a partição será iniciada
  4. [Last Sector] – Informamos o final do disco, mas veja, podemos definir um volume conforme o seu tamanho, no nosso caso apenar foi precionado [Enter] o qual utilizou todo os espaço disponível.
  5. [p] – Listaremos as parcições criadas no nosso disco (sdb1)
  6. [t] – Esta opção irá nos permitir alterar o tipo da partição no nosso caso foi selecionado a opção 8e que refere-se a opção Linux LVM
  7. [w] – Para gravar as alteração realizadas.

Partição sdb1 criada, podemos verificar com o comando ls -l /dev/sd* novamente:

Agora com nossa partição criada, vamos iniciala a partição para ser usada no LVM com o comando pvcreate

# pvcreate /dev/sdb1

Volume sdb1 agora é um PV (Physical Volume), lembrando o nosso exemplo sobre camadas, preparamos nosso dispositivo e agora iremos disponibilizar o seu espaço para criação do VG.

Para criação do VG (Volume Group) iremos definir um nome para o grupo e informar qual partição ou partições ele irá usar:

# vgcreate MEU-LVM /dev/sdb1

Utilizei o nome MEU-LVM mas lembre-se o nome é de sua escolha, crie um nome que se adeque com o seu ambiente.

Para uma visualização mais completa, podemos usar o comando vgdisplay + [Nome do Grupo]:

# vgdisplay MEU-LVM

VG criado e como podemos ver temos 2GB disponibilizado para ele. Até esse momento temos um dispositivo já trabalhando em LVM e com seu espaço reservado para o grupo MEU-LVM então se você se recorda do inicio desse artigo, agora podemos criar nossas partições!

Para criação da nossa partição usaremos o comando lvcreate:

# lvcreate -L +2048 -n ParticaoLVM MEU-LVM:

Bom o nosso comando acima não funcionou! Estranho?

IMPORTANTE: Como podemos ver na imagem acima, eu mencionei que o disco possui 2GB para “disponibilizar”  para o grupo, e não estamos errado como podemos ver na saída do comando vgdisplay MEU-LVM. Quando criamos nosso VG (volume group) ele separa um pequeno pedaço para o PE (Physical extend) o que não iremos abordar neste artigo, mas fique tranquilo, vou deixar algumas referências para auxilialos!

Bom como vemos na imagem, a primeira criação não foi possível (+2048MB) então tirei uma fração para a criação da partição ficando [+1999MB = 1.95GB] para a nossa partição lógica (LV) Podemos ver a saída do lvdisplay que irá nos mostrar as informações sobre nossa partição:

Podemos também filtrar a visualização do LV com a adição do Path que esta marcado em verde na imagem

# lvdisplay /dev/MEU-LVM/ParticaoLVM

Chegamos na criação da nossa partição, como podemos ver, com um pouco de prática, você pode ficar craque pois o processo de é simples

Agora que criamos nossa partição, por padrão devemos informar a ela, com qual sistema de arquivo ela ira operar! Temos muitas opções, e aqui decidi usar ext4 para a nossa partição! Após a criação podemos usar o comando a seguir:

# mkfs.ext4 /dev/MEU-LVM/ParticaoLVM

Se você chegou até aqui, meus parabens! Agora você poder ver a sua partição usando o comando  df -h !

OPS!

Calma galera! Se você pensou que tudo deu errado, você esta enganado. Para quem já conhece esse ambiente do Linux pode parecer obvio que a partição não estaria presente ainda, pois precisamos incluir o sistema de arquivos de um dispositivo/partição no sistema de arquivos do Linux.

Para habilitarmos nossa partição no sistema iremos usar o comando mount, mas antes iremos crair uma pasta onde iremos montar nossa partição:

# mkdir -p /mnt/LVM1

# mount /dev/MEU-LVM/ParticaoLVM /mnt/LVM1/

# df -h

Agora sim! 😊

Bom, temos nossa partição, e esta pronta para uso mas ainda é claro, gostaria de resolver aquele probleminha citado no começo do artigo, você se depara com um problema de espaço e pensa “E agora, tudo cheio, não tenho mais espaço, quem podera me ajudar?” Não será o CHAPOLIN rs

Vamos agora ver como expandimos nossa partição!

Aumento de Partição LVM?

Para aumentarmos o volume group e conseguentimente poder expandir a nossa partição criada, ou no seu caso uma partição quase cheia, vamos primeiramente adicionar um novo volume de armazenamento (HD, SSD, NvME, etc) e inicializalo com LVM conforme já foi explicado anteriormente.

No meu cenário, vou já adicioneu um volume que foi identificado com sdc e será nossa primeira partição do volume, que utilizara todo o espaço. Repita o processo de criação de partição já mostrado anteriormente!

Vamos continuar seguindo os passos mostrado na nossa primeira partição criada, então se tiver dúvidas volte a leitura para o paço em questão, e fique atento ao seu dispositivo, o meu é o sd(C) e pode mudar no seu cenário.

Adicionando a partição ao LVM

# pvcreate /dev/sdc1

Agora, lhe apresento mais um comando, o vgextend, como o próprio nome já diz, iremos extender o nosso volume com a nova partição, o comando fica da seguinte forma

# vgextend MEU-LVM /dev/sdc1 VG antes da expanção:

VG após o comando:

Realizado pessoal o aumento do nosso volume, se para você deu tudo certo, parabens! Porém ainda não acabou, estamos perto do fim!

Bom agora que temos um grupo LVM com mais espaço a ser alocado para as nossas partições, vamos fazer o aumento da partição ParticaoLVM!

Para o aumento da partição, iremos usar um comando já visto anteriormente que é o lvextend!

# lvextend -L +2000M /dev/MEU-LVM/ParticaoLVM

DICA! Após definir o tamanho, use a tecla TAB para te auxiliar a completar o cominho, por exemplo /dev/MEU-LVM/ParticaoLVM Partição lógica extendida mas ainda não acabamos! Veja, fizemos a extensão da partição porém ela permanece com o mesmo tamanho:

Você se pergunta “Porque não aumentou ainda?”

Galera, para que surta efeito, é preciso realizar o resize da partição! Para isso temos que levar em consideração o formato da nossa partição que foi definido logo após a criação da partição lógica! Eu utilizei o formato EXT4 então para esse tipo usaremos o comando resize2fs caso você utilize a partição XFS o comando a ser utilizado seria o xfs_growfs, então o nosso resize sera feito com o seguinte comando:

# resize2fs /dev/MEU-LVM/ParticaoLVM

SHOW! Agora sim! Nossa partição esta com 4GB para armazenarmos dados!

Agora é só práticar bastante e começar a colocar em prática!

IMPORTANTE! LVM é um assunto mais extenso, você pode realizar diversos processos com o LVM como Migração de partição para outro servidor por exemplo, então é importante você ler bem sobre o assunto e ficar por dentro das possibilidades com LVM, com certeza isso será muito importante para a sua carreira, pois LVM deve estar dentro dos seus conhecimentos para atuar com servidores Linux! Espero que vocês tenham compreendido como criar uma partição e fazer o aumento dela!

Vamos finalizar por aqui, e até o próximo artigo! Obrigado.

Sobre Eduardo 1 Artigo
Administador de Redes

Seja o primeiro a comentar

Faça um comentário

Seu e-mail não será divulgado.


*