23.3Device-Namen für Festplatten und andere Datenträger

IDE, SATA und SCSI sind die zurzeit üblichen Standards, um einen Computer mit seinen Laufwerken zu verbinden. Tabelle 23.1 fasst die Bedeutung dieser und einiger weiterer Abkürzungen zusammen.

Abkürzung

Bedeutung

ATA

Advanced Technology Attachment (Schnittstelle zum Anschluss von Festplatten)

ATAPI

ATA Packet Interface (ATA-Erweiterung für CD- und DVD-Laufwerke)

IDE

Integrated Device Electronics (alternative Bezeichnung für PATA)

PATA

Parallel ATA (alte ATA-Schnittstelle mit paralleler Datenübertragung)

SATA

Serial ATA (neue ATA-Schnittstelle mit serieller Datenübertragung)

SCSI

Small Computer System Interface (Alternative zu IDE/SATA)

Tabelle 23.1Glossar

Linux-intern erfolgt der Zugriff auf interne und externe Festplatten und deren Partitionen, auf CD- und DVD-Laufwerke sowie auf andere Datenträger über Device-Dateien. Das sind besondere Dateien, die als Schnittstelle zwischen Linux und der Hardware dienen.

Diese Device-Dateien benötigen Sie nur zu Verwaltungszwecken, d.h., wenn Sie die Partitionierung einer Festplatte ändern oder eine bestimmte Partition in das Dateisystem einbinden möchten. Im normalen Betrieb greifen Sie auf das gesamte Dateisystem über Verzeichnisse zu. Dabei bezeichnet / den Start des Dateisystems. Einzelne Partitionen können darin an beliebigen Orten eingebunden werden – eine zusätzliche Linux-Partition etwa unter dem Namen /data, eine Windows-Partition beispielsweise unter dem Namen /media/win.

Im Kernel ist der SCSI-Treiber für alle internen und externen Datenträger verantwortlich, die über die Bussysteme IDE, SATA, SCSI, USB oder Firewire angeschlossen sind. Die Treiberbezeichnung »SCSI« ist historisch begründet:

Ursprünglich war der SCSI-Treiber wirklich nur für SCSI-Geräte gedacht, nach und nach wurden aber immer mehr Bussysteme in diesen Treiber integriert.

Alle Datenträger werden mit /dev/sdxy benannt. Die Speichermedien heißen also der Reihe nach /dev/sda, /dev/sdb etc. Bei SATA-Geräten werden der Reihe nach alle genutzten Kanäle mit einem Buchstaben verbunden. Moderne Mainboards sehen zumeist mindestens sechs oder acht Kanäle vor. Wenn beispielsweise zwei Festplatten an die SATA-Kanäle 1 und 3 angeschlossen sind, erhalten diese die Device-Namen /dev/sda und /dev/sdb. Wenn später eine dritte Festplatte an den Kanal 2 angeschlossen wird, ändert sich der Device-Name der zweiten Festplatte von /dev/sdb in /dev/sdc.

Bei SCSI-Geräten hängt die Reihenfolge von den ID-Nummern der Geräte ab. Löcher in der ID-Reihenfolge werden nicht berücksichtigt. Drei SCSI-Geräte mit den ID-Nummern 0, 2 und 5 bekommen also die Device-Namen /dev/sda bis /dev/sdc. Ähnlich wie bei SATA-Geräten können sich durch eine spätere Konfigurationsänderung die Device-Namen ändern: Wenn ein viertes Gerät mit der ID-Nummer 3 hinzugefügt wird, bekommt dieses den Namen /dev/sdc. Das Gerät mit der ID-Nummer 5 wird jetzt als /dev/sdd angesprochen. Wenn gleichzeitig Geräte verschiedener Bussysteme angeschlossen sind, hängt es vom BIOS und von den genutzten PCI-Steckplätzen ab, welches Bussystem zuerst berücksichtigt wird.

Externe USB- und Firewire-Geräte werden wie SCSI-Geräte behandelt. Für die Zuweisung der Buchstaben ist die Reihenfolge entscheidend, in der die Geräte angeschlossen werden. CD- und DVD-Laufwerke bekommen eigene Device-Namen, die je nach Distribution /dev/scdn oder /dev/srn lauten.

Device

Bedeutung

/dev/sda

erste Festplatte

/dev/sdb

zweite Festplatte

...

/dev/scd0 oder /dev/sr0

erstes CD/DVD-Laufwerk

/dev/scd1 oder /dev/sr1

zweites CD/DVD-Laufwerk

...

Tabelle 23.2Device-Namen

Wenn Linux in einer virtuellen Maschine ausgeführt wird und dabei der virtio-Treiber zum Einsatz kommt, spricht der Kernel die virtuellen Festplatten über die Device-Namen /dev/vda, /dev/vdb etc. an. Der virtio-Treiber ermöglicht eine besonders effiziente Kommunikation zwischen dem Virtualisierungssystem und dem Kernel in der virtuellen Maschine. Die Virtualisierungssysteme KVM und Xen unterstützen virtio standardmäßig.

Das Nummerierungsschema für Partitionen hängt davon ab, wie die Festplatte aufgeteilt ist. Zurzeit sind zwei Partitionierungsvarianten möglich: die klassische MBR-Methode, bei der sich die Partitionierungstabelle im Master Boot Record (MBR) befindet, und die neuen GUID Partition Tables (GPTs), die vor allem bei sehr großen Festplatten sowie auf EFI-Systemen zum Einsatz kommen.

Bei der MBR-Partitionierung sind die Ziffern 1 bis 4 für primäre oder erweiterte Partitionen reserviert und die Ziffern ab 5 für logische Partitionen innerhalb der erweiterten Partitionen. Aus diesem Grund kommt es recht häufig vor, dass es in der Nummerierung Löcher gibt. Wenn die Festplatte beispielsweise eine primäre, eine erweiterte und drei logische Partitionen aufweist, haben diese die Nummern 1, 2, 5, 6 und 7. Tabelle 23.3 gibt einige Beispiele.

Die Anzahl der Partitionen pro Festplatte ist limitiert: Einerseits sind aus historischen Gründen maximal vier primäre bzw. drei primäre und eine erweiterte Partition zulässig. Andererseits limitiert Linux die Anzahl der verwendbaren logischen Partitionen auf 11. Daraus ergibt sich eine Gesamtanzahl von 15 Partitionen.

Device

Bedeutung

/dev/sda

die erste SCSI/SATA-Platte (bzw. die erste IDE-Festplatte bei libata-Kernel)

/dev/sda1

die erste primäre Partition dieser Festplatte

/dev/sdd3

die dritte primäre Partition der vierten SCSI/SATA-Platte

/dev/sdd5

die erste logische Partition der vierten SCSI/SATA-Platte

/dev/sdd15

die elfte logische Partition der vierten SCSI/SATA-Platte

Tabelle 23.3Beispiele für die Partitionsnummerierung (MBR)

Wesentlich einfacher ist die Nummerierung bei Festplatten mit einer GPT: Die Unterscheidung zwischen primären, erweiterten und logischen Partitionen entfällt. Die Partitionen werden einfach der Reihe nach durchnummeriert. Das Kernel-Limit von 15 Partitionen bleibt aber bestehen, obwohl eine GPT bis zu 128 Partitionen erlaubt.

Unkonventionelle Nummerierung

Es ist möglich, dass die physikalische Reihenfolge der Partitionen von der Nummerierung abweicht! Nehmen Sie an, auf einer Festplatte mit 3 TByte wurden drei Partitionen mit je 1 TByte angelegt (/dev/sda1 bis /dev/sda3). Anschließend wird die mittlere Partition gelöscht. Im freien Bereich werden nun zwei neue Partitionen mit je 500 GByte erzeugt. Diese beiden Partitionen erhalten die Device-Namen /dev/sda2 und /dev/sda4! Bei einer MBR-Partitionierung ist dieser Sonderfall nicht möglich, weil zwischen /dev/sda1 und /dev/sda3 nur eine Partition eingefügt werden kann.

Ein ungemein praktisches und wertvolles Werkzeug auf Rechnern mit mehreren Datenträgern ist lsblk. Es liefert eine baumartige Liste mit den Device-Namen aller Datenträger und Partitionen inklusive deren Verwendung bzw. mount-Punkt. Beim folgenden Beispiel enthält das erste Laufwerk die System- und die Swap-Partition. Auf dem zweiten Laufwerk ist die erste Partition (sdb1) ungenutzt. In der zweiten Partition befindet sich ein LVM-System, das wiederum zwei aktive Logical Volumes enthält.

root# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 16G 0 disk sda1 8:1 0 15G 0 part / sda2 8:2 0 1K 0 part sda5 8:5 0 1022M 0 part [SWAP] sdb 8:16 0 64G 0 disk sdb1 8:17 0 2G 0 part sdb2 8:18 0 62G 0 part vg1-lv1 (dm-0) 252:0 0 10G 0 lvm /backup vg1-lv2 (dm-1) 252:1 0 15G 0 lvm /data sr0 11:0 1 1024M 0 rom

Wie ich oben erklärt habe, kann sich durch den nachträglichen Einbau weiterer SCSI- oder SATA-Festplatten der Device-Name der bisherigen Geräte ändern. Unvorhersehbar sind die Device-Namen bei externen Geräten: Sie ergeben sich aus der Reihenfolge, in der die Geräte angeschlossen werden.

Um trotz variierender Device-Namen einheitlich auf einzelne Geräte bzw. Partitionen zuzugreifen (z.B. in einem Backup-Script), enthält das Verzeichnis /dev/disk zusätzliche Links auf alle Datenträger, die nach verschiedenen Kriterien geordnet sind:

Die Anzahl der Links in den /dev/disk-Verzeichnissen variiert. /dev/disk/by-label und by-uuid enthalten beispielsweise nur Links auf Partitionen, die benannt sind bzw. eine UUID haben. Für die automatische Erzeugung der Links ist das udev-System verantwortlich (siehe Abschnitt 13.10, »Device-Dateien«). Das folgende ls-Kommando zeigt ein Beispiel für die Links eines Testsystems mit einer SATA-Festplatte, einem USB-Stick und einer SD-Karte. Um die Lesbarkeit zu erhöhen, habe ich die Zeilen ein wenig eingerückt und die Informationen zu den Zugriffsrechten entfernt.

user$ cd /dev/ user$ ls -lR disk/ disk/by-id: scsi-SATA_ST3320620AS_5QF194H9 -> ../../sda scsi-SATA_ST3320620AS_5QF194H9-part1 -> ../../sda1 scsi-SATA_ST3320620AS_5QF194H9-part2 -> ../../sda2 usb-Generic_USB_CF_Reader_058F312D81B -> ../../sdc ... disk/by-path: pci-0000:00:1d.7-usb-0:5:1.0-scsi-0:0:0:1 -> ../../sdc pci-0000:00:1f.2-scsi-0:0:0:0 -> ../../sda pci-0000:00:1f.2-scsi-0:0:0:0-part1 -> ../../sda1 pci-0000:00:1f.2-scsi-0:0:0:0-part2 -> ../../sda2 disk/by-uuid: 008f06ef-28be-45c9-acbc-20cda51f712b -> ../../sda2 366CA8D16CA88D65 -> ../../sda1