Utilisation basique de LVM

ven. 30 août 2013 by Marmotte

LVM est un gestionnaire de volumes logiques. Il permet une gestion plus souple de l'espace de stockage que l'utilisation directe des disques durs.

En contrepartie, si l'un des disques qui composent le volume physique LVM tombe en panne, il devient très difficile, voire impossible, de récupérer les données de ce volume. C'est pourquoi il est conseillé d'utiliser LVM sur un système tolérant aux pannes, comme des volumes RAID.

Fonctionnement de LVM

Avant d'expliquer comment utiliser LVM, il me semble important d'expliquer un minimum son fonctionnement.

Sur un disque dur utilisé sans LVM, on crée des partitions, dans lesquelles on crée ensuite un système de fichiers. Il y a donc trois niveaux :

  • Disque physique
  • Partition physique
  • Système de fichiers

LVM reprend le même principe de découpage d'un volume physique en sous volumes logiques, en se plaçant entre les partitions physiques du disque dur et le système de fichiers. Un espace utilisant LVM aura donc ces niveaux :

  • Disque physique
  • Partition physique
  • Volume physique (LVM)
  • Groupe de volumes (LVM)
  • Volume logique (LVM)
  • Système de fichiers

Un volume physique correspond à une partition du disque dur physique. La création d'un volume physique permet de définir les partitions physiques qui seront utilisées par LVM, à la manière d'un formatage qui attribuerait un système de fichiers LVM à la partition.

Un groupe de volumes peut être vu comme disque dur virtuel composé d'un ou plusieurs volumes physiques. Créer un groupe de volume revient à regrouper une ou plusieurs partitions physiques en un unique espace de stockage.

Enfin, un volume logique définit une fraction de l'espace de stockage. A la différence d'une partition physique, le volume logique n'a pas de position définie physiquement sur un disque dur, et peut même être réparti sur plusieurs disques durs différents.

Grâce à ce fonctionnement, les contraintes physiques de taille d'un disque dur physique et de position d'une partition sur un disque dur disparaissent. Il est donc possible d'étendre ou réduire très simplement l'espace alloué à chaque volume logique.

Quelques exemples :

  • Contrairement à une partition qui serait coincée entre deux autres, agrandir un volume logique ne demande pas de déplacer les données stockées sur d'autres volumes logiques.
  • Si l'espace de stockage total devient trop faible, il est possible d'ajouter un nouveau disque dur physique dans le groupe de volumes afin d'agrandir les volumes logiques qui s'y trouvent.

Installation

Sous Debian, il suffit d'installer le paquet lvm2.

$ sudo apt-get install --no-install-recommends lvm2

Utilisation

Généralités

Les commandes de lvm sont toutes nommées selon le même schéma, il est donc assez facile de trouver la commande qu'on veut utiliser. Elles sont formées d'un préfixe, désignant l'élément cible (pv pour un volume physique, vg pour un groupe de volume, ou lv pour un volume logique) et de l'action à effectuer ensuite. Par exemple, la commande utilisée pour créer un volume logique se nomme lvcreate.

Les tailles données aux commandes utilisent le préfixe M pour des Mo, G pour des Go, T pour des To, etc. L'unité minimale, qui est aussi l'unité par défaut, est le Mo.

Affichage des informations sur les différents éléments

Les commandes pvs, vgs et lvs permettent d'avoir des informations de base sur les différents éléments.

Les commandes pvdisplay, vgdisplay et lvdisplay donnent des informations plus détaillées. Il est possible de leur donner le nom d'un élément particulier afin de n'afficher que les informations de cet élément, par exemple sudo lvm pvdisplay /dev/sda2.

Création d'un volume physique

La création d'un volume physique nécessite juste le chemin vers le périphérique à utiliser. Il est possible de donner une partition physique, avec /dev/sdXY, ou un volume raid, avec /dev/mdX.

$ sudo lvm pvcreate /dev/sdXY

Note : Si plusieurs noms de périphériques sont données, chaque périphérique est initialisé pour l'utilisation de LVM.

Définition d'un groupe de volumes

Pour définir un groupe de volumes, il faut donner un nom au groupe, suivi des périphériques attribués aux volumes à ajouter dans le groupe.

$ sudo lvm vgcreate <GroupName> /dev/sdXY

Note : Si plusieurs noms de périphériques sont donnés, les volumes de ces périphériques sont tous intégrés dans le groupe créé.

Création d'un volume logique

La création d'un volume logique nécessite de nommer ce volume, lui donner une taille, et définir dans quel groupe il sera placé.

$ sudo lvm lvcreate -n <VolumeName> -L 10G <GroupName>

Redimensionnement d'un groupe de volumes

Redimensionner un groupe de volumes permet d'ajouter ou de retirer des volumes physiques de ce groupe de volumes. Ces opérations peuvent être effectuées à chaud.

Agrandissement

$ sudo lvm vgextend <GroupName> /dev/sdXZ

Note : Comme lors de la création, si plusieurs noms de périphériques sont donnés, les volumes de ces périphériques sont tous intégrés dans le groupe.

Rétrécissement

$ sudo lvm pvmove /dev/sdXZ
$ sudo lvm vgreduce <GroupName> /dev/sdXZ

Note : La commande pvmove permet de déplacer les données présentes sur le volume physique que l'on veut libérer sur les autres volumes du groupe. Si la place disponible sur les autres volumes physiques du groupe est insuffisante, il est impossible de retirer ce volume du groupe.

Note : Il est possible de retirer automatiquement tous les volumes inutilisés en donnant le paramètre -a au lieu de désigner manuellement les périphériques à libérer.

Redimensionnement d'un volume logique

Le redimensionnement d'un volume logique se fait avec la commande lvresize. Cette commande sait redimensionner elle-même le système de fichiers qui se trouve dans le volume, et faire les tests nécessaires afin d'éviter toute perte de données. Cette manipulation est donc maintenant assez simple, et peu dangereuse.

Il est possible de redimensionner de deux manières :

  • En donnant une taille absolue, qui devient la nouvelle taille du volume
  • En donnant la différence, positive ou négative, entre la taille actuelle du volume et la taille voulue.

Exemples :

$ # Définition de la taille du volume à 2 Go
$ sudo lvm lvresize -r -L 2G /dev/<GroupName>/<VolumeName>
$ # Augmentation de la taille de 500 Mo
$ sudo lvm lvresize -r -L +500M /dev/<GroupName>/<VolumeName>

Note : Attention à ne pas oublier le paramètre -r, qui dit à la commande lvresize de vérifier, et redimensionner, le système de fichiers contenu dans le volule logique.

Note : Dans le cas d'un rétrécissement, si le volume est monté, lvresize demandera de le démonter, cette opération ne pouvant pas être effectuée à chaud. Une fois l'opération terminée, le volume sera remonté automatiquement, il n'y a donc aucune étape supplémentaire.

Autres fonctionnalités

Je n'ai décrit ici qu'une partie des possibilités offertes par LVM. D'autres commandes existent, telles que pvremove/vgremove/lvremove pour supprimer les éléments, pvrename/vgrename/lvrename pour les renommer, etc.

La liste complète des commandes disponibles peut être obtenue avec la commabde sudo lvm help.