Utilisation LVM

Fonctionnement de LVM

Le but de LVM est de gérer l’espace de stockage d’un serveur en s’affranchissant des contraintes matérielles. De cette manière, en cas de besoin, on peut, par la suite, ajouter des partitions si l’espace de stockage venait à être saturé. L’avantage est que, grâce à LVM, cet ajout est transparent pour le serveur puisque ces partitions viendront simplement augmenter la taille disponible sous LVM. Il n’y a donc rien à déclarer dans le fichier /etc/fstab.

LVM utilise les Physical Volumes (partitions) qu’il ajoute dans un Volume Group (VG). Ensuite, ce VG est découpé en un ou plusieurs Logical Volumes (LV), comme si on créait des partitions sur notre espace de stockage. Les Physical Volumes se comportent donc comme des disques durs (même si ce sont des partitions) et les Logical Volumes se comportent comme des partitions.

Pour fonctionner LVM nécessite le paquet lvm2. Pour l’installer, il faut exécuter la commande apt install lvm2.

Mise en place de LVM

Pour mettre en place LVM, il faut utiliser des partitions qui ne sont pas montées. Si ce n’est pas le cas, il faut utiliser la commande umount.

Attention : En ajoutant un disque ou une partition dans LVM celle-ci va être formatée.

Pour commencer, il faut créer les Physical Volumes, via la commande pvcreate /dev/sda3. Cette commande est facultative puisqu’elle est exécutée automatiquement lors de la création du Volume Group : vgcreate vg0 /dev/sda3. Il est possible, en cas de besoin, de passer plusieurs partitions en arguments lors de la création d’un VG via vgcreate.

Une fois le Volume group créé, il ne nous reste plus qu’à créer les Logical Volumes (partitions que nous allons utiliser) : lvcreate -L 20G vg0 -n home où -L définit la taille du LV et -n son nom. Ce Logical Volume est donc accessible depuis /dev/vg0/home et peut être monté où l’on souhaite. On peut également y faire référence dans le fichier fstab, comme n’importe quelle partition.

Il est possible de créer autant de Logical Volume qu’on veut, tant qu’il y a de la place sur notre Volume Group.

Gestion des Volumes

Pour consulter les informations relatives aux Logical Volumes, il faut saisir la commande : lvs ou lvdisplay. Il est également possible de passer un argument à la commande lvdisplay, afin de n’afficher les informations concernant qu’un seul volume logique : lvdispaly /dev/vg0/home.

Il existe également une commande vgdisplay pour afficher les informations relatives au Volume Group et une commande pvdisplay pour les Physical Volume.

Il est également possible de modifier la taille d’un Logical Volume, que ce soit en l’augmentant ou en le réduisant. Pour augmenter la taille, il faut saisir les deux commandes suivantes : lvextend -L+1024M /dev/vg0/home puis resize2fs /dev/vg0/home. Pour la réduire, il faut taper la commande lvreduce -L-1024M /dev/vg0/home.

Enfin, pour supprimer un Logical Volume qui ne sert plus, il faut utiliser la commande lvremove /dev/vg0/home. Il faut s’assurer que le volume non utilisé et démonté avant de le supprimer.

Utilisation des snapshots

Il est possible de créer des snapshots avec LVM. Le snapshot contient toutes les modifications apportées à un Logical Volume. Lors de la création du Snapshot, une taille maximale lui est attribuée, et il ne doit pas la dépasser sous peine de ne plus être utilisable. Attention : Le snapshot ne contient pas une copie du Logical Volume, mais une liste des modifications que le Logical Volume a subit depuis la création du snapshot. Lors de sa création, le snapshot a donc une taille nulle.

Pour créer un snapshot, il faut utiliser la commande : lvcreate -L 1G -s -n snapshot_home /dev/vg0/home. L’option -L définit la taille du snapshot.

Il est possible de rejouer les modification contenues dans le snapshot (notammment en cas de perte de données), en le fusionnant avec le Logical Volume qui a servit à sa création. Pour cela, on utilise la commande : lvconvert --merge /dev/vg0/snapshot_home.

Attention : Une fois l’opération terminée, le snapshot est supprimé.

Il est également possible d’utiliser un snapshot afin de revenir à l’état initial d’un Logiacal Volume. Cette opération conduira à la suppression de toutes les modifications contenues dans le snapshot. On utilise alors la commande précédente avec l’option -v : lvconvert --merge -v /dev/vg0/snapshot_home. Cette opération peut être très utile (particulièrement pour les machines virtuelles) pour effectuer des tests et ensuite revenir sans difficultés à l’état initial. Dans ce cas aussi, le snapshot est supprimé à l’issu de la manipulation.

Enfin, si un snapshot n’a presque plus d’espace libre, il est possible d’augmenter sa taille afin de ne pas perdre les données qu’il contient : lvresize -L +3GB /dev/vg0/snapshot_home. Avant d’exécuter cette commande, il est préférable de vérifier que le Volume Group dispose encore de suffisamment d’espace disponible avec vgdisplay. L’information est visible à la ligne : Free PE / Size.

Autres commandes utiles

Enfin, voici quelques autres commandes utiles qui peuvent parfois rendre service :

  • vgextend vg0 /dev/sdb1 : ajoute un disque physique (déjà initialisé) à un Volume Group.
  • vgchange -a n vg0 et vgremove vg0 : ces commandes permettent de supprimer un Volume Group (après l’avoir désactivé).
  • vgreduce vg0 /dev/sda3 : supprime la partition /dev/sda3 du VG. Le volume physique ne doit pas être utilisé pour lancer cette commande.
  • lvmdiskscan
  • pvscan