Nächste: , Vorige: , Nach oben: Systemkonfiguration   [Inhalt][Index]


11.5 Zugeordnete Geräte

Der Linux-Kernel unterstützt das Konzept der Gerätezuordnung: Ein blockorientiertes Gerät wie eine Festplattenpartition kann einem neuen Gerät zugeordnet werden, gewöhnlich unter /dev/mapper/, wobei das neue Gerät durchlaufende Daten zusätzlicher Verarbeitung unterzogen werden30. Ein typisches Beispiel ist eine Gerätezuordnung zur Verschlüsselung: Jeder Schreibzugriff auf das zugeordnete Gerät wird transparent verschlüsselt und jeder Lesezugriff ebenso entschlüsselt. Guix erweitert dieses Konzept, indem es darunter jedes Gerät und jede Menge von Geräten versteht, die auf irgendeine Weise umgewandelt wird, um ein neues Gerät zu bilden; zum Beispiel entstehen auch RAID-Geräte aus einem Verbund mehrerer anderer Geräte, wie etwa Festplatten oder Partition zu einem einzelnen Gerät, das sich wie eine Partition verhält.

Zugeordnete Geräte werden mittels einer mapped-device-Form deklariert, die wie folgt definiert ist; Beispiele folgen weiter unten.

Datentyp: mapped-device

Objekte dieses Typs repräsentieren Gerätezuordnungen, die gemacht werden, wenn das System hochfährt.

source

Es handelt sich entweder um eine Zeichenkette, die den Namen eines zuzuordnenden blockorientierten Geräts angibt, wie "/dev/sda3", oder um eine Liste solcher Zeichenketten, sofern mehrere Geräts zu einem neuen Gerät verbunden werden. Im Fall von LVM ist es eine Zeichenkette, die den Namen der zuzuordnenden Datenträgergruppe (Volume Group) angibt.

target

Diese Zeichenkette gibt den Namen des neuen zugeordneten Geräts an. Bei Kernel-Zuordnern, wie verschlüsselten Geräten vom Typ luks-device-mapping, wird durch Angabe von "my-partition" ein Gerät "/dev/mapper/my-partition" erzeugt. Bei RAID-Geräten vom Typ raid-device-mapping muss der Gerätename als voller Pfad wie zum Beispiel "/dev/md0" angegeben werden. Logische Datenträger von LVM („LVM logical volumes“) vom Typ lvm-device-mapping müssen angegeben werden als "DATENTRÄGERGRUPPENNAME-LOGISCHERDATENTRÄGERNAME".

targets

Diese Liste von Zeichenketten gibt die Namen der neuen zugeordneten Geräte an, wenn es mehrere davon gibt. Das Format ist mit target identisch.

type

Dies muss ein mapped-device-kind-Objekt sein, das angibt, wie die Quelle source dem Ziel target zugeordnet wird.

Variable: luks-device-mapping

Hiermit wird ein blockorientiertes Gerät mit LUKS verschlüsselt, mit Hilfe des Befehls cryptsetup aus dem gleichnamigen Paket. Dazu wird das Linux-Kernel-Modul dm-crypt vorausgesetzt.

Prozedur: luks-device-mapping-with-options [#:key-file]

Liefert ein luks-device-mapping-Objekt, womit ein blockorientiertes Gerät mit LUKS verschlüsselt wird, mit Hilfe des Befehls cryptsetup aus dem gleichnamigen Paket. Dazu wird das Linux-Kernel-Modul dm-crypt vorausgesetzt.

Wenn Sie mit key-file eine Schlüsseldatei angeben, wird zum Entsperren wenn möglich zunächst die Schlüsseldatei hergenommen. Der Vorteil davon ist, dass Sie kein Passwort eintippen müssen. Damit können Sie beispielsweise RAID-Arrays beim Booten automatisch entsperren. Wenn das Entsperren mit der Schlüsseldatei fehlschlägt, wird noch das Entsperren per Passwort versucht werden. Die Schlüsseldatei liegt nicht im Store; sie muss zum Zeitpunkt des Entsperrungsversuchs an der angegebenen Stelle zu finden sein.

;; Die folgende Definition ist gleichbedeutend mit dem Befehl:
;;   cryptsetup open --key-file /crypto.key /dev/sdb1 data
(mapped-device
 (source "/dev/sdb1)
 (target "data)
 (type (luks-device-mapping-with-options
        #:key-file "/crypto.key")))
Variable: raid-device-mapping

Dies definiert ein RAID-Gerät, das mit dem Befehl mdadm aus dem gleichnamigen Paket als Verbund zusammengestellt wird. Es setzt voraus, dass das Linux-Kernel-Modul für das entsprechende RAID-Level geladen ist, z.B. raid456 für RAID-4, RAID-5 oder RAID-6, oder raid10 für RAID-10.

Variable: lvm-device-mapping

Hiermit wird ein oder mehrere logische Datenträger („Logical Volumes“) für den Logical Volume Manager (LVM) für Linux definiert. Die Datenträgergruppe („Volume Group“) wird durch den Befehl vgchange aus dem lvm2-Paket aktiviert.

Das folgende Beispiel gibt eine Zuordnung von /dev/sda3 auf /dev/mapper/home mit LUKS an – dem Linux Unified Key Setup, einem Standardmechanismus zur Plattenverschlüsselung. Das Gerät /dev/mapper/home kann dann als device einer file-system-Deklaration benutzt werden (siehe Dateisysteme).

(mapped-device
  (source "/dev/sda3")
  (target "home")
  (type luks-device-mapping))

Um nicht davon abhängig zu sein, wie Ihre Geräte nummeriert werden, können Sie auch die LUKS-UUID (unique identifier, d.h. den eindeutigen Bezeichner) des Quellgeräts auf der Befehlszeile ermitteln:

cryptsetup luksUUID /dev/sda3

und wie folgt benutzen:

(mapped-device
  (source (uuid "cb67fc72-0d54-4c88-9d4b-b225f30b0f44"))
  (target "home")
  (type luks-device-mapping))

Es ist auch wünschenswert, Swap-Speicher zu verschlüsseln, da in den Swap-Speicher sensible Daten ausgelagert werden können. Eine Möglichkeit ist, eine Swap-Datei auf einem mit LUKS-Verschlüsselung zugeordneten Dateisystem zu verwenden. Dann wird die Swap-Datei verschlüsselt, weil das ganze Gerät verschlüsselt wird. Ein Beispiel finden Sie im Abschnitt Swap-Speicher oder im Abschnitt Disk Partitioning.

Ein RAID-Gerät als Verbund der Partitionen /dev/sda1 und /dev/sdb1 kann wie folgt deklariert werden:

(mapped-device
  (source (list "/dev/sda1" "/dev/sdb1"))
  (target "/dev/md0")
  (type raid-device-mapping))

Das Gerät /dev/md0 kann als device in einer file-system-Deklaration dienen (siehe Dateisysteme). Beachten Sie, dass das RAID-Level dabei nicht angegeben werden muss; es wird während der initialen Erstellung und Formatierung des RAID-Geräts festgelegt und später automatisch bestimmt.

Logische Datenträger von LVM namens „alpha“ und „beta“ aus der Datenträgergruppe (Volume Group) „vg0“ können wie folgt deklariert werden:

(mapped-device
  (source "vg0")
  (targets (list "vg0-alpha" "vg0-beta"))
  (type lvm-device-mapping))

Die Geräte /dev/mapper/vg0-alpha und /dev/mapper/vg0-beta können dann im device-Feld einer file-system-Deklaration verwendet werden (siehe Dateisysteme).


Fußnoten

(30)

Beachten Sie, dass mit GNU Hurd kein Unterschied zwischen dem Konzept eines „zugeordneten Geräts“ und dem eines Dateisystems besteht: Dort werden bei beiden Ein- und Ausgabeoperationen auf eine Datei in Operationen auf dessen Hintergrundspeicher übersetzt. Hurd implementiert zugeordnete Geräte genau wie Dateisysteme mit dem generischen Übersetzer-Mechanismus (siehe Translators in Referenzhandbuch von GNU Hurd).


Nächste: Swap-Speicher, Vorige: Dateisysteme, Nach oben: Systemkonfiguration   [Inhalt][Index]