Mise à jour : Debian 9.2
Les volumes logiques permettent de réaliser beaucoup plus souplement que les partitions classiques les opérations de redimensionnement (augmentation, réduction, réaffectation, ...). Ils ont également l'avantage d'être compatibles avec les containers luks et donc de permettre de déverrouiller plusieurs partitions simultanément avec le même mot de passe.
Références
Tutoriel en français sur les volumes logiques de Adrien. D sur le site linuxtricks
Terminologie
Les volumes logiques mettent en œuvre trois niveaux de stockage appelés Volume logique, Volume physique et Groupe de Volumes :
Le Volume physique - abrégé en anglais PV - est associé à un périphérique de stockage "classiques" : disques et partitions " (dev/sdx, dev/sdxy)
Le Goupe de volumes - abrégé en anglais GV - est une association de volumes physiques (voir ci-dessus), utilisable comme un tout. Un groupe de volume est constitué au minimum d'un unique volume physique
Le Volume logique - abrégé en anglais LV - est une unité de stockage appartenant à un groupe de volume, utilisable comme une partition classique et peut-être formatée, montée, ...
La gestion des volumes logiques est assurée par lvm2. Installer le paquet lvm2 et ses dépendances :
# aptitude install lvm2
Les services lvm2 sont gérés par systemd et sont démarrés automatiquement. En cas d'arrêt, ils peuvent être lancés manuellement avec :
# systemctl enable lvm2-lvmetad
# systemctl enable lvm2-monitor
# systemctl start lvm2-lvmetal
# systemctl start lvm2-monitor
La création des volumes logiques s'effectue en plusieurs étapes :
Création des volumes physiques à partir de périphériques de stockage "classiques" disques ou partitions. Attention toutes les données contenues préalablement dans ces périphériques seront perdues!
Création du groupe de volume comprenant les volumes physiques créés ci-dessus
Création et formatage des volumes logiques à l'intérieur du groupe de volume
Dans ce qui suit, on suppose que le groupe de volume comprendra un seul volume physique et que ce volume physique est associé au périphérique bloc /dev/sdb1.
Pour créer un volume physique associé au bloc /dev/sdb1
Vérifier la partition /dev/sdb1 (cat toutes les données seront perdues lors de la création du volume physique !)
# lsblk -f /dev/sdb
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb
└─sdb1 ext4 fe100d99-c0e3-4f96-ab41-6fd09ad7557d
Créer le volume physique associé à cette partition
# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
La partition apparaît désormais comme de type LVM2_member :
# lsblk -f /dev/sdb
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb
└─sdb1 LVM2_member j9TZ5x-NKFz-e2sN-mfxf-wL4v-GHHm-jVMcTu
Le volume physique a pour caractéristiques principales :
# pvs /dev/sdb1
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 a-- 5,00g 5,00g
Pour créer un groupe de volumes, de nom VG_test contenant le volume physique créé ci-dessus
# vgcreate VG_test /dev/sdb1 Volume group "VG_test" successfully created
Le groupe de volume a pour caractéristiques principales :
# vgs VG_test
VG #PV #LV #SN Attr VSize VFree
VG_test 1 0 0 wz--n- 5,00g 5,00g
Pour créer un volume logique LV_test1 de taille 1G dans le groupe de volume VG_test :
# lvcreate -n LV_test1 -L 1G VG_test
Logical volume "LV_test1" created.
Pour créer un volume logique LV_test2 de taille 10% du volume de groupe VG_test :
# lvcreate -n LV_test2 -l 10%VG VG_test
Logical volume "LV_test2" created.
Vérification avec lvs : liste des volumes logiques du groupe de volumes VG_test
# lvs VG_test
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
LV_test1 VG_test -wi-a----- 1,00g
LV_test2 VG_test -wi-a----- 508,00m
Une fois créés, les volumes logiques peuvent être utilisés comme des partitions classiques (vides) et peuvent être formatées, montées ...
Les partitions associées aux volumes logiques sont désignées
Soit par /dev/nom_groupe_volume/nom_volume_logique" :
$ ls /dev/VG_test/
LV_test1 LV_test2
Soit par /dev/ mapper/nom_groupe_volume-nom_volume-logique" :
$ ls /dev/mapper/VG_test*
/dev/mapper/VG_test-LV_test1 /dev/mapper/VG_test-LV_test
Les volumes logiques peuvent être formatés en ext4, en utilisant l'une ou l'autre notation
# mkfs.ext4 /dev/VG_test/LV_test1
mke2fs 1.43.3 (04-Sep-2016)
.......
# mkfs.ext4 /dev/mapper/VG_test-LV_test2
mke2fs 1.43.3 (04-Sep-2016)
....
Les volumes logiques formatés s'utilisent comme des partitions standards :
# mount /dev/VG_test/LV_test1 /mnt
Vérification avec lsblk :
# lsblk -f /dev/sdb1
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb1 LVM2_member 2TNNyB-0qvp-obxT-UZ09-5Lr6-2vhY-6XIfMv
├─VG_test-LV_test2 ext4 65096d15-2481-476e-b6d4-5547b7c00704
└─VG_test-LV_test1 ext4 9d045c9e-639e-4973-a796-3b24d15ecd8b /mnt
Liste des volumes physiques
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 5,00g 5,00g
Liste des groupes de volumes
# vgs
VG #PV #LV #SN Attr VSize VFree
VG_test 1 0 0 wz--n- 5,00g 5,00g
Liste des volumes logiques
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
LV_test1 VG_test -wi-ao---- 1,00g
LV_test2 VG_test -wi-a----- 508,00m
Informations détaillées sur le volume physique
# pvdisplay /dev/sdb1
--- Physical volume ---
PV Name /dev/sdb1
VG Name VG_test
PV Size 5,00 GiB / not usable 4,00 MiB
.........
.........
PV UUID 2TNNyB-0qvp-obxT-UZ09-5Lr6-2vhY-6XIfMv
Informations détaillées sur un groupe de volumes :
# vgdisplay VG_test
--- Volume group ---
VG Name VG_test
System ID
Format lvm2
........
........
Free PE / Size 1279 / 5,00 GiB
VG UUID rmmdGf-M5ed-CDIC-d18y-xhON-l4iP-TYBmfI
Caractéristiques détaillées des volumes logiques du groupe de volumes GV_test
# lvdisplay VG_test
--- Logical volume ---
LV Path /dev/VG_test/LV_test1
LV Name LV_test1
VG Name VG_test
..........
..........
--- Logical volume ---
LV Path /dev/VG_test/LV_test2
LV Name LV_test2
VG Name VG_test
LV UUID h63QIa-DcBH-AfME-HYWx-LHH4-MIAi-R2B2Fn
LV Write Access read/write
LV Creation host, time asus, 2017-05-20 15:42:10 +0200
LV Status available
# open 0
LV Size 508,00 MiB
Current LE 127
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:1
En cas de besoin, il est possible d'activer / désactiver sélectivement les volumes logiques etc.....
Commandes d'activation des volumes physiques, des groupes de volume et des volumes logiques :
# pvchange -xy physical_volum_path
# vgchange -ay volum_group_name
# lvchange -ay logical_volume[path]
Commandes de désactivation des volumes logiques, des groupes de volume et des volumes physiques :
# lvchange -an logical_volume[path] # vgchange -an volum_group_name # pvchange -xn physical_volum_path
Suppression d'un volume physique
# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped.
Suppression d'un groupe de volume
# vgremove VG_TEST
Volume group "VG_TEST" successfully removed
Note : la suppression d'un groupe de volume ne supprime pas les volumes physiques de ce groupe :
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 5,00g 5,00g
Suppression d'un volume logique
# lvremove VG_test/LV_test2
Do you really want to remove active logical volume VG_test/LV_test2? [y/n]: y
Logical volume "LV_test2" successfully removed
Renommer le groupe de volumes VG_test en VG_TEST
# vgrename VG_test VG_TEST
Volume group "VG_test" successfully renamed to "VG_TEST"
Renommer le volume logique debian en Debian
# lvrename vg debian Debian
Renamed "debian" to "Debian" in volume group "vg"
Dans l'exemple ci-dessous, une partition chiffrée contient un volume physique, contenant 4 volumes logiques.
Partition chiffrée : /dev/sdb1
Container de la partition chiffrée : /dev/mapper/ssd
Volume physique /dev/mapper/ssd
Groupe de volume ssd
# cryptsetup luksFormat /dev/sdb1
# crypsetup open /dev/sdb1 ssd
# pvcreate /dev/mapper/ssd
Physical volume "/dev/mapper/ssd" successfully created.
# vgcreate ssd /dev/mapper/ssd
Volume group "ssd" successfully created
# lvcreate -n boot -L 1G /dev/mapper/ssd
Logical volume "boot" created.
# lvcreate -n root -L 3G /dev/mapper/ssd
Logical volume "root" created.
# lvcreate -n swap -L 1G /dev/mapper/ssd
Logical volume "swap" created.
# lvcreate -n home -L 5G /dev/mapper/ssd
Logical volume "home" created.
Formater les partitions
# mkfs.ext4 -L boot /dev/ssd/boot
# mkfs.ext4 -L root /dev/ssd/root
# mkfs.ext4 -L home /dev/ssd/home
# mkswap -L swap /dev/ssd/swap
Note : les dimensions des volumes sont différentes de celles de l'exemple ci-dessus.
$ lsblk -f /dev/sdb1
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb1 crypto_L 65780b1b-395a-4079-a008-bfe0579d0bfe
└─ssd LVM2_mem YKiu72-EgSz-L0nv-mxSN-18Ew-baXZ-Z9nE4I
├─ssd-boot ext4 ssd-boot abfecb5e-5b52-4783-a4f8-c0bfbbd3651e
├─ssd-root ext4 ssd-root 07ba7c95-38de-4a1a-9a59-46d97f5749cc
├─ssd-swap swap ssd-swap 43c1274f-fdbb-4b61-a0c1-d4b0370b5fe7
└─ssd-home ext4 ssd-home 5ab892ca-6a9e-4594-99a0-273173344763
# pvs
PV VG Fmt Attr PSize PFree
/dev/mapper/ssd ssd lvm2 u-- 223,57g 0
# vgs
VG #PV #LV #SN Attr VSize VFree
ssd 1 4 0 wz--n- 223,57g 0
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
boot ssd -wi-a----- 4,00g
home ssd -wi-a----- 169,57g
root ssd -wi-a----- 40,00g
swap ssd -wi-a----- 10,00g
Pour accéder aux partitions logiques, ouvrir préalablement la partition chiffrée. En principe, l'ouverture de la partition chiffrée est suffisante pour activer les volumes logiques.
# cryptsetup open /dev/sdb1 ssd
Pour clore la partition chiffrée, désactiver aux préalables les volumes logiques et si nécessaire les groupes de volumes et volumes physiques.
# lvchange -an ssd
# cryptsetup close /dev/mapper/ssd