Introduction à LVM

LVM permet la création et la gestion de volume logique sous Linux. Il permet d’agrandir/rétrécir ou agréger des volumes.

LVM offre une architecture en 3 couches :
La première couche sont les “PV” se sont les volumes physiques : un disque ou une partition;
La seconde, les “VG” pour volume groupe permettent de grouper 1 ou plusieurs PV;
Enfin, il y a les “LV” volumes logiques qui permettent de faire une séparation logique d’un VG;

Schématisons ça :LVM

Pour mettre LVM en place il faut donc créer les PV puis les VG et enfin les LV

Commençons donc par créer les PV :

pvcreate /dev/sda2 /dev/sdc3

Puis on crée un VG que l’on nomme vg_data qui va grouper les deux PV:

vgcreate vg_data /dev/sda2 /dev/sdc3

Ensuite nous pouvons créer nos LV en leur affectant un taille.
Pour cela on utilise la commande lvcreate qui prend les paramétres :

lvcreate -L  -n

Ce qui donne pour notre exemple :

lvcreate -L 50G -n lv_nginx vg_data
lvcreate -L 200G -n lv_home vg_data

à chaque étape nous pouvons vérifier que la création se passe bien grâce aux commandes :

pvdisplay 
vgdisplay
lvdisplay

Ensuite il faut formater les volumes pour les rendre utilisables

mkfs.ext4 /dev/vg_data/lv_home
mkfs.ext4 /dev/vg_data/lv_nginx

Et on finit par monter les volumes

mount /dev/vg_data/lv_home /home
mount /dev/vg_data/lv_nginx /nginx

On peut également les mettre dans /etc/fstab afin que les volumes soient montés automatiquement

/dev/vg_data/lv_nginx /nginx ext4    defaults,relatime       1       2
/dev/vg_data/lv_home     /home   ext4    defaults,relatime       1       2

Si l’on veux supprimer un LV

umount /nginx
lvremove /dev/mapper/vg_data-lv_nginx

Pour rajouter un PV dans un VG

vgextend vg_data

Si l’on souhaite augmenter la taille d’un LV, il faut démonter le volume, augmenter la taille du LV puis augmenter la taille du système de fichier et enfin remonter le volume

umount /nginx # démontage du volume 
e2fsck -f /dev/vg_data/lv_nginx       # vérification du volume
lvresize -L 65g /dev/vg_data/lv_nginx # redimensionnement du LV à 65g
resize2fs /dev/vg_data/lv_nginx       # redimensionnement du Filesysteme
e2fsck -f /dev/vg_data/lv_nginx       # vérification pour être sur qu'on n'a rien corrompus
mount /dev/vg_data/lv_nginx /nginx/   # montage du volume

Plutôt que de fixer la nouvelle taille du LV on peut aussi choisir d’ajouter xGo ou Mo

lvresize -L +10g /dev/vg_data/lv_nginx

Il est également possible de réduire la taille d’un LV mais attention, cette action est beaucoup plus délicate que l’agrandissement. En effet, une erreur pourrait causer les perte de toutes les données sur le LV !

Afin d’éviter la perte des données, il est conseillé de réduire un peu plus le FS 2Go par exemple si on souhaite réduire le LV de 1Go puis, une fois le LV réduit de ré-étendre le FS.

Pour réduire la taille il faut donc :
démonter le FS
réduire le FS
redimensionner le LV
ré-entendre le FS

umount /nginx # démontage du volume
e2fsck -f /dev/vg_data/lv_nginx       # vérification du volume
resize2fs -p /dev/vg_data/lv_nginx 63g    # réduire le FS en se prenant une marge 2mo suffiraient mais rien ne vous empêche d’être plus large
lvresize -L -1g /dev/vg_data/lv_nginx # réduire le LV
resize2fs /dev/vg_data/lv_nginx       # redimensionnement du Filesysteme
e2fsck -f /dev/vg_data/lv_nginx       # vérification pour être sur qu'on n'a rien corrompus
mount /dev/vg_data/lv_nginx /nginx/   # montage du volume

Il est également possible de faire des snapshot avec LVM mais je n’en parlerai pas dans cette article.

Leave a Reply

© 2024 Evollu.fr. All Rights Reserved.
WordPress theme by Blogging Tips