6 octobre 2022

LVM, le gestionnaire de volume logique

LVM ou Logical Volume Manager (Gestionnaire de volumes logiques en bon français…) est un outil qui remplace en quelque sorte le partitionnement classique des disques durs.
Il offre de nombreux avantages (snapshots, réduction et augmentation de l’espace disque sans risque, idéal dans le cadre d’une virtualisation avec Xen) .
Et le tout avec une simplicité déconcertante !

I – Présentation

Pour bien comprendre LVM, il faut éclaircir un peu son vocable et comprendre ce que sont les PV, VG, et LV.
Tout d’abord, nous allons parler de PV (Physical Volume). Il s’agit du(des) disque(s) dur physique (ou partition(s)) que l’on va attribué(s) à LVM.
Attention, les données présentes dessus seront effacées.
Ensuite, nous allons trouver le VG (Volume Group). Il s’agit du regroupement logique et logiciel d’un ou plusieurs PV.
Et pour terminer, nous  aurons les LV (Logical Volume) qui seront donc nos volumes logiques, la ou on installera un système de fichier. L’équivalent en quelque sorte de nos bonne vieilles partitions.
 

II – Installation

Une fois le principe en tête, passons à l’installation complexe s’il en est car le classique :

# apt-get install lvm

suffit à la tâche.
Oui, l’étape 3 est courte !
 

III – Création du PV et du VG

Dans ce tutoriel, je vais utiliser le disque disque SATA identifié par /dev/sdb.
Bien que l’étape qui suit soit facultative, je vous invite à la faire quand même, on ne sait jamais.
Nous allons utiliser l’utilitaire cfdisk pour attribuer le bon type de format à notre disque.

# cfdisk /dev/sdb

Le code pour un système LVM est 8e.
Maintenant, passons à la création du « Physical Volume »

# pvcreate /dev/sdb

On vérifie :

# pvs

On crée le « Volume Group » nommé vg0

# vgcreate vg0 /dev/sdb

On vérifie :

# vgs

La base de notre système étant dorénavant opérationnelle, nous allons passer au plat de résistance !
 

IV – Création d’un LV

Nous allons créer un premier LV dans notre VG fraichement créé (lui même créé dans le PV), vous suivez ?
La commande pour se faire est la suivante :

# lvcreate -n nom_lv -L 20g vg0

-n pour indiquer le nom de notre LV.
-L pour indiquer sa taille.
On termine la commande en indiquant dans quel Volume Group notre LV doit être créé.
Et voila, vous pouvez l’utiliser ! Bien sur, avant, il vous faudra créer un FS dessus et ensuite monter le LV avec la commande mount.
 

V – Manipulation sur un LV

1 – Augmentation d’un  LV

Rien de complexe, il faut seulement s’assurer que le LV n’est pas utilisé (ou monté). Ensuite :

# lvresize -L+10G /dev/vg0/monlv

Ici, on rajoute 10G à notre LV. Si nous avions indiqué seulement -L 10G (sans le +), nous aurions demandé un LV de 10 G.
Ensuite, une vérification du filesystem, et on le redimensionne à la nouvelle taille de son conteneur.

# e2fsck -f /dev/vg0/monlv
# resize2fs /dev/vg0/monlv

Voila pour l’augmentation.
 

2 – Réduction d’un LV

La réduction est sans risque, du moment qu’on fasse les choses dans l’ordre !

Nous allons prendre ici l’exemple d’un disque de 100G que l’on souhaite réduire à 70G.
Au préalable sur votre lv monté, un coup de df -h pour connaitre l’espace occupé (par ex ici 63Go occupé)

On pense à démonter le lv avant et ensuite on le vérifie :

# e2fsck -f /dev/vg0/monlv

Ensuite, nous allons redimensionner le filesystem à une taille inférieur à la taille finale.
La, nous allons réduire à 65G (vu que nous avions 63G occupé).

# resize2fs -p /dev/vg0/monlv 65G

Ensuite, on peut réduire le lv. on retire 30G du LV pour arriver à 70G en taille finale (100-30).

# lvresize -L -30G /dev/vg0/monlv

Et on termine en redimensionnant le FS à la taille du LV

# resize2fs /dev/vg0/monlv

Et voila, LV réduit et prêt à utilisation.

 

3 – Suppression d’un LV

Rien de complexe :

# lvremove /dev/vg0/monlv

 

VI – Les Snapshots

Voila la un autre des gros avantages de LVM sur un système reposant sur un partitionnement classique, la gestion des Snapshots.
Alors avant toute chose, définissons ce qu’est un snapshot LVM.
Il s’agit pour faire simple et imagé, d’une photographie à un instant T de votre LV.
Attention, les snapshots ne sont pas un moyen de sauvegarde en soi ! Le fait d’avoir des snapshots actifs engendre une consommation de ressources supplémentaires (en I/O) et en cas de reboot de la machine, aurevoir le snapshot.
Alors, à quoi ça sert ?
On peut distinguer deux façons d’utiliser les snapshots.
 

1 – Assurer ses arrières

Avant d’effectuer de grosses mises à jour sur une VM, il peut être utile et/ou salvateur d’avoir la possibilité de revenir en arrière si ca plantouille.
L’idée est la suivante :
On effectue un snapshot du LV en question :

# lvcreate -s -n monlv_snap -L +2G vg0/monlv

-s pour indiquer qu’il s’agit d’un snapshot.
-n pour indiquer le nom du snapshot.
-L pour lui indiquer sa taille.
La taille d’un snapshot s’entend comme cela : dans notre cas par ex, on indique qu’on autorise 2G de données « en plus » entre le lv et son snap. A savoir, en cas de remplissage a 100%, un snap devient inutilisable. On peut également indiquer la taille en %.
Pour connaitre l’espace utilisé :

# lvdisplay vg0/monlv_snap

Une fois notre snapshot créé, on peut faire ses tambouilles sur le LV d’origine.
Deux possibilités :
Vous validez vos changements, il n’y a aucun soucis, vous ne regrettez pas cet apt-get upgrade.
Bref, tout roule, alors on peut supprimer le snapshot :

# lvremove /dev/vg0/monlv_snap

Au contraire, c’est la cata, vous voulez revenir à l’état du snapshot.
Si c’est une VM, arrêtez la, si c’est juste un lv monté, démontez le. Et ensuite :

# lvconvert --merge -v vg0/monlv_snap

Cette opération prend un peu de temps, mais à la fin, en relançant votre VM, ou en remontant le LV, vous constaterez qu’il est revenu à son état initial.
 

2 – Backup du LV

L’idée la est de pouvoir faire un backup d’un LV en utilisation sans devoir se casser la tête a voir ce qu’on doit couper, etc…
On effectue le snapshot, on fait notre backup tranquille du snap, et une fois le backup terminé, on peut supprimer le snap.
Je ne détaille pas plus, à chacun d’avoir sa stratégie de sauvegarde (et ce sera l’occasion de faire un billet la dessus)
 

VII – Conclusion

Voila donc comment utiliser simplement LVM. Vous constatez qu’il n’y a rien de sorcier et qu’à l’usage, cela devient rapidement indispensable
Bien sûr d’autres commandes existent, man est votre ami 😉
Si vous avez des questions, remarques, n’hésitez pas à poster un commentaire.
 
 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *