LVM : Utilisation des LVM
Contents
- 1 Introduction
- 2 Créer une partition
- 3 Utilisation
- 3.1 Activer une partition LVM
- 3.2 Créer un Volume Group
- 3.3 Créer des volumes
- 3.4 Redimentionnement
- 3.5 Récupération des volumes
- 3.6 Exporter/Importer un VG
- 3.7 Scanner les nouveaux volumes LVM
- 3.8 Changement de disque
- 3.9 Controler la visibilité de ses volumes
- 3.10 Snapshot
- 3.11 Dumper la configuration
- 3.12 Visualiser les locks
- 3.13 FSCK à chaud sous ext3/4
- 4 Avoir un beau GUI
- 5 FAQ
- 6 Ressources
1 Introduction
La gestion par volumes logiques (en anglais, logical volume management ou LVM) est une méthode et un logiciel de découpage, de concaténation et d'utilisation des espaces de stockage d'un serveur. Il permet de gérer, sécuriser et optimiser de manière souple les espaces de stockage en ligne dans les systèmes d'exploitation de type UNIX/Linux.
On parle également de gestionnaire de volumes ou Volume Manager en anglais.
LVM n'étant pas très simple à utiliser, et ne le maniant pas non plus tous les jours, j'me suis dis qu'une petite doc était indispensable. Je la remplierais au fur et à mesure de mes besoins.
Voici les principaux fichiers et dossiers utilisés par LVM :
File/Folder | Description |
---|---|
/etc/lvm/lvm.conf | Fichier de configuration d'LVM |
/etc/lvm/cache.cache | Fichier de cache des noms des devices |
/etc/lvm/backup | Dossier contenant les backups automatiques des metadata des VG |
/etc/lvm/archive | Dossier contenant les archives automatiques des metadata des VG |
/var/lock/lvm | Fichier de lock permettant d'éviter le lancement simultané de plusieurs outils LVM, évitant la corruption de metadata |
2 Créer une partition
Lorsque vous utilisez fdisk pour créer une partition et l'assigner en tant qu'LVM, il est possible qu'elle ne s'affiche pas dans les devices. Pour éviter de rebooter afin de la voir, il suffit de lancer cette commande sur le disque en question (sda par exemple) :
partx |
partx -a /dev/sda |
Si ensuite vous avez besoin de l'ajouter dans le fstab, il est préférable d'utiliser les UUID. Pour les repérer, il existe une commande :
Il ne vous reste plus qu'a rajouter une ligne de ce type dans le fstab :
/etc/fstab |
UUID=fd292b5c-091f-4a2f-b694-7d881e2eaa54 /mnt ext4 defaults 0 0 |
3 Utilisation
3.1 Activer une partition LVM
Pour activer une partition LVM, nous allons utiliser pvcreate :
pvcreate |
pvcreate /dev/sda1 |
Vous pouvez voir ensuite l'état avec la commande pvdisplay.
3.2 Créer un Volume Group
Nous devons ensuite créer un VG si nous voulons pouvoir créer ensuite des volumes :
vgcreate |
vgcreate mon_vg /dev/sda1 |
Vous devez mettre ici le nom du VG que vous souhaitez à la place de 'mon_vg'.
3.3 Créer des volumes
Pour créer les volumes :
lvcreate |
lvcreate -n mon_lv1 -L 5G mon_vg |
Il faut donc :
- mon_lv1 : le nom du LV souhaité
- -L 5G : la taille du volume group
- mon_vg : le nom du VG sur lequel le LV doit être stocké.
3.4 Redimentionnement
3.4.1 Augmentation
Pour augmenter la taille d'une partition :
lvextend |
lvextend -L +10G /dev/mapper/ma_partition |
Puis il ne reste plus qu'à redimensionner le filesystem (xfs_grow par exemple pour le XFS)
3.4.2 Réduction
Diminuer la taille d'un système de fichier est un peu plus délicat. En effet, si jamais on commet l'erreur de diminuer la taille du volume logique avant de réduire la taille du contenu (le système de fichier lui même) alors on détruit son système de fichier... pareil si on réduit trop la taille du volume logique.
Pour éviter tout risque, je conseille d'utiliser la méthode suivante (un peu plus longue que la normale, mais beaucoup plus fiable) :
- Réduire la taille du système de fichier plus que nécessaire
- Réduire la taille du volume logique pour lui donner exactement la nouvelle taille souhaitée.
- Agrandir le système de fichier pour qu'il occupe tout l'espace disponible.
De cette façon, le risque d'erreur est beaucoup plus faible.
3.4.2.1 Reduction du FS
Si vous ne souhaitez pas faire cette opération à la main, utilisez un live CD avec gparted inclu.
Attention, tous les systèmes de fichiers ne peuvent pas être "réduits". Pour ext3 et reiserfs, cela se fait très bien. Voila un exemple avec reiserfs...
df |
df -h |
Dans cet exemple, le volume "ca", se trouve dans le groupe de volume svg. Sur ce volume logique existe un système de fichier en reiserfs d'une taille de 512 Mo. Or, je n'utilise que 230 Mo. De plus, je sais que je n'ajouterai jamais rien dans ce volume. Je désire donc diminuer sa taille à 256 Mo (pour se laisser une marge de sécurité, et parce que ca fait un compte rond ;) Je commence par démonter le système de fichier :
umount |
umount /home/ca |
Ensuite je vais donc diminuer la taille du système de fichier, plus que nécessaire. Plutôt que de retirer 256 Mo, je vais donc en retirer 258. Je peux le faire, car il reste 283 Mo de libre... Evidement, retirer plus de place qu'il n'en reste serait suicidaire...
resize_reiserfs |
resize_reiserfs -s -258M /dev/svg/ca |
ATTENTION : Si vous êtes en ext3, on ne peut pas indiquer la quantité d'espace à enlever, il faut donner la taille finale voulue (512-258). la bonne commande aurait été :{{
resize2fs |
resize2fs -p /dev/svg/ca 254M |
Il est possible qu'il vous demande de faire cette commande avant. Si c'est le cas, faites le :
e2fsck |
e2fsck -f /dev/svg/ca |
3.4.2.2 Reduction du LV
Dans le cas ou vous ne verriez pas le LV dans /dev/mapper, alors il faudra l'activer :
lvchange |
lvchange -a y /dev/svg/ca |
Note: pour désactiver un LV, il faut change le "y" en "n".
Maintenant que le système de fichier à diminué, il faut donner au volume logique sa nouvelle taille, 256 Mo au lieu de 512 :
Plus qu'une derniere étape, on indique au système de fichier qu'il peut s'étendre automatiquement pour prendre tout l'espace disponible. Il devrait donc pouvoir grandir de 2 Mo. Il trouvera tout seul la taille exacte en nombre de bloc etc... On n'a pas pris le risque de faire une erreur en le réduisant "pile poile" de la même taille que le volume logique, car la moindre erreur aurait pu corrompu le système de fichier à quelques blocs prés.
resize2fs |
resize_reiserfs /dev/svg/ca |
ou, si vous utilisez ext3 :
resize2fs |
resize2fs /dev/svg/ca |
Il ne reste plus qu'a remonter le système de fichier :
$ mount /dev/svg/ca /home/ca $ df -h | grep ca /dev/mapper/svg-ca 256M 230M 27M 90% /home/ca |
C'est gagné... Le système de fichier fait maintenant 256 Mo, et nous avons toujours nos 230 Mo de données à l'intérieur. Conclusion : Jouer avec la taille des volumes logiques fonctionne très bien, il faut juste prendre son temps et ne pas faire n'importe quoi :)
3.5 Récupération des volumes
Si je suis en mode restauration, et je souhaite monter mes filesystems, comment je fais ?
On s'assure que le modules est correctement chargé :
modprobe |
modprobe dm-mod |
On scan tous les LVM :
vgscan vgchange -ay |
Et on monte le LV :
mkdir -p /mnt/VolGroup00/LogVol00 mount /dev/VolGroup00/LogVol00 /mnt/VolGroup00/LogVol00 |
Une fois terminé, vous pouvez désactiver votre volume :
vgchange |
vgchange -an VolGroup00 |
3.6 Exporter/Importer un VG
- Vous pouvez démonter complètement un volume group comme ceci :
vgexport |
vgexport <mon_vg> |
Cela vous assurera que plus rien n'est monté et actif sur votre machine.
- Pour le remonter, c'est assez simple :
vgimport |
vgimport <mon_vg> |
Puis activez le vg pour afficher les volumes :
vgchange |
vgchange -ay <mon_vg> |
3.7 Scanner les nouveaux volumes LVM
Vous pouvez vérifier qu'il y a un nouveau volume en scannant les PV :
pvscan |
pvscan |
Les nouveaux voluments s'afficheront alors.
3.8 Changement de disque
Si vous avez un VG avec plusieurs disques dedans. L'un d'entre eux est défectueux et vous avez ajouté son remplaçant dans le VG. Il existe une solution à chaud permettant retirer le disque défectueux du VG sans perte de données :
pvmove |
pvmove /dev/<mon_disque_defectueux> |
Il ne reste plus qu'à retirer le disque.
3.9 Controler la visibilité de ses volumes
Vous pouvez désactiver la visibilité d'un volume comme ceci :
lvchange |
lvchange -an mon_lv |
Vous pouvez activer la visibilité d'un volume de cette façon :
lvchange |
lvchange -ay mon_lv |
Vous pouvez forcer un lv à être accessible qu'en lecture :
lvchange |
lvchange -pr mon_lv |
Ou en écriture :
lvchange |
lvchange -pw mon_lv |
3.10 Snapshot
3.10.1 Création d'un Snapshot
Pour créer un snapshot d'un LV existant :
lvcreate |
lvcreate -s -n datasnap -L +4G vgdata/lvdata |
Ici je viens créer un Snapshot de 4G.
3.10.2 Supprimer le snapshot
Si je suis satisfait des mdoifications effectuées, je souhaites supprimer le snapshot:
lvremove |
lvremove /dev/vgdata/datasnap |
3.10.3 Rollback des modifications
Si je ne suis pas satisfait des modifications et souhaites faire un rollback depuis le snapshot, il va falloir démonter la partition et revert:
lvconvert |
umount <mountpoint> lvconvert --merge -v vgdata/datasnap lvchange -an /dev/vgdata/data lvchange -ay /dev/vgdata/data mount /dev/vgdata/data <mountpoint> |
L'ancienne partition sera remontée au bon endroit.
3.11 Dumper la configuration
Vous pouvez avoir besoin de dumper la configuration d'LVM. Pour ce faire, lancez ceci :
3.12 Visualiser les locks
Pour visualiser les locks actuels sur les LVM, utilisez cette commande :
3.13 FSCK à chaud sous ext3/4
Vous en aviez rêver hein ? Il est effectivement possible de faire du fsck à chaud grâce aux snapshots LVM. Voici un petit script qui permet de scanner tous les LV de type ext3 et ext4 et les dégragmenter (Note : Il vous faut 10% d'espace libre par rapport au plus gros LV dans vos VG) :
4 Avoir un beau GUI
Bon, pour les connaisseurs de LVM et de Red Hat, vous connaissez certainement la commande system-config-lvm. Pour debian ça serait cool hein si on pouvaient l'avoir ! Et bah bibi got the solution :
Ya plus qu'a lancer et faire "ouaaaaaaa" :
system-config-lvm |
system-config-lvm |
5 FAQ
5.1 J'ai un conflit d'UUID
Si vous avez la malchance de tomber sur un conflit d'UUID, vous pouvez en régénérer via la commande suivante :
uuidgen |
uuidgen |
6 Ressources
Técharger la documentation LVM
Doccumentation for beginner
Documentation on LVM Snapshots