Volumes logiques

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

Terminologie

Les volumes logiques mettent en œuvre trois niveaux de stockage appelés Volume logique, Volume physique et Groupe de Volumes :

1 - Installation

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

2 - Création

La création des volumes logiques s'effectue en plusieurs étapes :

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.

2.1 - Volumes physiques

Pour créer un volume physique associé au bloc /dev/sdb1

# lsblk -f /dev/sdb
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb
└─sdb1 ext4 fe100d99-c0e3-4f96-ab41-6fd09ad7557d
# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
# lsblk -f /dev/sdb
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb
└─sdb1 LVM2_member j9TZ5x-NKFz-e2sN-mfxf-wL4v-GHHm-jVMcTu
# pvs /dev/sdb1
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 a-- 5,00g 5,00g

2.2 - Groupe de volumes

# vgcreate VG_test /dev/sdb1
   Volume group "VG_test" successfully created   
# vgs VG_test
VG #PV #LV #SN Attr VSize VFree
VG_test 1 0 0 wz--n- 5,00g 5,00g

2.3 - Volumes logiques

# lvcreate -n LV_test1 -L 1G VG_test
Logical volume "LV_test1" created.
# lvcreate -n LV_test2 -l 10%VG VG_test
Logical volume "LV_test2" created.
# 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

2.4 - Utilisation des volumes logiques

2.4.1 Partitions associées

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

$ ls /dev/VG_test/
LV_test1 LV_test2
$ ls /dev/mapper/VG_test*
/dev/mapper/VG_test-LV_test1 /dev/mapper/VG_test-LV_test

2.4.2 Formatage

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)
....

2.4.3 Montage

Les volumes logiques formatés s'utilisent comme des partitions standards :

# mount /dev/VG_test/LV_test1 /mnt
# 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

3 - Gestion

3.1 - Liste

# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 5,00g 5,00g
# vgs
VG #PV #LV #SN Attr VSize VFree
VG_test 1 0 0 wz--n- 5,00g 5,00g
# 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

3.2 - Informations détaillées

# 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
# 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
# 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

3.3 - Activation - Désactivation

En cas de besoin, il est possible d'activer / désactiver sélectivement les volumes logiques etc.....

# pvchange -xy physical_volum_path
# vgchange -ay volum_group_name
# lvchange -ay logical_volume[path]
# lvchange -an logical_volume[path]
# vgchange -an volum_group_name
# pvchange -xn physical_volum_path

3.4 - Suppressions

# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped.
# 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
# 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

3.5 - Renommage

# vgrename VG_test VG_TEST
Volume group "VG_test" successfully renamed to "VG_TEST"
# lvrename vg debian Debian
Renamed "debian" to "Debian" in volume group "vg"

4 - Volumes logiques et chiffrage

Dans l'exemple ci-dessous, une partition chiffrée contient un volume physique, contenant 4 volumes logiques.

4.1 - Création

# 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.
# 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

4.2 - Vérification

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

4.3 - Utilisation

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