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.
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:
-
/dev/disk/by-id/id verwendet IDs, die sich aus dem Bussystem, dem Gerätenamen und einer Modell- oder Seriennummer zusammensetzen.
-
/dev/disk/by-label/label verwendet den Namen, der dem Dateisystem gegeben wurde.
-
/dev/disk/by-path/path verwendet einen Pfadnamen, der sich aus der PCI-Schnittstelle, dem Bussystem und der Partitionsnummer ergibt. Vorsicht: Wenn ein USB- oder Firewire-Gerät beim nächsten Mal an einen anderen USB-Stecker angeschlossen wird, ändert sich sein Pfadname!
-
/dev/disk/by-uuid/uuid verwendet die UUIDs der Dateisysteme. Universal Unique Identifiers sind eindeutige ID-Nummern, die einem Dateisystem beim Formatieren zugeordnet werden. UUIDs ermöglichen eine Identifizierung von Dateisystemen auch nach einer Änderung an der Hardware-Konfiguration.
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.