Comportement de LVM lors de l'extension ou de la création de volumes

LVM gère automatiquement l’extension des volumes logiques pour utiliser efficacement l’espace disponible, mais cela peut conduire à une distribution sur plusieurs disques ou partitions et peut sembler désorganisé si on vérifie avec lsblk.

Mais il est cependant possible de forcer manuellement la disposition des LV pour garder un certain contrôle et une “harmonie visuelle” sur la répartition (la maniaquerie…).

Répartition des LV

Il est assez courant d’observer dans les environnements LVM ce type de sortie via lsblk car le système attribue dynamiquement l’espace disponible des PV dans un Volume Group (VG).

# lsblk
[...]
sda 8:32 0 16G 0 disk
├─sda1 8:33 0 5G 0 part
│ ├─VG_DATAS-LV_HOME 253:6 0 15G 0 lvm
│ └─VG_DATAS-LV_DOCUMENTS 253:7 0 15G 0 lvm
├─sda2 8:34 0 5G 0 part
│ └─VG_DATAS-LV_HOME 253:6 0 15G 0 lvm
└─sda3 8:35 0 5G 0 part
sdb 8:96 0 16G 0 disk
├─sdb1 8:97 0 7G 0 part
│ └─VG_DATAS-LV_HOME 253:6 0 15G 0 lvm
└─sdb2 8:98 0 7G 0 part
sdc 8:112 0 16G 0 disk
└─sdc1 8:113 0 15G 0 part
└─VG_DATAS-LV_DOCUMENTS 253:7 0 15G 0 lvm
sdd 8:128 0 16G 0 disk
├─sdd1 8:129 0 7G 0 part
│ └─VG_BACKUP-LV_ARCHIVES 253:8 0 20G 0 lvm
└─sdd2 8:130 0 7G 0 part
└─VG_BACKUP-LV_ARCHIVES 253:8 0 20G 0 lvm
sde 8:144 0 16G 0 disk
├─sde1 8:145 0 4G 0 part
│ └─VG_BACKUP-LV_ARCHIVES 253:8 0 20G 0 lvm
├─sde2 8:146 0 4G 0 part
│ └─VG_BACKUP-LV_ARCHIVES 253:8 0 20G 0 lvm
├─sde3 8:147 0 4G 0 part
└─sde4 8:148 0 3G 0 part

En ce basant sur cette architecture :

Comportement de LVM

Comportement de LVM lors de l’extension ou de la création de volumes

Choix des Physical Volumes (PV)

LVM choisit automatiquement où placer les extensions des volumes logiques (PV), en fonction de l’espace disponible dans les PV du VG.

Lors de la création ou de l’extension d’un volume logique (LV), LVM répartit les données dans le VG de afin d’utiliser l’espace disponible et ne se soucie pas de maintenir une cohérence géographique, c’est pourquoi un même volume logique peut être réparti sur plusieurs PV.

Résultats lsblk

Cela peut sembler désorganisé parce que lsblk montre ces fragments de manière brute, sans tenter de regrouper visuellement le LV dans son ensemble.

Lorsque lorqu’un LV est crée ou étendu, LVM peut prendre de l’espace libre dans plusieurs partitions sur différents disques. Par conséquent, on voit des fragments d’un même LV (LV_HOME par exemple) répartis sur plusieurs partitions dans différents disques (ex. sda1, sda2, sdb1).

Dans lsblk :

  • Les volumes logiques (LV):
    • LV_HOME est divisé en morceaux sur plusieurs PV : sda1, sda2 et sdb1
    • LV_ARCHIVES est également réparti sur plusieurs PV : sdd1, sdd2, sde1 et sde2
  • Les volumes group (VG) :
    • VG_DATAS est étendu sur plusieurs PV : sda1, sda2, sda3, sdb1 et sdc1
    • VG_BACKUP est étendu sur plusieurs PV : sdd1, sdd2, sde1 et sde2

Ce qui explique cette vue éclatée.

Meilleure gestion

Planification manuelle

Il est possible de spécifier sur quel PV un LV doit être créér ou étendu en utilisant l’option -l ou -L avec le chemin spécifique du PV lors de la création ou l’aumentation d’un volume.

Cela permet de contrôler où exactement l’espace sera alloué, plutôt que de laisser LVM le faire automatiquement :

# lvcreate -L 5G -n LV_TRASH /dev/VG_DATAS /dev/sdb1
# lvextend -L +5G /dev/VG_DATAS/LV_HOME /dev/sda1

Pour utiliser tout l’espace restant d’un PV, il est possible de mettre un % :

# lvextend -l +100%FREE /dev/VG_DATAS/LV_HOME /dev/sdb2
# lvcreate -l +100%FREE -n LV_TRASH8 /dev/VG_BACKUP /dev/sde4

Utilisation de pvs et vgs pour vérifier l’espace :

# pvs
# vgs

Disponibilité d’espace dans chaque PV :

# pvs
PV         VG        Fmt  Attr PSize   PFree
/dev/sda1 VG_DATAS lvm2 a-- <5.00g 0
/dev/sda2 VG_DATAS lvm2 a-- <5.00g 1.98g
/dev/sda3 VG_DATAS lvm2 a-- <5.00g 1012.00m
/dev/sdb1 VG_DATAS lvm2 a-- <7.00g 0
/dev/sdb2 VG_DATAS lvm2 a-- <7.00g 0
/dev/sdc1 VG_DATAS lvm2 a-- <15.00g 0
/dev/sdd1 VG_BACKUP lvm2 a-- <7.00g 0
/dev/sdd2 VG_BACKUP lvm2 a-- <7.00g 0
/dev/sde1 VG_BACKUP lvm2 a-- <4.00g 0
/dev/sde2 VG_BACKUP lvm2 a-- <4.00g 1.98g
/dev/sde3 VG_BACKUP lvm2 a-- <4.00g 3.97g
/dev/sde4 VG_BACKUP lvm2 a-- <3.00g 0

Allocation d’espace des LV dans chaque VG :

# lvs
LV           VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
LV_ARCHIVES VG_BACKUP -wi-ao---- 20.00g
LV_TRASH4 VG_BACKUP -wi-a----- 12.00m
LV_TRASH5 VG_BACKUP -wi-a----- 12.00m
LV_TRASH8 VG_BACKUP -wi-a----- <3.00g
LV_DOCUMENTS VG_DATAS -wi-ao---- 15.00g
LV_HOME VG_DATAS -wi-ao---- 21.98g
LV_TRASH VG_DATAS -wi-a----- 1.00g
LV_TRASH2 VG_DATAS -wi-a----- 1.00g
LV_TRASH3 VG_DATAS -wi-a----- <2.01g
LV_TRASH6 VG_DATAS -wi-a----- 12.00m

Nettoyage ou consolidation :

Il est possible de réorganiser ou de consolider les LV en déplaçant des données d’un PV à un autre avec pvmove. Les volumes logiques seront mieux regroupés sur certains disques physiques :

# pvmove /dev/sda2 /dev/sdb1

Documentation

MAN
Internet
ChatGPT

> Partager <