Redimensionando volumes lógicos do LVM

LVM é um recurso interessante que permite a alocação dinâmica de suas partições e sendo assim você pode movê-las, redimensioná-las etc sem muito esforço. Não vou encher a Internet com mais um texto explicando o conceito por trás do LVM pois isso já existe aos milhões por ai. Se você precisa saber o que é LVM, como e porque usar, então está lendo o texto errado, pergunte ao oráculo que ele poderá te indicar bons textos sobre o assunto.

Mas voltando a questão, você já precisou realmente redimensionar um volume no LVM? Eu, sim!

Tá bom, confesso que não foi num ambiente de produção – usei uma máquina de testes – mas a frustração ao fazer o trabalho pelo caminho mais óbvio e ver que não funcionou, foi tão grande que ao conseguir fazê-lo, eu rapidamente criei um pequeno script que permite fazer isso de forma simplificada.

Como redimensionar o volume

O redimensionamento (redução) de um volume LVM consiste em:

  1. Desmontar o volume
  2. Redimensionar o sistema de arquivos
  3. Desativar o volume lógico
  4. Redimensionar o volume lógico
  5. Reativar o volume lógico
  6. Montar o volume

O redimensionamento (extensão) de um volume LVM consiste em:

  1. Desmontar o volume
  2. Desativar o volume lógico
  3. Redimensionar o volume lógico
  4. Reativar o volume lógico
  5. Redimensionar o sistema de arquivos
  6. Montar o volume

O que muda entre diminuir ou aumentar um volume lógico é o momento em que você vai redimensionar o sistema de arquivos. É aqui que ocorre o problema, se você esquecer de redimensiona-lo você terá perda de dados.

Como o script funciona

O shell script que eu fiz foi bem simples e além dos comandos para fazer o citado acima possui alguns “if”, “echo” e nada mais.

Os comandos usados e que realmente fazem a “mágica” acontecer são:

  • mount/umont – Monta/desmonta o sistema de arquivos
  • resize_reiserfs – Redimensiona o sistema de arquivos ReiserFS
  • lvchange – Ativa/desativa o volume
  • lvextend – Estende o volume
  • lvreduce – Reduz o volume

Não vou entrar em detalhes sobre cada comando pois as páginas de manual existem para isso e quanto ao script posso dizer que ele apenas chama estes comandos na hora oportuna e nada mais.

Como usar o script

  1. Baixe o arquivo “.tgz”
  2. Descompacte o pacote .tgz dentro do seu diretório /usr/bin
  3. Use os novos comandos a partir do terminal, como root:
    # lvm_easy_reduce GRUPO VOLUME TAMANHO PONTO_MONTAGEM
    ou
    # lvm_easy_extend GRUPO VOLUME TAMANHO PONTO_MONTAGEMOnde:
    GRUPO é o nome do grupo de volumes onde está o volume a ser redimensionado
    VOLUME é o volume lógico a ser redimensionado
    TAMANHO é o novo tomanho do volume (seguido da unidade. ex: 10G, 512M)
    PONTO_MONTAGEM é o diretório usado como ponto de montagem para este volume (Se não for informado o volume não será remontado ao final do processo).

Ex:

# lvm_easy_reduce VG_MAILSYSTEM LVUSERS_A 30G /home/a

Isso vai reduzir o tamanho do volume lógico LVUSERS_A, dentro do grupo de volumes VG_MAILSYSTEM para 30G e remontá-lo em /home/a

Nem tudo são flores

Antes de baixar o script e começar a alterar seus volumes é bom saber de algumas considerações.

  • Alterar partições são sempre um caso crítico, então verifique se o seu backup está feito e funcionando, pois se der problemas você poderá precisar dele – Apesar de eu ter redimensionado o sistema inúmeras vezes para testar, a gente nunca sabe quando o pior vai acontecer.
  • Passe os parâmetros corretamente. O script apenas critica os parâmetros nos seguintes casos:
    • a quantidade de parâmetros (O único parâmetro opcional é o ponto de montagem, que não sendo informado apenas não montará o volume no final do redimensionamento – ação que poderá ser feita manualmente)
    • a impossibilidade de desmontar o volume antes do redimensionamento
    • a inexistência do grupo e/ou volume lógico.
  • Caso você passe o tamanho errado poderá ter problemas então esteja atento a esta informação.
  • Ainda quanto ao tamanho lembre-se de indicar a unidade. Ex: 20G, 512M etc.
  • Cuidado com o nome do script. O script chama-se lvm_easy_resize.sh, mas se ele for executado diretamente, mesmo com os parâmetros corretos ele não fará nada. Use sempre os ‘symlinks’ chamados lvm_easy_reduce e lvm_easy_extend.

O arquivo para download

Faça o download do script lvm_easy_resize e leia acima como instalar depois é só usar 😉

E se tudo mais falhar, o que eu faço?

Como eu já disse, o script funcionou na boa no meu sistema de testes com um grupo de volumes de 500GB contendo 3 volumes lógicos (formatados com ReiserFS) em dois volumes físicos.

Se você os seus volumes são formatados como ext2/ext3 você deverá editar o script e alterar o o comando resize_reiserfs pelo resize2fs que possui a sintaxe um pouco diferente, mas não é difícil de ser feito.

Se você já fez bobagem e perdeu tudo você deve tentar usar reiserfsck. Enquanto estava fazendo os testes para criar o script eu perdi os dados que estavam no volume e o reiserfsck conseguiu resolver o problema recuperando completamente o sistema de arquivos.

Um comentário em “Redimensionando volumes lógicos do LVM”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.