Redimensionar ou expandir partições de disco no Linux sem precisar desligar o computador

Um recurso, tradicionalmente, adotado por administradores de sistemas Linux, para gerenciar partições no disco, é usar o Gerenciador de Volume Lógico (LVM).

Ele é um método para alocar espaço do disco rígido, em volumes lógicos, que podem ser facilmente redimensionados; diferentemente das partições salvas nas tabelas de partições.

Uma das grandes vantagens do uso do LVM é poder criar uma camada lógica sobre um disco rígido ou conjunto de discos e ter condições de de criar, excluir, redimensionar e expandir partições no disco sem precisar desligar o computador ou mover dados.

Lembre-se de que toda operação com partições é perigosa, por melhor que seja a técnica. Tenha sempre um backup de seus arquivos. Esta operação é por sua conta e risco!É pré-requisito, importante, que o usuário tenha conhecimentos intermediários/avançados das ferramentas de manipulação de disco no Linux.

 

VANTAGENS

Esse técnica é ótima não apenas para servidores, mas também para ambientes desktops! Por escrever suas próprias informações em separado e manter o controle sobre a localização das partições, quais dispositivos são partes delas e o tamanho de cada uma, o LVM permite, caso você fique sem espaço, expandir a partição desejada e pronto. Assim você terá mais espaço disponível, sem complicações. Resumindo, você nunca mais vai ficar sem espaço!!

Isso ocorre, pois o método tradicional faz a alocação de todo espaço físico ao tamanho da partição do disco, o que traz muito trabalho quando o espaço esgota. Tendo isso em vista, em resumo segue lista do que o LVM pode solucionar:

  • Uso eficaz de disco, principalmente quando há pouco espaço para criação de partições independentes;
  • Permite aumentar/diminuir dinamicamente o tamanho das partições sem reparticionamento do disco rígido usando o espaço livre em outras partições ou utilizando o espaço livre reservado para o uso do LVM;
  • Permite selecionar o tamanho do cluster de armazenamento e a forma que eles são acessados entre os discos, possibilitando garantir a escolha da melhor opção dependendo da forma que os dados serão manipulados pelo servidor;
  • Permite snapshots dos volumes do disco rígido, onde um “snapshot” é uma imagem do volume lógico, onde o LVM “pára” o tempo do volume, deixando-o intacto para trabalhar enquanto o volume lógico “real” continua trabalhando e sendo modificado;
  • Permite um volume lógico ter seu espaço dividido em 3 ou mais HDs, mas para o sistema operacional vai parecer como se fosse apenas um dispositivo

POR QUE DEVO USAR O LVM ?!

Supondo que você comprou um HD de 600GB. Na instalação do Linux, você particionou o disco da seguinte forma:

Com o tempo, a partição /home topou com seus arquivos pessoais. Em um cenário sem LVM (partição de disco física), seria necessário formatar e refazer as partições para colocar mais espaço no /home, ou comprar um novo HD maior e refazer tudo, depois copiar os dados.

Com o LVM, além de redimensionar estas partições de forma transparente para o SO; você pode adicionar um um novo HD em um volume lógico já criado, sem precisar formatar o sistema.

ESTRUTURA DO LVM

Existem 3 camadas do LVM, que são agrupadas da seguinte forma:

  • PV (Phisical Volume) – Corresponde a todo o disco rígido/partição ou dispositivo de bloco que será adicionado ao LVM. Por exemplo: /dev/sda1, /dev/sda2
  • VG (Volume Group) – Corresponde ao grupo de volumes físicos que fazem parte do LVM, onde podem ser vários HD’s. Do grupo de volume são alocados os espaços para criação dos volumes lógicos. Por exemplo: /dev/lvmdisk0
  • LV (Logical Volume) – Corresponde a partição lógica criada pelo LVM para gravação de dados. Ao invés de ser identificada por nomes de dispositivos, podem ser usados nomes comuns para se referir as partições (tmp,usr,etc.). O Volume lógico é a área onde o sistema de arquivo é criado para gravação de dados, é equivalente a partição em um sistema SEM LVM só que lógica ao invés de física.

IMPORTANTE: Os volumes físicos são combinados em grupos de volume lógico (VG), com exceção da partição /boot/. Ou seja, a partição /boot/ não pode estar em um grupo de volume lógico (VG) porque o GRUB não pode acessá-lo. Assim, é preciso criar uma partição /boot/ separada, que não seja parte de um grupo de volume (VG).

INSTALANDO

Desde das versões do kernel 2.6, o LVM possui suporte. A maioria das distribuições Linux também incluem os pacotes necessários para o funcionamento do mesmo, o Fedora por exemplo. Ou seja, na grande maioria dos casos, seu sistema deverá estar pronto para utilizar o LVM. Por este motivo, tomo como base a instalação em distros derivadas do Debian.

Esse ambiente, mostrado abaixo, somente se enquadra em uma situação onde existe uma partição física reservada para a instalação do LVM – caso contrário seus dados serão sobrescritos no momento da criação do grupo lógico (VG). É bastante indicado para usuários que já possuem seu sistema instalado e partições criadas disponíveis.

Caso você esteja pensando em instalar o LVM no momento da instalação, basta selecionar uma distro que possue este suporte ?

Sendo assim, para instalar a ferramenta “lvm2”, no Ubuntu, execute o comando:

sudo apt-get install lvm2

MÃO NA MASSA

No exemplo a seguir, existe uma máquina virtual com duas partições físicas (SDA = sda1 + sda3). Assim, será criado um grupo lógico na partição “sda3”, com tamanho máximo de 3GB.

Primeiramente, para acompanhar a listagem das partições execute o comando “fdisk -l”:

sudo fdisk -l

Depois de detectar qual partição você irá trabalhar, desmonte-a executando o comando abaixo:

sudo umount /dev/sda3

Finalmente, podemos dá inicio a criação do LVM. Execute o comando “pvcreate”, responsável por adicionar a partição ao pool lógico do LVM :

sudo pvcreate /dev/sda3

Depois, para criar o grupo de volume (VG) chamado vgpool-teste, é preciso executar o comando “vgcreate”:

sudo vgcreate vgpool-teste /dev/sda3

Agora que foi criado um volume físico (PV) e um grupo de volume (VG), é hora de criar um volume lógico (LV). Vamos criar uma chamada log-1, associando ao VG criado e atribuindo o tamanho desse volume lógico (LV), neste caso 1GB (não podendo ultrapassar o tamanho máximo de 3GB):

sudo lvcreate -n log-1 -L 1G vgpool-teste

Seguindo, esse pensamento ainda restam 2GB para serem aproveitados ;-). Então, vamos criar mais um volume lógico de 2GB; chamado log-2:

sudo lvcreate -n log-2 -L 2G vgpool-teste

PRONTO! Agora temos duas partições (volumes lógicos – LV) novas que podem ser formatadas como se fossem partições comuns.

FORMATAÇÃO

Agora que temos nossas duas partições, podemos formatá-las como qualquer outro dispositivo físico. Para tal, execute os comandos abaixo para formatá-las:

sudo mkfs.ext3 /dev/vgpool-teste/log-1 -L log-1

Basta, executar o comando “mount”:

sudo mount /dev/vgpool-teste/log-1 /mnt

COMO SABER SE TUDO DEU CERTO ?!

É importante exibir o status dos nossos dispositivos. Lembre-se, são três componentes diferentes que compõem uma partição LVM completa, o volume físico (PV, ou Physical Volume), o grupo de volume (VG, ou Volume Group) e o volume lógico (LV, ou Logical Volume).
  • Verificar Volume Físico (PV) – Executar o comando “pvdisplay”
  • Verificar Grupo de Volume (VG) – Executar o comando “vgdisplay”
  • Verificar Volume Lógico (LV) – Executar o comando “lvdisplay”

É importante que execute os comandos acima para saber se tudo ocorreu bem!

UTILIZANDO OS BENEFÍCIOS DO LVM

# Adicionando um novo disco ao Volume de Grupo (VG)

Hipoteticamente, depois de instalar um novo HD de 8GB (mapeado como /dev/sde), você deve criar uma nova partição dentro deste HD com o “fdisk”. Depois executar o LVM, adicionando o /dev/sde1 ao LVM com o comando “pvcreate” e depois utilizar o comando “vgextend” para adicionar esta nova partição ao meu grupo de volume (VG):

sudo pvcreate /dev/sde1
sudo vgextend vgpool-teste /dev/sde1

# Expandir o tamanho de um volume lógico

Para aumentar, o volume lógico, para mais 4GB execute o comando lvextend:

sudo lvextend -L+4G /dev/vgpool-teste/log-1

Contudo, para obter êxito é preciso redefinir o sistema de arquivos:

sudo resize2fs /dev/vgpool-teste/log-1

REMOVENDO O LVM

Primeiramente, você precisa desmontar o volume:

sudo umount /mnt

E seguir os seguintes passos (comandos):

sudo lvremove /dev/vgpool-teste/log-1
sudo lvremove /dev/vgpool-teste/log-2
sudo vgremove vgpool-teste
sudo pvremove /dev/sda3 /dev/sde1
Rolar para cima