A.3. Device-Mapper-Unterstützung für den udev-Gerätemanager
Die hauptsächliche Aufgabe des
udev
-Gerätemanagers besteht darin, einen dynamischen Weg zum Erzeugen von Knoten im /dev
-Verzeichnis bereitzustellen. Das Erzeugen dieser Knoten wird durch die Anwendung von udev
-Regeln im Userspace geleitet. Diese Regeln werden auf udev
-Ereignisse angewendet, die direkt vom Kernel gesendet werden als Reaktion auf das Hinzufügen, Entfernen oder Ändern bestimmter Geräte. Somit können auf bequeme und zentral Weise Geräte im laufenden Betrieb verändert werden.
Neben der Erstellung der Knoten selbst kann der
udev
-Gerätemanager auch symbolische Links mit jeweils eigenen Namen erzeugen, so dass es Benutzern freisteht, bei Bedarf ihre eigene Namens- und Verzeichnisstruktur im /dev
-Verzeichnis zu wählen.
Jedes
udev
-Ereignis enthält wesentliche Informationen über das bearbeitete Gerät, u.a. dessen Name, das Subsystem zu dem es gehört, sein Gerätetyp, seine verwendete Major- und Minor-Nummer und die Art des Ereignisses. Dank dieser Informationen sowie dank der Möglichkeit, auf alle Informationen innerhalb des /sys
-Verzeichnisses zuzugreifen, auf das auch innerhalb der udev
-Regeln zugegriffen werden kann, können Benutzer einfache Filter basierend auf diesen Informationen einsetzen und die Regeln abhängig von diesen Informationen bedingt ausführen.
Der
udev
-Gerätemanager bietet zudem einen zentralen Weg zum Einrichten der Knotenberechtigungen. Ein Benutzer kann einfach eine angepasste Reihe von Regeln hinzufügen, um die Berechtigungen für jedes Gerät zu definieren, das durch eine Information, die während der Verarbeitung des Ereignisses zur Verfügung steht, spezifiziert wird.
Es ist außerdem möglich, Programm-Hooks direkt in
udev
-Regeln hinzuzufügen. Der udev
-Gerätemanager kann diese Programme aufrufen, um eine weitergehende Verarbeitung zu veranlassen, die zur Handhabung dieses Ereignisses notwendig ist. Zudem kann das Programm als Ergebnis dieser Verarbeitung Umgebungsvariablen exportieren. Jegliche gelieferte Ergebnisse können im weiteren Verlauf als weitere Informationsquelle in den Regeln genutzt werden.
Jede Software, die die
udev
-Bibliothek verwendet, kann udev
-Ereignisse mit allen verfügbaren Informationen empfangen und verarbeiten, die Verarbeitung ist also nicht allein an den udev
-Daemon gebunden.
A.3.1. udev-Integration mit dem Device Mapper
In RHEL 6 bietet der Device Mapper direkte Unterstützung für die
udev
-Integration. Dies synchronisiert den Device Mapper mit sämtlicher udev
-Verarbeitung in Zusammenhang mit Device-Mapper-Geräten, einschließlich LVM-Geräten. Diese Synchronisation ist notwendig, da die Regelanwendung im udev
-Daemon eine Art paralleler Verarbeitung ist zu dem Programm, das die Quelle für die Änderungen an diesem Gerät darstellt (z.B. dmsetup
und LVM). Ohne diese Unterstützung gab es häufig das Problem, dass ein Benutzer versuchte, ein Gerät zu entfernen, das noch geöffnet war und aufgrund eines vorangegangenen Änderungsereignisses immer noch von udev
-Regeln bearbeitet wurde; dies trat insbesondere dann auf, wenn die Zeitabstände zwischen Änderungen auf diesem Gerät sehr kurz waren.
Die RHEL 6 Release bietet offiziell unterstützte
udev
-Regeln für Device-Mapper-Geräte im Allgemeinen und für LVM im Besonderen. Tabelle A.1, »udev-Regeln für Device-Mapper-Geräte« fasst diese Regeln zusammen, die alle in /lib/udev/rules.d
installiert sind.
Dateiname | Beschreibung | ||
---|---|---|---|
10-dm.rules |
| ||
11-dm-lvm.rules |
| ||
13-dm-disk.rules | Enthält auf alle Device-Mapper-Geräte allgemein angewendete Regeln und erstellt die symbolischen Links in den /dev/disk/by-id , /dev/disk/by-uuid und /dev/disk/by-uuid -Verzeichnissen. | ||
95-dm-notify.rules | Enthält die Regel zur Benachrichtigung des wartenden Prozesses mittels libdevmapper (ganz wie LVM und dmsetup ). Die Benachrichtigung erfolgt, nachdem alle vorhergehenden Regeln angewendet wurden, um sicherzustellen, dass jegliche udev -Verarbeitung abgeschlossen ist. Der benachrichtigte Prozess wird anschließend fortgesetzt. |
Sie können mithilfe der
12-dm-permissions.rules
-Datei zusätzliche, angepasste Berechtigungsregeln hinzufügen. Diese Datei ist nicht im /lib/udev/rules
-Verzeichnis installiert; sie befindet sich stattdessen im /usr/share/doc/device-mapper-version
-Verzeichnis. Die 12-dm-permissions.rules
-Datei ist eine Vorlage, die Hinweise zum Einstellen der Berechtigungen enthält, basierend auf einigen passenden Regeln als Beispiel; die Datei enthält Beispiele für einige häufige Situationen. Sie können diese Datei bearbeiten und sie manuell in das /etc/udev/rules.d
-Verzeichnis ablegen, wo sie Aktualisierungen überdauert, die Einstellungen bleiben also erhalten.
Diese Regeln setzen alle grundlegenden Variablen, die von allen anderen Regeln bei der Verarbeitung von Ereignissen verwendet werden können.
Die folgenden Variablen werden in 10-dm.rules gesetzt:
DM_NAME
: Name des Device-Mapper-GerätsDM_UUID
: UUID des Device-Mapper-GerätsDM_SUSPENDED
: der ausgesetzte Zustand des Device-Mapper-GerätsDM_UDEV_RULES_VSN
:udev
-Regelversion (primär für alle anderen Regeln zur Überprüfung, ob zuvor erwähnte Variablen direkt von offiziellen Device-Mapper-Regeln gesetzt wurden)
Die folgenden Variablen werden in
11-dm-lvm.rules
gesetzt:
DM_LV_NAME
: Name des logischen DatenträgersDM_VG_NAME
: Name der DatenträgergruppeDM_LV_LAYER
: Name der LVM-Schicht
All diese Variablen können in der
12-dm-permissions.rules
-Datei genutzt werden, um Berechtigungen für bestimmte Device-Mapper-Geräte zu definieren, wie in der 12-dm-permissions.rules
-Datei dokumentiert.