Übersicht: UUID, Partitions-Label und fstab

Die dauerhafte Benennung (persistent naming) von Blockgeräten wurde mit Einführung von udev ermöglicht und hat einige Vorteile gegenüber der Bennenung auf Bus-Basis. Im folgenden nennen wir eine Kennzeichnung nach dieser Methode einen "dauerhaften Bezeichner".

Die Weiterentwicklung von udev und von Linux-Distributionen hat die Hardware-Erkennung verlässlicher gemacht, auch wenn Veränderungen und neue Herausforderungen damit verbunden sind oder sein können:

1) Bei mehr als einem SATA/SCSI- oder IDE-Festplattenkontroller ist die Reihenfolge der Einbindung der Speichergeräte nun beliebig bzw. zufällig. Dies hat zur Folge, dass Gerätenamen nach jedem Bootvorgang beliebig zwischen hdX und hdY wechseln können. Gleiches gilt für sdX und sdY. Ein dauerhafter Bezeichner ermöglicht es, dass man darüber keine Gedanken zu verlieren braucht.

2) Mit Einführung der neuen libata PATA-Unterstützung werden alle Speichergeräte in Hinkunft mit sdX benannt, auch Geräte, die bisher hdX benannt waren. Mittels persistent naming ist man als Anwender in der Regel damit nicht konfrontiert, man bemerkt es nicht.

3)Bei Computern mit SATA- und IDE-Kontrollern, eine gängige Konfiguration moderner Hardware-Setups, werden alle Speichergeräte mit sdX benannt.

In der Grundeinstellung benutzt eine sidux-Installation aus oben genannten Gründen UUID in /etc/fstab.

Aus diesen und weiteren Überlegungen empfiehlt sidux, die Grundeinstellungen zu einem Schema mit dauerhaftem Bezeichner umzustellen.

Die vier Grundschemata zur Erstellung eines dauerhaften Bezeichners:

1. Dauerhafter Bezeichner mittels UUID

UUID bedeutet wörtlich "Universally Unique Identifier", ist also eine eindeutige, singuläre Kennzeichnung eines Geräts, technisch wird ermöglicht, jedem Dateisystem eine eindeutige, singuläre Identifikation zu geben. Die technische Umsetzung dieses Konzepts macht eine Kollision zweier gleicher Identifikationsnummern sehr unwahrscheinlich.
Alle Linux-Dateisysteme inklusive swap unterstützen UUID. Obwohl FAT- und NTFS-Dateisysteme UUID nicht unterstützen, werden sie in by-uuid mit eindeutigen, singulären Identifikationsnummern gelistet:

$ /bin/ls -lF /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Oct 16 10:27 2d781b26-0285-421a-b9d0-d4a0d3b55680 -> ../../sda1
lrwxrwxrwx 1 root root 10 Oct 16 10:27 31f8eb0d-612b-4805-835e-0e6d8b8c5591 -> ../../sda7
lrwxrwxrwx 1 root root 10 Oct 16 10:27 3FC2-3DDB -> ../../sda6
lrwxrwxrwx 1 root root 10 Oct 16 10:27 5090093f-e023-4a93-b2b6-8a9568dd23dc -> ../../sda2
lrwxrwxrwx 1 root root 10 Oct 16 10:27 912c7844-5430-4eea-b55c-e23f8959a8ee -> ../../sda5
lrwxrwxrwx 1 root root 10 Oct 16 10:27 B0DC1977DC193954 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Oct 16 10:27 bae98338-ec29-4beb-aacf-107e44599b2e -> ../../sdb2

Wie man sehen kann, haben die FAT- und NTFS-Partitionen kürzere Bezeichnungen, sind aber dennoch gelistet. Der Vorteil der UUID-Methode ist die geringere Wahrscheinlichkeit von Benennungskollisionen, als wenn die Speichergeräte mittels Label-Benennung eingebunden wären. Der Nachteil ist offensichtlich: die UUID-Benennungen kann man sich schwerer merken.

2. Dauerhafter Bezeichner mittels LABEL

Praktisch jeder Typ von Dateisystem kann ein Label haben. Partitionen mit einem Label findet man im Verzeichnis /dev/disk/by-label:

$ ls -lF /dev/disk/by-label
total 0
lrwxrwxrwx 1 root root 10 Oct 16 10:27 data -> ../../sdb2
lrwxrwxrwx 1 root root 10 Oct 16 10:27 data2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Oct 16 10:27 fat -> ../../sda6
lrwxrwxrwx 1 root root 10 Oct 16 10:27 home -> ../../sda7
lrwxrwxrwx 1 root root 10 Oct 16 10:27 root -> ../../sda1
lrwxrwxrwx 1 root root 10 Oct 16 10:27 swap -> ../../sda5
lrwxrwxrwx 1 root root 10 Oct 16 10:27 windows -> ../../sdb1

Die Bezeichnung eines Labels kann mit folgenden Befehlen geändert werden:

* swap: Erzeugung eines neuen swapspace: mkswap -L <label> /dev/XXX
* ext2/ext3: e2label /dev/XXX <label>
* reiserfs: reiserfstune -l <label> /dev/XXX
* jfs: jfs_tune -L <label> /dev/XXX
* xfs: xfs_admin -L <label> /dev/XXX
* fat/vfat: Es gibt zwar kein Tool, um das Label einer FAT-Partition unter Linux zu ändern,
aber bei der Erstellung des Filesystems kann dieser Befehl verwendet werden: mkdosfs -n <label> <weitere Optionen>. 
Die Änderung eines Labels von FAT-Partitionen kann in Windows durchgeführt werden.
* ntfs: ntfslabel /dev/XXX <label> Änderung des Labels in Windows. 

Unbedingt zu beachten ist: Die Labels müssen eine singuläre Bezeichnung haben, um bei der Einbindung funktionieren zu können. Das gilt auch für externe Geräte (Festplatten, Sticks, etc.), die via USB oder FIrewire eingebunden werden. Die Syntax LABEL=/ UUID= ist für UN*X-Partitionen gegenüber /dev/disk/by-*/ vorzuziehen.

3. Dauerhafter Bezeichner mittels ID

by-id kreiert eine singuläre Bezeichnung auf Basis der Seriennummer der Hardware.

4. Dauerhafter Bezeichner mittles Pfad

by-path kreiert eine singuläre Bezeichnung auf Basis des kürzesten physischen Pfads (laut sysfs).

Beide letztgenannten Methoden beinhalten Zeichenketten, welche indizieren, zu welchem Subsystem sie gehören, und sind somit nicht geeignet, die zu Beginn genannten Probleme zu lösen und werden im weiteren hier nicht diskutiert.

Aktivierung des dauerhaften Bezeichners

Hier nun die Methode, wie ein dauerhafter Bezeichner aktiviert wird.

In fstab

Die Aktivierung in /etc/fstab ist einfach. Der Gerätename in der ersten Spalte wird durch den dauerhaften Bezeichner ersetzt. In unserem Beispiel wird /dev/sda7 durch einen der beiden neuen Bezeichner ersetzt:

/dev/disk/by-label/home oder
/dev/disk/by-uuid/31f8eb0d-612b-4805-835e-0e6d8b8c5591 

Dies wird für alle Partitonen in der fstab durchgeführt.

Anstelle der direkten Benennung durch einen dauerhaften Bezeichner kann das Laufwerk, das mittles UUID oder Label eingebunden werden soll, auch nur indiziert werden, indem geschrieben wird: LABEL=<label> oder UUID=<uuid>. Zum Beispiel:

LABEL=Boot

oder

UUID=3e6be9de-8139-11d1-9106-a43f08d823a6

Dauerhafter Bezeichner im Boot-Manager

Um dauerhafte Bezeichner im Boot-Manager nutzen zu können, müssen folgende Vorkehrungen getroffen werden:
1) Nutzung eines mkinitcpio initramfs image
2) Udev ist aktiviert in: /etc/mkinitcpio.conf
3) Zur Generierung eines initramfs image muss klibc-udev in der Version 101-3 oder höher installiert sein (persistent naming ist in früheren Versionen nicht funktionsfähig). Wenn klibc-udev von einer früheren Version einen Update erfahren hat und ein dauerhafter Bezeichner gewünscht ist, muss das initramfs-image vor dem Reboot neu generiert werden.

In obigem Beispiel ist /dev/sda1 die Rootpartition. Die Kernel-Zeile der Datei /boot/grub/menu.lst sieht daher folgendermaßen aus:

Abhängig von der Wahl des Benennungs-Schemas wird diese Zeile

kernel /boot/vmlinuz26 root=/dev/hda1 vga=0x318 ro

abgeändert in

kernel /boot/vmlinuz26 root=/dev/disk/by-label/root vga=0x318 ro

oder

kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/2d781b26-0285-421a-b9d0-d4a0d3b55680 vga=0x318 ro

Eine alternative Methode ist, das Label in das Dateisystem einzubetten. Wenn zum Beispiel das Dateisystem /dev/hda1 das Label "root" besitzt, würde die Kernelzeile in /boot/grub/menu.lst so aussehen:

 kernel /boot/vmlinuz26 root=LABEL=root vga=0x318 ro

Quelle: wiki.archlinux.org unter Bezugnahme auf marc.theaimsgroup.com. Der Inhalt von wiki.archlinux.org ist als unter der GNU Free Documentation License 1.2 stehend ausgewiesen. Neu editiert bzw. übersetzt für die sidux-Handbücher.

There is more on labeling here at lissot.net

Content last revised UTC -1/02/2007 0100hrs