Objectifs du chapitre
- Installer, configurer et surveiller des volumes LVM sous Linux.
- Utiliser les commandes de base liées à LVM.
1. Architecture LVM
LVM empile trois niveaux : les disques deviennent des volumes physiques (PV), réunis dans un groupe de volumes (VG), lui-même découpé en volumes logiques (LV).

| Niveau | Création | Affichage |
|---|---|---|
| PV (Physical Volume) | pvcreate | pvdisplay |
| VG (Volume Group) | vgcreate, vgextend | vgdisplay |
| LV (Logical Volume) | lvcreate | lvdisplay, lvs, lvscan |
L’environnement du tutoriel est une VM CentOS 7 server (VMware Workstation ou VirtualBox) avec quatre disques : sda pour le système, sdb, sdc et sdd pour LVM.
2. Création des volumes physiques (PV)
# pvcreate /dev/sdb
# pvcreate /dev/sdc
# pvcreate /dev/sdd
# pvdisplay
Un PV neuf apparaît dans pvdisplay sans VG Name, avec Allocatable NO et 0 PE tant qu’il n’appartient à aucun groupe.
3. Création du groupe de volumes (VG)
# vgcreate VolGroup1 /dev/sdb /dev/sdc
# vgdisplay
Avec deux disques de 5 Go, vgdisplay donne VG Size 9,99 GiB et PE Size 4,00 MiB (2558 PE au total).
4. Création des volumes logiques (LV)
# lvcreate -L 1G -n lv1 VolGroup1
# lvcreate -L 1G -n lv2 VolGroup1
# lvcreate -L 1G -n lv3 VolGroup1
# lvcreate -L 1G -n lv4 VolGroup1
# lvdisplay
# lvs
| Option | Rôle |
|---|---|
-L 1G | Taille du LV. |
-n lv1 | Nom du LV, accessible ensuite sous /dev/VolGroup1/lv1. |
5. Formatage des volumes logiques
# mkfs.ext4 /dev/VolGroup1/lv1
# mkfs.ext4 /dev/VolGroup1/lv2
# mkfs.ext4 /dev/VolGroup1/lv3
# mkfs.ext4 /dev/VolGroup1/lv4
6. Montage des volumes logiques
Les répertoires de montage sont à créer avant le montage.
# mkdir -p /data/lv1 /data/lv2 /data/lv3 /data/lv4
# mount /dev/VolGroup1/lv1 /data/lv1
# mount /dev/VolGroup1/lv2 /data/lv2
# mount /dev/VolGroup1/lv3 /data/lv3
# mount /dev/VolGroup1/lv4 /data/lv4
# df -h
Dans df -h, les LV apparaissent sous la forme /dev/mapper/VolGroup1-lv1. Pour un montage permanent, il faut ajouter la ligne dans /etc/fstab.
7. Gestion des volumes
| Opération | Commandes |
|---|---|
Agrandir le VG avec /dev/sdd | vgextend VolGroup1 /dev/sdd |
| Agrandir lv1 de 1 Go | lvextend --size +1G --resizefs /dev/VolGroup1/lv1 |
| Supprimer lv4 | umount /dev/VolGroup1/lv4 puis lvremove /dev/VolGroup1/lv4 |
| Réduire lv2 de moitié | umount /dev/VolGroup1/lv2 puis lvreduce -L 512M /dev/VolGroup1/lv2 |
| Donner tout l’espace restant à lv3 | lvresize -l +100%FREE -r /dev/VolGroup1/lv3 |
# vgextend VolGroup1 /dev/sdd
# vgdisplay # VG Size passe à <14,99 GiB
# lvextend --size +1G --resizefs /dev/VolGroup1/lv1
# lvdisplay /dev/VolGroup1/lv1 # LV Size 2,00 GiB
# umount /dev/VolGroup1/lv4
# lvremove /dev/VolGroup1/lv4
# lvs
# umount /dev/VolGroup1/lv2
# lvreduce -L 512M /dev/VolGroup1/lv2
# lvscan
# lvresize -l +100%FREE -r /dev/VolGroup1/lv3
# lvdisplay /dev/VolGroup1/lv3 # LV Size <12,49 GiB
--resizefs(ou-r) redimensionne le LV et agrandit le système de fichiers en même temps :resize2fsest appelé et le changement se fait en ligne, sans démonter.-l +100%FREEcompte en extents (-l) au lieu d’une taille (-L) et prend tout l’espace libre du VG.lvremoveetlvreducedemandent confirmation.lvreduceprévient :WARNING: Reducing active logical volume to 512,00 MiB. THIS MAY DESTROY YOUR DATA (filesystem etc.).
8. Vérification avec df
# df -h /dev/VolGroup1/lv1
# df -h /dev/VolGroup1/lv2
# df -h /dev/VolGroup1/lv3
| Volume | Résultat |
|---|---|
| lv1 | 2,0G, monté sur /data/lv1 : le système de fichiers a suivi l’extension grâce à --resizefs. |
| lv2 | N’apparaît pas comme monté (il a été démonté pour la réduction) : df affiche devtmpfs. |
| lv3 | 13G, monté sur /data/lv3 : il occupe tout l’espace restant du VG. |