O lvm (Logical Volume Manager) faz a associação entre dispositivos/partições físicas (incluindo discos RAID, MO, mass storages diversos, MD, e loop) e dispositivos lógicos. O método tradicional faz a alocação de todo espaço físico ao tamanho da partição do disco (o método tradicional), o que traz muito trabalho quando o espaço esgota, cópia de dados ou planejamento de uso de máquina (que pode mudar com o passar do tempo). O sistema de lvm soluciona os seguintes problemas:
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.
Uma partição de disco é identificada por um nome de volume e não pelo dispositivo. Você pode então se referir aos volumes como: usuários, vendas, diretoria, etc.
Sua divisão em 3 camadas possibilita a adição/remoção de mais discos de um conjunto caso seja necessário mais espaço em volumes, etc.
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.
As 3 camadas do LVM 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. Os
aplicativos que manipulam o volume físico, começam com as letras
pv*
. O espaço disponível no PV é dividido em PE (Phisical
Extends, ou extensões físicas). O valor padrão do PE é de 4MB, possibilitando
a criação de um VG de 256Gb.
Por exemplo: /dev/hda1
VG (Volume Group)
- Corresponde ao grupo de volumes físicos
que fazem parte do LVM. Do grupo de volume são alocados os espaços para
criação dos volumes lógicos. Os aplicativos que manipulam o o grupo de volume,
começam com as letras vg*
.
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,
seria equivalente a partição em um sistema SEM LVM só que
lógica ao invés de física. O volume lógico tem seu espaço dividido em LE
(Logical Extends, ou extensões lógicas) que correspondem aos PE's alocados.
Exemplos: /dev/lvmdisk/usr
,
/dev/lvmdisk/tmp
, etc.
Desenvolvi este desenho para representar a idéia de organização de um sistema LVM para o guia Foca GNU/Linux e apresentar a descrição prática da coisa:
+------[ Grupo de Volume (VG) - lvmdsk ]------+ | +--[ PV - hda1 ]---+ +--[ PV - hdb1 ]--+ | | | PE PE PE PE PE PE| | PE PE PE PE PE | | | +------------------+ +-----------------+ | | | | | | | | | | +-----------------+ | | | | +----------------+ | | | | | | | | | +-[ LV - var ]-+ +-[ LV - home ]-+ | | | LE LE LE LE | | LE LE LE LE | | | +--------------+ +---------------+ | +---------------------------------------------+
O gráfico acima representa a seguinte situação:
Nós temos dois volumes físicos representados por hda1
e
hdb1
. Cada um desses volumes físicos tem um Phisical
Extend (PE) de 4M (o padrão).
Estes dois volumes físicos acima representam o espaço total do grupo de volume
lvmdisk em /dev/lvmdisk
.
Do grupo de volume lvmdisk são criados dois volumes
lógicos chamados var e home, estando
disponíveis para particionamento através de
/dev/lvmdisk/var
e /var/lvmdisk/home
.
Na prática, o espaço do volume lógico é definido alocando-se alguns Phisical Extends (PE) dos volumes físicos como logical extends (LE) dos volumes lógicos. Desta forma, o tamanho de todos os PEs e LEs existentes dentro de um mesmo grupo de volume devem ser iguais.
Um sistema com LVM tem sua performance um pouco reduzida quanto ao acesso a disco, devido as camadas adicionais de acesso aos dados, sendo afetadas operações em caracteres e inteligentes de acesso a dados.
Entretanto, a performance de leitura/gravação de blocos é melhorada consideravelmente após a adoção do LVM. O LVM também garante que o sistema não mostre sintomas de paradas durante o esvaziamento de cache de disco, mantendo sempre uma certa constância na transferência de dados mesmo em operações pesadas de I/O no disco. Depende de você avaliar estes pontos e considerar sua adoção.
Nesta seção não tenho a intenção de cobrir todos os detalhes técnicos da implantação do LVM, a idéia aqui é fornecer uma referência básica e prática para uso em qualquer sistema normal (desconsiderando usos críticos). A idéia aqui é mostrar de forma prática como implantar LVM em sua máquina e preparar seu uso nos discos.
Antes de começar, retire QUALQUER CD que estiver inserido na unidade de CD-ROM,
pois eles podem causar erro no pvscan
,
pvdisplay
, etc.
No particionamento, defina as partições do tipo 8E (Linux LVM). A partição
Linux LVM é exatamente igual a Linux Native (82), a única vantagem é que o LVM
utilizará auto detecção para saber quais partições ele deve utilizar no
pvscan
.
Instale o pacote e uma imagem de kernel 4.x ou 5.x que tenha suporte a LVM, ou compile seu próprio kernel (caso goste de máquinas turbinadas :-)
Execute o pvscan para detectar as partições marcadas como
LVM e criar sua configuração em /etc/lvmtab.d
.
OBS: É normal o sistema procurar dispositivos de CD-ROM durante a execução do pvscan, apenas não deixe um CD na unidade para evitar grandes sustos se estiver desatento com os passos :-)
Rode o pvcreate no disco ou partição para dizer que ela será
um volume físico do LVM: pvcreate /dev/sda1
ou
pvcreate /dev/sda
Em caso de dúvida sobre qual é a partição LVM, digite: fdisk -l
/dev/sda
(supondo que /dev/sda
é o disco rígido
que está configurando o LVM).
Rode o pvdisplay /dev/hda1 para verificar se o volume físico foi criado.
Recomendo que deixe a partição raíz (/
) de fora do LVM para
não ter futuros problemas com a manutenção do seu sistema, a menos que tenha
muitas opções de inicialização com suporte a LVM em mãos :-)
Crie o grupo de volume na partição vgcreate lvmdisk /dev/sda1
/dev/sdb7
. Note que partições de discos diferentes podem fazer parte
de um mesmo grupo de volume (VG) do LVM. Caso use o devfs
ou em algumas versões do udev
, será preciso usar o caminho
completo do dispositivo ao invés do link: vgcreate lvmdisk
/dev/ide/host0/bus0/target0/lun0/part1
O valor padrão do "Phisical Extend" é de 4MB mas pode ser alterado pelo parâmetro "-s tamanho", assim o tamanho máximo do grupo de volume será de 256GB (4MB * 64.000 extends que são suportados por volume lógico). Os valores do Phisical Extend (PE) pode ser de 8k a 16GB. Não é possível modificar o tamanho do PE após ele ser definido.
Verifique o grupo de volume (VG) recém criado com o comando: vgdisplay ou vgdisplay /dev/sda7. Atente para a linha "Free PE / tamanho", que indica o espaço livre restante para criar os volumes lógicos (LV).
Crie o volume lógico (LV) com o comando: lvcreate -L1500 -ntmp
lvmdisk
Que vai criar uma partição LVM de 1500MB (1,5GB) com o nome
tmp (acessível por /var/lvmdisk/tmp
)
dentro do grupo lvmdisk. Você deverá fazer isso com as
outra partições.
Agora resta criar um sistema de arquivos (ext3, reiserfs, xfs, jfs, etc) como faria com qualquer partição física normal:
mkfs.ext3 /dev/lvmdisk/tmp
ou mkfs.reiserfs
/dev/lvmdisk/tmp
OBS: Caso deseje montar automaticamente o
volume LVM, coloque o caminho completo do LVM ao invés do volume físico no
/etc/fstab
: /dev/lvmdisk/tmp
.
O processo para aumentar o tamanho do volume lógico consiste em primeiro aumentar o tamanho do VG com o lvextend e depois ajustar o tamanho do sistema de arquivos:
# Aumenta o espaço do volume lógico tmp para 1G lvextend -L1G /dev/lvmdisk/tmp # Aumenta em 200MB o espaço no volume lógico tmp lvextend -L+200M /dev/lvmdisk/tmp
As unidades Kk,Mm,Gg,Tt
podem ser usadas para especificar o
espaço. Após modificar o volume lógico, será preciso aumentar o tamanho do
sistema de arquivos para ser exatamente igual ao tamanho do LV. Isto depende
do seu sistema de arquivos:
resize2fs /dev/lvmdisk/tmp
O ext2/3 ainda vem com o utilitário
e2fsadm que executa os dois comandos
(lvextend e resize2fs) de uma só vez:
e2fsadm -L+1G /dev/lvmdisk/tmp
OBS: Você deverá desmontar o sistema de arquivos antes de alterar o tamanho de um sistema de arquivos ext2 ou ext3. Em kernels da serie 2.6.17 e superiores, a alteração pode ser feita on-line (devido ao patch ext2online incorporado ao kernel).
resize_reiserfs -f /dev/lvmdisk/tmp
O tamanho do sistema de arquivos reiserfs poderá ser modificado on-line, assim não precisa parar seu servidor para esta operação.
xfs_growfs /tmp
Note que deve ser especificado o ponto de montagem ao invés do dispositivo. O
sistema de arquivos deverá ser montado antes de ser modificado e incluido no
/etc/fstab
.
Para diminuir o tamanho de um volume lógico, certifique-se de ter calculado o espaço corretamente para acomodar todos os dados que já existem na partição. A diferença para o processo de aumentar o LV é que primeiramente o sistema de arquivos é reduzido primeiro e depois o LV (pois o LV que acomoda o sistema de arquivos):
resize2fs /dev/lvmdisk/tmp 4G
e depois lvreduce
-L-1G /dev/lvmdisk/tmp
Podem ser usados K, M ou G para especificar o novo tamanho. Caso esteja usando um kernel 2.6.17 ou superior, o tamanho poderá ser ajustado com o sistema de arquivos on-line (sem desmontar).
resize_reiserfs -s-1G /dev/lvmdisk/tmp
e depois
lvreduce -L-1G /dev/lvmdisk/tmp
O tamanho do sistema de arquivos reiserfs poderá ser modificado on-line, assim não precisa parar seu servidor para a modificação.
Não é possível diminuir o tamanho de um sistema de arquivos XFS em sua versão atual (12/2006).
Copyright © 1999-2020 - Gleydson Mazioli da Silva