{{tag>lvm sysadmin redimensionnement partition lvcreate pvcreate}}
====== LVM ======
Création et utilisation de volumes LVM.
Nous nous appuierons sur une Debian satble (lenny).
Je ne vais pas décrire LVM ici, d'autres sites comme wikipedia font ca bien mieux que moi.
Voici cependant les principes généraux :
* LVM permet de créer des partitions avec souplesse : agrandisement, réduction, ...
* Ces partitions sont "créées" sur un "groupe de volume" spécifique.
* Ces memes groupes de volumes sont constitués d'un ou plusieurs volumes physiques (donc eventuellement répartis sur plusieus disques)
* Ces partitions peuvent ensuite etre formatées/montées/exportées comme n'importe quelle partition physique.
* Plusieurs volumes physiques peuvent etre agrégés pour n'en former qu'un seul.
* Vous ne maitrisez pas l'emplacement réel physique de ces partitions sur le volume physique.
* Les pertes de performance par rapport a une partition physique native sont tres faibles.
* LVM permet d'effectuer des snapshots des partitions.
===== Préparatifs =====
Pour utiliser LVM il faut installer lvm (qui l'eu crut :p ) :
apt-get install lvm2
===== Creation du volume LVM =====
* créer une partition de type "Linux LVM" ou "8E" via votre outil préféré (fdisk, cfdisk, ....). \\ Dans mon cas la partition /dev/hda2 sera utilisée
* créer le //physical volume ( PV en abrégé)// : \\ répéter l'opération sur toutes les partitions que vous voudrez utiliser pour LVM
pvcreate /dev/hda2
* on peut vérifier la création de ce PV par la commande pvdisplay qui devrait retourner quelque chose de similaire a :
# pvdisplay
"/dev/hda2" is a new physical volume of "67,06 GB"
--- NEW Physical volume ---
PV Name /dev/hda2
VG Name
PV Size 67,06 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID jSMXZ7-qY1V-aeYR-Ykfk-hzjJ-xG4R-LzlSgi
* créer le "groupe de volumes( VG en abrégé)" baptisé vg0. Dans notre cas, un seul //physical volume// le composera :
vgcreate vg0 /dev/hda2
Si vous vouliez utiliser plus de //physical volume// au sein de ce groupe de volume, il suffit de les lister, comme par exemple :vgcreate vg0 /dev/hda2 /dev/sda2
* pour vérifier cette creation, on peut utiliser la commande vgdisplay, qui devrait afficher quelque chose comme :
# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 67,06 GB
PE Size 4,00 MB
Total PE 17167
Alloc PE / Size 0 / 0
Free PE / Size 17167 / 67,06 GB
VG UUID 3lkzGV-F2YT-70zt-oZw5-pqTQ-O8ss-RpjkgV
* On peut enfin passer à la suite et créer nos premieres partitions :
===== Creation de partitions LVM =====
Pour la creation de partition, il faut utiliser l'outil lvcreate. \\ Je vous conseille de regarder ce que donne un "lvcreate --help" pour les options, mais voici les plus utilisées :
* -n|--name LogicalVolumeName: le nom du //Logical Volume// que vous crééez
* -L|--size LogicalVolumeSize[kKmMgGtTpPeE]: la taille du LV (suivi de l'unité : par exemple 4G pour 4 Go)
Par exemple pour créer un volume de 12Go nommé "debian-backports" sur le VolumeGroup vg0 précédement créé :
lvcreate -n debian-backports -L 12G vg0
Vous pouvez vérifier que le LV a bien été créé avec la commande lvdisplay, qui devrait vous donner quelque chose comme :
# lvdisplay
--- Logical volume ---
LV Name /dev/vg0/debian-backports
VG Name vg0
LV UUID VsIPFa-IFGS-aJLt-6Zmt-8Li4-t94P-jxtvgE
LV Write Access read/write
LV Status available
# open 0
LV Size 12,00 GB
Current LE 3072
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:0
===== Utilisation de cette partition =====
Cette partition peut maintenant être accédée et utilisée via "/dev/vg0/debian-backports".
Toutes les opérations possibles avec une partition "classique" le sont aussi avec celle la.
Par exemple pour la formater en ext3 :
mkfs.ext3 /dev/vg0/debian-backports
===== Opérations de redimensionnement des partitions =====
Il faut voir la partition LVM comme un "tiroir" qui contiendrait le systeme de fichier
moralité :
* pour agrandir une partition, il faut d'abord agrandir ce tiroir, puis ensuite redimensionner au niveau systeme de fichier
* pour réduire une partition, il faut d'abord diminuer la taille du systeme de fichier, puis ENSUITE celle de la partition
Maitenant que vous etes prévenus ....
attention a ne pas reduire une partition à moins d'espace que l'espace actuellement occupé dessus.
==== Agrandissement ====
L'agrandissement d'un LV LVM est aisée et ne comporte pas trop de risques :
- demontage de la partition :
umount /mnt/debian-backports
- agrandissement de la partition :
lvresize -L 13G /dev/vg0/debian-backports
- cette commande recommande d'effectuer un fsck sur cette partition, ce qu'il faut faire :
e2fsck -f /dev/vg0/debian-backports
- relancer ensuite la commande d'au dessus pour l'agrandissement
- redimensionner ensuite le systeme de fichier :
resize2fs /dev/vg0/debian-backports
- vous pouvez ensuite remonter la partition et constater que sa taille a augmenté :
mount /dev/vg0/debian-backports /mnt/debian-backports
On peut passer une taille d'agrandissement a lvresize avec un + dans l'option -L, comme par exemple -L+3G pour agrandir de 3 Go.Je vous conseille d'ailleurs cette utilisation qui évite une réduction intempestive
On peut aussi utiliser la commande lvextend, qui permet par exemple d'agrandir le LV en utilisant tout l'espace non alloué sur le VG : lvextend -l +100%FREE /dev/vg0/debian-backports
==== Réduction ====
Attention la réduction est une opération à risque, faites des sauvegardes avant
S'assurer que l'on peut : vérifier l'espace réellement utilisé grace a "df -h", comme par exemple :
# df -h /export/www
Sys. fich. Taille Util. Dispo Uti% Monté sur
/dev/mapper/VolGroupe-WWW 9,8G 801M 9,0G 9% /export/www
Il y a de l'espace disponible donc on va pouvoir réduire à disons 5 Go.
Pour se faire :
- Démonter la partition :# umount /export/www/
- Faire un fsck : # e2fsck -f /dev/VolGroupe/WWW
ce qui donne par exemple :# e2fsck -f /dev/VolGroupe/WWW
e2fsck 1.42.5 (29-Jul-2012)
Passe 1 : vérification des i-noeuds, des blocs et des tailles
Passe 2 : vérification de la structure des répertoires
Passe 3 : vérification de la connectivité des répertoires
Passe 4 : vérification des compteurs de référence
Passe 5 : vérification de l'information du sommaire de groupe
/dev/VolGroupe/WWW : 8913/1310720 fichiers (19.6% non contigüs), 278712/2621440 blocs
- Réduire la partition avec resize2fs à une taille (**supérieure a la taille des données**) légèrement inférieure à la taille finale, ici on choisit 4 Go pour une taille finale de 5 Go :# resize2fs -p /dev/VolGroupe/WWW 4G
par exemple : # resize2fs -p /dev/VolGroupe/WWW 4G
resize2fs 1.42.5 (29-Jul-2012)
En train de redimensionner le système de fichiers sur /dev/VolGroupe/WWW à 1048576 (4k) blocs.
Début de la passe 2 (max = 198072)
Relocalisation de blocs XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Début de la passe 3 (max = 80)
Examen de la table d'i-noeuds XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Début de la passe 4 (max = 433)
Mise à jour des références d'i-noeudsXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Le système de fichiers /dev/VolGroupe/WWW a maintenant une taille de 1048576 blocs.
- Réduire le LV **à une taille supérieure à celle de la réduction resize2fs que l'on vient d'effectuer** :# lvresize /dev/VolGroupe/WWW --size 5G
et accepter le message d'avertissement, ce qui donne :# lvresize /dev/VolGroupe/WWW --size 5G
WARNING: Reducing active logical volume to 5,00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce WWW? [y/n]: y
Reducing logical volume WWW to 5,00 GiB
Logical volume WWW successfully resized
- Réagrandir la partition pour qu'elle occupe toute la taille du LV en utilisant # resize2fs -p /dev/VolGroupe/WWW
comme par exemple : # resize2fs -p /dev/VolGroupe/WWW
resize2fs 1.42.5 (29-Jul-2012)
En train de redimensionner le système de fichiers sur /dev/VolGroupe/WWW à 1310720 (4k) blocs.
Début de la passe 1 (max = 8)
Extension de la table d'i-noeudsXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Le système de fichiers /dev/VolGroupe/WWW a maintenant une taille de 1310720 blocs.
- Lancer un fsck, pour être sur (avec l'option -f): # e2fsck -f /dev/VolGroupe/WWW
e2fsck 1.42.5 (29-Jul-2012)
Passe 1 : vérification des i-noeuds, des blocs et des tailles
Passe 2 : vérification de la structure des répertoires
Passe 3 : vérification de la connectivité des répertoires
Passe 4 : vérification des compteurs de référence
Passe 5 : vérification de l'information du sommaire de groupe
/dev/VolGroupe/WWW : 8913/655360 fichiers (18.7% non contigüs), 257511/1310720 blocs
- Si tout s'est bien passé on peut maintenant remonter la partition et vérifier la taille finale :# mount /export/www/
# df -h /export/www/
Sys. fich. Taille Util. Dispo Uti% Monté sur
/dev/mapper/VolGroupe-WWW 4,8G 798M 4,1G 17% /export/www