En effet. Un « périphérique » de type bloc ou caractère est une abstraction du système d’exploitation qui peut représenter un objet physique comme un disque, un lecteur de CD ou de carte SD, un clavier, une souris, un écran, un port série, une imprimante… mais aussi un objet logique comme une partition, un ensemble RAID, un volume logique LVM, un volume chiffré, une console virtuelle (tty)…
Au sujet des volumes logiques LVM :
Oui et non. Ils sont créés suite à l’apparition du PV (volume physique) qui les contient (la partition de type LVM) mais ne sont pas supprimés automatiquement lorsque le PV disparaît suite à l’arrêt ou la déconnexion du disque. A première vue on pourrait croire le contraire car lsblk
et lvs
ne les affichent plus (probablement parce que le PV sous-jacent n’existe plus), mais les périphériques dm-* correspondants sont toujours présents dans /dev et /proc/partitions, les liens symboliques /dev/mapper/vg-lv et /dev/vg/lv sont toujours présents aussi, et on les voit bien avec dmsetup ls
ou lsblk -s
. Il faut donc les désactiver (avec vgchange
ou lvchange
) avant de déconnecter ou arrêter le périphérique sous-jacent.
J’apprécie et utilise souvent LVM pour mes installations, mais j’éviterais de l’utiliser sur un support amovible, à moins de faire en sorte que le support ne soit jamais arrêté ou déconnecté pendant qu’un OS est actif.
C’est clair ou c’est vague ?
Le device-mapper a été développé initialement pour LVM, mais il a ensuite été étendu à d’autres usages, comme le chiffrement de disque (dm-crypt). Il est même utilisé par kpartx pour créer les périphériques correspondant aux partitions d’un autre périphérique. Dans son utilisation basique, le principe est similaire à la gestion des fichiers éventuellement fragmentés : chaque périphérique dm-* est construit à partir d’un ou plusieurs blocs de tailles diverses situés sur un ou plusieurs périphériques de toute nature (disque, partition, ensemble RAID, autre périphérique créé par le device-mapper…) et apparaît comme la concaténation de tous ces blocs.
LVM est une surcouche qui gère les méta-données contenues dans les volumes physiques décrivant les différents volumes logiques.
Un volume logique LVM est accessible par trois chemins :
- /dev/dm-* est le nom canonique du périphérique créé par le device-mapper. Inconvénient, son nom est variable car les numéros sont attribués dans l’ordre de création qui n’est pas forcément constant. Et puis ce n’est pas très parlant.
- /dev/mapper/vg-lv est généralement un lien symbolique créé par le device-mapper pour tout périphérique qu’il crée et pointant vers le nom canonique. Les « - » dans les noms de VG et LV sont doublés pour ne pas les confondre avec le « - » qui sépare le VG et le LV. C’est cette forme qui est inscrite dans /etc/fstab lorsqu’on fait une installation avec LVM, et aussi passée par GRUB à la ligne de commande du noyau pour identifier la racine car c’est cette forme qui permet à l’initramfs de savoir qu’il s’agit d’un volume logique ou chiffré et de l’activer.
- /dev/vg/lv est généralement un lien symbolique créé par LVM pointant aussi vers le nom canonique.
Dans certains systèmes, l’un des deux derniers peut aussi être un fichier spécial de périphérique avec les mêmes numéros majeur et mineur (voir ls -l
) que celui du nom canonique.
Un dernier mot concernant la comparaison entre les partitions et les volumes logiques LVM. Conceptuellement, ils ne sont pas fondamentalement différents et servent à gérer le découpage des disques. La structure des partitions est décrite dans une table de partition située sur chaque disque, la structure des volumes logiques est décrite dans les méta-données situées dans chaque volume physique LVM. Une différence majeure est que la création des périphériques représentant les partitions est automatique et gérée entièrement par le noyau alors que la création des périphériques représentant les volumes logiques est gérée en partie en espace utilisateur par LVM, le device-mapper et udev. Mais comme je l’ai écrit plus haut, la création des périphériques de partitions peut aussi être gérée via le device-mapper par kpartx. Cela peut servir dans le cas des partitions sur un périphérique que le noyau ne considère par comme partitionnable, ou d’un format de table de partition exotique inconnu du noyau.