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
.
Nom du fichier | Description | ||
---|---|---|---|
10-dm.rules |
| ||
11-dm-lvm.rules |
| ||
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ériquesDM_UUID
: UUID du périphérique du mappeur de périphériquesDM_SUSPENDED
: état suspendu du périphérique du mappeur de périphériquesDM_UDEV_RULES_VSN
: version des règlesudev
(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 logiqueDM_VG_NAME
: nom du groupe de volumesDM_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
.