Utilisation de LVM
pour logical volume manager
Notions basiques
Comme dit dans le chapeau, LVM2 vous permet de pouvoir créer des partitions s’étendant sur plusieurs disques en les regroupant en volumes virtuels. Il permet également de pouvoir agrandir la taille des partitions existantes facilement [1 ]. Cela permet d’avoir une gestion de disque bien plus scalable car l’ajout ou la suppression d’espace est très facile et permet d’agrandir les ressources disponibles sur un système sans avoir à repartitionner toute la machine (et la plupart du temps réinstaller la machine).
Physical volumes and volume groups
La méthode utilisée par LVM2 pour permettre de gérer plusieurs disques en tant qu’une seule même unité est de regrouper toutes les partitions que l’on souhaite utiliser avec LVM2 dans un ou plusieurs "volume groups".
Pour cela, il est nécessaire de créer un "physical volume", opération qui premet de préparer une partition, un disque entier dans un format que LVM2 utilisera plus tard pour stocker les données.
Cela se fait au moyen de la commande pvcreate.
Par exemple si j’ai un disque de 6.4Go situé en /dev/hdb et un disque de 40Go en /dev/hde, je les initialiserais de la façon suivante :
osiris ~ # pvcreate /dev/hdb
Physical volume "/dev/hdb" successfully created
osiris ~ # pvcreate /dev/hde
Physical volume "/dev/hdb" successfully created
Nous pouvons vérifier que les deux physical volumes sont bien préparés en utilisant la commande pvdisplay ce qui retournerait :
livecd ~ # pvdisplay
--- NEW Physical volume ---
PV Name /dev/hde
VG Name
PV Size 37.27 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID f0iIbU-ayPe-kpoy-d3bP-hfDP-JqPO-5MVLT7
--- NEW Physical volume ---
PV Name /dev/hdb
VG Name
PV Size 6.01 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID yV0Qht-jGSe-jdDo-jErn-cgYi-tbR6-ITqrz1
Nous avons donc deux disques préparés pour l’utilisation dans un volume group. Il est maintenant nécessaire de créer un volume group de la façon suivante (nous lui donnerons le nom lvmspace)
osiris ~ # vgcreate lvmspace /dev/hdb
Volume group "lvmspace" successfully created
Le volume group est maintenant créé et totalise une taille de 6.01Go, ce que nous pouvons vérifier avec la commande vgdisplay :
osiris ~ # vgdisplay
--- Volume group ---
VG Name lvmspace
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 6.00 GB
PE Size 4.00 MB
Total PE 1537
Alloc PE / Size 0 / 0
Free PE / Size 1537 / 6.00 GB
VG UUID W7zp0w-pYZk-xkg1-9u37-9kiI-30uM-yA6Yji
La prochaine opération permettra d’étendre la taille du volume group avec la taille du disque /dev/hde.
osiris ~ # vgextend lvmspace /dev/hde
/dev/cdrom: open failed: Read-only file system
/dev/cdrom: open failed: Read-only file system
Attempt to close device '/dev/cdrom' which is not open.
Volume group "lvmspace" successfully extended
Ne prêtez pas attention aux messages concernant le lecteur cd.
Voici une représentation de l’opération que l’on vient de réaliser, à savoir cumuler les deux espaces disques physiques dans un disque virtuel.
Nous pouvons donc vérifier que la taille du volume group à bien été augmentée :
osiris ~ # vgdisplay
--- Volume group ---
VG Name lvmspace
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 43.27 GB
PE Size 4.00 MB
Total PE 11078
Alloc PE / Size 0 / 0
Free PE / Size 11078 / 43.27 GB
VG UUID W7zp0w-pYZk-xkg1-9u37-9kiI-30uM-yA6Yji
On peut voir maintenant avec pvdisplay que les disques ont été totalement affectés au volume group.
osiris ~ # pvdisplay
--- Physical volume ---
PV Name /dev/hdb
VG Name lvmspace
PV Size 6.00 GB / not usable 0
Allocatable yes
PE Size (KByte) 4096
Total PE 1537
Free PE 1537
Allocated PE 0
PV UUID yV0Qht-jGSe-jdDo-jErn-cgYi-tbR6-ITqrz1
--- Physical volume ---
PV Name /dev/hde
VG Name lvmspace
PV Size 37.27 GB / not usable 0
Allocatable yes
PE Size (KByte) 4096
Total PE 9541
Free PE 9541
Allocated PE 0
PV UUID f0iIbU-ayPe-kpoy-d3bP-hfDP-JqPO-5MVLT7
Maintenant que nous avons un espace disque virtuel utilisable, nous allons pouvoir créer des partitions sur cet espace afin de pouvoir les utiliser. Commençons par créer une partition, que l’on appelle logical volume lorsque l’on utilise LVM, nommée home d’une taille de 7Go avec la commande lvcreate.
osiris ~ # lvcreate -L 7G -n home lvmspace
Logical volume "home" created
Nous pouvons voir les détails du résultat de l’opération précédente avec la commande lvdisplay.
osiris ~ # lvdisplay
--- Logical volume ---
LV Name /dev/lvmspace/home
VG Name lvmspace
LV UUID icrus5-H10v-GqTG-NW0L-cwUR-FW2P-T5eqy1
LV Write Access read/write
LV Status available
# open 0
LV Size 7.00 GB
Current LE 1792
Segments 2
Allocation inherit
Read ahead sectors 0
Block device 253:0
Nous pouvons également constater que le logical volume créé plus tot occupe tout l’espace de /dev/hdb et une petite partie de /dev/hde.
osiris ~ # pvdisplay
--- Physical volume ---
PV Name /dev/hdb
VG Name lvmspace
PV Size 6.00 GB / not usable 0
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 1537
Free PE 0
Allocated PE 1537
PV UUID yV0Qht-jGSe-jdDo-jErn-cgYi-tbR6-ITqrz1
--- Physical volume ---
PV Name /dev/hde
VG Name lvmspace
PV Size 37.27 GB / not usable 0
Allocatable yes
PE Size (KByte) 4096
Total PE 9541
Free PE 9286
Allocated PE 255
PV UUID f0iIbU-ayPe-kpoy-d3bP-hfDP-JqPO-5MVLT7
Créons maintenant un logical volume de 20Go nommée var.
osiris ~ # lvcreate -L 20G -n var lvmspace
Logical volume "var" created
Voyons le résultat de la commande précédente :
osiris ~ # lvdisplay
--- Logical volume ---
LV Name /dev/lvmspace/home
VG Name lvmspace
LV UUID icrus5-H10v-GqTG-NW0L-cwUR-FW2P-T5eqy1
LV Write Access read/write
LV Status available
# open 0
LV Size 7.00 GB
Current LE 1792
Segments 2
Allocation inherit
Read ahead sectors 0
Block device 253:0
--- Logical volume ---
LV Name /dev/lvmspace/var
VG Name lvmspace
LV UUID GNPaI1-7jlr-oUYZ-6qot-1cS8-gN8G-Ig6cJ2
LV Write Access read/write
LV Status available
# open 0
LV Size 20.00 GB
Current LE 5120
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:1
Nous voyons donc bien que 27Go sont occupés dans le volume group lvmspace.
osiris ~ # vgdisplay
--- Volume group ---
VG Name lvmspace
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 43.27 GB
PE Size 4.00 MB
Total PE 11078
Alloc PE / Size 6912 / 27.00 GB
Free PE / Size 4166 / 16.27 GB
VG UUID W7zp0w-pYZk-xkg1-9u37-9kiI-30uM-yA6Yji
Créons maintenant un logical volume de 3Go nommé tmp et un dernier logical volume de 13.27Go pour remplir tout l’espace disque disponible.
osiris ~ # lvcreate -L 3G -n tmp lvmspace
Logical volume "tmp" created
osiris ~ # lvcreate -L 13.27G -n portage lvmspace
Rounding up size to full physical extent 13.27 GB
Logical volume "portage" created
Nous voyons donc maintenant qu’il n’y a plus d’espace disque disponible dans le volume group.
osiris ~ # vgdisplay
--- Volume group ---
VG Name lvmspace
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 4
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 43.27 GB
PE Size 4.00 MB
Total PE 11078
Alloc PE / Size 11078 / 43.27 GB
Free PE / Size 0 / 0
VG UUID W7zp0w-pYZk-xkg1-9u37-9kiI-30uM-yA6Yji
Le schéma actuel est le suivant :
osiris ~ # ls /dev/lvmspace/
home portage tmp var
Nous allons donc maintenant créer des systèmes de fichier sur les logical volumes afin de pouvoir les utiliser comme des partitions standard.
osiris ~ # mkfs.ext3 /dev/lvmspace/tmp -L "/tmp"
osiris ~ # mkfs.ext3 /dev/lvmspace/var -L "/var"
osiris ~ #mkfs.reiserfs /dev/lvmspace/portage -l "/usr/portage"
osiris ~ # mkfs.reiserfs /dev/lvmspace/home -l "/home"
Nous avons donc le schéma suivant :
Nous allons dans la prochaine partie voir à quel point l’utilisation de LVM2 est un avantage.
[1 ] Attention, seulement si le système de fichiers le permet