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 LVM é composta basicamente por três camadas:
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.
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
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
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
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
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
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
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.
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)
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