Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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.

Tabelle A.1. udev-Regeln für Device-Mapper-Geräte

Dateiname Beschreibung
10-dm.rules
Enthält grundlegende/allgemeine Device-Mapper-Regeln und erstellt die symbolischen Links in /dev/mapper mit einem /dev/dm-N-Ziel, wobei N eine dem Gerät durch den Kernel dynamisch zugewiesene Nummer ist (/dev/dm-N ist ein Knoten).
ANMERKUNG: /dev/dm-N-Knoten sollten niemals in Skripten zum Zugriff auf das Gerät verwendet werden, da die Nummer N dynamisch zugewiesen wird und sich abhängig von der Reihenfolge, in der die Geräte aktiviert werden, ändern kann. Daher sollten echte Namen im /dev/mapper-Verzeichnis verwendet werden. Dieser Aufbau unterstützt udev-Anforderungen hinsichtlich der Erstellung von Knoten/Symlinks.
11-dm-lvm.rules
Enthält auf LVM-Geräte angewendete Regeln und erstellt die symbolischen Links für die logischen Datenträger der Datenträgergruppe. Die symbolischen Links werden im /dev/vgname-Verzeichnis mit einem /dev/dm-N-Ziel erstellt.
ANMERKUNG: Um bei der Benennung aller zukünftigen Regeln für Device-Mapper-Untersysteme konsistent mit dem Standard zu bleiben, sollten udev-Regeln dem Format 11-dm-subsystem_name.rules entsprechen. Auch alle libdevmapper-Benutzer, die ebenfalls udev-Regeln erstellen, sollten diesem Standard folgen.
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äts
  • DM_UUID: UUID des Device-Mapper-Geräts
  • DM_SUSPENDED: der ausgesetzte Zustand des Device-Mapper-Geräts
  • DM_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ägers
  • DM_VG_NAME: Name der Datenträgergruppe
  • DM_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.