Table des matières

, , , ,

Création d'un volume logique LVM

Prérequis

Pour les besoins de l'exercice, on crée un disque virtuel, un fichier de 20 MO que l'on monte comme un périphérique de type bloc via losetup. C'est sur ce périphérique que nous allons travailler.

$ cd /tmp
$ dd if=/dev/zero of=/tmp/vdisk bs=1M count=20
$ sudo losetup /dev/loop0 vdisk

Si les commandes se sont exécutées sans erreur, l'invocation de losetup sans argument doit retourner les périphériques disponibles:

 
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0         0      0         0  0 /tmp/vdisk

Création du PV

Pour pouvoir être reconnu comme un volume physique et être utilisé par LVM le périphérique de type bloc doit contenir une structure spécifique: le descripteur de groupe de volume (volume group descriptor). C'est le rôle de la commande pvcreate:

Le descripteur de groupe de volume vient s’inscrire au début du périphérique de type bloc, il peut écraser selon les cas la table des partitions ou le système de fichier préexistant et rendre tout accès aux données préexistantes impossible. pvcreate doit être utilisée avec précaution en s'assurant du périphérique cible.
$ sudo pvcreate /dev/loop0

La commande retourne:

Physical volume "/dev/loop0" successfully created

La commande pvscan analyse les périphériques de type bloc du système et liste les volumes physiques LVM disponibles. Nous en avons un à présent:

$sudo pvscan
 
  PV /dev/loop0         lvm2 [20,00 MiB]
  Total: 1 [20,00 MiB] / in use: 0 [0   ] / in no VG: 1 [20,00 MiB]

Nous avons bien 1 PV sur le périphérique /dev/loop0 d'une taille de 20 Mo. La dernière ligne donne plusieurs informations:

Création du groupe de volume

Ici on crée le groupe de volume en lui associant un premier volume physique, notre volume PV précédemment créé:

$ sudo vgcreate --physicalextentsize 1M vgtest /dev/loop0 

Par défaut les PE font 4Mo, l'option --physicalextentsize permet de spécifier la taille des PE pour le groupe de volume vgtest.

La commande vgdisplay permet d'afficher les détails pour les groupes de volumes existants

$ vgdisplay 
  --- Volume group ---
  VG Name               vgtest
  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               19,00 MiB
  PE Size               1,00 MiB
  Total PE              19
  Alloc PE / Size       0 / 0   
  Free  PE / Size       19 / 19,00 MiB
  VG UUID               EOXsXM-2YuQ-7ncX-24zT-0w93-wJC4-BEFjSM

Ici un seul groupe de volume existe vgtest, aucun volume logique pour l'instant (Cur LV), PE Size est bien de 1 Mo, 19 PE sont disponibles, aucuns PE n'est alloué.

Création du volume logique

La création du volume logique se fait sur un groupe de volume existant, dans notre cas vgtest. A la création on peut spécifier la taille du volume logique en octets (option --size) ou en PE (option --extents). Ici on définit un volume logique lvtest de 15 Mo:

$ sudo lvcreate --size 15M --name lvtest vgtest
  Logical volume "lvtest" created

Une nouvelle invocation de vgdisplay affichera qu' un volume logique existe sur vgtest (Cur LV) que 15 PE sont alloués et qu'il en reste 4.

Pour afficher les attributs détaillés du volume logique:

$ sudo lvdisplay /dev/vgtest/lvtest

Création/montage du système de fichier

Maintenant que le volume logique existe, il est disponible grâce au mapper. On peut créer le système de fichier de son choix et le monter sur arborescence logique.

$ sudo mkfs.ext4 /dev/vgtest/lvtest
$ sudo mkdir /mnt/storage
$ sudo mount /dev/vgtest/lvtest /mnt/storage

Références