Les LVM sous linux
Par ulysse, samedi 10 juin 2006 à 00:24 :: libre linux LVM snapshot:: #28 :: rss

Mon cerveau a été soumis a rude épreuve cette semaine avec l'apprentissage et les tests de LVM. Oui je sais, vous allez me dire que c'est pas si compliqué que ça, qu'il y a plein de sources de docs et tout et tout mais quand même. Quand on est habitué a cliquer sur suivant suivant, a rentrer un numéro de série et a cliquer sur terminer (comme dirait minimoi) bha les LVM ça fait mal. Surtout aux cerveaux imbibés de rhum...
Autant vous prévenir si vous n'êtes pas adeptes de GNU/Lesbian/Linux depuis au moins 5 génération ou si pour vous RMS veut dire Reims Management School (en plus c'est des concurrents), bha ça va pas vous passionner...
Sinon, y a ptet une chance que ce billet serve a quelqu'un?!
LVM concepts de base, Snapshot et redimensionnement de partitions
Le LVM, c'est quoi qu'est ce? C'est une maniére de gérer l'espace disque pour pouvoir gérer la taille des partitions sans avoir a arréter des machines en production. Bon ça c'est surtout si vous utilisez reiserFS en fait, en etx2 ou ext3 vous ne pourrez qu'agrandir un systéme de fichier monté, pas le retrécir. Et ReiserFS, c'est bien sauf que dump ne marche pas sous reiserFS (et même si linus pense que dump c'est dla m**de, bha plein de gens l'utilisent quand même, na!).
Un LVM est composé de trois "objets" différents:
- Le Volume Group
- Le ou les Physical Volume
- Le ou les Logical Volume
Un Volume Group est juste un ensemble contenant les deux autres. la commande vgdisplay affiche la liste des volume group Toutes les commandes concernant les volumes group commencent par vg...
Les Physical Volumes sont des disques ou des partitions Par exemple /dev/cciss/c0d0p2 ou /dev/cciss/c0d1 la commande pvdisplay affiche la liste des physical volume. Toutes les commandes concernant les physical volumes commencent par pv...
Les Logical Volumes sont l'équivalent LVM des partitions. Sauf qu'un logical volume peut s'étendre sur plusieurs disques et ou partitions. La commande lvdisplay affiche la liste des logical volumes. Toutes les commandes concernant les logical volumes commencent par lv...
L'intérêt est que l'on peut modifier la taille des logical volume sans perte de données (voir a chaud dans le cas d'un agrandissement). Le démontage préalable est tout de même recommandé.

Changer la taille de la partition / de 30Go a 8Go:
#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol03
30G 2.6G 26G 10% /
Le logical volume a modifier est donc /dev/mapper/VolGroup00-LogVol03.
Il faut redémarrer la machine avec un cd d'installation en mode rescue et lui dire de monter les volumes (sinon les devices ne sont pas créés dans /dev).
Commencez par démonter le volume:
#umount /mnt/sysimage
si vous avez démarré sur un cd centos
forcer un fsck
#e2fsck -f /dev/mapper/VolGroup00-LogVol03
sinon un mount devrait vous aider sur la localisation de votre /
Redimensionner le système de fichier (si c'est de l'ext3 ou de l'ext2):
#resize2fs /dev/mapper/VolGroup00-LogVol03 8G -p
Le "-p" sert a afficher une barre de progression.
Redimensionner le logical volume
#lvm lvreduce --size 8G /dev/VolGroup00/LogVol03
Ensuite il suffit de redémarrer la machine, un fsck est programmé au boot et normalement tout fonctionne correctement.
Création d'un repertoire /data sur un nouveau disque vierge

Il faut tout d'abord créer le repertoire:
#mkdir /data
ensuite, il faut créer un phyical volume associé au nouveau disque:
#pvcreate /dev/cciss/c0d1
On peut verifier sa présence avec #lvdisplay
- NEW Physical volume -
PV Name /dev/cciss/c0d1
VG Name
PV Size 67.81 GB / not usable 0
Total PE 2170
Comme on le voit il n'est pour l'instant associé a aucun volume group
C'est ce que nous allons faire avec vgextend
#vgextend /dev/cciss/c0d1 VolGroup00
On peut verifier avec pvdisplay qu'il est bien dans le volume group
Ensuite on crée le logical volume
#lvcreate -l 2170 -n LogVol05 VolGroup00 /dev/cciss/c0d1
le -l est le nombre de physical extent (PE affichés dans lvdisplay)
ensuite vient le -n suivit du nom du logical volume
le volume group auquel il appartient et enfin le physical volume sur
lequel on veut créer le logical volume.
Dans notre cas on veut remplir totalement le disque c0d1 avec ce logical
volume, on a vu précédemment que la taille du physical volume était de
67,81GB la commande
#lvcreate -L 67G -n LogVol05 VolGroup00 /dev/cciss/c0d1
aurait donc été moins précise, nous aurions laissé de coté un peu
d'espace disque.
On crée ensuite le systéme de fichier:
#mke2fs -L "/data" /dev/VolGroup00/LogVol05
On ajoute le journal
#tune2fs -j /dev/VolGroup00/LogVol05
on peut maintenant monter le nouveau disque dans /data
#mount /dev/VolGroup00/LogVol05 /data
et modifier le fichier /etc/fstab pour que le systéme de fichier soit
monté en cas de reboot
Il faut ajouter une ligne de ce genre
/dev/VolGroup00/LogVol05 /data ext3 defaults 1 2
Snapshots

Les snapshots sont des volumes logiques permettant d'effectuer une sauvegarde cohérente d'un autre volume logique du même volume group.
A la création d'un snapshot, celui ci prend une "photo" du volume logique cible (ce qui est quasi immédiat) et commence a enregistrer les modifications apportées au volume logique cible.
Avantage des snapshots: Les snapshots sont un outil de sauvegarde. Ils permettent de stocker une image statique d'un volume logique a un instant t. On peut ensuite effectuer une sauvegarde du snapshot, qui contiendra les données présentes sur le volume cible a la création du snapshot.
Limite des snapshots: Les snapshots NE SONT PAS une sauvegarde d'un volume logique, ils enregistrent uniquement les modifications apportées au volume cible, ils ne contiennent pas les données de celui ci; de plus ils sont non persistants, c'est a dire qu'ils disparaissent en cas de reboot.
En cas de crash du disque dur contenant le volume cible, le snapshot ne vous sera d'aucune utilité. Par contre ils seront utiles en cas de suppression de fichiers non désirée sur le volume logique cible.
Une idée très répandue sur le net veut que la taille d'un snapshot doive être égale a environ 15-20% de la taille du volume logique cible. Ces approximations sont totalement infondées, la taille nécessaire a un snapshot dépend de l'activité sur le volume logique cible pendant la durée de vie de ce snapshot. La suppression de toutes les données sur le volume logique cible demandera par exemple un snapshot d'une taille au moins égale a la taille du volume logique cible.
La taille d'un snapshot doit donc être calculée suivant l'estimation du volume de données écrit sur le lecteur cible pendant la durée de votre sauvegarde. Dans la plupart des cas cela nécessitera bien moins de 15%...
Création du snapshot:
Un snapshot se crée avec lvcreate comme un volume logique normal
#lvcreate -L 100m -s --name snapshot /dev/VolumeGroup00/LogVol05
L'option -s spécifie le type "snapshot" et le dernier argument doit être le chemin du volume logique cible.
L'option -L spécifie la taille suivie de la lettre correspondant a l'unité...
Ensuite on peut le monter pour accéder aux données:
#mount /dev/mapper/VolGroup00-snapshot /mnt/snapshot
Une fois la sauvegarde effectuée, il suffit de le démonter
#umount /mnt/snapshot
et de le supprimer (sinon les modifications sur le volume logique cible
continuent a être enregistrées).
#lvremove /dev/VolGroup00/snapshot
Références: Concepts de base en français: chez léa.
FAQ quasi exhaustive sur le LVM (mais très légère sur les snapshots)
Les archives de LA mailing list sur LVM:
Une bonne explication de ce que sont les snapshots:
Je vous invite a corriger toutes mes âneries si vous êtes balaises en LVM ici en commentaire ou sur l'article de wikipedia
Commentaires
1. Le lundi 12 juin 2006 à 12:45, par juju
Réponse de ulysse le lundi 12 juin 2006 à 16:25
2. Le vendredi 21 juillet 2006 à 17:19, par ploum
Réponse de ulysse le lundi 24 juillet 2006 à 14:16
3. Le samedi 23 février 2008 à 21:37, par mrbark
Réponse de ulysse le jeudi 28 février 2008 à 11:41
4. Le samedi 8 mars 2008 à 09:41, par phil
Réponse de ulysse le mardi 11 mars 2008 à 17:50
5. Le mardi 29 avril 2008 à 09:51, par kade
Ajouter un commentaire