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 letraspv*
. 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 letrasvg*
.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
ehdb1
. 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
oupvcreate /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 odevfs
ou em algumas versões doudev
, 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
oumkfs.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:
- ext2/3
-
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).
- reiserfs
-
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
-
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):
- ext2/3/4
-
resize2fs /dev/lvmdisk/tmp 4G
e depoislvreduce -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).
- reiserfs
-
resize_reiserfs -s-1G /dev/lvmdisk/tmp
e depoislvreduce -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.
- xfs
-
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