LVM
De TwisterWiki
LVM
LVM c'est quoi ?
- le LVM est une gestion des disques par des volumes logiques et modifiable à chaud
il y a trois termes à connaître
PV : Les disques durs, partitions de disques durs, volumes RAID ou unités logiques provenant d'un SAN forment des « volumes physiques » (physical volumes ou PV).
VG : On concatène les volumes physiques dans des « groupes de volumes » (volume groups ou VG). Ces VG sont équivalents à des pseudo-disques-durs.
LV : Des « volumes logiques » (logical volumes ou LV) sont alors découpés dans les groupes de volumes, puis formatés et montés dans des systèmes de fichiers ou utilisés en tant que raw devices. Les LV sont équivalents à des pseudo-partitions.
- schema explicatif
Les commandes utiles
- pvscan : affiche les informations sur les partitions LVM
root@debian:~# pvscan PV /dev/sda5 VG vg_home lvm2 [<2,96 GiB / 0 free] PV /dev/sda2 VG vg_root lvm2 [11,17 GiB / 0 free]
- vgscan : scan les Volume Groups
root@debian:~# vgscan Reading all physical volumes. This may take a while... Found volume group "VG_home" using metadata type lvm2 Found volume group "VG_root" using metadata type lvm2
- lvscan : scan les Logical Volumes contenus dans les VG
root@debian:~# lvscan ACTIVE '/dev/vg_home/home' [2,96 GiB] inherit ACTIVE '/dev/vg_root/root' [11,17 GiB] inherit
- pvs : affiche des informations sur les disques physiques
root@debian:~# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg_root lvm2 a-- 11,17g 0 /dev/sda5 vg_home lvm2 a-- <2,96g 0
- vgs : affiche des informations sur les volumes groups
root@debian:~# vgs VG #PV #LV #SN Attr VSize VFree lv_home 2 1 0 wz--n- 2,95g 0 lv_root 1 1 0 wz--n- 11,17g 0
- lvs : affiche les informations sur les logical volumes
root@debian:~# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert home VG_home -wi-ao---- <2,96g root VG_root -wi-ao---- 11,17g
- vgdisplay: affiche des informations sur les VG
root@debian:~# vgdisplay --- Volume group --- VG Name VG_home System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 5 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 2 Act PV 2 VG Size 10,95 GiB PE Size 4,00 MiB Total PE 2804 Alloc PE / Size 2804 / 10,95 GiB Free PE / Size 0 / 0 VG UUID 1CWo34-pSCo-xm7c-3oDe-Bm1g-ssZv-lc6l3l --- Volume group --- VG Name VG_root System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 1 Act PV 1 VG Size 11,17 GiB PE Size 4,00 MiB Total PE 2860 Alloc PE / Size 2860 / 11,17 GiB Free PE / Size 0 / 0 VG UUID 0mBEyB-ulvn-uAlV-PLgX-Ukj0-Nyou-P75k1j
- lvdisplay : affiche des informations sur les LV
root@debian:~# lvdisplay --- Logical volume --- LV Path /dev/vg_home/home LV Name home VG Name vg_home LV UUID ksr3xP-1TMw-HmYl-i9bn-sbaV-D4xj-JEgQut LV Write Access read/write LV Creation host, time debian, 2020-06-25 11:56:28 +0200 LV Status available # open 1 LV Size 10,95 GiB Current LE 2804 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:1 --- Logical volume --- LV Path /dev/vg_root/root LV Name root VG Name vg_root LV UUID ebhyTn-QKjr-RZoc-AJob-o7FM-CidW-UMNtsw LV Write Access read/write LV Creation host, time debian, 2020-06-25 11:56:42 +0200 LV Status available # open 1 LV Size 11,17 GiB Current LE 2860 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:0
- pvdisplay :
root@debian:~# pvdisplay --- Physical volume --- PV Name /dev/sda5 VG Name vg_home PV Size <2,96 GiB / not usable 3,00 MiB Allocatable yes (but full) PE Size 4,00 MiB Total PE 757 Free PE 0 Allocated PE 757 PV UUID ntnTRL-7V00-Cwxn-gE6U-Mprp-mb8l-S1rwI2 --- Physical volume --- PV Name /dev/sda2 VG Name vg_root PV Size <11,18 GiB / not usable 4,00 MiB Allocatable yes (but full) PE Size 4,00 MiB Total PE 2860 Free PE 0 Allocated PE 2860 PV UUID IAHJk6-HIoe-oR7p-Wy3U-uRmt-hUiU-5giRQd
- vgchange -ay <monvolumeLVM> : permet d'activer la partition LVM voulue afin de pouvoir la monter par exemple
Ajouter de l'espace
- comment ajouter de l'espace à un volume LVM
il faut en premier lieu augmenter la taille du disque ou ajouter un nouveau disque
- exemple on ajoute une partition /dev/sda5
pvcreate /dev/sda5
- on agrandit le VG
vgextend monVolumeGroup /dev/sda5 et on créer un LVM dessus
- ajouter l'espace au volumeLogique
lvresize --size +500G /dev/mapper/monVolumeGroup-monLogicalVolume
- extension du VolumeLogique sur la partition ajoutée
lvextend /dev/mapper/monVolumeGroup-monLogicalVolume /dev/sda5
- agrandissement du file system
resize2fs /dev/mapper/monVolumeGroup-monLogicalVolume
Exemple d'ajout d'espace (disque supp)
- nous avons un disque de 16Go avec 2 VG (VG_root et VG_home) et une swap
- /dev/sda1 : swap
- /dev/mapper/VG_root-root : 11,2 GiB (/dev/sda2)
- /dev/mapper/VG_home-home : 3 GiB (/dev/sda5)
root@debian:~# fdisk -l Disque /dev/sda : 16 GiB, 17179869184 octets, 33554432 secteurs Modèle de disque : VBOX HARDDISK Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0xd741f2c0 Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 * 2048 3905535 3903488 1,9G 82 partition d'échange Linux / Solaris /dev/sda2 3905536 27342847 23437312 11,2G 8e LVM Linux /dev/sda3 27344894 33552383 6207490 3G 5 Étendue /dev/sda5 27344896 33552383 6207488 3G 8e LVM Linux Disque /dev/mapper/VG_root-root : 11,2 GiB, 11995709440 octets, 23429120 secteurs Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Disque /dev/mapper/VG_home-home : 3 GiB, 3175088128 octets, 6201344 secteurs Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets
- Nous avons ajouter un second disque de 8Go pour étendre /home (sdb)
root@debian:~# fdisk -l Disque /dev/sda : 16 GiB, 17179869184 octets, 33554432 secteurs Modèle de disque : VBOX HARDDISK Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0xd741f2c0 Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 * 2048 3905535 3903488 1,9G 82 partition d'échange Linux / Solaris /dev/sda2 3905536 27342847 23437312 11,2G 8e LVM Linux /dev/sda3 27344894 33552383 6207490 3G 5 Étendue /dev/sda5 27344896 33552383 6207488 3G 8e LVM Linux Disque /dev/sdb : 8 GiB, 8589934592 octets, 16777216 secteurs Modèle de disque : VBOX HARDDISK Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Disque /dev/mapper/VG_root-root : 11,2 GiB, 11995709440 octets, 23429120 secteurs Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Disque /dev/mapper/VG_home-home : 3 GiB, 3175088128 octets, 6201344 secteurs Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Création de la partition sdb1
- on créer une partition primaire classique avec l'outils fdisk ou cfdisk
- on crée un volume physique lvm avec la commande pvcreate
root@debian:~# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created. root@debian:~# pvs PV VG Fmt Attr PSize PFree /dev/sda2 VG_root lvm2 a-- 11,17g 0 /dev/sda5 VG_home lvm2 a-- <2,96g 0 /dev/sdb1 lvm2 --- <8,00g <8,00g
- on ajoute la partition /dev/sdb1 au volume group lv_home
root@debian:~# vgextend VG_home /dev/sdb1 Volume group "VG_home" successfully extended
- on agrandit la taille de /home
root@debian:~# lvresize --size +8G /dev/mapper/VG_home-home Insufficient free space: 2048 extents needed, but only 2047 available root@debian:~# lvresize --extents +2047 /dev/mapper/VG_home-home Size of logical volume VG_home/home changed from <2,96 GiB (757 extents) to 10,95 GiB (2804 extents). Logical volume VG_home/home successfully resized.
- on voit que le volume groupe à été augmenté de 8Go
root@debian:~# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert home VG_home -wi-ao---- 10,95g root VG_root -wi-ao---- 11,17g
- dernière étape on augmente la taille du file_system sur le LV
root@debian:~# resize2fs /dev/mapper/VG_home-home resize2fs 1.44.5 (15-Dec-2018) Filesystem at /dev/mapper/VG_home-home is mounted on /home; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 2 The filesystem on /dev/mapper/VG_home-home is now 2871296 (4k) blocks long. root@debian:~# df -h Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur udev 983M 0 983M 0% /dev tmpfs 200M 3,0M 197M 2% /run /dev/mapper/VG_root-root 11G 1,5G 9,0G 14% / tmpfs 998M 0 998M 0% /dev/shm tmpfs 5,0M 0 5,0M 0% /run/lock tmpfs 998M 0 998M 0% /sys/fs/cgroup /dev/mapper/VG_home-home 11G 15M 11G 1% /home tmpfs 200M 0 200M 0% /run/user/0
Exemple d'ajout d'espace (augmentation disque)
- on a une vm avec 50Go et on souhaite ajouter 500Go
- ajout dans vmware de 500Go sur le seul disque de la VM puis
for disque in $(ls /sys/class/scsi_device/); do echo 1 > "/sys/class/scsi_device/$disque/device/rescan"; done
fdisk -l Disk /dev/sda: 550 GiB, 590558003200 bytes, 1153433600 sectors Disk model: Virtual disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xf789462e Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 104857599 104855552 50G 8e Linux LVM Disk /dev/mapper/VG_MAIN-LV_SWAP: 1,91 GiB, 2046820352 bytes, 3997696 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 /dev/mapper/VG_MAIN-LV_ROOT: 48,09 GiB, 51636076544 bytes, 100851712 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
- Augmentation de la taille du PV (partition 1 du disque dans notre cas sda1)
/sbin/parted ---pretend-input-tty /dev/sda unit % resizepart 1
End? [9,09%]? 100%
Information: You may need to update /etc/fstab.
root@sgdf-lamp-01:~# fdisk -l Disk /dev/sda: 550 GiB, 590558003200 bytes, 1153433600 sectors Disk model: Virtual disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xf789462e Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 1153433599 1153431552 550G 8e Linux LVM
- extension du LV ROOT
lvextend -l 100%FREE /dev/mapper/VG_MAIN-LV_ROOT
Size of logical volume VG_MAIN/LV_ROOT changed from <48,09 GiB (12311 extents) to 500,00 GiB (128000 extents).
Logical volume VG_MAIN/LV_ROOT successfully resized.
resize2fs /dev/mapper/VG_MAIN-LV_ROOT
resize2fs 1.46.2 (28-Feb-2021)
Filesystem at /dev/mapper/VG_MAIN-LV_ROOT is mounted on /; on-line resizing required
old_desc_blocks = 7, new_desc_blocks = 63
The filesystem on /dev/mapper/VG_MAIN-LV_ROOT is now 131072000 (4k) blocks long.
df -h Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur udev 3,9G 0 3,9G 0% /dev tmpfs 796M 656K 796M 1% /run /dev/mapper/VG_MAIN-LV_ROOT 493G 46G 447G 10% / tmpfs 3,9G 4,0K 3,9G 1% /dev/shm tmpfs 5,0M 0 5,0M 0% /run/lock tmpfs 796M 0 796M 0% /run/user/0