Introdução
LVM, ou Gestão Lógica de Volume, é uma tecnologia de gestão de dispositivos de armazenamento que dá aos utilizadores o poder de reunir e abstrair a disposição física dos dispositivos de armazenamento de componentes para uma administração mais fácil e flexível. Utilizando a estrutura de cartografia de dispositivos Linux, a actual iteração, LVM2, pode ser utilizada para reunir dispositivos de armazenamento existentes em grupos e atribuir unidades lógicas a partir do espaço combinado conforme necessário.
As principais vantagens do LVM são uma maior abstracção, flexibilidade e controlo. Os volumes lógicos podem ter nomes significativos como “bases de dados” ou “root-backup”. Os volumes podem ser redimensionados dinamicamente à medida que os requisitos de espaço mudam e migram entre dispositivos físicos dentro da piscina num sistema em funcionamento ou exportados facilmente. LVM também oferece características avançadas como instantâneos, striping, e espelhamento.
Neste guia, discutiremos brevemente como o LVM funciona e depois demonstraremos os comandos básicos necessários para se levantar e executar rapidamente.
LVM Arquitectura e Terminologia
Antes de mergulharmos nos actuais comandos administrativos do LVM, é importante ter uma compreensão básica de como o LVM organiza os dispositivos de armazenamento e alguma da terminologia que emprega.
LVM Storage Management Structures
LVM funciona por camadas de abstracções sobre os dispositivos físicos de armazenamento. As camadas básicas que a LVM utiliza, começando pelas mais primitivas, são.
- Volumes físicos:
- Prefixo de utilidade da LVM:
pv...
- Descrição: Os dispositivos de blocos físicos ou outros dispositivos semelhantes a discos (por exemplo, outros dispositivos criados pelo mapeador de dispositivos, como matrizes RAID) são utilizados pelo LVM como matéria-prima de construção para níveis mais elevados de abstracção. Os volumes físicos são dispositivos de armazenamento regulares. LVM escreve um cabeçalho ao dispositivo para o atribuir para gestão.
- Prefixo de utilidade da LVM:
- Grupos de Volume:
- Prefixo do utilitário LVM:
vg...
- Prefixo do utilitário LVM:
- Descrição: O LVM combina volumes físicos em reservatórios conhecidos como grupos de volume. Os grupos de volume abstraem as características dos dispositivos subjacentes e funcionam como um dispositivo lógico unificado com capacidade de armazenamento combinada dos volumes físicos dos componentes.
- prefixo do utilitário LVM:
lv...
(os utilitários genéricos LVM podem começar comlvm...
) - Descrição: Um grupo de volume pode ser cortado em qualquer número de volumes lógicos. Os volumes lógicos são funcionalmente equivalentes a partições num disco físico, mas com muito mais flexibilidade. Os volumes lógicos são o componente primário com o qual os utilizadores e aplicações irão interagir.
Em resumo, LVM pode ser usado para combinar volumes físicos em grupos de volume para unificar o espaço de armazenamento disponível num sistema. Posteriormente, os administradores podem segmentar o grupo de volume em volumes lógicos arbitrários, que actuam como partições flexíveis.
O que são Extensões?
Cada volume dentro de um grupo de volume é segmentado em pequenos pedaços de tamanho fixo chamados extensões. O tamanho das extensões é determinado pelo grupo de volume (todos os volumes dentro do grupo obedecem ao mesmo tamanho).
As extensões de um volume físico são chamadas extensões físicas, enquanto as extensões de um volume lógico são chamadas extensões lógicas. Um volume lógico é simplesmente um mapeamento que a LVM mantém entre os extensões lógica e física. Devido a esta relação, a extensão representa a menor quantidade de espaço que pode ser atribuída pelo LVM.
Os extensões estão por detrás de grande parte da flexibilidade e poder do LVM. Os extensões lógicas que são apresentados como um dispositivo unificado pela LVM não têm de mapear as extensões físicas contínuas. O LVM pode copiar e reorganizar os extensões físicas que compõem um volume lógico sem qualquer interrupção para os utilizadores. Os volumes lógicos também podem ser facilmente expandidos ou encolhidos simplesmente adicionando ou removendo extensões do volume.
O caso de uso simples
Agora que esteja familiarizado com alguma da terminologia e estruturas que o LVM usa, podemos explorar algumas formas comuns de usar o LVM. Começaremos por percorrer um procedimento básico que utilizará dois discos físicos para formar quatro volumes lógicos.
Marcar os Dispositivos Físicos como Volumes Físicos
O nosso primeiro passo é procurar no sistema dispositivos de bloqueio que a LVM possa ver e gerir. Pode fazer isto digitando:
- sudo lvmdiskscan
A saída mostrará todos os dispositivos de bloco disponíveis com os quais o LVM pode interagir:
Output /dev/ram0 /dev/sda /dev/ram1 . . . /dev/ram15 /dev/sdb 2 disks 17 partitions 0 LVM physical volume whole disks 0 LVM physical volumes
Da saída acima, podemos ver que existem actualmente dois discos e 17 partições. As partições são maioritariamente /dev/ram*
partições que são utilizadas no sistema como 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 que verifica duas vezes se os dispositivos que pretende utilizar com LVM não têm quaisquer dados importantes já escritos. A utilização destes dispositivos dentro do LVM irá sobrescrever o conteúdo actual. Se já tiver dados importantes no seu servidor, faça cópias de segurança antes de prosseguir.
Agora que conhecemos os dispositivos físicos que pretendemos utilizar, podemos marcá-los 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
Esta irá escrever um cabeçalho LVM nos dispositivos para indicar que estão prontos para serem adicionados a um grupo de volume.
É possível verificar rapidamente que o LVM registou os volumes físicos digitando:
- sudo pvs
Output PV VG Fmt Attr PSize PFree /dev/sda lvm2 --- 200.00g 200.00g /dev/sdb lvm2 --- 100.00g 100.00g
Como se pode ver, ambos os dispositivos estão presentes sob a coluna PV
, que representa o volume físico.
Adicionar os volumes físicos a um grupo de volume
Agora que criámos volumes físicos a partir dos nossos dispositivos, podemos criar um grupo de volume. Teremos de seleccionar um nome para o grupo de volume, que manteremos genérico. Na maioria das vezes, terá apenas um único grupo de volume por sistema para a máxima flexibilidade na atribuição. Chamaremos o nosso grupo de volume LVMVolGroup
para simplificar.
Para criar o grupo de volume e adicionar-lhe ambos os nossos volumes físicos num único comando, digite:
- sudo vgcreate LVMVolGroup /dev/sda /dev/sdb
Output Volume group "LVMVolGroup" successfully created
Se verificarmos o pvs
output novamente, podemos ver que os nossos volumes físicos estão agora associados a um novo grupo de volume:
- 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
Podemos ver um breve resumo do grupo de volume em si, digitando:
- sudo vgs
Output VG #PV #LV #SN Attr VSize VFree LVMVolGroup 2 0 0 wz--n- 299.99g 299.99g
Como pode ver, o nosso grupo de volume tem actualmente dois volumes físicos, zero volumes lógicos, e tem a capacidade combinada dos dispositivos subjacentes.
Criar volumes lógicos do grupo de volumes
Agora que temos um grupo de volumes disponível, podemos utilizá-lo como um pool a partir do qual podemos atribuir volumes lógicos. Ao contrário da partição convencional, quando se trabalha com volumes lógicos, não é necessário conhecer a disposição do volume, uma vez que o LVM mapeia e trata disso por si. Apenas precisa de fornecer o tamanho do volume e um nome.
Criaremos quatro volumes lógicos separados a partir do nosso grupo de volumes:
- 10G “projectos” volume
- 5G “www” volume para conteúdo da web
- 20G “db” volume para uma base de dados
- “espaço de trabalho” volume que preencherá o espaço restante
Para criar volumes lógicos, usamos o comando lvcreate
. Temos de passar no grupo de volume para puxar de, e podemos nomear o volume lógico com a opção -n
. Para especificar directamente o tamanho, pode usar a opção -L
. Se, em vez disso, desejar especificar o tamanho em termos do número de extensões, pode usar a opção -l
.
Podemos criar os três primeiros volumes lógicos com a opção -L
como esta:
- 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.
Podemos ver os volumes lógicos e a sua relação com o grupo de volumes seleccionando a saída personalizada a partir 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
Adicionámos as duas últimas colunas de saída para que possamos ver o espaço atribuído aos nossos volumes lógicos.
Agora, podemos atribuir o resto do espaço no grupo de volume ao volume “espaço de trabalho” utilizando a bandeira -l
, que funciona em extensões. Podemos também fornecer uma percentagem e uma unidade para melhor comunicar as nossas intenções. No nosso caso, desejamos atribuir o espaço livre restante, para que possamos passar em 100%FREE
:
- sudo lvcreate -l 100%FREE -n workspace LVMVolGroup
Output Logical volume "workspace" created.
Se voltarmos a verificar a informação do grupo de volume, podemos ver que esgotámos 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
Como se pode ver, o volume do “espaço de trabalho” foi criado e o grupo de volume “LVMVolGroup” foi completamente atribuído.
Format and Mount the Logical Volumes
Agora que temos volumes lógicos, podemos usá-los como dispositivos de bloco normais.
Os dispositivos lógicos estão disponíveis dentro do directório /dev
tal como outros dispositivos de armazenamento. Pode aceder a eles em dois locais:
/dev/volume_group_name/logical_volume_name
/dev/mapper/volume_group_name-logical_volume_name
Assim, para formatar os nossos quatro volumes lógicos com o sistema de ficheiros Ext4, podemos digitar:
- sudo mkfs.ext4 /dev/LVMVolGroup/projects
- sudo mkfs.ext4 /dev/LVMVolGroup/www
- sudo mkfs.ext4 /dev/LVMVolGroup/db
- sudo mkfs.ext4 /dev/LVMVolGroup/workspace
Or podemos digitar:
- 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, podemos criar pontos de montagem:
- sudo mkdir -p /mnt/{projects,www,db,workspace}
Podemos então montar 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, adicione-as a /etc/fstab
tal como faria com dispositivos de bloco normais:
- 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
O sistema operativo deve agora montar os volumes lógicos LVM automaticamente no arranque.
Conclusion
Esperançosamente, por esta altura, terá uma boa compreensão dos vários componentes que o LVM consegue criar um sistema de armazenamento flexível. Deverá também ter uma compreensão básica de como colocar os dispositivos de armazenamento em funcionamento numa configuração LVM.
Este guia apenas abordou brevemente o poder e controlo que o LVM proporciona aos administradores dos sistemas Linux. Para saber mais sobre como trabalhar com LVM, consulte o nosso guia para usar LVM com Ubuntu 16.04.