Logical Volume Management (LVM) est un outil utile pour gérer de grands volumes de stockage sur Ubuntu. Il permet de créer des volumes logiques qui peuvent s’étendre sur plusieurs périphériques de stockage physiques. Cela vous donne une flexibilité dans l’allocation d’espace disque qui va au-delà des restrictions des partitions physiques.
Dans ce guide, nous couvrirons les bases de la configuration et de la gestion des volumes LVM sur Linux Debian et Ubuntu 18.04, 20.04 et 22.04.
Présentation de LVM
Quelques termes et concepts clés liés à LVM :
- Volumes physiques (PV) – Les périphériques de stockage physiques sous-jacents qui fournissent la capacité de stockage réelle, comme les partitions sur les disques durs ou SSD.
- Groupes de volumes (VG) – Un ensemble de volumes physiques regroupés. Cela permet de combiner des périphériques de stockage physiques en pools de stockage plus importants.
- Volumes logiques (LV) – Périphériques de bloc virtuels auxquels l’espace est alloué à partir du groupe de volumes sous-jacent. Vous pouvez créer, redimensionner et supprimer des volumes logiques selon les besoins.
- Étendues – Petits morceaux de taille égale d’espace contigu sur un volume physique. Lorsqu’elles sont allouées à un volume logique, elles fournissent du stockage au volume.
Le principal avantage de LVM est l’abstraction entre les disques physiques et les volumes logiques. En utilisant LVM, vous n’avez pas à vous soucier des détails du stockage physique. Vous pouvez redimensionner, créer des instantanés et déplacer des volumes logiques sans avoir à modifier les périphériques physiques sous-jacents.
Installation de LVM
Pour commencer avec LVM, vous devez d’abord installer le paquet lvm2 :
$ sudo apt install lvm2
Cela installera tous les outils nécessaires pour gérer les volumes LVM.
Création de volumes physiques
La première étape consiste à initialiser les disques ou les partitions en tant que volumes physiques (PV) à utiliser par LVM.
Par exemple, pour initialiser la partition /dev/sdb1
en tant que volume physique LVM :
$ sudo pvcreate /dev/sdb1
Output:
Physical volume "/dev/sdb1" successfully created
Vous pouvez vérifier les PV disponibles :
$ sudo pvs
Output:
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- <223.57G <223.57G
Cela répertoriera tous les volumes physiques auxquels LVM peut accéder.
Création de groupes de volumes
Ensuite, vous devez combiner un ou plusieurs PV dans un groupe de volumes (VG). L’espace du VG sera alloué à partir des PV regroupés.
Par exemple, pour créer un groupe de volumes appelé data
en utilisant le PV /dev/sdb1
:
$ sudo vgcreate data /dev/sdb1
Output:
Volume group "data" successfully created
Vous pouvez vérifier les VG disponibles :
$ sudo vgs
Output:
VG #PV #LV #SN Attr VSize VFree
data 1 0 0 wz--n- <223.57G <223.57G
Affichez les détails d’un VG spécifique :
$ sudo vgdisplay data
Output:
--- Volume group ---
VG Name data
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 <223.57 GiB
PE Size 4.00 MiB
Total PE 57313
Alloc PE / Size 0 / 0
Free PE / Size 57313 / <223.57 GiB
Création de volumes logiques
Une fois que vous disposez d’un groupe de volumes, vous pouvez créer des volumes logiques (LV) dans ce VG.
Par exemple, pour créer un volume logique de 10 Go appelé logs
:
$ sudo lvcreate -L 10G -n logs data
Output:
Logical volume "logs" created.
Cela crée un LV de 10 Go appelé logs
dans le VG data
.
Pour créer un LV qui utilise tout l’espace libre restant dans le VG :
$ sudo lvcreate -l 100%FREE -n apps data
Output:
Logical volume "apps" created.
Vérifiez les volumes logiques :
$ sudo lvs
Output:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
apps data -wi-a----- <213.57G
logs data -wi-a----- 10.00G
Vous pouvez également voir le chemin complet des LV créés avec :
$ sudo lvdisplay
Output:
--- Logical volume ---
LV Path /dev/data/apps
LV Name apps
VG Name data
LV UUID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
LV Write Access read/write
LV Creation host, time ubuntu-server, 2023-07-26 15:37:11 +0200
LV Status available
# open 0
LV Size <213.57 GiB
Current LE 54698
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
Les volumes logiques seront mappés sur des périphériques /dev/VG/LV
qui peuvent être formatés et montés, comme des partitions normales.
Formatage et montage des volumes logiques
Pour utiliser les volumes logiques LVM, ils doivent être formatés avec un système de fichiers comme n’importe quel autre périphérique de bloc.
Par exemple, pour formater le volume logs
en ext4 et le monter dans /var/log
:
$ sudo mkfs.ext4 /dev/data/logs
$ sudo mkdir /var/log
$ sudo mount /dev/data/logs /var/log
Pour le monter automatiquement au démarrage, ajoutez ceci dans /etc/fstab
:
/dev/data/logs /var/log ext4 defaults 0 0
Faites de même pour tout autre volume logique que vous souhaitez utiliser en permanence.
Étendre un volume logique
L’un des avantages de LVM est que vous pouvez facilement étendre les volumes logiques.
Par exemple, pour agrandir le volume logs
de 5 Go, étendez d’abord le groupe de volumes de 5 Go :
$ sudo lvextend -L +5G /dev/data/logs
Output:
Size of logical volume data/logs changed from 10.00 GiB (2560 extents) to 15.00 GiB (3840 extents).
Logical volume data/logs successfully resized.
Redimensionnez ensuite le système de fichiers pour qu’il corresponde :
$ sudo resize2fs /dev/data/logs
Output:
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/data/logs is mounted on /var/log; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/data/logs is now 153600 (4k) blocks long.
Le volume logique est maintenant agrandi de 5 Go.
C’est beaucoup plus facile que d’étendre des partitions disque, ce qui nécessite des étapes douloureuses comme déplacer et redimensionner les partitions adjacentes.
Réduire un volume logique
Pour réduire un volume logique, redimensionnez d’abord le système de fichiers :
$ sudo resize2fs /dev/data/logs 20G
Output:
resize2fs 1.45.5 (07-Jan-2020)
Resizing the filesystem on /dev/data/logs to 5242880 (4k) blocks.
The filesystem on /dev/data/logs is now 5242880 (4k) blocks long.
Cela réduit le système de fichiers à 20 Go.
Réduisez ensuite la taille du LV pour qu’elle corresponde :
$ sudo lvreduce -L 20G /dev/data/logs
Output:
Size of logical volume data/logs changed from 15.00 GiB (3840 extents) to 20.00 GiB (5120 extents).
Logical volume data/logs successfully resized.
Le volume logs
est maintenant réduit à 20 Go.
Création d’instantanés
LVM vous permet de créer des instantanés de volumes logiques. Cela peut être utilisé pour faire des sauvegardes de volumes.
Par exemple, créez un instantané du volume logs
:
$ sudo lvcreate --size 10G --snapshot --name logs-snap /dev/data/logs
Output:
Logical volume "logs-snap" created.
Cela créera un instantané appelé logs-snap
qui est une copie de logs
au moment où l’instantané a été pris.
Au départ, l’instantané n’utilise pas d’espace, mais à mesure que le volume d’origine change, l’instantané augmentera pour stocker les anciens blocs lorsqu’ils sont écrasés.
Vous pouvez monter, sauvegarder ou restaurer des données à partir de l’instantané comme avec un volume normal.
Surveiller l’utilisation de LVM
Il est important de surveiller vos groupes de volumes LVM et vos volumes logiques pour vous assurer de ne pas manquer d’espace.
Pour voir les étendues physiques allouées par VG :
$ sudo vgdisplay -v data
Output:
--- Volume group ---
VG Name data
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <223.57 GiB
PE Size 4.00 MiB
Total PE 57313
Alloc PE / Size 15360 / 60.00 GiB
Free PE / Size 41953 / <163.57 GiB
Pour surveiller l’utilisation des LV :
$ sudo lvdisplay
Output:
--- Logical volume ---
LV Path /dev/data/logs
LV Name logs
VG Name data
LV UUID XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX
LV Write Access read/write
LV Creation host, time ubuntu-server, 2022-03-05 10:17:11 +0200
LV Status available
# open 0
LV Size 20.00 GiB
Current LE 5120
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
--- Logical volume ---
LV Path /dev/data/apps
LV Name apps
VG Name data
LV UUID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX
LV Write Access read/write
LV Creation host, time ubuntu-server, 2023-07-26 15:37:11 +0200
LV Status available
# open 0
LV Size <193.57 GiB
Current LE 49408
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
Vous pouvez également installer un utilitaire de surveillance LVM comme lvm2 snarf
pour être notifié lorsque l’utilisation dépasse certains seuils.
Avantages de LVM
Quelques-uns des principaux avantages de LVM :
- Flexibilité pour agrandir et réduire les volumes logiques selon les besoins, sans les contraintes des partitions.
- Prendre facilement des instantanés et des sauvegardes de volumes.
- Mettre en commun le stockage de plusieurs périphériques dans un groupe de volumes commun.
- Migrer des données en déplaçant des volumes logiques entre périphériques de stockage.
- Allouer des volumes logiques stripés, mirrorisés ou chiffrés.
Dans l’ensemble, LVM fournit une gestion de stockage puissante et flexible pour vos serveurs Ubuntu. Avec un peu d’apprentissage, il peut être extrêmement utile pour gérer des besoins de stockage importants et en croissance.
Conclusion
LVM fournit un moyen robuste de gérer le stockage à grande échelle et dynamique sous Ubuntu. En utilisant LVM, vous pouvez gérer efficacement des besoins de stockage en constante évolution, tout en permettant des fonctionnalités clés comme les instantanés et le provisioning fin. Cependant, cela nécessite d’apprendre de nouveaux concepts et commandes. Avec un peu de pratique, LVM peut devenir une partie indispensable de la façon dont vous déployez et gérez le stockage Ubuntu/Debian. Utilisé correctement, il peut vous faire gagner beaucoup de temps et d’ennuis à mesure que vos besoins évoluent. La flexibilité de redimensionner, réduire et migrer dynamiquement des volumes en vaut la peine pour l’effort initial d’apprentissage.