Installer et configurer LVM

Le LVM (Logical Volume Manager) à l'avantage de donner la possibilité de modifier facilement la taille des partitions. Ainsi, le LVM permt de gérer finement les espaces de stockage.

Pré-requis :

Je vais ici utiliser deux disques dont l'un (sda) a le système d'installé et l'autre (sdb) qui aura deux partitions physique que l'on devra fusionner en une seule partition logique avec lvm.

root@contrib-jessie:/home/vagrant# fdisk -l

Disk /dev/sdb: 5 GiB, 5368709120 bytes, 10485760 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 67F30CFA-97FB-43C2-B8A1-80DDF57EA218

Device       Start     End Sectors Size Type
/dev/sdb1     2048 2099199 2097152   1G Linux filesystem
/dev/sdb2  2099200 4196351 2097152   1G Linux filesystem

Disk /dev/sda: 9.9 GiB, 10632560640 bytes, 20766720 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x5b0bcac1

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1  *        2048 19816447 19814400  9.5G 83 Linux
/dev/sda2       19818494 20764671   946178  462M  5 Extended
/dev/sda5       19818496 20764671   946176  462M 82 Linux swap / Solaris

Le paquet nécessaire :

apt-get install lvm2

Créons un volume physique

— les physical volumes (PV), couche la plus « basse », correspondant à un disque dur / une partition…

pvcreate /dev/sdb*

On peut vérifier grâce à :

root@contrib-jessie:/home/vagrant# pvdisplay
  "/dev/sdb1" is a new physical volume of "1.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               1.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               ewL0vc-qLEd-g4dH-MqvR-2dMe-ZeeL-IBkYgy
   
  "/dev/sdb2" is a new physical volume of "1.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb2
  VG Name               
  PV Size               1.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               70dg15-k1iF-Nf7y-z9D8-GHF7-t2ud-YiS8Yt

Pour supprimer une partition par ex. :

pvremove /dev/sdb1

On peut afficher à son propos avec : pvdisplay

Créons un groupe virtuel

— les volume groups (VG) rassemblent les PV et LV dans un même groupe. Un VG va contenir un ensemble de PV qui seront utilisés pour créer un ensemble de LV. Mais les frontières entre PV ne correspondent généralement pas forcément aux frontières des LV.

vgcreate mon_groupe /dev/sdb1 /dev/sdb2

On obtient :

root@contrib-jessie:/home/vagrant# vgdisplay
  --- Volume group ---
  VG Name               mon_groupe
  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               1.99 GiB
  PE Size               4.00 MiB
  Total PE              510
  Alloc PE / Size       0 / 0   
  Free  PE / Size       510 / 1.99 GiB
  VG UUID               cZxjum-caop-1IQT-PrV2-Q6uR-2UIz-RboIow
  • Pour le supprimer :
vgremove mon_groupe

Il est également possible de rajouter des volumes physiques : vgextend mon_groupe /dev/sdc1 A tester

Créons une partition logique

— les logical volumes (LV), couche la plus « haute », correspondant aux partitions finalement accessibles depuis le système. Ces volumes logiques hébergent donc les systèmes de gestion de fichiers et ont la particularité d’être redimensionnables.

lvcreate -L 100M -n ma_partition mon_groupe

On obtient :

root@contrib-jessie:/home/vagrant# lvdisplay
  --- Logical volume ---
  LV Path                /dev/mon_groupe/ma_partition
  LV Name                part1
  VG Name                mon_groupe
  LV UUID                juCNZ2-4c00-NX8C-UZhX-huVo-BEI8-meBfGt
  LV Write Access        read/write
  LV Creation host, time contrib-jessie, 2016-11-08 13:03:26 +0000
  LV Status              available
  # open                 0
  LV Size                100.00 MiB
  Current LE             25
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0
  • Agrandir une partition :
lvextend -r -L +50M /dev/mon_groupe/ma_partition
  • Réduire une partition :
lvreduce -r -L -100M /dev/mon_groupe/ma_partition

Possible de la supprimer avec :

lvremove /dev/mon_groupe/ma_partition

Mettons en place le système de fichiers

mkfs.ext4 -m 0 /dev/mon_groupe/ma_partition

→ l'option -m 0 siginifie que l'on ne souhaite pas réserver de place pour le super-user.

On monte le volume

mount -t ext4 /dev/mon_groupe/ma_partition/ /mnt

D'autres commandes en rapport avec le LVM

  • On peut visualiser le type de partitions :
lvmdiskscan
  /dev/mon_groupe/part1 [     152.00 MiB] 
  /dev/sda1             [       9.45 GiB] 
  /dev/sda5             [     462.00 MiB] 
  /dev/sdb1             [       1.00 GiB] LVM physical volume
  /dev/sdb2             [       1.00 GiB] LVM physical volume
  0 disks
  3 partitions
  0 LVM physical volume whole disks
  2 LVM physical volumes

Je me suis appuyé de la doc de Vincent liefooghe : https://www.vincentliefooghe.net/content/utilisation-lvm-logical-volume-manager-sous-linux

  • Lister rapidement les tailles occupé :
vgs
lvs