Pesquisa de site

Usando LVM para gerenciar volumes físicos, grupos de volumes e volumes lógicos - Preparação do Objetivo RHCSA


Como parte da preparação para o exame RHCSA, já aprendemos como gerenciar partições em disco. As partições são úteis para separar o espaço em disco (por exemplo, separando arquivos relacionados ao banco de dados dos arquivos relacionados ao servidor web), mas temos uma solução muito mais flexível que pode separar ou agregar espaço de armazenamento.

Esta solução é chamada LVM, Logical Volume Manager. O LVM nos permite ver vários discos como um sistema de arquivos, superando assim as limitações do site de um disco físico. Também podemos criar espelhamento de software em discos para proteger os dados gravados no sistema de arquivos. Neste tutorial abordaremos o básico: gerenciaremos as três camadas do LVM, volumes físicos, grupos de volumes e volumes lógicos.

Neste tutorial você aprenderá:

  • Como criar e remover volumes físicos

  • Como atribuir volumes físicos a grupos de volumes

  • Como criar e excluir volumes lógicos

Criando novo volume físico com LVM.

Com o LVM, temos três camadas construídas umas sobre as outras: volumes físicos (pv), que são muito parecidos com partições, marcadas apenas para uso do LVM. Podemos criar um volume físico a partir de uma partição de disco ou de um disco bruto inteiro. Se pretendemos usar um disco apenas como volume físico do LVM, não precisamos criar uma partição nele primeiro. A próxima camada é um grupo de volumes (vg). Como o nome sugere, é simplesmente o agrupamento de volumes físicos. Nesta camada podemos agregar todo o espaço do volume físico subjacente em uma unidade de armazenamento maior. Acima dos grupos de volumes podemos criar a camada final, volumes lógicos (lv). Eles podem conter sistemas de arquivos, nos quais podemos armazenar nossos dados.

Uma das principais características do LVM é que podemos adicionar outro volume físico a um grupo de volumes dinamicamente e também modificar o tamanho de um volume lógico enquanto o sistema está em execução. Portanto, se ficarmos sem espaço, poderemos escalar sem desligar o sistema.

As abreviaturas das camadas são bons lembretes quando lidamos com LVM. Todos os comandos que funcionam em diferentes camadas começam com estas abreviaturas, por exemplo, se trabalharmos com volumes físicos, o comando para criar um será pvcreate, o comando para listar os volumes físicos existentes será pvdisplay e assim por diante. Mesmo que precisemos fazer isso com pouca frequência, é fácil adivinhar ou encontrar o comando correto, pois essa convenção de nomenclatura é consistente em todas as camadas.

Para este tutorial, adicionamos aos discos 2 GB de tamanho cada para nossa máquina de laboratório. Eles são reconhecidos como /dev/sdb e /dev/sdc em nosso sistema, enquanto /dev/sda contém o sistema operacional, que nós não tocará durante as etapas a seguir.

Como criar e remover volumes físicos

Como criar volume físico

Para criar um volume físico, usaremos pvcreate. Criaremos um volume físico de 2 GB em sdb e em sdc.

# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.

Podemos verificar se fizemos certo listando nossos volumes físicos. Usaremos pvdisplay.

# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               rhel
  PV Size               <14.00 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              3583
  Free PE               0
  Allocated PE          3583
  PV UUID               rfezEa-GlgW-jWUX-Zixs-Ydw0-EsZS-nk3JDH
   
  "/dev/sdb" is a new physical volume of "2.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb
  VG Name               
  PV Size               2.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               V2PUv4-O9eQ-jFvQ-UmQf-dmq3-caF9-xmxYGj
   
  "/dev/sdc" is a new physical volume of "2.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc
  VG Name               
  PV Size               2.00 GiB                                                                                                                                                                            
  Allocatable           NO                                                                                                                                                                                  
  PE Size               0                                                                                                                                                                                   
  Total PE              0                                                                                                                                                                                   
  Free PE               0                                                                                                                                                                                   
  Allocated PE          0                                                                                                                                                                                   
  PV UUID               PWTs7Q-x3wD-RyXj-ertn-Sh2N-CiXb-ayDc1q

A máquina do laboratório já usa LVM em sua configuração padrão (assim como a maioria das distribuições hoje em dia), é por isso que /dev/sda2 é mostrado. Estamos interessados nos nossos dois novos volumes físicos, que agora podemos verificar.

Como remover o volume físico

Para deletar um volume físico, temos o comando pvremove. Não remova um volume físico que contenha dados necessários.

# pvremove /dev/sdc 
  Labels on physical volume "/dev/sdc" successfully wiped.

Como atribuir volumes físicos a grupos de volumes

Criando grupo de volumes a partir de volumes físicos.

Depois de recriar o volume físico sdc eliminado, temos tudo o que precisamos para criar um grupo de volumes que possa conter um volume lógico. Poderíamos criar um “grupo” de volume que tenha apenas um volume físico – que é o caso exato do sda2 padrão – mas para demonstrar a agregação de armazenamento, usaremos nossos novos volumes físicos para criar um grupo de volumes chamado “dados” que possui 4 GB de espaço em disco disponível.

Podemos criar um grupo de volumes com vgcreate. Tudo o que precisamos é especificar o nome do VG e os volumes físicos que serão membros do grupo de volumes.

# vgcreate data /dev/sdb /dev/sdc
  Volume group "data" successfully created

Podemos listar as propriedades do nosso novo grupo de volumes com vgdisplay.

# vgdisplay data
  --- Volume group ---
  VG Name               data
  System ID             
  Format                lvm2
  Metadata Areas        2
  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                2
  Act PV                2
  VG Size               3.99 GiB
  PE Size               4.00 MiB
  Total PE              1022
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1022 / 3.99 GiB
  VG UUID               CmM07M-16Ys-PZx2-XGvo-N1j3-nINX-fnIFIA

Observe o tamanho do VG próximo a 4 GB, soma dos dois volumes físicos. Não será exatamente a soma dos volumes, pois algum espaço é reservado para metadados.

Como criar e excluir volumes lógicos

Além de um grupo de volumes, podemos criar volumes lógicos que, por sua vez, podem conter sistemas de arquivos. A instalação padrão em muitas distribuições separa o armazenamento desta forma, por exemplo, os dados do usuário são mantidos no volume lógico /home e os logs do sistema são armazenados no volume /var . Caso um usuário preencha o volume inicial, o sistema geral ainda será capaz de gravar logs e, portanto, seus serviços continuarão a ser executados enquanto o administrador do sistema pode lidar com o usuário que enlouqueceu.

Como criar um volume lógico

Criaremos dois volumes lógicos, o primeiro denominado “banco de dados” com 2 GB de tamanho, o outro denominado “servidor web” com 500 MB de espaço em disco. Como você pode imaginar pelos exemplos acima, o comando que usaremos é lvcreate.

# lvcreate -L 2G -n database data
  Logical volume "database" created.
# lvcreate -L 500M -n webserver data
  Logical volume "webserver" created.

Podemos exibir nossas propriedades de volume com lvdisplay , ou podemos listar todos os nossos volumes lógicos se não fornecermos um argumento para lvdisplay. Embora isso possa fornecer uma saída demorada em alguns sistemas, é útil em um ambiente desconhecido, pois os caminhos dos volumes podem variar dependendo da distribuição e da versão.

# lvdisplay /dev/data/database 
  --- Logical volume ---
  LV Path                /dev/data/database
  LV Name                database
  VG Name                data
  LV UUID                D7f9An-G0dd-kEGw-OGrP-HZlA-dQlX-yBbQbi
  LV Write Access        read/write
  LV Creation host, time rhel8rhcsa, 2019-12-28 16:53:24 +0100
  LV Status              available
  # open                 0
  LV Size                2.00 GiB
  Current LE             512
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
   
# lvdisplay /dev/data/webserver 
  --- Logical volume ---
  LV Path                /dev/data/webserver
  LV Name                webserver
  VG Name                data
  LV UUID                7Ldt79-aw0i-Oydm-4d0I-JaVe-Zd8m-xKpvrD
  LV Write Access        read/write
  LV Creation host, time rhel8rhcsa, 2019-12-28 16:53:38 +0100
  LV Status              available
  # open                 0
  LV Size                500.00 MiB
  Current LE             125
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3

Se verificarmos nosso grupo de volumes neste ponto, podemos notar o espaço que os volumes lógicos ocupam do grupo de volumes.

# vgdisplay data
  --- Volume group ---
  VG Name               data
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               3.99 GiB
  PE Size               4.00 MiB
  Total PE              1022
  Alloc PE / Size       637 / <2.49 GiB
  Free  PE / Size       385 / 1.50 GiB
  VG UUID               CmM07M-16Ys-PZx2-XGvo-N1j3-nINX-fnIFIA

Como criar volume lógico no sistema RHEL Linux

Como excluir um volume lógico

Para liberar espaço ou reorganizar volumes, podemos descartar volumes lógicos com lvremove.

Não remova volumes lógicos que contenham dados valiosos. Fazer isso destruirá os dados do volume.

Existem cintos de segurança integrados, já se foram os dias em que a limpeza do sistema não precisava esperar por um aviso. Pelo menos, ao usar os comandos LVM.

# lvremove /dev/data/webserver 
Do you really want to remove active logical volume data/webserver? [y/n]: y
  Logical volume "webserver" successfully removed

Outra listagem de grupos de volumes mostra que os 500 MB do volume webserver agora são adicionados de volta ao tamanho livre do grupo de volumes:

# vgdisplay data
  --- Volume group ---
  VG Name               data
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               3.99 GiB
  PE Size               4.00 MiB
  Total PE              1022
  Alloc PE / Size       512 / 2.00 GiB
  Free  PE / Size       510 / 1.99 GiB
  VG UUID               CmM07M-16Ys-PZx2-XGvo-N1j3-nINX-fnIFIA

Exercícios

  1. Crie dois grupos de volumes e crie volumes lógicos em ambos com o mesmo nome.

  2. Adicione outro volume físico ao seu grupo de volumes e, em seguida, crie um volume lógico que ocupe todo o grupo de volumes. Agora tente remover um dos volumes físicos.

  3. Tente criar um volume lógico que tenha o tamanho exato do grupo de volumes.

  4. Crie outro volume físico em um disco, adicione-o ao seu grupo de volumes, desligue a máquina e remova o disco. O que vgdisplay diz no disco ausente?

  5. Adicione novamente o disco removido anteriormente. É reconhecido na próxima inicialização?

Artigos relacionados: