O que é LVM?
Logical Volume Manager ou Gerenciador de Volume Lógico, em palavras limpas acima do disco físico temos uma partição física que acima temos um grupo de volume e acima o volume lógico onde são armazenados os dados (creio que conseguiu abstrair essas informações em forma de desenho na sua mente, se não rabisque agora kkkk).
Vamos lá:
Este cenário temos 3 (tres) discos de 1Gb, 2 (dois) VGs (Volume Group), e iremos estender um dos volumes para aumentar o disco. Este é um típico cenário onde temos que aumentar uma LV sem perca de dados é óbvio 8).
1 – Criar partição LVM no disco
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0xe94d2ca5. Comando (m para ajuda): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Número da partição (1-4, default 1): Primeiro sector (2048-2097151, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): Using default value 2097151 Partition 1 of type Linux and of size 1023 MiB is set Comando (m para ajuda): t Selected partition 1 Hex code (type L to list all codes): l 0 Vazia 24 DOS NEC 81 Linux antigo/Mi bf Solaris 1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT1 2 root XENIX 39 Plan 9 83 Linux c4 DRDOS/sec (FAT1 3 usr XENIX 3c Recuperação do 84 Unidade C: OS/2 c6 DRDOS/sec (FAT1 4 FAT16 < 32 M 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 plaintext 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. Inicial 50 DM OnTrack 94 Amoeba BBT e3 DOS R/O b W95 FAT32 51 DM6 OnTrack Aux 9f BSD/OS e4 SpeedStor c W95 FAT32 (LBA) 52 CP/M a0 Hibernação IBM eb sist. arq. BeOS e W95 FAT16 (LBA) 53 DM6 OnTrack Aux a5 FreeBSD ee GPT f W95 Ext'd (LBA) 54 DM6 OnTrack a6 OpenBSD ef EFI (FAT-12/16/ 10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b 11 FAT12 Escondida 56 Golden Bow a8 Darwin UFS f1 SpeedStor 12 Diagnóstico Com 5c Edisk Priam a9 NetBSD f4 SpeedStor 14 FAT16 Escondida 61 SpeedStor ab Darwin boot f2 DOS secundário 16 FAT16 Escondida 63 GNU HURD ou Sys af HFS / HFS+ fb VMware VMFS 17 HPFS ou NTFS Es 64 Novell Netware b7 sist. arq. BSDI fc VMware VMKCORE 18 AST SmartSleep 65 Novell Netware b8 permuta BSDI fd Detecção automá 1b Hidden W95 FAT3 70 Multi-Boot Disk bb Boot Wizard hid fe LANstep 1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT 1e Hidden W95 FAT1 80 Minix antigo Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM' Comando (m para ajuda): w A tabela de partições foi alterada! Chamando ioctl() para reler tabela de partições. Sincronizando discos. # fdisk -l /dev/sdb Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0xe94d2ca5 Dispositivo Boot Start End Blocks Id System /dev/sdb1 2048 2097151 1047552 8e Linux LVM |
Efetuar o mesmo processo no disco /dev/sdc
2 – Criar Phisical Volume
Sintaxe: # pvcreate particao
1 2 3 4 5 6 7 |
# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created # pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- 9,51g 40,00m /dev/sdb1 vol_01 lvm2 a-- 1020,00m 1020,00m |
Temos também o comando “# pvdisplay” para listar os PVs.
3 – Criar o Volume Group
Sintaxe: # vgcreate nome_volume_group particao
1 2 3 4 5 6 7 |
# vgcreate vol_01 /dev/sdb1 Volume group "vol_01" successfully created # vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- 9,51g 40,00m vol_01 1 0 0 wz--n- 1020,00m 1020,00m |
Temos também o comando “# vgdisplay” para listar os VGs.
4 – Criar os Logical Volumes
Sintaxe: # lvcreate -l|L tamanho -n nome_logical_volume nome_volume_group_existente
1 2 3 4 5 6 7 8 |
# lvcreate -l +100%FREE -n lv_home vol_01 Logical volume "lv_home" created. # lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- 8,47g swap centos -wi-ao---- 1,00g lv_home vol_01 -wi-a----- 1020,00m |
Temos também o comando “# lvdisplay” para listar os LVs.
5 – Criar File System e montar
Obs: Em sistemas Linux temos apontamento dos discos para os /dev/dm- respectivo as partições.
1 |
# mkfs.ext4 /dev/mapper/vol_01-lv_home |
ou
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# mkfs.ext4 /dev/vol_01/lv_home mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 65280 inodes, 261120 blocks 13056 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=268435456 8 block groups 32768 blocks per group, 32768 fragments per group 8160 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Allocating group tables: done Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done # mount /dev/mapper/vol_01-lv_home /mnt/lv_home/ # df -lh Sist. Arq. Tam. Usado Disp. Uso% Montado em /dev/mapper/centos-root 8,5G 787M 7,7G 10% / devtmpfs 911M 0 911M 0% /dev tmpfs 921M 0 921M 0% /dev/shm tmpfs 921M 8,4M 912M 1% /run tmpfs 921M 0 921M 0% /sys/fs/cgroup /dev/sda1 497M 119M 379M 24% /boot /dev/mapper/vol_01-lv_home 988M 2,6M 919M 1% /mnt/lv_home |
6 – Efetuar o mesmo processo com o disco /dev/sdc e copiar alguns arquivos para os diretórios montados, abaixo os comandos para criação e analise de uso dos discos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# fdisk /dev/sdc # pvcreate /dev/sdc1 # vgcreate vol_02 /dev/sdc1 # lvcreate -l +100%FREE -n lv_etc vol_02 # mkfs.ext4 /dev/mapper/vol_02-lv_etc # mount /dev/mapper/vol_02-lv_etc /mnt/lv_etc/ # df -lh Sist. Arq. Tam. Usado Disp. Uso% Montado em /dev/mapper/centos-root 8,5G 787M 7,7G 10% / devtmpfs 911M 0 911M 0% /dev tmpfs 921M 0 921M 0% /dev/shm tmpfs 921M 8,4M 912M 1% /run tmpfs 921M 0 921M 0% /sys/fs/cgroup /dev/sda1 497M 119M 379M 24% /boot /dev/mapper/vol_01-lv_home 988M 169M 753M 19% /mnt/lv_home /dev/mapper/vol_02-lv_etc 988M 129M 793M 14% /mnt/lv_etc |
7 – Aumentar "Volume Group vol_01"
Analisar PVs, VGs e LVs:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- 9,51g 40,00m /dev/sdb1 vol_01 lvm2 a-- 1020,00m 0 /dev/sdc1 vol_02 lvm2 a-- 1020,00m 0 # vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- 9,51g 40,00m vol_01 1 1 0 wz--n- 1020,00m 0 vol_02 1 1 0 wz--n- 1020,00m 0 # lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- 8,47g swap centos -wi-ao---- 1,00g lv_home vol_01 -wi-ao---- 1020,00m lv_etc vol_02 -wi-ao---- 1020,00m |
Analisar montagem do disco e desmontar:
1 |
# umount /mnt/lv_home/ |
Criar partição no disco a ser acrescentado:
1 |
# fdisk /dev/sdd |
Criar Phisical Volume:
1 2 |
# pvcreate /dev/sdd1 Physical volume "/dev/sdd1" successfully created |
Validar qual VG irá ser acrescentado utilzando dos comandos # vgs e # lvs:
1 2 3 4 5 6 |
# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- 8,47g swap centos -wi-ao---- 1,00g lv_home vol_01 -wi-a----- 1020,00m lv_etc vol_02 -wi-ao---- 1020,00m |
Estender o Volume Group adicionando o novo disco:
Sintaxe: # vgextend nome_volume_group_existente particao_adicionada_ja_com_pv
1 2 |
# vgextend vol_01 /dev/sdd1 Volume group "vol_01" successfully extended |
Sintaxe: # lvextend -l|L tamanho logical_volume
1 2 3 |
# lvextend -l +100%FREE /dev/mapper/vol_01-lv_home Size of logical volume vol_01/lv_home changed from 1020,00 MiB (255 extents) to 1,99 GiB (510 extents). Logical volume lv_home successfully resized |
Checar Logical Volume:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# e2fsck -f /dev/mapper/vol_01-lv_home e2fsck 1.42.9 (28-Dec-2013) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/mapper/vol_01-lv_home: 6183/65280 files (0.1% non-contiguous), 51277/261120 blocks # resize2fs /dev/mapper/vol_01-lv_home resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/mapper/vol_01-lv_home to 522240 (4k) blocks. The filesystem on /dev/mapper/vol_01-lv_home is now 522240 blocks long. |
Montar disco e validar
1 |
# mount /dev/mapper/vol_01-lv_home /mnt/lv_home/ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# ll /mnt/lv_home/ total 24 drwxr-xr-x. 75 root root 4096 Dez 7 21:52 etc drwx------. 2 root root 16384 Dez 7 21:47 lost+found drwxr-xr-x. 19 root root 4096 Dez 7 21:52 share # df -lh Sist. Arq. Tam. Usado Disp. Uso% Montado em /dev/mapper/centos-root 8,5G 787M 7,7G 10% / devtmpfs 911M 0 911M 0% /dev tmpfs 921M 0 921M 0% /dev/shm tmpfs 921M 8,4M 912M 1% /run tmpfs 921M 0 921M 0% /sys/fs/cgroup /dev/sda1 497M 119M 379M 24% /boot /dev/mapper/vol_02-lv_etc 988M 129M 793M 14% /mnt/lv_etc /dev/mapper/vol_01-lv_home 2,0G 169M 1,7G 10% /mnt/lv_home |
8 - Aumentar disco XFS a quente
1 2 3 4 5 |
# lvextend -l +100%FREE /dev/mapper/lv-root # xfs_growsfs /dev/mapper/lv-root -d Ver o maximo apresentado # xfs_growsfs /dev/mapper/lv-root -D |
9 - Aumentar disco BTRFS a quente
1 2 3 4 5 6 7 |
# lvextend -l +100%FREE /dev/mapper/lv-root Se estiver desmontado direto no LV # btrfs filesystem resize max /dev/mapper/lv-root Se estiver montado direto no diretório de destino # btrfs filesystem resize max /mnt/btrfs-vol/ |
10 - Remover uma estrutura de LVM
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
[root@centos ~]# lvremove vol_raid lv_raid Do you really want to remove active logical volume vol_raid/lv_raid? [y/n]: y Logical volume "lv_raid" successfully removed Volume group "lv_raid" not found Cannot process volume group lv_raid [root@centos ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <29.51g 8.00m vol_raid 2 0 0 wz--n- <4.99g <4.99g [root@centos ~]# vgremove vol_raid Volume group "vol_raid" successfully removed [root@centos ~]# pvs PV VG Fmt Attr PSize PFree /dev/md1p1 lvm2 --- <4.00g <4.00g /dev/md2p1 lvm2 --- <1021.44m <1021.44m /dev/sda2 centos lvm2 a-- <29.51g 8.00m [root@centos ~]# pvremove /dev/md1p1 Labels on physical volume "/dev/md1p1" successfully wiped. [root@centos ~]# pvremove /dev/md2p1 Labels on physical volume "/dev/md2p1" successfully wiped. |
11 - Dia dia
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# Releitura HD - Quando aumento disco existente [root@centos ~]# echo 1 > /sys/class/scsi_disk/0\:0\:1\:0/device/rescan [root@centos ~]# pvresize /dev/sdb [root@centos ~]# lvextend -l +100%FREE /dev/VGU01/LVU01 # Particao ext4 [root@centos ~]# resize4fs /dev/<VOLUME>/<LV> # Particao ext3 [root@centos ~]# resize2fs /dev/<VOLUME>/<LV> # Partição xfs [root@centos ~]# xfs_growfs /dev/VGU01/LVU01 |