Guia prático de Administração de LVM no Linux

A sigla LVM significa: Logical Volume Manager. Ele é um alternativo de particionamento, muito usado em servidores Linux. Ele oferece algumas vantagens, mas também algumas complicações adicionais. Imagine que no LVM o sistema não vê HDs e partições, mas sim um ou mais volumes lógicos. Cada volume se comporta como se fosse uma partição, que é formatada e montada da forma usual (um volume pode ser usado inclusive como partição swap). Estes volumes são agrupados em um grupo de volumes lógicos (logical volume group), que se comporta de forma similar a um HD.

A vantagem é que o grupo de volumes lógicos pode combinar o espaço de vários HDs e ser modificado conforme necessário, incorporando mais HDs. Os volumes lógicos dentro dele também podem ser redimensionados livremente conforme for necessário. Se você precisar de mais espaço dentro do volume referente à pasta home, por exemplo, você poderia reduzir o tamanho de um dos outros volumes do sistema (que estivesse com espaço vago) e aumentar o tamanho do volume referente ao home, tudo isso com o servidor operante.

Outra possibilidade é adicionar novos HDs caso precise de mais espaço no futuro. Ao instalar um novo HD, você começaria criando um volume físico, englobando todo o espaço do HD. Uma vez que o volume físico é criado, você pode expandir o grupo de volumes lógicos, de forma que ele incorpore o espaço referente ao novo HD. A partir daí, você pode expandir os volumes lógicos, usando o espaço livre. Essa possibilidade é interessante no caso dos servidores, onde (ao utilizar uma controladora SCSI ou SAS com suporte a hot-swap ou em ambientes virtuais) é possível até mesmo adicionar, remover ou substituir HDs, fazendo as alterações necessárias nos volumes lógicos sem necessidade de reiniciar a máquina.

Ao utilizar LVM faz-se necessário criar uma partição no início do HD, fora do LVM, para montar o diretório “/boot”. Ela é necessária, pois, por enquanto, ainda não é possível inicializar o sistema diretamente a partir de um volume LVM: é necessário primeiro inicializar o kernel e iniciar o carregamento dos utilitários básicos a partir da partição convencional, montada no diretório “/boot”, para só então montar os volumes LVM e continuar o carregamento do sistema.

Arquitetura do LVM

Arquitetura LVM é composta basicamente por três camadas:

  • Volumes Físicos (PV): criados a patir dos discos rígidos e/ou partições de disco, formatados com tipo 8e (LVM)
  • Grupos de Volumes (VG): agrupamentos de volumes físicos (de discos diferentes inclusive)
  • Volumes lógicos (LV): É uma partição do Grupo de Volume. Eles são as partes que podem ser acessadas pelos usuários e que serão associados a um ponto de montagem específico.

Principais Comandos de Administração do LVM

fdisk

Página de Manual: http://man7.org/linux/man-pages/man8/fdisk.8.html

Utilização: utilizado para criação da Particão LVM num disco existente.

Exemplo: criação de uma partição LVM em um disco /dev/sdb utilizando todo o seu espaço.

# fdisk /dev/sdb

Bem-vindo ao fdisk (util-linux 2.29.2).
As alterações permanecerão apenas na memória, até que você decida gravá-las.
Tenha cuidado antes de usar o comando de gravação.

A unidade não contém uma tabela de partição conhecida.
Criado um novo rótulo de disco DOS com o identificador de disco 0x4ec4244c.

Comando (m para ajuda):

Utilizando o comando m para listar os comandos disponíveis:

Comando (m para ajuda): m

Ajuda:

  DOS (MBR)
   a   alterna a opção de inicialização
   b   edita o rótulo do disco BSD aninhado
   c   alterna a opção "compatibilidade"

  Genérico
   d   exclui uma partição
   F   lista partições não particionadas livres
   l   lista os tipos de partições conhecidas
   n   adiciona uma nova partição
   p   mostra a tabela de partição
   t   altera o tipo da partição
   v   verifica a tabela de partição
   i   mostra informação sobre uma partição

  Miscelânea
   m   mostra este menu
   u   altera as unidades das entradas mostradas
   x   funcionalidade adicional (somente para usuários avançados)

  Script
   I   carrega layout de disco de um arquivo script de sfdisk
   O   despeja layout de disco para um arquivo script de sfdisk

  Salvar & sair
   w   grava a tabela no disco e sai
   q   sai sem salvar as alterações

  Cria um novo rótulo
   g   cria uma nova tabela de partição GPT vazia
   G   cria uma nova tabela de partição SGI (IRIX) vazia
   o   cria uma nova tabela de partição DOS vazia
   s   cria uma nova tabela de partição Sun vazia


Comando (m para ajuda):

Utilizando o comando n para criar uma nova partição no disco.

Será criada uma partição do tipo Primária com número 1.

Como iremos usar o disco todo, o Primeiro e o Último setor serão o padrão indicado pelo fdsik.

Comando (m para ajuda): n

Tipo da partição
   p   primária (0 primárias, 0 estendidas, 4 livre)
   e   estendida (recipiente para partições lógicas)
Selecione (padrão p): p
Número da partição (1-4, padrão 1): 1
Primeiro setor (2048-8388607, padrão 2048): <ENTER>
Último setor, +setores ou +tamanho{K,M,G,T,P} (2048-8388607, padrão 8388607): <ENTER>

Criada uma nova partição 1 do tipo "Linux" e de tamanho 4 GiB.

Comando (m para ajuda):

Utilizando o comando t para alterar o tipo da nova partição:

Comando (m para ajuda): t
Selecionou a partição 1
Tipo de partição (digite L para listar todos os tipos):

Utilizando a opção L para listar os tipos existentes:

Tipo de partição (digite L para listar todos os tipos): L

 0  Vazia           24  DOS NEC         81  Linux antigo/Mi bf  Solaris        
 1  FAT12           27  WinRE NTFS Esco 82  Linux swap / So c1  DRDOS/sec (FAT1
 2  root XENIX      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT1
 3  usr XENIX       3c  PartitionMagic  84  OS/2 escondido  c6  DRDOS/sec (FAT1
 4  FAT16 <32M      40  Venix 80286     85  Estendida Linux c7  Syrinx         
 5  Estendida       41  Boot PReP PPC   86  Conjunto de vol da  Dados Não-FS   
 6  FAT16           42  SFS             87  Conjunto de vol db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux texto sim de  Utilitário Dell
 8  AIX             4e  QNX4.x 2ª parte 8e  Linux LVM       df  BootIt         
 9  AIX inicializáv 4f  QNX4.x 3ª parte 93  Amoeba          e1  Acesso DOS     
 a  Gerenc. inici.  50  DM OnTrack      94  Amoeba BBT      e3  DOS R/O        
 b  FAT32 W95       51  DM6 OnTrack Aux 9f  BSD/OS          e4  SpeedStor      
 c  FAT32 W95 (LBA) 52  CP/M            a0  Hibernação IBM  ea  Alinhamento Ruf
 e  FAT16 W95 (LBA) 53  DM6 OnTrack Aux a5  FreeBSD         eb  sist. arq. BeOS
 f  Estendida W95 ( 54  DM6 OnTrack     a6  OpenBSD         ee  GPT            
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        ef  EFI (FAT-12/16/
11  FAT12 Escondida 56  Golden Bow      a8  Darwin UFS      f0  inic. Linux/PA-
12  Diagnóstico Com 5c  Edisk Priam     a9  NetBSD          f1  SpeedStor      
14  FAT16 Escondida 61  SpeedStor       ab  inic. Darwin    f4  SpeedStor      
16  FAT16 Escondida 63  GNU HURD ou Sys af  HFS / HFS+      f2  DOS secundário 
17  HPFS ou NTFS Es 64  Novell Netware  b7  sist. arq. BSDI fb  VMware VMFS    
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fc  VMware VMKCORE 
1b  FAT32 W95 Escon 70  Multi-Boot Disk bb  Assist. Inici.  fd  Linux RAID auto
1c  FAT32 W95 Esc.  75  PC/IX           bc  FAT32 LBA Acron fe  LANstep        
1e  FAT16 W95 Esc.  80  Minix antigo    be  inicialização d ff  BBT            
Tipo de partição (digite L para listar todos os tipos): 

Alterando o tipo da partição para 8e (Linux LVM):

Tipo de partição (digite L para listar todos os tipos): 8e
O tipo da partição "Linux" foi alterado para "Linux LVM".

Comando (m para ajuda):

Utilizando o comando w para salvar as alterações realizadas no disco:

Comando (m para ajuda): w
A tabela de partição foi alterada.
Chamando ioctl() para reler tabela de partição.
Sincronizando discos.

pvcreate

Página de Manual: http://man7.org/linux/man-pages/man8/pvcreate.8.html

Utilização: utilizado para inicializar um volume físico para ser utilizado pelo LVM.

Exemplo: inicialização da partição LVM /dev/sdb1 criada anteriormente no disco.

# pvcreate /dev/sdb1 

  Physical volume "/dev/sdb1" successfully created

Visualização do resultado:

# pvdisplay /dev/sdb1
   
"/dev/sdb1" is a new physical volume of "4,00 GiB"
--- NEW Physical volume ---
PV Name               /dev/sdb1
VG Name               
PV Size               4,00 GiB
Allocatable           NO
PE Size               0   
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               pXPJiC-PKHh-4AtC-Xf7s-E7DT-VR3d-oEaVn6

vgcreate

Página de Manual: http://man7.org/linux/man-pages/man8/vgcreate.8.html

Utilização: utilizado para criar um Grupo de Volume (VG).

Exemplo: criação de um Grupo de Volume chamado low_disks utilizando o volume físico /dev/sdb1.

# vgcreate low_disks /dev/sdb1 

  Volume group "low_disks" successfully created

Visualização do resultado:

# vgdisplay

  --- Volume group ---
  VG Name               low_disks
  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               4,00 GiB
  PE Size               4,00 MiB
  Total PE              1023
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1023 / 4,00 GiB
  VG UUID               cuRXDw-jFf8-n1Qw-bEuk-i0aF-3kjB-AVRWm0

Visualização do resultado de forma resumida:

# vgs

  VG        #PV #LV s#SN Attr   VSize VFree
  low_disks   1   0   0 wz--n- 4,00g 4,00g

lvcreate

Página de Manual: http://man7.org/linux/man-pages/man8/lvcreate.8.html

Utilização: utilizado para criar um Volume Lógico (LV).

Exemplo: criação de um Volume Lógico chamado opt com 512MB de tamanho dentro do Grupo de Volume low_disks.

# lvcreate --name opt --size 512M low_disks

  Logical volume "opt" created.

Visualização do resultado

# lvdisplay

  --- Logical volume ---
  LV Path                /dev/low_disks/opt
  LV Name                opt
  VG Name                low_disks
  LV UUID                pVjzI9-L3wi-52Z4-WHpc-TVwc-PfLl-o5dHyz
  LV Write Access        read/write
  LV Creation host, time debian, 2018-06-17 03:33:00 -0300
  LV Status              available
  # open                 0
  LV Size                512,00 MiB
  Current LE             128
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:6

Visualização do resultado de forma resumida:

# lvs

  LV   VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  opt  low_disks -wi-a----- 512,00m  

mkfs

Página de Manual: http://man7.org/linux/man-pages/man8/lvcreate.8.html

Utilização: utilizado para criar um Sistema de Arquivos.

Exemplo: criação de um Sistema de Arquivos do tipo ext3 no Volume Lógico opt criado anteriormente.

# mkfs -t ext3 /dev/low_disks/opt 

mke2fs 1.43.4 (31-Jan-2017)
Creating filesystem with 131072 4k blocks and 32768 inodes
Filesystem UUID: 37cad55c-55e9-4e77-b9d9-7c568d6f5c27
Superblock backups stored on blocks: 
	32768, 98304

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

vgextend

Página de Manual: http://man7.org/linux/man-pages/man8/vgextend.8.html

Utilização: utilizado para adicionar um Volume Físico a um Grupo de Volume já existente.

Exemplo: adição do Volume Físico /dev/sdb1 ao Grupo de Volume chamado vg.

# vgextend vg /dev/sdb1

  Volume group "vg" successfully extended

Visualização do resultado:

# vgdisplay

  --- Volume group ---
  VG Name               vg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  11
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                7
  Open LV               7
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               7,95 GiB
  PE Size               4,00 MiB
  Total PE              2034
  Alloc PE / Size       994 / 3,88 GiB
  Free  PE / Size       1040 / 4,06 GiB
  VG UUID               Akfnve-93GI-QJZN-l3lW-2ya4-ykW2-a5tkdZ

Visualização do resultado de forma resumida:

# vgs

  VG #PV #LV #SN Attr   VSize VFree
  vg   2   7   0 wz--n- 7,95g 4,06g

lvextend

Página de Manual: http://man7.org/linux/man-pages/man8/lvextend.8.html

Utilização: utilizado para adicionar espaço disponível no Grupo de Volume a um Volume Lógico já existente.

Exemplo 01: adição de 512MB ao espaço já existente no Volume Lógico chamado var.

# lvextend -L+512MB /dev/vg/var

  Size of logical volume vg/var changed from 488,00 MiB (122 extents) to 1000,00 MiB (250 extents).
  Logical volume vg/var successfully resized.

Exemplo 02: adição de espaço ao Volume Lógico chamado var de modos que ele fique com 1024MB de tamanho total.

# lvextend -L1024MB /dev/vg/var

  Size of logical volume vg/var changed from 1000,00 MiB (250 extents) to 1,00 GiB (256 extents).
  Logical volume vg/var successfully resized.

Visualização do resultado

# lvdisplay /dev/vg/var

  --- Logical volume ---
  LV Path                /dev/vg/var
  LV Name                var
  VG Name                vg
  LV UUID                2ilekE-1Qpy-12xg-0giN-QMPs-BOHm-bImx4J
  LV Write Access        read/write
  LV Creation host, time debian, 2018-06-17 02:38:48 -0300
  LV Status              available
  # open                 1
  LV Size                1,00 GiB
  Current LE             256
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:5

Visualização do resultado de forma resumida:

# lvs /dev/vg/var

  LV   VG Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  var  vg -wi-ao---- 1,00g  

resize2fs

Página de Manual: http://man7.org/linux/man-pages/man8/resize2fs.8.html

Utilização: utilizado para redimensionar o sistema de arquivos (ext2/ext3/ext4) da Partição/Volume Lógico. Nos kernels mais atuais esse redimensionamento pode ser feito de forma on-line, sem precisar desmontar a Partição/Volume Lógico.

Exemplo: redimensionamento do Sistema de Arquivos ext4 do Volume Lógico var.

# resize2fs /dev/vg/var 

resize2fs 1.43.4 (31-Jan-2017)
Filesystem at /dev/vg/var is mounted on /var; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 8
The filesystem on /dev/vg/var is now 1048576 (1k) blocks long.

mount

Página de Manual: http://man7.org/linux/man-pages/man8/mount.8.html

Utilização: utilizado para montar manualmente um ponto de momtagem em uma partição.

Exemplo: montagem do Volume Lógico opt no ponto de montagem /opt

# mount /dev/vg/opt /opt

Visualizando os pontos montados com os sistemas de arquivos ext3 e ext4:

# mount --types ext3,ext4
/dev/mapper/vg-root on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/mapper/vg-usr on /usr type ext4 (rw,relatime,data=ordered)
/dev/sda1 on /boot type ext4 (rw,relatime,data=ordered)
/dev/mapper/vg-tmp on /tmp type ext4 (rw,relatime,data=ordered)
/dev/mapper/vg-var on /var type ext4 (rw,relatime,data=ordered)
/dev/mapper/vg-home on /home type ext4 (rw,relatime,data=ordered)
/dev/mapper/vg-opt on /opt type ext3 (rw,relatime,data=ordered)

Arquivos de Configuração

/etc/fstab

Esse arquivo é o responsável pela configuração de todos os pontos de montagem do sistema de arquivos. Qualquer configuração errada pode impedir o início do sistema.

Página de Manual: http://man7.org/linux/man-pages/man5/fstab.5.html

Utilização: permite configurar o sistema para montar partições durante o boot.

Como editar: deve-se utilizar um editor de textos para abri-lo e editá-lo.

# pico /etc/fstab

Exemplo de conteúdo:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/vg-root /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=6927b51a-69e9-4e05-9fb5-d20b3b644b9e /boot           ext4    defaults        0       2
/dev/mapper/vg-home /home           ext4    defaults        0       2
/dev/mapper/vg-tmp /tmp            ext4    defaults        0       2
/dev/mapper/vg-usr /usr            ext4    defaults        0       2
/dev/mapper/vg-var /var            ext4    defaults        0       2
/dev/mapper/vg-swap none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0

Exemplo de edição: adicionando a linha para montagem do Volume Lógico opt formatado com o Sistema de Arquivos ext3 utilizando ponto de montagem /opt

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/vg-root /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=6927b51a-69e9-4e05-9fb5-d20b3b644b9e /boot           ext4    defaults        0       2
/dev/mapper/vg-home /home           ext4    defaults        0       2
/dev/mapper/vg-tmp /tmp            ext4    defaults        0       2
/dev/mapper/vg-usr /usr            ext4    defaults        0       2
/dev/mapper/vg-var /var            ext4    defaults        0       2
/dev/mapper/vg-swap none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0

/dev/mapper/vg-opt /opt            ext3    defaults        0       2

Referências

ensino/semestres/2018.1/soredes/guia_pratico_administracao_lvm_linux.txt · Última modificação: 2018/06/20 12:25 por 2664038