Mettre en œuvre LVM

ou comment je sauvegarde désormais Gaia en cas de crash disque
jeudi 19 février 2004
par  Sébastien Namèche
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

Le site de LVM

Le LVM HOW-TO

La page de manuel lvm(8).

Un article sur le site d’IBM - Partie 1 - Partie 2


[1Ext2 le permet via la commande ext2online, reiserfs via resize_reiserfs et XFS via xfs_growfs.

[2Cependant, 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

Logo de Sébastien Namèche
lundi 25 septembre 2006 à 18h14 - par  Sébastien Namèche

Effectivement, il n’est pas nécessaire d’arrêter les services pour réaliser un instantané LVM. Cependant, exécuter une sauvegarde des applications « à chaud » ne garantie pas la cohérence des données stockées dans les fichiers ouverts au moment de la création de l’instantané. C’est pourquoi il est nécessaire de les arrêter afin de ne prendre aucun risque.
Certains SGBDR permettent cependant d’indiquer que des fichiers doivent être « gelés » le temps d’une sauvegarde. Par exemple, Oracle avec la commande « alter tablespace backup »). Lorsque qu’un tablespace Oracle est en mode « backup », Oracle n’y écrit aucune donnée mais la base de données est toujours accessible (les modifications sont enregistrées temporairement dans les Rollback segments).

lundi 25 septembre 2006 à 14h01 - par  Gilles

Article trÚs intéressant. Une petite question cependant : sur le LVM howto, ils ne parlent pas d’arrêter les services avant de faire le snapshot. LVM ne bloque pas l’accÚs en écriture le temps de la création du snapshot ?

Logo de domi
mardi 10 mai 2005 à 16h15 - par  domi

Tu crées ton "physical volume" dans la partition en question.
Tu peux ensuite faire des "logical volume" dedans, dont il sera possible de faire varier la taille.

lundi 4 avril 2005 à 16h15

Merci pour la doc compléte

Arnaud

Logo de mess-mate
samedi 19 février 2005 à 11h36 - par  mess-mate

Quand on lit le howto de lvm, il est conseillé d’avoir qu’une seule partition. A part la /boot biensur.
Etant donné que l’intérêt de lvm est justement de pouvoir par exemple élargir une partition qui est devenue trop petite, on se demande à quoi cela sert d’installer lvm.
J’ai pourtant lvm d’installé sur une machine qui posséde 2 petits dd et c’est le seul avantage que j’ai trouvé à lvm.

Logo de Yvonnick Esnault
lundi 14 juin 2004 à 23h25 - par  Yvonnick Esnault

Avec un kernel 2.6.* sous Debian, il faut installer le paquet lvm2...

Annonces

Annuaire LibreNord

Retrouvez l’annuaire de logiciels libres créé par l’association Club Linux Nord-Pas de Calais sur le site suivant http://www.librenord.org