LVM Sous Linux
Nous allons prendre comme exemple dans le texte suivant, la création d'un LVM à partir de disques physiques : un disque /dev/sdc et une partition /dev/sde1.
Nous allons crée un groupe de volume (volume group) à partir du disques et de la partition spécialement convertis en volume physique (physical volume). Ensuite, nous créérons deux volumes logique (logical volume) qui vont nous servir de stockage pour des données.
[http://tldp.org/HOWTO/LVM-HOWTO/anatomy.html][Anatomy of LVM]
Création du LVM
Les volumes physiques (physical volumes)
Les commandes commencent par le préfix pv, par exemple pvreduce, pvremove…
Pour ajouter un volumes physique à LVM, il faut que le disque à insérer comporte une parition de type lvm (type ‘8e00’ avec un disque GPT ou ‘8e’ avec un disque avec MBR). On initialise les volumes avec : pvcreate /dev/sdc
et pvcreate /dev/sde1
On peut vérifier que les volumes sont créés avec pvdisplay /dev/sdc /dev/sde1
--- Physical volume ---
PV Name /dev/sdc
VG Name storage
PV Size <89,43 GiB / not usable 2,00 MiB
Allocatable yes
PE Size 4,00 MiB
Total PE 22893
Free PE 22893
Allocated PE 0
PV UUID vNL4e6-pMyc-obvP-DNgE-ZgNm-KluC-0hXrg3
--- Physical volume ---
PV Name /dev/sde1
VG Name storage
PV Size 87,22 GiB / not usable 3,00 MiB
Allocatable yes
PE Size 4,00 MiB
Total PE 22328
Free PE 22328
Allocated PE 0
PV UUID WqMbTC-BnV2-6On3-xtat-F7pk-OuJp-WgzQzo
Les PE correspondent aux Physic Extends, ici des zones de 4 MiO
Le groupe de volume (volum group)
Les commandes commencent par le préfix vg, par exemple vgextend, vgmerge…
Le groupe de volume, servant à agréger l'espace de ces disques le composant, sera nommé ‘storage’ et crée avec la commande : vgcreate storage /dev/sdc /dev/sde1
on peut vérifier que le groupe de volume est bien crée avec les deux volumes : vgdisplay storage -v
VG Name storage
System ID
Format lvm2
Metadata Areas 2
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 2
Act PV 2
VG Size 176,64 GiB
PE Size 4,00 MiB
Total PE 45221
Alloc PE / Size 0 / 0
Free PE / Size 45221 / 176,64 GiB
VG UUID TjwHHB-SOUJ-4csN-0YPt-DFky-DoOL-uvg9Zd
--- Physical volumes ---
PV Name /dev/sdc
PV UUID vNL4e6-pMyc-obvP-DNgE-ZgNm-KluC-0hXrg3
PV Status allocatable
Total PE / Free PE 22893 / 22893
PV Name /dev/sde1
PV UUID WqMbTC-BnV2-6On3-xtat-F7pk-OuJp-WgzQzo
PV Status allocatable
Total PE / Free PE 22328 / 22328
Le volume logique (logical volume)
Les commandes commencent par le préfix lv, par exemple lvdisplay, lvresize…
Nous allons maintenant créer des volumes logiques qui utiliseront une partie de l'espace disponible dans le groupe de volume. Ces volumes logiques pourront être ensuite utilisés comme des partitions, tout en offrant une plus grande souplesse que les paritions logiques.
On va créer deux volumes logiques dans l'espace ‘storage’. Ces deux volumes, ‘web’ et ‘mail’, auront respectivement une taille de 500 M et 20 G : lvcreate -n web -L 500M storage
et lvcreate -n mail -L 20G storage
On peut vérifier que tout à été créé : lvdisplay
--- Logical volume ---
LV Path /dev/storage/web
LV Name web
VG Name storage
LV UUID 2CVPtx-odAd-skRv-eSts-xfxm-QMDM-5zoI0L
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2018-01-22 21:30:41 +0100
LV Status available
# open 0
LV Size 500,00 MiB
Current LE 125
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:3
--- Logical volume ---
LV Path /dev/storage/mail
LV Name mail
VG Name storage
LV UUID 1ATlHu-zfz8-uRwY-h3zx-6Tvd-pucg-YVaF4n
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2018-01-22 21:30:58 +0100
LV Status available
# open 0
LV Size 20,00 GiB
Current LE 5120
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:4
Nous avons les deux volumes logiques, il reste désormais à les formater dans le système de fichiers que l'on veut.
mkfs.ext4 /dev/storage/web
mkfs.ext4 /dev/storage/mail
On observe le groupe de volume avec vgdisplay storage
--- Volume group ---
VG Name storage
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 8
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 176,64 GiB
PE Size 4,00 MiB
Total PE 45221
Alloc PE / Size 5245 / <20,49 GiB
Free PE / Size 39976 / <156,16 GiB
VG UUID TjwHHB-SOUJ-4csN-0YPt-DFky-DoOL-uvg9Zd
Opérations
Agrandir un volume logique
Imaginons que notre volume web est trop petit d'un 1 Go. On redimensionne le volume lvresize -L +1G /dev/storage/web
lvdisplay /dev/storage/web
--- Logical volume ---
LV Path /dev/storage/web
LV Name web
VG Name storage
LV UUID 2CVPtx-odAd-skRv-eSts-xfxm-QMDM-5zoI0L
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2018-01-22 21:30:41 +0100
LV Status available
# open 0
LV Size <1,49 GiB
Current LE 381
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:3
En regardant vgdisplay
on s'aperçoit que des lignes ont changées par rapport au précedent appel
avant
Total PE 45221
Alloc PE / Size 5245 / <20,49 GiB
Free PE / Size 39976 / <156,16 GiB
Après
Total PE 45221
Alloc PE / Size 5501 / <21,49 GiB
Free PE / Size 39720 / <155,16 GiB
On a donc bien à peu près 1 GiO supplémentaire utilisé dans le groupe de volumes. Cependant, la partition ext4 n'a pas été redimensionnée et est restée sur une taille de 500 M.
On la redimensionne : resize2fs -p /dev/storage/web
resize2fs 1.42.9 (28-Dec-2013)
En train de redimensionner le système de fichiers sur /dev/storage/web à 1560576 (1k) blocs.
Début de la passe 1 (max = 189)
Extension de la table d'i-noeudsXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Le système de fichiers /dev/storage/web a maintenant une taille de 1560576 blocs.
Réduire un volume logique
resize2fs -M /dev/storage/web
lvresize -L -10G storage/web
Supprimer un volume physique
Il faut s'assurer qu'il y a de la place dans le LVM pour accueillir tout les PE du disque à supprimer :
PE_lvm libres > PE_disque utilisés.
Si oui, on déplace les PE du disque vers le LVM : pvmove /dev/sde1
/dev/sdc1: Moved: 0,02%
/dev/sdc1: Moved: 0,69%
...
/dev/sdc1: Moved: 99,36%
/dev/sdc1: Moved: 100,00%
On supprime alors le volume physique du LVM : vgreduce storage /dev/sde1