Introdução
LVM, ou Gerenciamento de Volume Lógico, é uma tecnologia de gerenciamento de dispositivos de armazenamento que dá aos usuários o poder de agrupar e abstrair o layout físico dos dispositivos de armazenamento para administração flexível. Utilizando a estrutura do kernel Linux device mapper, a iteração atual, LVM2, pode ser usada para agrupar dispositivos de armazenamento existentes em grupos e alocar unidades lógicas do espaço combinado conforme necessário.
As principais vantagens do LVM são aumento da abstração, flexibilidade e controle. Volumes lógicos podem ter nomes significativos como “databases” ou “root-backup”. Os volumes também podem ser redimensionados dinamicamente conforme os requisitos de espaço mudam e migrados entre dispositivos físicos dentro do pool em um sistema em execução ou exportados. O LVM também oferece recursos avançados como snapshotting, striping e espelhamento.
Neste guia, você aprenderá como o LVM funciona e praticará comandos básicos para começar rapidamente em uma máquina de metal nu.
Arquitetura e Terminologia do LVM
Antes de mergulhar nos comandos administrativos do LVM, é importante ter uma compreensão básica de como o LVM organiza dispositivos de armazenamento e alguns dos termos que ele emprega.
Estruturas de Gerenciamento de Armazenamento LVM
O LVM funciona adicionando abstrações em camadas sobre dispositivos de armazenamento físico. As camadas básicas que o LVM utiliza, começando pela mais primitiva, são:
-
Volumes Físicos: O prefixo de utilitário LVM para volumes físicos é
pv...
. Estes dispositivos físicos de blocos ou outros dispositivos semelhantes a disco (por exemplo, outros dispositivos criados pelo mapeador de dispositivos, como arrays RAID) são usados pelo LVM como material básico para níveis superiores de abstração. Os volumes físicos são dispositivos de armazenamento regulares. O LVM escreve um cabeçalho no dispositivo para alocá-lo para gerenciamento. -
Grupos de Volumes: O prefixo de utilitário LVM para grupos de volumes é
vg...
.
O LVM combina volumes físicos em conjuntos de armazenamento conhecidos como grupos de volumes. Grupos de volumes abstraem as características dos dispositivos subjacentes e funcionam como um dispositivo lógico unificado com capacidade de armazenamento combinada dos volumes físicos componentes. -
Volumes Lógicos: O prefixo de utilitário LVM para volumes lógicos é
lv...
, utilitários LVM genéricos podem começar comlvm...
. Um grupo de volumes pode ser dividido em qualquer número de volumes lógicos. Os volumes lógicos são funcionalmente equivalentes às partições em um disco físico, mas com muito mais flexibilidade. Os volumes lógicos são o componente principal com o qual os usuários e aplicativos irão interagir.
O LVM pode ser usado para combinar volumes físicos em grupos de volumes para unificar o espaço de armazenamento disponível em um sistema. Em seguida, os administradores podem segmentar o grupo de volumes em volumes lógicos arbitrários, que atuam como partições flexíveis.
Compreendendo Extensões
Cada volume dentro de um grupo de volumes é segmentado em pequenos fragmentos de tamanho fixo chamados extensões. O tamanho das extensões é determinado pelo grupo de volumes. Todos os volumes dentro do grupo seguem o mesmo tamanho de extensão.
As extensões em um volume físico são chamadas de extensões físicas, enquanto as extensões de um volume lógico são chamadas de extensões lógicas. Um volume lógico é um mapeamento que o LVM mantém entre extensões lógicas e físicas. Devido a esse relacionamento, o tamanho da extensão representa a menor quantidade de espaço que o LVM pode alocar.
As extensões são responsáveis por grande parte da flexibilidade e poder do LVM. As extensões lógicas que são apresentadas como um dispositivo unificado pelo LVM não precisam mapear para extensões físicas contínuas. O LVM pode copiar e reorganizar as extensões físicas que compõem um volume lógico sem interrupção para os usuários. Os volumes lógicos também podem ser expandidos ou reduzidos adicionando extensões ao volume ou removendo extensões dele.
Casos de Uso Comuns
Agora que você está familiarizado com parte da terminologia e estruturas que o LVM utiliza, você pode explorar algumas maneiras comuns de usar o LVM. Você começará com um procedimento que usará dois discos físicos para formar quatro volumes lógicos.
Marcação dos Dispositivos Físicos como Volumes Físicos
Comece escaneando o sistema em busca de dispositivos de bloco que o LVM possa acessar e gerenciar. Você pode fazer isso com o seguinte comando:
- sudo lvmdiskscan
A saída retornará todos os dispositivos de bloco disponíveis com os quais o LVM pode interagir:
Output /dev/ram0 [ 64.00 MiB]
/dev/sda [ 200.00 GiB]
/dev/ram1 [ 64.00 MiB]
. . .
/dev/ram15 [ 64.00 MiB]
/dev/sdb [ 100.00 GiB]
2 disks
17 partitions
0 LVM physical volume whole disks
0 LVM physical volumes
Neste exemplo, observe que atualmente existem dois discos e 17 partições. As partições são principalmente partições /dev/ram*
que são usadas no sistema como um disco RAM para melhorias de desempenho. Os discos neste exemplo são /dev/sda
, que tem 200G de espaço, e /dev/sdb
, que tem 100G.
Aviso: Certifique-se de verificar duplamente que os dispositivos que pretende usar com o LVM não têm nenhum dado importante já gravado neles. Usar esses dispositivos dentro do LVM irá sobrescrever os conteúdos atuais. Se você tiver dados importantes no seu servidor, faça backups antes de prosseguir.
Agora que você sabe quais são os dispositivos físicos que deseja usar, marque-os como volumes físicos dentro do LVM usando o comando pvcreate
:
- sudo pvcreate /dev/sda /dev/sdb
Output Physical volume "/dev/sda" successfully created
Physical volume "/dev/sdb" successfully created
Isso escreverá um cabeçalho do LVM nos dispositivos para indicar que eles estão prontos para serem adicionados a um grupo de volumes.
Verifique se o LVM registrou os volumes físicos executando pvs
:
- sudo pvs
Output PV VG Fmt Attr PSize PFree
/dev/sda lvm2 --- 200.00g 200.00g
/dev/sdb lvm2 --- 100.00g 100.00g
Observe que ambos os dispositivos estão presentes sob a coluna PV
, que significa volume físico.
Adicionando os Volumes Físicos a um Grupo de Volumes
Agora que você criou volumes físicos a partir de seus dispositivos, você pode criar um grupo de volumes. Na maioria das vezes, você tem apenas um grupo de volumes por sistema para máxima flexibilidade na alocação. O exemplo de grupo de volumes a seguir é chamado de LVMVolGroup
. Você pode nomear seu grupo de volumes como preferir.
Para criar o grupo de volumes e adicionar ambos os seus volumes físicos a ele, execute:
- sudo vgcreate LVMVolGroup /dev/sda /dev/sdb
Output Volume group "LVMVolGroup" successfully created
Verificar novamente a saída do comando pvs
indicará que seus volumes físicos agora estão associados ao novo grupo de volumes:
- sudo pvs
Output PV VG Fmt Attr PSize PFree
/dev/sda LVMVolGroup lvm2 a-- 200.00g 200.00g
/dev/sdb LVMVolGroup lvm2 a-- 100.00g 100.00g
Liste um breve resumo do grupo de volumes com o comando vgs
:
- sudo vgs
Output VG #PV #LV #SN Attr VSize VFree
LVMVolGroup 2 0 0 wz--n- 299.99g 299.99g
Seu grupo de volumes atualmente possui dois volumes físicos, zero volumes lógicos e tem a capacidade combinada dos dispositivos subjacentes.
Criando Volumes Lógicos a partir do Pool do Grupo de Volumes
Agora que você tem um grupo de volumes disponível, pode usá-lo como um pool para alocar volumes lógicos. Ao contrário da partição convencional, ao trabalhar com volumes lógicos, você não precisa conhecer o layout do volume, pois o LVM mapeia e gerencia isso para você. Você só precisa fornecer o tamanho do volume e um nome.
No exemplo a seguir, você criará quatro volumes lógicos separados a partir do seu grupo de volumes:
- Volume “projetos” de 10G
- Volume “www” de 5G para conteúdo web
- Volume “db” de 20G para um banco de dados
- Volume “workspace” que preencherá o espaço restante
Para criar volumes lógicos, use o comando lvcreate
. Você deve especificar o grupo de volumes para usar e pode nomear o volume lógico com a opção -n
. Para especificar o tamanho diretamente, pode usar a opção -L
. Se preferir especificar o tamanho em termos do número de extensões, pode usar a opção -l
.
Crie os três primeiros volumes lógicos com a opção -L
:
- sudo lvcreate -L 10G -n projects LVMVolGroup
- sudo lvcreate -L 5G -n www LVMVolGroup
- sudo lvcreate -L 20G -n db LVMVolGroup
Output Logical volume "projects" created.
Logical volume "www" created.
Logical volume "db" created.
Você pode visualizar os volumes lógicos e sua relação com o grupo de volumes selecionando uma saída personalizada do comando vgs
:
- sudo vgs -o +lv_size,lv_name
Output VG #PV #LV #SN Attr VSize VFree LSize LV
LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 10.00g projects
LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 5.00g www
LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 20.00g db
Neste exemplo, foram adicionadas as duas últimas colunas da saída. Isso indica quanto espaço está alocado para seus volumes lógicos.
Agora, você pode alocar o restante do espaço no grupo de volumes para o volume "workspace"
usando a flag -l
, que funciona em extents. Você também pode fornecer uma porcentagem e uma unidade para comunicar melhor suas intenções. Neste exemplo, aloque o espaço livre restante, então você pode passar 100%FREE
:
- sudo lvcreate -l 100%FREE -n workspace LVMVolGroup
Output Logical volume "workspace" created.
Verificando as informações do grupo de volumes com o comando personalizado vgs
, perceba que você utilizou todo o espaço disponível:
- sudo vgs -o +lv_size,lv_name
Output VG #PV #LV #SN Attr VSize VFree LSize LV
LVMVolGroup 2 4 0 wz--n- 299.99g 0 10.00g projects
LVMVolGroup 2 4 0 wz--n- 299.99g 0 5.00g www
LVMVolGroup 2 4 0 wz--n- 299.99g 0 20.00g db
LVMVolGroup 2 4 0 wz--n- 299.99g 0 264.99g workspace
O volume workspace
foi criado e o grupo de volumes LVMVolGroup
está completamente alocado.
Formatando e Montando os Volumes Lógicos
Agora que você tem volumes lógicos, você pode usá-los como dispositivos de bloco normais.
Os dispositivos lógicos estão disponíveis dentro do diretório /dev
como outros dispositivos de armazenamento. Você pode acessá-los em dois lugares:
/dev/nome_do_grupo_de_volumes/nome_do_volume_lógico
/dev/mapper/nome_do_grupo_de_volumes-nome_do_volume_lógico
Para formatar seus quatro volumes lógicos com o sistema de arquivos Ext4, execute os seguintes comandos:
- sudo mkfs.ext4 /dev/LVMVolGroup/projects
- sudo mkfs.ext4 /dev/LVMVolGroup/www
- sudo mkfs.ext4 /dev/LVMVolGroup/db
- sudo mkfs.ext4 /dev/LVMVolGroup/workspace
Alternativamente, você pode executar o seguinte:
- sudo mkfs.ext4 /dev/mapper/LVMVolGroup-projects
- sudo mkfs.ext4 /dev/mapper/LVMVolGroup-www
- sudo mkfs.ext4 /dev/mapper/LVMVolGroup-db
- sudo mkfs.ext4 /dev/mapper/LVMVolGroup-workspace
Após a formatação, crie pontos de montagem:
- sudo mkdir -p /mnt/{projects,www,db,workspace}
Então monte os volumes lógicos no local apropriado:
- sudo mount /dev/LVMVolGroup/projects /mnt/projects
- sudo mount /dev/LVMVolGroup/www /mnt/www
- sudo mount /dev/LVMVolGroup/db /mnt/db
- sudo mount /dev/LVMVolGroup/workspace /mnt/workspace
Para tornar as montagens persistentes, use o seu editor de texto preferido para adicioná-las ao arquivo /etc/fstab
. O exemplo a seguir utiliza o nano
:
- sudo nano /etc/fstab
. . .
/dev/LVMVolGroup/projects /mnt/projects ext4 defaults,nofail 0 0
/dev/LVMVolGroup/www /mnt/www ext4 defaults,nofail 0 0
/dev/LVMVolGroup/db /mnt/db ext4 defaults,nofail 0 0
/dev/LVMVolGroup/workspace /mnt/workspace ext4 defaults,nofail 0 0
Após editar o seu arquivo, salve e saia. Se estiver usando o nano
, pressione CTRL+c
, depois y
, e, por fim, ENTER
.
O sistema operacional agora deve montar automaticamente os volumes lógicos do LVM durante a inicialização.
Conclusão
Agora, você compreende os vários componentes que o LVM gerencia para criar um sistema de armazenamento flexível, e sabe como colocar dispositivos de armazenamento em funcionamento em uma configuração de LVM.
Para obter mais informações sobre o trabalho com o LVM, confira o nosso guia de uso do LVM com o Ubuntu 18.04.