fr/wiki/lvm-sous-linux-volumes-logiques
Distrowatch
Mirror Service
CERT-FR
CNIL
Loi n° 78-17 du 6 janvier 1978
Sondages
On tweet Linuxtricks
Mon Github
Ma chaine Youtube
Canal Telegram
Visiteurs : 1242598
Aujourd'hui : 1478
Menu d'actions du module Wiki
Accueil
Explorateur
1. Accueil
2. Documentation
3. Généralités système Linux
4. LVM sous Linux (Volumes Logiques)
Introduction
LVM (Logical Volume Manager, ou gestionnaire de volumes logiques en français) permet la création
et la gestion de volumes logiques sous Linux. L'utilisation de volumes logiques remplace en quelque
sorte le partitionnement des disques. C'est un système beaucoup plus souple, qui permet par exemple
de diminuer la taille d'un système de fichier pour pouvoir en agrandir un autre, sans se préoccuper de
leur emplacement sur le disque
Avantages de LVM :
Il n'y a pas de limitations « étranges » comme avec les partitions (primaire, étendue, etc.).
On ne se préoccupe plus de l'emplacement exact des données.
On peut conserver quelques giga-octets de libres pour pouvoir les ajouter n'importe où et n'im-
porte quand.
Les opérations de redimensionnement deviennent quasiment sans risques, contrairement au redi-
mensionnement des partitions.
Inconvénients de LVM :
Si un des volumes physiques devient HS, alors c'est l'ensemble des volumes logiques qui uti-
lisent ce volume physique qui sont perdus. Pour éviter ce désastre, il faudra utiliser LVM sur des
disques raid par exemple.
Quelques définitions
PV : Volumes physiques
Les disques durs, partitions de disques durs, volumes RAID ou unités logiques provenant d'un SAN
forment des « volumes physiques » (physical volumes ou PV).
VG : Groupes de Volumes
On concatène ces volumes physiques (1 ou plusieurs) dans des « groupes de volumes » (volume
groups ou VG).
Ces VG sont équivalents à des pseudo-disques-durs.
LV : Volumes logiques
Des « volumes logiques » (logical volumes ou LV) sont alors découpés dans les groupes de volumes,
puis formatés et montés dans des systèmes de fichiers. Les LV sont équivalents à des pseudo-
partitions.
FS : Système de fichiers
Des « systèmes de fichiers » (file system ou FS) est une façon de stocker les informations et de les
organiser dans des fichiers. Ils disposent d'un point de montage et ont un type (ext4, xfs, btrfs)
Représentation visuelle
Je vous ai fait un petit schéma sur GIMP pour représenter tous les concepts ci-dessus dans une
image, c'est parfois plus parlant :
Utiliser LVM
Pour manipuler le LVM, il faut évidemment avoir les droits root et être très prudent !
Les commandes LVM sont extrêmement simples à utiliser et portent des noms logiques :
toutes les commandes agissant sur les volumes physiques commencent par pv (pour physical vo-
lume);
toutes les commandes agissant sur les groupes de volumes commencent par vg (pour volumes
group);
toutes les commandes agissant sur les volumes logiques commencent par lv (pour logical vo-
lume).
Manipulations
OpenRC
Pour les dérivées Gentoo, démarrer et activer les services lvm, lvmetad, lvm-monitoring :
Code BASH :
/etc/init.d/lvm start
/etc/init.d/lvmetad start
/etc/init.d/lvm-monitoring start
SystemD
Pour les systèmes utilisant systemd (comme les dérivées de Red Hat) lancer et activer les services
lvm2-lvmetad, lvm2-monitor :
Code BASH :
systemctl enable lvm2-lvmetad
systemctl enable lvm2-monitor
Si, au lieu d'utiliser un disque entier en LVM on veut utiliser une partition, il faut donc créer une par-
tition de type LVM sur tout le disque.
C'est utile dans certains cas, notamment si on veut faire du LVM sur le disque système, l'installation
du chargeur d'amorçaue peut s'avérer compliqué.
Dans tous les cas, qu'on utilise une partition ou un disque entier, les manipulations sont identiques.
Code BASH :
fdisk /dev/sdb
Code BASH :
fdisk /dev/sdb
Code TEXT :
Bienvenue dans fdisk (util-linux 2.23.2).
Code BASH :
fdisk -l /dev/sdb
Code TEXT :
Disque /dev/sdb : 1073 Mo, 1073741824 octets, 2097152 secteurs
Unités = secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0xb4087607
Ou si disque de plus de 2To il faut faire une table de partitions GPT avec gdisk
Les PV
Créer un PV
Code BASH :
pvcreate /dev/sdb
Code TEXT :
Physical volume "/dev/sdb" successfully created
Code BASH :
pvdisplay /dev/sdb
Code TEXT :
"/dev/sdb" is a new physical volume of "1,00 GiB"
Code TEXT :
--- NEW Physical volume ---
PV Name /dev/sdb
VG Name
PV Size 1,00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID OYbIFi-1Amm-zUFC-3lrJ-qPpb-Llu7-nxM3xl
Supprimer un PV
Code BASH :
pvremove /dev/sdb
Code TEXT :
Les VG
Créer un VG
Code BASH :
vgcreate nomduvg /dev/pv1 /dev/pv2 ...
Code BASH :
vgcreate datavg /dev/sdb
Code TEXT :
Volume group "datavg" successfully created
Code BASH :
vgdisplay datavg
Code TEXT :
--- Volume group ---
VG Name datavg
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 1020,00 MiB
PE Size 4,00 MiB
Total PE 255
Alloc PE / Size 0 / 0
Free PE / Size 255 / 1020,00 MiB
VG UUID GbeMTP-dmeX-d8f6-hgxP-Njyj-RQWi-OX5Cct
Supprimer un VG
Code BASH :
vgremove datavg
Code TEXT :
Volume group "datavg" successfully removed
Ajouter un PV au VG
Si on a un seul PV dans le VG, et qu'on veut agrandir notre VG, on peut ajourer un deuxième PV
avec la commande vgextend :
Code BASH :
vgextend datavg /dev/sdc
Code TEXT :
Volume group "datavg" successfully extended
Code TEXT :
Cur PV 2
Supprimer un PV au VG
Si on a plusieurs PV dans le VG et qu'on veut en ôter un, (donc réduire notre VG) on peut supprimer
un PV avec la commande vgreduce :
Code BASH :
vgreduce datavg /dev/sdc
Code TEXT :
Removed "/dev/sdc1" from volume group "datavg"
Imaginons 2 disques de 500Go (avec 2 partitions LVM de 500Go) nommés sdb1 et sdc1.
On fait un VG de 1000Go avec ces 2 PV, si 1 des 2 disques tombe en panne, l'intégralité du VG est
perdu !
Veiller donc à utiliser un système de RAID derrière.
Les LV et les FS
Dans ce chapitre, je traite les LV et ls FS en même temps car ils sont très liés
Créer un LV
On se rapproche du but !
Code BASH :
lvcreate -n nomdulv -L taille nomduvg
Ou
Code BASH :
lvcreate -n nomdulv -l nb%VG nomduvg
Exemple :
Code BASH :
lvcreate -n adrienlv -L 100M datavg
Code TEXT :
Logical volume "adrienlv" created.
Code BASH :
lvcreate -n pourcentlv -l 10%VG datavg
Code TEXT :
Logical volume "pourcentlv" created.
Ajouter un FS
XFS
Code BASH :
mkfs.xfs /dev/nomduvg/nomdulv
BTRFS
Code BASH :
mkfs.btrfs /dev/nomduvg/nomdulv
EXT4
Code BASH :
mkfs.ext4 /dev/nomduvg/nomdulv
Exemple :
Code BASH :
mkfs.ext4 /dev/nomduvg/nomdulv
Code TEXT :
mke2fs 1.42.9 (28-Dec-2013)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=1024 (log=0)
Taille de fragment=1024 (log=0)
« Stride » = 0 blocs, « Stripe width » = 0 blocs
25688 i-noeuds, 102400 blocs
5120 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=1
Monter le FS
Code BASH :
mount /dev/nomduvg/nomdulv /pointdemontage
ou
Code BASH :
mount /dev/mapper/nomduvg-nomdulv /pointdemontage
Exemple :
Code BASH :
mount /dev/datavg/adrienlv /adrien
Code TEXT :
/dev/mapper/datavg-adrienlv on /adrien type ext4 (rw,relatime,data=orde-
red)
Code BASH :
df | grep adrienlv
Code TEXT :
/dev/mapper/datavg-adrienlv 95054 1550 86336 2% /adrien
On peut ajouter ensuite une ligne dans le fstab pour rendre permanente la modification :
Code TEXT :
/dev/mapper/nomduvg-nomdulv /pointdemontage typefs options 1 1
Exemple:
Code TEXT :
/dev/mapper/datavg-adrienlv /adrien ext4 defaults 1 1
Voir les LV
Code BASH :
lvdisplay
lvdisplay nomduvg
lvdisplay nomduvg/nomdulv
Exemple :
Code BASH :
lvdisplay datavg/adrienlv
Code TEXT :
--- Logical volume ---
LV Path /dev/datavg/adrienlv
LV Name adrienlv
VG Name datavg
LV UUID IDpnmL-e4u8-dm4a-KhQn-mZ1w-UnMV-yRyWsQ
LV Write Access read/write
LV Creation host, time zeus.biopole21.com, 2016-02-16 17:05:31 +0100
LV Status available
# open 0
LV Size 100,00 MiB
Current LE 25
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
Supprimer un LV
Exemple :
Code BASH :
lvremove datavg/pourcentlv
Code TEXT :
Do you really want to remove active logical volume pourcentlv? [y/n]: y
Logical volume "pourcentlv" successfully removed
Pour agrandir un LV, on va utiliser la commande lvresize. (On peut utiliser aussi lvextend, ça fait la
même chose)
Ou ajouter de X :
Code BASH :
lvresize -L +taille nomduvg/nomdulv
Code TEXT :
PE Size 4,00 MiB
Code BASH :
resize2fs /dev/nomduvg/nomdulv
Code BASH :
df -h /adrien
Code TEXT :
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/mapper/datavg-adrienlv 93M 1,6M 85M 2% /adrien
Code BASH :
lvresize -L +100M datavg/adrienlv
Code TEXT :
Size of logical volume datavg/adrienlv changed from 100,00 MiB (25 ex-
tents) to 200,00 MiB (50 extents).
Logical volume adrienlv successfully resized.
Code BASH :
resize2fs /dev/datavg/adrienlv
Code TEXT :
resize2fs 1.42.9 (28-Dec-2013)
Le système de fichiers de /dev/datavg/adrienlv est monté sur /adrien ; le
changement de taille doit être effectué en ligne
old_desc_blocks = 1, new_desc_blocks = 2
Le système de fichiers /dev/datavg/adrienlv a maintenant une taille de
204800 blocs.
Code BASH :
df -h /adrien
Code TEXT :
Avant de réduire le LV, si la taille finale du LV est plus petite que celle du FS, il faut réduire le FS
d'abord, sinon, corruption de données !!!
Diminuer la taille du FS est un peu plus délicat. Il ne faut évidemment pas réduire plus que la place
occupée...
Pour éviter tout risque, je conseille de procéder ainsi :
Attention, tous les systèmes de fichiers ne peuvent pas être réduits. Pour ext4 et xfs et btrfs, cela se
fait très bien. À noter que ext4 et xfs soivent être démontés pour être réduits.
Pour réduire le LV, on utilise la commande lvresize. (On peut utiliser aussi lvreduce, ça fait la même
chose)
La commande s'utilise comme suit :
Définir une taille précise :
Code BASH :
lvresize -L taille nomduvg/nomdulv
Ou réduire de X :
Code BASH :
lvresize -L -taille nomduvg/nomdulv
Pour réduire un FS, on utilise encore la commande resize2fs, en ayant au préalable vérifié le système
de fichiers avec e2fsck.
Code BASH :
umount /pointdemontage
e2fsck -f /dev/nomduvg/nomdulv
resize2fs /dev/nomduvg/nomdulv taille
Code BASH :
umount /pointdemontage
e2fsck -f /dev/nomduvg/nomdulv
resize2fs /dev/nomduvg/nomdulv taille
lvresize -L taille /dev/nomduvg/nomdulv
resize2fs /dev/nomduvg/nomdulv
mount /pointdemontage
Exemple :
Code BASH :
df -h /adrien
Code TEXT :
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/mapper/datavg-adrienlv 190M 1,6M 178M 1% /adrien
Code BASH :
umount /adrien
e2fsck -f /dev/datavg/adrienlv
Code TEXT :
e2fsck 1.42.9 (28-Dec-2013)
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/datavg/adrienlv : 11/49400 fichiers (9.1% non contigüs), 11884/204800
blocs
Code BASH :
resize2fs /dev/datavg/adrienlv 90M
Code TEXT :
resize2fs 1.42.9 (28-Dec-2013)
En train de redimensionner le système de fichiers sur /dev/datavg/adrienlv
à 92160 (1k) blocs.
Le système de fichiers /dev/datavg/adrienlv a maintenant une taille de
92160 blocs.
Code BASH :
lvresize -L 100M /dev/datavg/adrienlv
Code TEXT :
WARNING: Reducing active logical volume to 100,00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce adrienlv? [y/n]: y
Size of logical volume datavg/adrienlv changed from 200,00 MiB (50 ex-
tents) to 100,00 MiB (25 extents).
Logical volume adrienlv successfully resized.
Code BASH :
resize2fs /dev/datavg/adrienlv
Code TEXT :
resize2fs 1.42.9 (28-Dec-2013)
En train de redimensionner le système de fichiers sur /dev/datavg/adrienlv
à 102400 (1k) blocs.
Le système de fichiers /dev/datavg/adrienlv a maintenant une taille de
102400 blocs.
Code BASH :
mount /dev/datavg/adrienlv /adrien
df -h /adrien
Code TEXT :
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/mapper/datavg-adrienlv 93M 1,6M 85M 2% /adrien