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
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:
$ 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:
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é.
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
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