Aula #16 - Logical Volume Management (LVM)


O LVM permite criar uma abstração de disco virtual que representa a soma de discos físicos. Esta abstração de disco virtual pode ser usada sem distinção, como se fosse uma partição normal. Com LVM é muito fácil reduzir e aumentar o tamanho de partições e dos sistemas de arquivos nelas contidos; estas mesmas operações são difíceis em partições físicas porque o tamanho é fixo.

 O LVM (Logical Volume Management) divide uma partição virtual em várias partes, cada uma destas partes pode ser fisicamente salva em partições e/ou discos diferentes.


Existem muitas vantagens em usar LVM; em particular, torna-se muito fácil alterar o tamanho das partições lógicas e dos sistemas de arquivos, para adicionar mais espaço de armazenamento.

Um ou mais volumes físicos (partições de disco) são agrupados em um grupo de volume. Em seguida, o grupo de volume é dividido em volumes lógicos que imitam as partições de disco, já que podem ser formatadas da mesma forma que partições normais.

Há vários utilitários de linha de comando para criar, apagar, e redimensionar volumes físicos e lógicos.
Para ferramenta gráfica a maioria das distribuições Linux usam o system-config-lvm.
No entanto, o RHEL 7 não suporta mais essa ferramenta e não há atualmente nenhuma ferramenta gráfica que funciona de forma confiável com os sistemas de arquivos mais recentes. Felizmente, os utilitários de linha de comando não são difíceis de usar e são mais flexíveis.

O LVM tem impacto no desempenho. Existe um custo de desempenho imposto pela camada do LVM. No entanto, se você usar striping (dividir dados em mais de um disco) você pode conseguir melhorar o desempenho através de paralelização.


Assim como RAID (que veremos posteriormente), o uso de volumes lógicos é um mecanismo para a criação de sistemas de arquivos que podem se estender(ou serem divididos) por mais de um disco físico.

Antes de criar os volumes lógicos, todos os discos são organizados em um grande pool de espaço de armazenamento (o grupo de volume, ou volume group, ou simplesmente vg) para que os volumes lógicos possam ser criados a partir do espaço disponível no pool.

Os volumes lógicos têm características semelhantes aos dispositivos RAID, e é possível usar LVM sobre RAID. Isso pode dar ao volume lógico a redundância do RAID com a flexibilidade do LVM.



  
O LVM é mais flexível que o RAID: volumes lógicos podem ser facilmente redimensionados; ou seja, é possível aumentar ou reduzir o tamanho de acordo com a necessidade. Se houver demanda por mais espaço do que os discos atuais podem fornecer, dispositivos adicionais podem ser adicionados ao volume lógico a qualquer momento.


 As partições são convertidas em volumes físicos e vários volumes físicos são agrupados em grupos de volumes; pode haver mais de um grupo de volumes no sistema.

O Espaço no grupo de volumes é dividido em extents; com 4 MB de tamanho, por padrão, mas o tamanho pode ser facilmente alterado no momento da criação.




 
 
 
Há uma série de utilitários de linha de comando usados para criar e manipular grupos de volumes, com nomes sempre começando com vg incluindo:
  •     vgcreate: Cria grupos de volumes.
  •     vgextend: Adiciona volumes físicos a grupos de volumes.
  •     vgreduce: Remove volumes físicos de grupos de volumes.

Ferramentas que manipulam partições físicas e volumes físicos começam com pv e incluem:
  •     pvcreate: Converte uma partição para um volume físico.
  •     pvdisplay: Mostra os volumes físicos que estão sendo utilizados.
  •     pvmove: Move os dados entre volumes físicos dentro de um grupo de volumes; isso pode ser necessário se um disco ou partição precisa ser removido. Após mover os dados será necessário rodar:
  •     pvremove: desassocia um volume físico de uma partição.


Digitar man lvm vai mostrar uma lista completa de utilitários LVM.
Como: pvchange, pvck, pvcreate, pvdisplay, pvmove, pvremove, pvresize, pvs, pvscan, vgcfgbackup, vgcfgrestore, vgchange, vgck, vgconvert, vgcreate, vgdisplay, vgexport, vgextend, vgimport, vgimportclone, vgmerge, vgmknodes, vgreduce, vgremove, vgrename, vgs, vgscan, vgsplit, lvchange, lvconvert, lvcreate, lvdisplay, lvextend, lvmchange, lvmdiskscan, lvmdump,  lvreduce, lvremove, lvrename, lvresize, lvs, lvscan...



Existem várias ferramentas para volumes lógicos. Todas elas começam com lv. Vamos apresentar as mais comuns, mas uma lista completa pode ser gerada com:
esli-nux / # ls -lF /sbin/lv*
lrwxrwxrwx 1 root root      3 Jun 15 17:20 /sbin/lvchange -> lvm*
lrwxrwxrwx 1 root root      3 Jun 15 17:20 /sbin/lvconvert -> lvm*
lrwxrwxrwx 1 root root      3 Jun 15 17:20 /sbin/lvcreate -> lvm*
lrwxrwxrwx 1 root root      3 Jun 15 17:20 /sbin/lvdisplay -> lvm*
lrwxrwxrwx 1 root root      3 Jun 15 17:20 /sbin/lvextend -> lvm*
-rwxr-xr-x 1 root root 947328 Dez 13  2013 /sbin/lvm*
lrwxrwxrwx 1 root root      3 Jun 15 17:20 /sbin/lvmchange -> lvm*
-rwxr-xr-x 1 root root   6691 Dez 13  2013 /sbin/lvmconf*
lrwxrwxrwx 1 root root      3 Jun 15 17:20 /sbin/lvmdiskscan -> lvm*
-rwxr-xr-x 1 root root   7301 Dez 13  2013 /sbin/lvmdump*
lrwxrwxrwx 1 root root      3 Jun 15 17:20 /sbin/lvmsadc -> lvm*
lrwxrwxrwx 1 root root      3 Jun 15 17:20 /sbin/lvmsar -> lvm*
lrwxrwxrwx 1 root root      3 Jun 15 17:20 /sbin/lvreduce -> lvm*
lrwxrwxrwx 1 root root      3 Jun 15 17:20 /sbin/lvremove -> lvm*
lrwxrwxrwx 1 root root      3 Jun 15 17:20 /sbin/lvrename -> lvm*
lrwxrwxrwx 1 root root      3 Jun 15 17:20 /sbin/lvresize -> lvm*
lrwxrwxrwx 1 root root      3 Jun 15 17:20 /sbin/lvs -> lvm*
lrwxrwxrwx 1 root root      3 Jun 15 17:20 /sbin/lvscan -> lvm*

Ou novamente através do man lvm.


Nota:
    Estas ferramentas estão na pasta /sbin e não na pasta /usr/sbin porque elas são essenciais para rescue/recovery.
    A maioria é apenas um link para a ferramenta que é o canivete suíço dos volumes lógicos, o lvm, e ele decide o que fazer baseado no nome do link que foi usado para acioná-lo. O mesmo é verdade para as ferramentas de volumes físicos ( pv*) e para as de grupos de volumes (vg*).






O lvcreate aloca volumes lógicos a partir de grupos de volume. O tamanho pode ser especificado em bytes ou número de extents (lembre-se que eles tem 4 MB por padrão). Os nomes podem ser qualquer coisa.
O lvdisplay mostra volumes lógicos disponíveis.

Sistemas de arquivos são colocados em volumes lógicos e são formatados com o mkfs, como de costume.

Começando com a criação de um novo grupo de volume, as etapas envolvidas na criação e utilização de um novo volume lógico são:
    Criar partições em unidades de disco (tipo 8e no fdisk).
    Criar volumes físicos a partir das partições.
    Criar o grupo de volume.
    Alocar volumes lógicos a partir do grupo de volume.
    Formatar os volumes lógicos.
    Montar os volumes lógicos (e também atualizar o /etc/fstab se necessário).

Por exemplo assumindo que as partições /dev/sdb1 e /dev/sdc1 já foram criadas com o tipo 8e:


$ sudo pvcreate /dev/sdb1

$ sudo pvcreate /dev/sdc1
$ sudo vgcreate -s 16M vg /dev/sdb1
$ sudo vgextend vg /dev/sdc1
$ sudo lvcreate -L 50G -n mylvm vg
$ sudo mkfs -t ext4 /dev/vg/mylvm
$ mkdir /mylvm
$ sudo mount /dev/vg/mylvm /mylvm

Não se esqueça de adicionar a linha abaixo no /etc/fstab para montar de forma persistente.

dev/vg/mylvm /mylvm ext4 defaults 0 0


 Para exibir informações sobre o LVM os seguintes comandos estão disponíveis:

    pvdisplay mostra volumes físicos:
    $ sudo pvdisplay
    $ sudo pvdisplay /dev/sda5
    
    vgdisplay mostra grupos de volumes:
    $ sudo vgdisplay
    $ sudo vgdisplay /dev/vg0
    
    lvdisplay mostra volumes lógicos:
    $ sudo lvdisplay
    $ sudo lvdisplay /dev/vg0/lvm1


Sem argumentos estes comandos vão exibir todos os volumes físicos, todos os grupos de volumes, e todos os volumes lógicos.


Uma grande vantagem de usar LVM é que é fácil e rápido mudar o tamanho de um volume lógico, especialmente quando comparado com tentar fazer o mesmo com uma partição física já formatada com um sistema de arquivos.
Ao usar LVM espaço em disco pode ser adicionado ou removido de volumes lógicos, e o espaço adicional pode vir de qualquer lugar no grupo de volume; ele nem precisam vir de uma seção fisicamente contígua do disco.

Se o volume já contém um sistema de arquivos, ampliar ou reduzir o sistema de arquivos é uma operação totalmente separada da alteração do tamanho do volume lógico:

    Ao expandir um volume lógico com um sistema de arquivos, é preciso primeiro ampliar o volume lógico para depois expandir o sistema de arquivos.

    Ao reduzir um volume lógico com um sistema de arquivos, é preciso primeiro encolher o sistema de arquivos para depois diminuir o volume lógico.

O sistema de arquivos não pode estar montado para ser encolhido. No entanto, alguns sistemas de arquivos permitem a expansão, enquanto eles estão montados.

Os utilitários que mudam o tamanho do sistema de arquivos são específicos de cada sistema de arquivos; O programa para o ext4 é o resize2fs.


Para aumentar o tamanho de um volume lógico com o sistema de arquivos ext4:

$ sudo umount /meu_lvm
$ sudo lvextend -L +500M /dev/vg/meu_lvm
$ sudo resize2fs /dev/vg/meu_lvm
$ sudo mount /dev/vg/meu_lvm


onde o sinal de adição indica a quantidade de espaço adicionada.


Para diminuir o tamanho do sistema de arquivos:

$ sudo umount /meu_lvm
$ sudo fsck -f /dev/vg/meu_lvm
$ sudo resize2fs /dev/vg/meu_lvm 200M
$ sudo lvreduce  -L 200M /dev/vg/meu_lvm
$ sudo mount /dev/vg/meu_lvm


Versões mais recentes do lvm permitem fazer duas operações ao mesmo tempo usando a opção -r como em:

$ sudo lvextend -r -L +100M /dev/vg/meu_lvm
$ sudo lvreduce -r -L -100M /dev/vg/meu_lvm


em que as quantidades são configuradas com sinais de adição e subtração. Internamente a ferramenta responsável por estas operações é o fsadm.
É uma boa ideia ler a man page do fsadm.
Para reduzir um grupo de volumes:

$ sudo pvmove /dev/sdc1
$ sudo vgreduce vg /dev/sdc1




SNAPSHOTS DO LVM


Snapshots LVM criam uma cópia exata do volume lógico existente.
Eles são úteis para backups, teste de aplicação, e deploy de máquinas virtuais.
Snapshots só consomem espaço dos deltas, ou da diferença do que foi escrito no disco desde que o snapshot foi feito, mais precisamente quando:

    O volume lógico original é alterado.
    Se dados são adicionados ao snapshot, eles são armazenados apenas uma vez.

Para criar um snapshot de um volume logico existente:
$ sudo lvcreate -l 128 -s -n meu_snap /dev/vg/meu_lv


Para criar um ponto de montagem e montar o snapshot:
$ mkdir /meu_snap
$ mount -o ro /dev/vg/meu_snap /meu_snap


Para remover o snapshot:
$ sudo umount /meu_snap
$ sudo lvremove /dev/vg/meu_snap

Sempre remova os snapshots quando eles não forem mais necessários. Se você esquecer, e se o espaço no VG acabar, o snapshot será automaticamente desabilitado.


Mais vistos no mês:

As melhores distribuições Linux para 2017

TuxMath - Tux, do Comando da Matemática. Ensino e diversão a crianças.

Teste de Performance de Rede com Iperf

DHCP - Guia Completo

OPNsense - Firewall Open Source

Aula #14 - Os sistemas de arquivos ext2/ext3/ext4

Ophcrack: Descubra todas as senhas do Windows

SSD no linux

Oracle Linux 7.0 Server com Xfce - Instalação e configurações iniciais