Introdução
Neste laboratório, você aprenderá o processo fundamental de criação e gerenciamento de armazenamento LVM (Logical Volume Manager) em um sistema Red Hat Enterprise Linux. Você começará preparando um disco físico, particionando-o com parted e inicializando-o como um Volume Físico (PV - Physical Volume) LVM usando pvcreate. Em seguida, você agrupará este PV em um Volume Group (VG) com vgcreate e, então, criará um Volume Lógico (LV - Logical Volume) flexível a partir desse grupo usando lvcreate. A configuração inicial conclui com a formatação do novo LV com um sistema de arquivos XFS e a montagem persistente para uso do sistema.
Construindo sobre a configuração inicial, você explorará uma das principais vantagens do LVM: a capacidade de redimensionar dinamicamente o armazenamento. Você aprenderá como estender um Volume Group existente adicionando um novo Volume Físico com vgextend. Subsequentemente, você expandirá o Volume Lógico para utilizar este novo espaço usando lvextend e redimensionará o sistema de arquivos XFS online com xfs_growfs para tornar a capacidade adicional imediatamente disponível para o sistema operacional sem tempo de inatividade.
Preparar Physical Volumes com parted e pvcreate
Nesta etapa, você começará a gerenciar o armazenamento preparando um disco físico para uso com o Logical Volume Manager (LVM). Isso envolve duas etapas principais: primeiro, particionar o disco usando o utilitário parted e, segundo, inicializar essas partições como Volumes Físicos (PVs - Physical Volumes) LVM com o comando pvcreate.
Visão Geral do Logical Volume Manager (LVM)
LVM é uma ferramenta poderosa de gerenciamento de armazenamento no Linux que fornece uma camada flexível sobre dispositivos de armazenamento físico. Em vez de usar discos e partições diretamente, o LVM permite que você crie "volume groups" abstratos a partir de um ou mais dispositivos físicos e, em seguida, crie "logical volumes" a partir desse espaço agrupado. Isso torna muito mais fácil redimensionar o armazenamento, substituir discos e gerenciar o armazenamento do seu sistema sem tempo de inatividade.
O componente mais fundamental no LVM é o Physical Volume (PV). Um PV é um dispositivo de armazenamento físico, como uma partição de disco rígido ou um disco inteiro, que foi inicializado para uso pelo LVM.
1. Criar uma Partição para LVM
Antes que um disco possa ser usado pelo LVM, você deve criar uma partição nele e definir seu tipo como "LVM". Usaremos o dispositivo /dev/vdb para este exercício. Você precisará de privilégios sudo para modificar as partições do disco.
Primeiro, crie uma nova Tabela de Partição GUID (GPT - GUID Partition Table) no dispositivo /dev/vdb. GPT é um padrão moderno para o layout da tabela de partições em um dispositivo de armazenamento físico.
sudo parted /dev/vdb mklabel gpt
Em seguida, crie uma única partição com 512 MiB de tamanho. Vamos nomear esta partição lvm-part1.
sudo parted /dev/vdb mkpart lvm-part1 1MiB 513MiB
Agora, defina o tipo de partição como lvm. Esta flag informa ao sistema que esta partição se destina ao uso com o Logical Volume Manager.
sudo parted /dev/vdb set 1 lvm on
Para garantir que o kernel reconheça a nova partição imediatamente, execute o comando udevadm settle. Este comando aguarda o daemon udev processar todos os eventos do dispositivo, garantindo que a nova partição /dev/vdb1 esteja disponível.
sudo udevadm settle
Finalmente, verifique se a partição foi criada corretamente imprimindo a tabela de partições.
sudo parted /dev/vdb print
Você deve ver uma saída semelhante à seguinte, mostrando uma partição com a flag lvm habilitada.
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 538MB 537MB lvm-part1 lvm
2. Inicializar a Partição como um Volume Físico
Com a partição criada e corretamente tipada, a próxima etapa é inicializá-la como um Volume Físico LVM usando o comando pvcreate. Este comando grava metadados LVM na partição, tornando-a formalmente parte do sistema LVM.
Execute o seguinte comando para inicializar /dev/vdb1:
sudo pvcreate /dev/vdb1
Uma operação bem-sucedida produzirá a seguinte mensagem:
Physical volume "/dev/vdb1" successfully created.
Creating devices file /etc/lvm/devices/system.devices
3. Exibir Informações do Volume Físico
Agora você pode inspecionar o Volume Físico recém-criado. O comando pvs fornece um resumo compacto de todos os PVs no sistema, enquanto pvdisplay oferece uma visão mais detalhada.
Use pvs para ver um resumo rápido:
sudo pvs
A saída listará seu novo PV. Observe que ele ainda não pertence a nenhum Volume Group (VG).
PV VG Fmt Attr PSize PFree
/dev/vdb1 lvm2 --- 512.00m 512.00m
Para mais detalhes, use pvdisplay:
sudo pvdisplay /dev/vdb1
Este comando mostra informações detalhadas, incluindo o nome do PV, tamanho e identificador exclusivo (UUID).
"/dev/vdb1" is a new physical volume of "512.00 MiB"
--- NEW Physical volume ---
PV Name /dev/vdb1
VG Name
PV Size 512.00 MiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Você agora preparou com sucesso uma partição física para LVM. Na próxima etapa, você usará este PV para criar um Volume Group.
Criar um Volume Group a partir de Physical Volumes com vgcreate
Nesta etapa, você usará o Volume Físico (PV) que preparou na etapa anterior para criar um Volume Group (VG). Um Volume Group é um componente central do LVM, atuando como um único pool gerenciável de espaço em disco a partir do qual você pode criar Logical Volumes.
Entendendo Volume Groups e Physical Extents
Um Volume Group (VG) agrega um ou mais Volumes Físicos em um único pool de armazenamento. Pense nisso como combinar vários contêineres menores de água em um tanque grande. Essa abstração é o que dá ao LVM sua flexibilidade.
Este pool de armazenamento é dividido em pequenos pedaços de tamanho fixo chamados Physical Extents (PEs). Por padrão, um PE tem 4 MiB. Quando você cria um Logical Volume mais tarde, você está essencialmente alocando um certo número desses PEs do Volume Group.
1. Criar o Volume Group
Agora, você criará um Volume Group chamado my_vg usando o Volume Físico /dev/vdb1. O comando para isso é vgcreate.
sudo vgcreate my_vg /dev/vdb1
Se o comando for bem-sucedido, você verá uma mensagem de confirmação:
Volume group "my_vg" successfully created
Este comando criou um novo pool de armazenamento chamado my_vg que contém todo o espaço disponível de /dev/vdb1.
2. Exibir Informações do Volume Group
Assim como você fez com os Volumes Físicos, você pode exibir informações sobre seu novo Volume Group. O comando vgs fornece um resumo e vgdisplay fornece uma visão detalhada.
Para obter um resumo compacto de todos os Volume Groups no sistema, execute:
sudo vgs
A saída mostrará seu novo VG, seu tamanho e a quantidade de espaço livre.
VG #PV #LV #SN Attr VSize VFree
my_vg 1 0 0 wz--n- 508.00m 508.00m
Para um relatório mais detalhado sobre seu Volume Group específico, use vgdisplay:
sudo vgdisplay my_vg
Esta saída fornece detalhes abrangentes, incluindo o tamanho do PE, o número total de PEs e quantos ainda estão livres.
--- Volume group ---
VG Name my_vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 508.00 MiB
PE Size 4.00 MiB
Total PE 127
Alloc PE / Size 0 / 0
Free PE / Size 127 / 508.00 MiB
VG UUID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Observe que o PE Size é 4.00 MiB e você tem 127 Free PE, o que corresponde ao espaço total disponível no Volume Group. Você agora criou com sucesso um Volume Group e ele está pronto para ter Logical Volumes criados a partir dele.
Criar e Formatar um Logical Volume com lvcreate e mkfs.xfs
Nesta etapa, você criará um dispositivo de bloco utilizável, conhecido como Logical Volume (LV), a partir do Volume Group que você criou. Uma vez que o LV é criado, ele ainda é apenas espaço de armazenamento bruto. Para armazenar arquivos nele, você deve formatá-lo com um sistema de arquivos.
Entendendo Logical Volumes e Filesystems
Um Logical Volume (LV) é o equivalente LVM de uma partição de disco tradicional. Ele é criado a partir do espaço livre dentro de um Volume Group e é apresentado ao sistema operacional como um dispositivo de bloco padrão. Você pode criar sistemas de arquivos em LVs, montá-los e usá-los para armazenar dados. A principal vantagem é que os LVs podem ser facilmente redimensionados, o que é muito mais difícil com partições físicas.
Um filesystem é uma estrutura de dados que o sistema operacional usa para controlar como os dados são armazenados e recuperados. Ele organiza o espaço bruto de um dispositivo como um LV em arquivos e diretórios. Para este laboratório, usaremos XFS, que é um sistema de arquivos de alto desempenho, com journaling, que é o padrão para Red Hat Enterprise Linux.
1. Criar o Logical Volume
Agora, você criará um Logical Volume de 256 MiB chamado my_lv a partir do Volume Group my_vg. O comando para isso é lvcreate.
-n my_lv: Especifica o nome para o novo LV.-L 256M: Define o tamanho do LV para 256 Megabytes.my_vg: O nome do Volume Group para criar o LV.
Execute o seguinte comando:
sudo lvcreate -n my_lv -L 256M my_vg
Um comando bem-sucedido produzirá esta saída:
Logical volume "my_lv" created.
2. Verificar a Criação do Logical Volume
Você pode inspecionar seu novo LV usando os comandos lvs e lvdisplay.
Para ver um resumo de todos os LVs, execute:
sudo lvs
A saída mostrará seu novo LV, my_lv, dentro do grupo my_vg.
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
my_lv my_vg -wi-a----- 256.00m
Para uma visualização detalhada, você pode especificar o caminho completo do LV. O caminho para um LV é tipicamente /dev/VG_NAME/LV_NAME.
sudo lvdisplay /dev/my_vg/my_lv
Isso fornece informações detalhadas, incluindo o LV Path, que você precisará para a próxima etapa.
--- Logical volume ---
LV Path /dev/my_vg/my_lv
LV Name my_lv
VG Name my_vg
LV UUID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
LV Write Access read/write
LV Creation host, time host, 2023-10-27 10:30:00 +0000
LV Status available
## open 0
LV Size 256.00 MiB
Current LE 64
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
3. Formatar o Logical Volume com um Sistema de Arquivos XFS
Agora, você formatará o Logical Volume my_lv com o sistema de arquivos XFS usando o comando mkfs.xfs. Isso prepara o volume para armazenar arquivos.
sudo mkfs.xfs /dev/my_vg/my_lv
O comando exibirá detalhes sobre o sistema de arquivos que está criando.
meta-data=/dev/my_vg/my_lv isize=512 agcount=4, agsize=16384 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=65536, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Seu Logical Volume agora está formatado e pronto para ser montado e usado. Você fará isso na próxima etapa.
Montar Persistentemente o Logical Volume usando /etc/fstab
Nesta etapa, você tornará o Logical Volume que você criou e formatou acessível ao sistema. Isso envolve duas ações: criar um diretório para servir como um "ponto de montagem" e, em seguida, configurar o sistema para anexar automaticamente o Logical Volume a este diretório toda vez que ele inicializa.
Entendendo Montagem e /etc/fstab
Um dispositivo de bloco formatado, como seu Logical Volume my_lv, não é diretamente utilizável até que seja montado. Montar é o processo de anexar um sistema de arquivos a um diretório específico na árvore principal do sistema de arquivos. Uma vez montado, você pode navegar nesse diretório para ler e gravar arquivos no dispositivo.
Para garantir que o sistema de arquivos seja montado automaticamente após uma reinicialização, você deve adicionar uma entrada para ele no arquivo /etc/fstab (tabela do sistema de arquivos). Este arquivo contém uma lista de todos os discos e partições que o sistema deve montar na inicialização.
1. Criar um Ponto de Montagem
Um ponto de montagem é simplesmente um diretório vazio que servirá como a raiz do seu novo sistema de arquivos. Criaremos um diretório chamado /data para esse fim.
sudo mkdir /data
2. Adicionar uma Entrada ao /etc/fstab para Montagem Persistente
Agora, você precisa dizer ao sistema para montar seu LV no diretório /data automaticamente. Você adicionará uma nova linha ao arquivo /etc/fstab. Cada linha neste arquivo tem seis campos:
- Device: O dispositivo a ser montado. No nosso caso,
/dev/my_vg/my_lv. - Mount Point: O diretório para montá-lo. Aqui, é
/data. - Filesystem Type: O tipo do sistema de arquivos, que é
xfs. - Mount Options: Opções para montagem.
defaultsé um conjunto padrão de opções adequadas para a maioria dos casos. - Dump: Usado pelo utilitário
dumppara decidir se deve fazer backup do sistema de arquivos.0significa desativar. - Pass: Usado pelo
fsckpara determinar a ordem de verificação dos sistemas de arquivos na inicialização.0significa não verificar.
Usaremos o comando echo combinado com sudo tee -a para anexar a linha correta a /etc/fstab sem precisar de um editor de texto.
echo '/dev/my_vg/my_lv /data xfs defaults 0 0' | sudo tee -a /etc/fstab
Você pode verificar se a linha foi adicionada corretamente visualizando o conteúdo do arquivo:
cat /etc/fstab
3. Montar o Sistema de Arquivos
Agora que a entrada existe em /etc/fstab, você pode usar o comando mount para montá-lo imediatamente. Como o ponto de montagem /data está listado em /etc/fstab, você só precisa fornecer o nome do diretório.
sudo mount /data
O sistema lerá /etc/fstab, encontrará a entrada para /data e montará o dispositivo correspondente.
4. Verificar a Montagem
Para confirmar que o sistema de arquivos foi montado com sucesso, você pode usar o comando df (disk free) com a opção -h (legível por humanos).
df -h /data
A saída deve mostrar seu logical volume montado em /data, com seu tamanho total e espaço disponível.
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/my_vg-my_lv 251M 28M 224M 11% /data
Você também pode criar um arquivo de teste para garantir que você tenha acesso de gravação:
echo "My LVM is working!" | sudo tee /data/test.txt
Em seguida, leia o arquivo de volta para confirmar que ele foi escrito:
cat /data/test.txt
My LVM is working!
Seu Logical Volume agora está montado e estará disponível automaticamente toda vez que o sistema iniciar.
Estender o Volume Group e o Logical Volume com vgextend e lvextend
Nesta etapa, você experimentará um dos recursos mais poderosos do LVM: a capacidade de aumentar dinamicamente o tamanho do seu armazenamento. Você adicionará uma nova partição de disco físico ao seu Volume Group existente para expandir sua capacidade total e, em seguida, estenderá seu Logical Volume para usar parte desse novo espaço.
Entendendo a Extensão de Armazenamento
Uma das principais razões para usar o LVM é sua flexibilidade. Quando você fica sem espaço, não precisa realizar uma migração de dados complexa. Em vez disso, você pode simplesmente adicionar outro disco físico (ou partição) ao Volume Group e, em seguida, aumentar seus Logical Volumes conforme necessário. Tudo isso pode ser feito online, sem desmontar o sistema de arquivos.
vgextend: Este comando adiciona um ou mais Physical Volumes a um Volume Group existente, aumentando seu tamanho total.lvextend: Este comando aumenta o tamanho de um Logical Volume, extraindo espaço dos extents livres dentro de seu Volume Group.
1. Preparar um Novo Physical Volume
Para estender o Volume Group, você primeiro precisa de um novo Physical Volume. Criaremos uma segunda partição no dispositivo /dev/vdb, assim como você fez na primeira etapa.
Primeiro, crie uma nova partição de 512 MiB. Vamos colocá-la imediatamente após a primeira.
sudo parted /dev/vdb mkpart lvm-part2 513MiB 1025MiB
Em seguida, defina o tipo de partição como lvm.
sudo parted /dev/vdb set 2 lvm on
Certifique-se de que o kernel reconheça a nova partição, /dev/vdb2.
sudo udevadm settle
Finalmente, inicialize esta nova partição como um Physical Volume.
sudo pvcreate /dev/vdb2
Você deve ver a mensagem de sucesso:
Physical volume "/dev/vdb2" successfully created.
2. Estender o Volume Group
Agora, adicione o novo Physical Volume (/dev/vdb2) ao seu Volume Group existente (my_vg) usando o comando vgextend.
sudo vgextend my_vg /dev/vdb2
A mensagem de confirmação indicará sucesso:
Volume group "my_vg" successfully extended
Você pode verificar a alteração com o comando vgs. Observe que VSize e VFree aumentaram significativamente.
sudo vgs my_vg
VG #PV #LV #SN Attr VSize VFree
my_vg 2 1 0 wz--n- 1022.00m 766.00m
O Volume Group my_vg agora abrange duas partições físicas e tem mais espaço livre disponível.
3. Estender o Logical Volume
Com mais espaço disponível no Volume Group, você pode agora estender seu Logical Volume. Vamos aumentar o tamanho de my_lv de 256 MiB para um novo tamanho total de 400 MiB.
O comando lvextend com a opção -L define o novo tamanho absoluto do volume.
sudo lvextend -L 400M /dev/my_vg/my_lv
A saída confirmará a operação de redimensionamento.
Size of logical volume my_vg/my_lv changed from 256.00 MiB (64 extents) to 400.00 MiB (100 extents).
Logical volume my_vg/my_lv successfully resized.
Verifique o novo tamanho do Logical Volume com lvs:
sudo lvs /dev/my_vg/my_lv
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
my_lv my_vg -wi-ao---- 400.00m
Importante: Você estendeu com sucesso o Logical Volume (o dispositivo de bloco), mas o sistema de arquivos XFS que reside nele ainda não está ciente desse novo espaço. Se você verificar o tamanho do sistema de arquivos montado, ele ainda relatará o tamanho antigo.
df -h /data
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/my_vg-my_lv 251M 28M 224M 11% /data
Na próxima etapa, você redimensionará o sistema de arquivos para preencher o espaço recém-disponível no Logical Volume.
Redimensionar o Sistema de Arquivos XFS com xfs_growfs
Nesta etapa final, você concluirá o processo de extensão de armazenamento redimensionando o sistema de arquivos XFS para torná-lo ciente do espaço adicional que você alocou para seu Logical Volume subjacente. Esta é a última etapa crucial que torna o novo espaço utilizável para armazenar arquivos.
Entendendo o Redimensionamento do Sistema de Arquivos
Quando você estende um Logical Volume, você está apenas aumentando o tamanho do contêiner (o dispositivo de bloco). O sistema de arquivos dentro desse contêiner permanece em seu tamanho original e não está ciente do novo espaço não utilizado no final do dispositivo.
Para um sistema de arquivos XFS, o comando xfs_growfs é usado para expandir o sistema de arquivos para preencher o dispositivo subjacente. Uma grande vantagem do XFS é que esta operação pode ser realizada online, enquanto o sistema de arquivos está montado e em uso, sem necessidade de tempo de inatividade.
1. Aumentar o Sistema de Arquivos XFS
O comando xfs_growfs recebe o ponto de montagem do sistema de arquivos como seu argumento. No seu caso, o ponto de montagem é /data.
Execute o seguinte comando para expandir o sistema de arquivos:
sudo xfs_growfs /data
O comando emitirá informações sobre a alteração, indicando o número antigo e novo de blocos de dados.
meta-data=/dev/mapper/my_vg-my_lv isize=512 agcount=4, agsize=16384 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=65536, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 65536 to 102400
A linha chave é data blocks changed from 65536 to 102400, que confirma que o sistema de arquivos cresceu.
2. Verificar o Novo Tamanho do Sistema de Arquivos
Agora, execute o comando df -h novamente para verificar se o tamanho do sistema de arquivos reflete a alteração.
df -h /data
A saída agora deve mostrar o novo tamanho maior, que é aproximadamente 400 MiB.
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/my_vg-my_lv 395M 29M 367M 8% /data
Você também pode verificar se o arquivo de teste que você criou anteriormente ainda está intacto:
cat /data/test.txt
My LVM is working!
Parabéns! Você concluiu com sucesso todo o fluxo de trabalho do LVM: desde particionar um disco físico e criar Physical Volumes, até construir um Volume Group, criar um Logical Volume, formatá-lo e montá-lo e, finalmente, estendê-lo dinamicamente online sem qualquer perda de dados.
Resumo
Neste laboratório, você aprendeu o fluxo de trabalho fundamental para configurar o armazenamento usando o Logical Volume Manager (LVM) no RHEL. Você começou preparando um disco físico, usando parted para criar uma partição com a flag lvm definida e, em seguida, inicializando-a como um Physical Volume (PV) com pvcreate. Em seguida,, você agrupou o PV em um novo Volume Group (VG) usando vgcreate. A partir deste VG, você criou um Logical Volume (LV) com lvcreate, formatou-o com um sistema de arquivos XFS usando mkfs.xfs e configurou-o para montagem persistente adicionando uma entrada em /etc/fstab.
O laboratório também demonstrou a flexibilidade do LVM, guiando você pelo processo de extensão de um logical volume existente. Isso envolveu a preparação de um novo physical volume, adicionando-o ao volume group com vgextend para aumentar o espaço total disponível e, em seguida, estendendo o logical volume em si com lvextend. Finalmente, você redimensionou o sistema de arquivos XFS online usando xfs_growfs para tornar o espaço de armazenamento adicional utilizável pelo sistema operacional, completando o processo completo de gerenciamento dinâmico de armazenamento.



