A.3. Prise en charge du mappeur de périphériques pour le gestionnaire de périphériques udev

Le principal rôle du gestionnaire de périphériques udev est de permettre de paramétrer des noeuds de manière dynamique dans le répertoire /dev. La création de ces noeuds est réalisée par l'application des règles udev dans l'espace utilisateur. Ces règles sont traitées sur les événements udev envoyés directement depuis le noyau, et résultent de l'ajout, de la suppression, ou de la modification de périphériques particuliers, ce qui fournit un mécanisme pratique et central pour le support des connexions à chaud.
À part créer des noeuds, le gestionnaire de périphériques udev est capable de créer tout lien symbolique avec leur propres noms, offrant aux utilisateurs la liberté de choisir leur structure de répertoire et de dénomination personnalisée dans le répertoire /dev si nécessaire
Chaque événement udev contient des informations de base sur le périphérique traité, comme son nom, le sous-système auquel il appartient, son type, son numéro majeur et mineur utilisé, et le type de l'événement. Avec ces informations et la possibilité d'accéder à toutes les informations trouvées dans le répertoire /sys, qui est aussi accessible avec les règles udev, les utilisateurs sont en mesure d'utiliser de simples filtres basés sur ces informations et d'exécuter les règles à condition de se baser sur ces informations.
Le gestionnaire de périphériques udev offre aussi une manière centralisée de paramétrer les permissions des noeuds. Un utilisateur peut facilement ajouter un ensemble de règles personnalisées pour définir les permissions pour tout périphérique spécifié par toute information disponible pendant le traitement de l'événement.
Il est aussi possible d'ajouter des hooks de programmes dans les règles udev directement. Le gestionnaire de périphériques udev peut appeler tous ces programmes afin de fournir un traitement supplémentaire nécessaire à la gestion de l'événement. Le programme peut aussi exporter des variables d'environnement en tant que résultat de ce traitement. Tous les résultats donnés peuvent être utilisés dans les règles en tant que source d'informations supplémentaire.
Tout logiciel utilisant la bibliothèque udev est en mesure de recevoir et de traiter des événements udev avec toutes les informations disponibles. Ainsi, le traitement n'est pas limité au démon udev uniquement.

A.3.1. Intégration udev avec le mappeur de périphériques

Dans RHEL 6, le mappeur de périphériques fournit un support direct pour l'intégration udev. Ceci synchronise le mappeur de périphériques avec tous les traitements udev concernant les périphériques du mappeur de périphériques, y compris les périphériques LVM. La synchronisation est nécessaire car l'application de la règle dans le démon udev est une forme de traitement parallèle avec le programme qui est la source des modifications du périphérique (comme dmsetup et LVM). Sans ce support, un problème commun, résultant d'un changement d'événement, survenait lorsqu'un utilisateur tentait de supprimer un périphérique qui était encore ouvert et traité par les règles udev ; ceci était particulièrement commun lorsqu'il y avait de très courts laps de temps entre les changements pour ce périphérique.
La version de RHEL 6 fournit des règles udev officiellement prises en charge pour les périphériques de Device Mapper en général ainsi que pour LVM. La Tableau A.1, « Règles udev pour les périphériques du mappeur de périphériques » résume ces règles, qui sont installées dans /lib/udev/rules.d.

Tableau A.1. Règles udev pour les périphériques du mappeur de périphériques

Nom du fichier Description
10-dm.rules
Contient des règles basiques/générales du mappeur de périphériques et crée des symlinks dans /dev/mapper avec une cible /dev/dm-N, où N est un numéro assigné dynamiquement à un périphérique par le noyau (/dev/dm-N est un noeud).
REMARQUE : les noeuds /dev/dm-N ne doivent jamais être utilisés dans des scripts pour accéder au périphérique puisque le numéro N est assigné dynamiquement et des changements de la séquence des périphériques how sont activés. Ainsi, les véritables noms dans le répertoire /dev/mapper devraient être utilisés. Cette structure est ainsi afin de prendre en charge les prérequis udev dictant comment les noeuds/symlinks doivent être créés.
11-dm-lvm.rules
Contient des règles appliquées pour les périphériques LVM et crée les symlinks pour les volumes logiques du groupe de volumes. Les symlinks sont créés dans le répertoire /dev/vgname avec une cible /dev/dm-N.
REMARQUE : Pour rester consistant avec le standard de dénomination de toutes les futures des sous-systèmes du mappeur de périphériques, les règles udev devraient être sous le format 11-dm-nom_du_sous_système.rules. Tous les utilisateurs libdevmapper fournissant des règles udev devraient aussi suivre ce standard.
13-dm-disk.rules Contient des règles à appliquer à tous les périphériques du mappeur de périphériques en général et crée des symlinks dans les répertoires /dev/disk/by-id, /dev/disk/by-uuid et /dev/disk/by-uuid.
95-dm-notify.rules Contient la règle qui notifie du processus d'attente à l'aide de libdevmapper (tout comme LVM et dmsetup). La notification est effectuée une fois que toutes les règles précédentes sont appliquées, afin de s'assurer que tous les traitements udev sont terminés. Le processus notifié est ensuite repris.
Vous pouvez ajouter des règles de permissions personnalisées à l'aide du fichier 12-dm-permissions.rules. Ce fichier n'est pas installé dans le répertoire /lib/udev/rules ; il peut être trouvé dans le répertoire /usr/share/doc/device-mapper-version. Le fichier 12-dm-permissions.rules est un modèle contenant des indices pour paramétrer les permissions basé sur des règles de correspondance données comme exemple. Le fichier contient des exemples pour certaines situations communes. Vous pouvez modifier ce fichier et le placer manuellement dans le répertoire /etc/udev/rules.d où il survivra aux mises à jour. Ainsi, les paramètres subsisteront.
Ces règles paramètrent toutes les variables de base qui peuvent être utilisées par toutes les autres règles pendant le traitement des événements.
Les variables suivantes sont paramétrées dans 10-dm.rules :
  • DM_NAME : nom du périphérique du mappeur de périphériques
  • DM_UUID : UUID du périphérique du mappeur de périphériques
  • DM_SUSPENDED : état suspendu du périphérique du mappeur de périphériques
  • DM_UDEV_RULES_VSN : version des règles udev (principalement pour que toutes les autres règles puissent vérifier que les variables mentionnées au préalable sont directement paramétrées par les règles du mappeur de périphériques)
Les variables suivantes sont paramétrées dans 11-dm-lvm.rules :
  • DM_LV_NAME : nom du volume logique
  • DM_VG_NAME : nom du groupe de volumes
  • DM_LV_LAYER : nom de la couche LVM
Toutes ces variables peuvent être utilisées dans le fichier 12-dm-permissions.rules pour définir une permission pour des périphériques spécifiques du mappeur de périphériques, comme documenté dans le fichier 12-dm-permissions.rules.