Mettre en œuvre LVM
par
popularité : 1%

Avec le gestionnaire de volume logique (LVM pour Logical Volume Manager), les administrateurs de serveurs disposent d’un outil simple à mettre en oeuvre pour ajouter, supprimer, modifier des partitions d’un ou de plusieurs disques durs à la volée ou à chaud.
Le gestionnaire de volume logique (LVM pour Logical Volume Manager) est une fonction présente depuis la version 2.4 du noyau Linux. Elle offre une gestion plus souple de l’espace des disques durs en interposant une couche supplémentaire entre le matériel et les systèmes de fichiers. Une fonctionnalité moins connue permet de réaliser des "instantanés" (snapshots) d’un volume logique en temps réel.
Ces snapshots permettent d’attacher une image, figée en lecture seule, du système de fichiers contenu sur le volume logique d’origine à un répertoire. Ils n’occupent pas de place sur le disque sinon celle nécessaire pour enregistrer les modifications qui ont lieu sur le système de fichiers original (qui, lui, n’a cessé d’être monté en écriture).
Principe de LVM
LVM permet de combiner plusieurs disques ou partitions (appelés volumes physiques ou PV pour Physical Volumes) au sein d’un groupe de volumes (ou VG pour Volume Group). Des volumes logiques (ou LV pour Logical Volumes) sont ensuite créés dans ce groupe de volumes. Ces volumes logiques sont assimilables à des partitions virtuelles sur lesquelles des systèmes de fichiers peuvent être créés.
Cela ajoute de la complexité, certes, mais également beaucoup de flexibilité. En effet, il est possible d’ajouter ou de supprimer « à chaud » des volumes physiques d’un groupe de volumes . La taille d’un volume logique peut également être modifiée en direct et, si le système de fichiers créé sur le volume logique supporte le redimensionnement en ligne [1], on peut augmenter la taille d’une partition sans interruption de service.
Il est même possible de déplacer les données d’un volume physique vers un autre (c’est-à-dire d’un disque réel vers un autre si ces volumes physiques sont sur des disques distincts) alors que les données sont en cours d’utilisation !
Mettre en oeuvre LVM
LVM est composé de deux parties : la première est un pilote de périphérique présent dans le noyau Linux, la seconde est un paquetage fournissant les commandes qui permettront de manipuler les volumes physiques, les groupes de volumes et les volumes logiques.
Le noyau standard livré avec les distributions les plus populaires est en général compilé avec la fonctionnalité LVM [2] [3].
Si vous compilez votre noyau vous-même, assurez-vous d’activer « Multiple devices driver support (RAID and LVM) » puis « Logical volume manager (LVM) support » dans le sous-menu « Multi-device support (RAID and LVM) » du programme de configuration du noyau (xconfig ou menuconfig).
Si vous rencontrez des problèmes lors d’une tentative de montage d’un snapshot sur un système de fichiers journalisé (ext3, reiserfs ou XFS, par exemple), vous aurez peut-être besoin d’appliquer le patch « VFS lock » disponible dans le répertoire PATCHES des sources de LVM (à télécharger sur le site de LVM). Vous devrez également jeter un oeil sur la commande xfs_freeze si vous utilisez XFS.
Les utilitaires en ligne de commande pour gérer LVM sont disponibles pour Debian dans les paquetages lvm-common et lvm10 et, pour Redhat, dans le paquetage lvm. Toutes les commandes relatives à LVM (excepté e2fsadm) commencent par « pv », « vg » ou « lv » selon qu’elles manipulent respectivement les volumes physiques, les groupes de volumes ou les volumes logiques.
Durant la procédure d’installation certaines distributions vous permettrons de créer des groupes de volumes et de les utiliser pour installer votre système. Si vous n’avez pas créé de groupes de volumes à ce moment-là ou si votre distribution ne le permettait pas, voici la marche à suivre pour créer volumes physiques, groupes de volumes et volumes logiques :
1) Créez une ou plusieurs partitions qui recevront autant de volumes physiques que nécessaire. Pour cela utilisez l’un des deux programmes suivants : fdisk ou cfdisk. Puis, affectez le type 0x8e (« Linux LVM ») aux partitions concernées. Pour la suite, nous considérerons que vous avez une partition dédiée à LVM sur chacun des disques hdb et hdc (partitions hdb1 et hdc1). Il est également possible de dédier des disques entier à LVM, consultez la page de manuel pvcreate(8) pour plus d’information.
2) Initialisez chacune des partitions dédiées à LVM, elles deviennent ainsi des volumes physiques :
3) Créez un groupe de volumes (nommé « vg01 » dans cet exemple) contenant les volumes physiques :
4) Créez un volume logique dans le groupe de volumes vg01, ici le nom du volume logique est lv01 et sa taille est de 2 Go (comme LVM nous permet d’étendre à volonté la taille des volumes logiques, n’utilisez pas tout l’espace disponible dans le groupe de volumes) :
Une fois le volume logique créé, LVM y associe un fichier spécial de type bloc à cet emplacement : « /dev/volume_physique/volume_logique ». Il est utilisable comme une partition sur un disque.
5) Formatez le volume logique et attachez-le à un répertoire (ici «
/mes_precieuses_donnees ») :
N’oubliez pas d’ajouter cette ligne dans le fichier /etc/fstab afin que ce système de fichiers soit remonté au prochain démarrage du système :
Réaliser un snapshot
Un snapshot est un volume logique particulier qui est caractérisé par un nom (comme tout volume logique), une taille et un volume logique d’origine. La taille représente dans ce cas l’espace qui sera utilisé pour enregistrer les données modifiées sur le volume logique d’origine qui, lui, reste « vivant ».
Comme il s’agit de créer un volume logique, c’est la commande lvcreate qui est utilisée. Par exemple, pour créer un snapshot nommé « sauvegarde » à partir du volume logique lv01, on utilisera la commande :
Nous pouvons donc désormais attacher le volume logique représentant le snapshot à un répertoire :
L’option « ro » est fournie à la commande mount afin d’éviter un message d’avertissement car, par définition, un snapshot ne permet que la lecture seule. Si vous utilisez XFS il sera nécessaire d’utiliser également l’option « nouuid ».
Pour supprimer un snapshot, il faut commencer par le détacher du répertoire sur lequel il est monté puis utiliser la commande lvremove (puisqu’il s’agit d’un volume logique).
Exemple d’utilisation pour la sauvegarde d’un système de fichiers
L’exemple suivant est le squelette d’un script shell permettant d’effectuer la sauvegarde d’un système de fichiers avec un minimum de temps d’arrêt des services. L’interruption de service ne dure, en effet, que le temps nécessaire à la commande lvcreate pour créer le snapshot (c’est-à-dire quelques secondes).
Références
La page de manuel lvm(8).
[1] Ext2 le permet via la commande ext2online, reiserfs via resize_reiserfs et XFS via xfs_growfs.
[2] Cependant, si vous utilisez une distribution Debian, vous devrez installer un paquetage du noyau 2.4 ou utiliser la saveur d’installation bf24 car la version du noyau installée par défaut est une 2.2.
[3] « saveur » est la traduction la plus courante pour « flavor » dans le contexte des différents noyaux/paquetages d’installation Debian. Si quelqu’un propose un terme plus approprié, je suis preneur.
Commentaires