sexta-feira, 1 de junho de 2018

LVM - Logical Volume Management - Introdução


As versões mais recentes do openSUSE, assim como praticamente todas as distribuições Linux, permitem usar configurações baseadas em Logical Volume Management (Gerenciamento Lógico de Volumes).

Se você administra um Servidor ou um Desktop, só conseguimos apontar vantagens em usar LVM!


Por que usar LVM - Logical Volume Management? 


O Gerenciamento Lógico de Volumes proporciona uma camada de abstração entre um sistema de arquivos e os discos ou partições.

Sem um gerenciamento de volume, uma vez que você tenha usado todo o espaço em um disco, seu sistema de arquivos não pode ser mais estendido. Não de forma simples!

Usando LVM, um sistema de arquivos é criado em um volume lógico. Um volume lógico é criado em cima de um grupo de volume, que por sua vez é criado usando um ou mais volumes físicos (discos ou partições). Deste jeito, um mesmo sistema de arquivos pode se espalhar por vários discos. Assim, se um sistema de arquivos se tornar cheio, ele pode ser estendido adicionando um novo volume físico (disco ou partição) ao grupo de volume ao qual faz parte, e depois simplesmente estendendo o volume lógico no qual ele está montado.


Mas esta flexibilidade em alocação de espaço é apenas um aspecto da utilidade de LVM! Existem muitos outros que iremos ver ao longo dessa série.


Uma grande vantagem do LVM é que os HDs passam a ser Physical Volumes (PVs), ou seja, espaço que entra no sistema de uma forma concreta, mas que é usado de forma abstrata e transparente ao usuário.
Falando de outro modo: Com o LVM, você trabalha armazenando dados em estruturas lógicas que abstraem as estruturas físicas. Assim, incluir ou remover um HD passa a ser apenas um problema de incluir ou remover espaço físico, e apenas isso! 
Como num Storage de alta performance, com o LVM você pode adicionar quantos HDs você puder em seu sistema, e utilizar o espaço extra nas estruturas lógicas que você quiser e precisar.

Com o LVM você pode substituir sem muita dificuldade quantos HDs for preciso, seja para aumentar a capacidade, ou porque um HD começou a sinalizar falhas. Igual você faria num Storage de alta performance.

O céu é o limite

Como exercício intelectual, tentem imaginar a situação mais "desesperadora" que um administrador de Linux poderia enfrentar para substituir um HD!

Que tal, por exemplo, substituir um HD inteiro, cujo sistema está sinalizando problema? Agora imagine que isso está acontecendo em seu Desktop! Imagine também que esse HD é o HD do sistema... Sim, o HD de boot, onde ficam o Master Boot Record, o GRUB, a partição de root ( / )! Quem já teve que fazer isso um dia sabe a dor de cabeça que dá...

A depender de como você utiliza LVM, e de como seu sistema foi montado, aumentar (ou reduzir) espaço em sistemas de arquivos se torna uma tarefa quase banal. E substituir um HD inteiro é só uma questão de executar um comando do LVM, para mover os dados que estão nele para outro lugar gerenciado por LVM, e então retirar o HD sem nenhum trauma.


Como funciona(va)m as coisas sem o LVM?

Escolher que tamanho uma partição deve ter, para poder ser usada em um ponto de montagem específico, é uma das decisões mais difíceis que um usuário de Linux enfrenta, ao instalar um novo sistema!

Como as coisas funciona(va)m sem LVM? Uma rápida olhada na figura abaixo fará você relembrar!

Figura 1 - Partições ao modo antigo

Podemos ver que o HD foi dividido em três partições (sda1, sda2 e sda3) e cada uma foi "fisicamente" associada a um ponto de montagem.

E, na dúvida, a maior parte do HD foi utilizada para /home. Essa era uma "solução" comumente adotada sem LVM. Deixando 40 GB para a partição / (root), e utilizando o HD para tudo o mais, nosso intrépido usuário de Linux depositou toda sua fé que isso será suficiente para o "resto da vida"!...

Apesar de não ser impossível mexer nesse arranjo depois, isso sempre tem lá seus complicadores, como por exemplo quando é necessário aumentar o tamanho de um ponto de montagem, tirando espaço de outro lugar.


Como funciona o Logical Volume Management (LVM)?


Basicamente, o LVM funciona como mostrado na figura abaixo:

Figura 2 - LVM Diagram

Existem três estruturas fundamentais que você deve ter em mente quando trabalha com LVM: Physical Volumes (os Volumes Físicos ou os HDs propriamente ditos); Volume Groups (Grupos de Volume); Logical Volumes (Volumes Lógicos).

MEMORIZEM ISSO: PV = Physical Volumes; VG = Volume Group; LV = Logical Volume. PV, VG e LG!

Com LVM, você não tem mais aquela relação direta entre uma estrutura física no HD /dev/partition ) e um ponto de montagem! Ao invés disso, você tem um ponto de montagem associado a um Volume Lógico.

Com o LVM, um Ponto de Montagem é associado a um Volume Lógico.

Usando uma linguagem mais abstrata, a grande vantagem nessa estrutura é que a utilização dos HDs em seu sistema passa a ser virtual. Um ponto de montagem não precisa "saber" qual é a partição física a qual ele está associado. Muito menos em qual HD ele está sendo gravado!

E você também não precisa ficar paranoico com relação a quanto de espaço precisa dar a cada ponto de montagem. Basta na instalação reservar um espaço suficiente para começar com certa folga (e aí entra um misto de bom senso + experiência + intuição!). Na medida em que as coisas forem consumindo espaço, é muito fácil com o LVM adicionar o espaço que for necessário. Basta que ele exista em algum lugar...



O LVM no openSUSE

Embora o LVM esteja disponível no openSUSE, uma configuração baseada nele não é ativada por default, durante a instalação. É necessário explicitamente buscar essa opção!
Se você é daqueles que aceitam as sugestões do instalador do openSUSE, vai se deparar com alguma coisa como a mostrada na figura abaixo.

Figura 3 - Particionamento sugerido - Leap 42.2

Na última versão do openSUSE (Leap-15.0), as coisas continuam muito parecidas, como podemos ver na tela abaixo:

Figura 4 - Particionamento sugerido - Leap 15.0

NADA DE LVM!


Embora o LVM seja mais usado em servidores, nada te impede de utilizar LVM também em Desktops. Principalmente porque hoje em dia HDs de 1, 2 ou 3 TB são vendidos a "preço de banana". E com espaço sobrando no HD, você pode fazer uma instalação padrão usando apenas uma parte do HD e deixar o restante para uso no futuro. O LVM pode facilitar bastante esse processo.


Usando LVM

Existem várias formas de configurar o uso do LVM durante a instalação. Usar o assistente de instalação é uma delas, e não é má ideia! Até porque, as configurações em um Deskop são muito mais básicos que em um Servidor, e não precisa muito detalhe. Então vamos utilizar o Configuração guiada do Yast.
  • Configuração guiada: optando por LVM - modo fácil
Para fazer isto, basta clicar no botão Configuração guiada, no Leap-15.0. No Leap-42.2 essa opção se chama Editar as configurações recomendadas.

As três telas a seguir irão mostrar o processo interativo de configuração do LVM nesse modo fácil, que foram capturadas durante a instalação do SUSE Leap-15.0:

Figura 5 - Ativando LVM


Figura 6 - Opções do sistema de arquivos

  • E como resultado, vamos ter agora:

Figura 7 - Particionamento sugerido com LVM

Podemos ver na tela acima que o HD foi particionado em duas partições:

/dev/sda1 como BIOS boot Partition;
/dev/sda2 como volume físico LVM, usando todo o restante do HD.

Assim, dessa forma bem básica, você pode fazer uma instalação baseada em LVM que dá para um uso cotidiano sem traumas e também para aprendizado!

Nossa sugestão é que vocês usem, como nós, ambiente virtualizado para estudar e testar tudo o que apresentarmos nessa série de artigos. o VirtualBox, por exemplo, é uma maravilha!

Depois que estiverem bastante seguros de LVM, vocês podem partir para o ambiente definitivo, seja um Desktop, ou um Mega Servidor!

Ao final dessa série nós iremos mostrar uma configuração baseada em LVM que irá dar conta de 99.99% das situações adversas que possam surgir no futuro.




Algumas facilidades do LVM

Só com o tempo, e lendo bastante sobre o assunto, você irá ter a exata dimensão das vantagens trazidas pelo LVM. Por enquanto, vamos ficar com as questões de espaço de armazenamento e substituição de HDs!

Faltou espaço no ponto de montagem raiz ( / )? Adicione espaço ao volume lógico system (e expanda o sistema de arquivos em seguida)!

Faltou espaço em /home, para mais dados dos usuários (ou para seus filmes em Full HD)? Adicione espaço ao volume lógico home ( idem )!


Assim, um simple comando como
lvextend -L+32G /dev/rootvg/home

irá adicionar mais 32 Giga Bytes ao volume lógico home!

E, finalmente, basta um comando como
xfs_growfs /home

para que esse espaço a mais possa ser "enxergado" e utilizado pelo sistema de arquivos em /home!


"Peraí... Mas está faltando espaço em minha partição root (ponto de montagem /). Estou querendo fazer uma upgrade de versão e está dando pau. Não tem espaço!!" -- Alguém pode ponderar!

Sem problema:

#Adicionar mais 16 Giga Bytes ao volume lógico system (ponto de montagem / )
lvextend -L+16G /dev/rootvg/system

#Expandir o sistema de arquivos, para refletir o novo tamanho
btrfs filesystem resize max /


Ok, Ok, mas de onde vem esse espaço?

Os VGs fazem a ponte entre os LVs e os HDs!

Todo o espaço físico que você tiver disponível em seu sistema, seja ele um ou mais HDs (inteiros ou em partições), é associado a um VG (Volume Group), para poder ser utilizado pelo LVM.

Olhando mais uma vez a Figura 2, podemos ver que um HD inteiro (Disk1) foi alocado para o Grupo de Volume rootvg. Podemos ver também que outros três HDs (Disk2, Disk3 e Disk4) foram inteiramente alocados para o grupo de volume datavg... Hummmm...


Trabalhando com LVM


Para finalizar esse artigo, vamos transcrever parte da documentação sobre LVM encontrada no site "The Linux Documentation Project", listando as tarefas mais comuns quando se trabalha com LVM, só para dar uma ideia do que virá por aí!


As tarefas mais comuns quando se trabalha com LVM, de acordo com o TLDP, são:

11.1. Inicializando discos ou partições de disco
11.2. Criando um grupo de volume
11.3. Ativando um grupo de volume
11.4. Removendo um grupo de volume
11.5. Adicionando volumes físicos a um grupo de volume
11.6. Removendo volumes físicos de um grupo de volume
11.7. Criando um volume lógico
11.8. Removendo um volume lógico
11.9. Estendendo um volume lógico
11.10. Reduzindo um volume lógico
11.11. Migrando Dados de um Volume Físico




No próximo artigo


No próximo artigo, vou mostrar como criar "manualmente" o Grupo de Volume datavg e também os Volumes Lógicos data1, data2, data3 e data4 que foram ilustrados nesse artigo.



Até o próximo...

Um comentário: