Laufwerke / Gerätedateien


Unter Linux werden physikalische und logische Laufwerke als Gerätedateien in „/dev“ durch den Kernel ins Userland exportiert. Geräte die an einem IDE Bus angeschlossen sind beginnen mit „/dev/hd(x)“ (bei Debian Systemen „/dev/sd(x)“, Bezeichnung wie „SCSI“ und „SATA“Geräte), wobei das (x) etwas über die Position des Gerätes am Controller aussagt, jedoch nichts über das Gerät (CDROM oder Festplatte). Standardmäßig besitzen IDE Controller zwei Kanäle, Primary und Secondary IDE. An diesen Kanälen können jeweils zwei Geräte angeschlossen werden, ein Master und ein Slave. Unter Linux werden IDE Gerätedateien folgendermaßen dargestellt.




  • /dev/hda ⇒ Primary Master.
  • /dev/hdb ⇒ Primary Slave.
  • /dev/hdc ⇒ Secondary Master.
  • /dev/hdd ⇒ Secondary Slave.


Bei SCSI und SATA Geräten.

  • /dev/sda ⇒ Erstes SCSI Gerät.
  • /dev/sdb ⇒ Zweites SCSI Gerät.
  • /dev/sdc ⇒ Drittes SCSI Gerät.


Schließt man z.B. ein CDROM Drive am Secondary Master an, wird ein meistens ein Softlink von „/dev/cdrom“ zu „/dev/hdc“ erstellt, dass das Gerät über beide Gerätedateien ansprechbar macht.




Auf einer Festplatte können bis zu vier primäre Partitionen, oder drei Primäre und eine erweiterte Partition erstellt werden, wobei eine erweiterte Partition nur ein Container darstellt, die weitere logische Partitionen (bei IDE Festplatten bis zu 60 und SCSI und SATA Geräten bis zu 12) aufnehmen kann. Es kann nur eine erweiterte Partition pro Festplatte eingerichtet werden. Die Partitionen werden in der Partitonstabelle des Master Boot Record gespeichert.
Primäre Partitionen werden von 1 bis 4 nummeriert. Wird eine erweiterte Partition verwendet, erhält die erweiterte Partition die 4 und jede logische Partition wird die Zahl ab 5 zugewiesen.

  • /dev/[s][h]da1 ⇒ Erste (oder erweiterte) Partition auf primary Master.
  • /dev/[s][h]da2 ⇒ Zweite (oder erweiterte) Partition auf primary Master.
  • /dev/[s][h]da3 ⇒ Dritte (oder erweiterte) Partition auf primary Master.
  • /dev/[s][h]da4 ⇒ Vierte (oder erweiterte) Partition auf primary Master.
  • /dev/[s][h]da5 ⇒ Erste logische Partiton (auch wenn zweite oder dritte Partition eine erweiterte Partition darstellt).
  • /dev/[s][h]da6 ⇒ Zweite logische Partition.
  • /dev/[s][h]da7 ⇒ Dritte logische Partition.


Je nach Partitonierung sind erweiterte Partitionen nicht nutzbar, da sie lediglich Container für logische Laufwerke darstellen. Logische Laufwerke beginnen immer mit /dev/[s][h]da5.



Beispiel:

ulli@home:~$ ls -l /dev
...
brw-rw----  1 root disk      8,   0 26. Okt 17:18 sda
brw-rw----  1 root disk      8,   1 26. Okt 17:18 sda1
brw-rw----  1 root disk      8,  10 26. Okt 17:18 sda10
brw-rw----  1 root disk      8,   2 26. Okt 17:18 sda2
brw-rw----  1 root disk      8,   3 26. Okt 17:18 sda3
brw-rw----  1 root disk      8,   4 26. Okt 17:18 sda4
brw-rw----  1 root disk      8,   5 26. Okt 17:18 sda5
brw-rw----  1 root disk      8,   6 26. Okt 17:18 sda6
brw-rw----  1 root disk      8,   7 26. Okt 17:18 sda7
brw-rw----  1 root disk      8,   8 26. Okt 17:18 sda8
brw-rw----  1 root disk      8,   9 26. Okt 17:18 sda9
...






blkid



Informationen zu Gerätedateien, Identifikationsnummern, Namen und Dateisysteme können mit blkid ermittelt werden. Das Dateisystem muß dabei nicht zwingend eingebunden sein. blkid sollte nur mit Root Rechten verwendet werden.


In der Manpage wird empfohlen, den Befehl lsblk statt blkid zu verwenden. lsblk stellt mehr Informationen bereit, die Ausgabeformatierung kann besser eingestellt und benötigt keine Root-Berechtigungen.




Syntax:

  • blkid [Optionen] [Gerätedatei]




Werden keine Optionen oder Gerätedateien angegeben, werden alle Geräte, die in /proc/partitions gelistet sind angezeigt, sofern sie erkannt werden.


root@home:~# blkid
/dev/sda1: UUID="1e1edd4f-4194-44f9-adc0-f0b8fd2eb8ce" TYPE="ext4" PARTUUID="607bdc07-01"
/dev/sda2: UUID="31506863-6de7-4203-8cb2-36adfde276be" TYPE="ext4" PARTUUID="607bdc07-02"
/dev/sda3: UUID="cdb9c6c6-2407-486d-9dd2-ee7e37bb2e47" TYPE="swap" PARTUUID="607bdc07-03"
/dev/sda4: UUID="979431db-1be9-4ba9-9043-ae8ab45434b5" TYPE="ext4" PARTUUID="607bdc07-04"
/dev/sdb1: UUID="8597561f-0e3c-4f78-af44-e49dde9b0836" TYPE="ext4" PARTUUID="bbc95c78-01"
/dev/sdc1: LABEL="Backups" UUID="646e77d4-35e8-4ded-b43a-9f3609c6fcba" TYPE="ext4" PARTUUID="c0adc0ad-01"




Optionen:

  • -h ⇒ Zeigt einen Benutzungshinweis an und beendet das Programm.
  • -c [Zwischenspeicherdatei|Konfigurationsdatei] ⇒ Liest aus der [Zwischenspeicherdatei|Konfigurationsdatei] statt aus der Standardzwischenspeicherdatei. Möchtest Du mit einem Zwischenspeicher beginnen, in dem keine Geräte angezeigt werden sollen, die früher eingelesen wurden aber nicht notwendigerweise im Moment verfügbar sind, wird hier /dev/null eingetragen.
  • -g ⇒ Führt eine Speicherbereinigung (Garbage Collection) durch und entfernt Geräte, die nicht mehr existieren.
  • -i [DEVICE] ⇒ Zeigt Informationen über E/A-Begrenzungen an. (kann auch zusammen mit der Option -p verwendet werden.)
  • -k ⇒ Listet alle bekannten Dateisysteme und RAIDs auf und beendet das Programm.
  • -l ⇒ Sucht nur nach Geräten, die auf das mit der Option -t angegebene Suchmuster passen. Falls mehrere Geräte auf den Suchparameter passen, wird das Gerät mit der höchsten Priorität zurückgeliefert oder das erste Gerät mit der angegebenen Priorität. Gerätetypen in Reihenfolge absteigender Priorität: Device Mapper, EVMS, LVM, MD, reguläre Blockgeräte. Ist diese Option nicht angegeben, werden alle Geräte, die auf das angegebene Suchmuster passen, ausgeben.
  • -t [TYPE|LABEL|UUID]=Wert ⇒ Sucht nach den definierten Blockgeräten. Wenn keine Geräte angegeben sind, werden alle Blockgeräte durchsucht.
  • -L [LABEL] ⇒ Gibt das Device zu einem bestimmten Label aus.
  • -p ⇒ Umgeht den Zwischenspeicher und schaltet auf Systemnahe Superblockuntersuchung um.
  • -p -n [TYPE,Liste] [DEVICE] ⇒ Beschränkt die Prüffunktionen auf (durch Kommata getrennte) angegebene Liste der Superblocktypen. Den Listeneinträgen kann »no« (z.B. nominix) vorangestellt werden, um die Typen festzulegen, die ignoriert werden sollen. Die Option -n ist nur zusammen mit -p sinnvoll.
  • -s [Markierung] ⇒ Zeigt für jedes (angegebene) Gerät nur die Markierungen, die auf [Markierung] passen. Es ist möglich, mehrere Optionen mit -s festzulegen. Ist keine Markierung festgelegt, werden alle Merkmale für alle (angegebenen) Geräte angezeigt. Um nur den Zwischenspeicher zu aktualisieren, ohne Merkmale anzuzeigen, wird -s none ohne weitere Optionen verwendet.
  • -o [Format] ⇒ Verwendet das angegebene Ausgabeformat. Die Reihenfolge der Variablen und Geräte ist nicht festgelegt.
    • Formate:
    • full ⇒ Gibt alle Markierungen aus. (Default)
    • value ⇒ Gibt den Wert der Markierungen aus.
    • list ⇒ Gibt die Geräte in einem benutzerfreundlichen Format aus. (Veraltet)
    • device ⇒ Gibt nur die Gerätenamen aus.
    • udev ⇒ Gibt Schlüssel=„Wert“-Paare zum leichten Import in die Udev-Umgebung aus.
    • export ⇒ Gibt Schlüssel=Wert-Paare zum leichten Import in die Umgebung aus. Alle nicht druckbaren Zeichen werden mit ^ und M- kodiert, alle möglicherweise unsicheren Zeichen werden maskiert.
  • -U [UUID] ⇒ Sucht nach Geräten mit der UUID.
  • -V ⇒ Zeigt die Versionsnummer von blkid.




Rückgabewerte:

Wurde das Gerät oder Informationen zum Suchmuster gefunden, wird der Exit-Code 0 zurückgegeben.

Die Option -s filtert nur die Ausgabemarkierungen, beeinflusst aber nicht den Rückgabewert.



Wurde das festgelegte Merkmal nicht gefunden oder kein (festgelegtes) Gerät identifiziert, wird der Exit-Code 2 zurückgegeben.
Bei Benutzungs oder anderen Fehlern, wird der Exit-Code 4 zurückgegeben.
Ergibt die Untersuchung kein eindeutiges Ergebnis, wird der Exit-Code 8 zurückgegeben.



Beispiele:


root@home:~# blkid -i /dev/sdc1
DEVNAME=/dev/sdc1
MINIMUM_IO_SIZE=512
PHYSICAL_SECTOR_SIZE=512
LOGICAL_SECTOR_SIZE=512

Gibt Informationen über E/A-Begrenzungen aus.


root@home:~# blkid -i -p /dev/sdc1
DEVNAME=/dev/sdc1
LABEL=Backups
UUID=646e77d4-35e8-4ded-b43a-9f3609c6fcba
VERSION=1.0
TYPE=ext4
USAGE=filesystem
MINIMUM_IO_SIZE=512
PHYSICAL_SECTOR_SIZE=512
LOGICAL_SECTOR_SIZE=512
PART_ENTRY_SCHEME=dos
PART_ENTRY_UUID=c0adc0ad-01
PART_ENTRY_TYPE=0x83
PART_ENTRY_NUMBER=1
PART_ENTRY_OFFSET=2048
PART_ENTRY_SIZE=625139712
PART_ENTRY_DISK=8:32

Zeigt Informationen über E/A-Begrenzungen mit Superblocktypen an.


root@home:~# blkid -p -n vfat,ext3,ext4 /dev/sda1
/dev/sda1: UUID="1e1edd4f-4194-44f9-adc0-f0b8fd2eb8ce" VERSION="1.0" TYPE="ext4" USAGE="filesystem" PART_ENTRY_SCHEME="dos" PART_ENTRY_UUID="607bdc07-01" PART_ENTRY_TYPE="0x83" PART_ENTRY_FLAGS="0x80" PART_ENTRY_NUMBER="1" PART_ENTRY_OFFSET="2048" PART_ENTRY_SIZE="19531250" PART_ENTRY_DISK="8:0"

Prüft Device auf vfat,ext3,ext4 Dateisysteme.


root@home:~# blkid -p -n nominix /dev/sda1; echo $?
/dev/sda1: UUID="1e1edd4f-4194-44f9-adc0-f0b8fd2eb8ce" VERSION="1.0" TYPE="ext4" USAGE="filesystem" PART_ENTRY_SCHEME="dos" PART_ENTRY_UUID="607bdc07-01" PART_ENTRY_TYPE="0x83" PART_ENTRY_FLAGS="0x80" PART_ENTRY_NUMBER="1" PART_ENTRY_OFFSET="2048" PART_ENTRY_SIZE="19531250" PART_ENTRY_DISK="8:0"
0

Prüft alle unterstützten Formate ausser Minix und gibt den Exit-Code 0 zurück.


root@home:~# blkid -L Backups
/dev/sdc1

Gibt das Device mit dem Label Backups aus.


root@home:~# blkid -t TYPE=swap
/dev/sda3: UUID="cdb9c6c6-2407-486d-9dd2-ee7e37bb2e47" TYPE="swap" PARTUUID="607bdc07-03"

Gibt alle Geräte vom Type swap aus.


root@home:~# blkid -t TYPE=ext4 -U 1e1edd4f-4194-44f9-adc0-f0b8fd2eb8ce
/dev/sda1

Gibt Gerät mit der eingetragenen UUID aus.


root@home:~# blkid > blkid.txt

Erzeugt eine Ausgabe Datei.



lsblk



Mit lsblk werden Informationen zu allen oder den angegebenen blockorientierten Geräten aufgelistet. Es werden keine Root Rechte benötigt. Der Befehl lsblk gibt per Vorgabe alle blockorientierten Geräte (außer RAM-Disks) in einer Baumansicht aus. Für Partitionen werden einige Informationen (z.B. Warteschlangen Attribute) vom Elterngerät übernommen.

Die Ausgabe der verfügbaren Spalten kann angepasst werden. Eine Liste der verfügbaren Spalten erhält man mit lsblk --help.

Die Standard Ausgabe und die Ausgabe mit Optionen wie --fs und --topology ist Änderungen unterworfen. Deshalb sollten voreingestellte Ausgaben in Skripten vermieden werden. Um eine konsistente Ausgabe zu erzeugen, sollte ausschließlich --output [Spaltenliste,Komma getrennt], verwendet werden.


Zu beachten ist auch, dass lsblk zu einem Zeitpunkt ausgeführt werden könnte, wenn udev noch nicht über alle Informationen zu kürzlich hinzugefügten oder geänderten Geräten verfügt. In diesem Fall ist es empfehlenswert, zuerst mit udevadm settle einen Abgleich mit udev auszuführen, bevor lsblk aufgerufen wird.




Syntax:

  • lsblk [Optionen] [Device]




user@host:~$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 149,1G  0 disk 
├─sda1   8:1    0   9,3G  0 part /boot
├─sda2   8:2    0  74,5G  0 part /
├─sda3   8:3    0   3,7G  0 part [SWAP]
└─sda4   8:4    0  61,5G  0 part 
sdb      8:16   0 232,9G  0 disk 
└─sdb1   8:17   0 232,9G  0 part /home
sdc      8:32   0 298,1G  0 disk 
└─sdc1   8:33   0 298,1G  0 part 
sdd      8:48   1  14,6G  0 disk 
└─sdd1   8:49   1  14,6G  0 part /media/[User]/[Gerätename]
sr0     11:0    1  1024M  0 rom  




Optionen:

  • -a, --all ⇒ Listet auch leere Geräte auf (in der Voreinstellung werden diese übersprungen).
  • -b, --bytes ⇒ Gibt die Spalte SIZE in Bytes aus.
  • -D, --discard ⇒ Gibt Informationen zu den Discard-Fähigkeiten (TRIM, UNMAP) für jedes Gerät aus.
  • -d, --nodeps [DEVICE] ⇒ Gibt nur Informationen zum Gerät [DEVICE] aus und unterdrückt die Ausgabe von über oder untergeordneten Geräten.
  • -e, --exclude [MAJ,Liste] ⇒ Schließt eine durch Kommata getrennte Liste aus Major-Gerätenummern aus. Zu beachten ist, dass RAM-Disks (major=1) per Vorgabe nicht angezeigt werden. Der Filter kann nur auf Geräte der obersten Ebene angewendet werden.
  • -f, --fs ⇒ Gibt Informationen zu Dateisysteme aus. Diese Option ist gleichbedeutend mit -o NAME,FSTYPE,LABEL,MOUNTPOINT.
  • -h, --help ⇒ Gibt eine Liste der verfügbaren Spalten aus. Dies ist nützlich für die Option --output.
  • -I, --include [MAJ,Liste] ⇒ Gibt nur die Major-Gerätenummern aus, die in der [MAJ,Liste] eingetragen sind.
  • -i, --ascii ⇒ Verwendet ASCII-Zeichen für die Formatierung der Baumansicht.
  • -J, --json ⇒ Verwendet das JSON-Ausgabeformat.
  • -l, --list ⇒ Formatiert die Ausgabe als Liste.
  • -m, --perms ⇒ Gibt Informationen zum Besitzer, Gruppe und des Rechte des Gerätes aus. Die Option ist gleichbedeutend mit -o NAME,SIZE,OWNER,GROUP,MODE.
  • -n, --noheadings ⇒ Verhindert die Ausgabe der Kopfzeile.
  • -o, --output [Spalten,Liste] ⇒ Legt die Auszugebenden Spalten fest. Mit der Option -h werden die verfügbaren Spalten angezeigt. Die Liste der Spalten kann erweitert werden, wenn die Liste im Format +Liste angegeben wird (z.B. lsblk -o +UUID).
  • -P, --pairs ⇒ Gibt Schlüssel=„Wert“-Paare aus. Alle potenziell unsicheren Zeichen werden hexadezimal maskiert (\x<code>).
  • -p, --paths ⇒ Gibt vollständige Gerätepfade aus.
  • -r, --raw ⇒ Gibt Geräte im Rohformat aus. Alle potenziell unsicheren Zeichen in den Spalten NAME, KNAME, LABEL, PARTLABEL und MOUNTPOINT werden hexadezimal (\x<code>) maskiert.
  • -S, --scsi ⇒ Gibt nur Informationen zu SCSI-Geräten aus. Alle Partitionen, unter und übergeordneter Geräte werden ignoriert.
  • -s, --inverse ⇒ Gibt die Abhängigkeiten der Geräte in umgekehrter Reihenfolge aus.
  • -t, --topology ⇒ Gibt Informationen zur Verbindungsstruktur der blockorientierten Geräte aus. Die Option ist gleichbedeutend mit der Option -o NAME,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,RA,WSAME.
  • -V, --version ⇒ Zeigt Versionsinformationen an.
  • -x, --sort [Spalte] ⇒ Sortiert die ausgegebenen Zeilen nach [Spalte]. Diese Option benötigt die aktivierte --list-Ausgabe.




Rückgabewerte:

  • 0 ⇒ Erfolgreich. Alle Geräte wurden gefunden.
  • 1 ⇒ Fehlschlag. Keine Geräte wurden gefunden.
  • 32 ⇒ Geräte wurden nicht gefunden.
  • 64 ⇒ Einige der angegebenen Geräte wurden gefunden.




Umgebungsvariablen

  • LIBBLKID_DEBUG=all ⇒ Aktiviert die Debug-Ausgabe.
  • LIBMOUNT_DEBUG=all ⇒ Aktiviert die Debug-Ausgabe für libmount.
  • LIBSMARTCOLS_DEBUG=all ⇒ Aktiviert die Debug-Ausgabe für libsmartcols.
  • LIBSMARTCOLS_DEBUG_PADDING=on ⇒ Verwendet sichtbare Füllzeichen. Erfordert ein aktiviertes LIBSMARTCOLS_DEBUG.





Beispiele:


user@host:~$ lsblk -a
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 149,1G  0 disk 
├─sda1   8:1    0   9,3G  0 part /boot
├─sda2   8:2    0  74,5G  0 part /
├─sda3   8:3    0   3,7G  0 part [SWAP]
└─sda4   8:4    0  61,5G  0 part 
sdb      8:16   0 232,9G  0 disk 
└─sdb1   8:17   0 232,9G  0 part /home
sdc      8:32   0 298,1G  0 disk 
└─sdc1   8:33   0 298,1G  0 part 
sr0     11:0    1  1024M  0 rom  

Listet alle erkannten Geräte (auch leere) auf.


user@host:~$ lsblk -d /dev/sda1
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda1   8:1    0  9,3G  0 part /boot

Gibt nur Informationen zum definierten Gerät aus.


user@host:~$ lsblk -d -f /dev/sda1 /dev/sda2
NAME FSTYPE LABEL UUID                                 MOUNTPOINT
sda1 ext4         1e1edd4f-4194-44f9-adc0-f0b8fd2eb8ce /boot
sda2 ext4         31506863-6de7-4203-8cb2-36adfde276be /

Gibt Informationen zu definierten Dateisysteme aus.


user@host:~$ lsblk -p -l -x SIZE
NAME      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
/dev/sr0   11:0    1  1024M  0 rom  
/dev/sda3   8:3    0   3,7G  0 part [SWAP]
/dev/sda1   8:1    0   9,3G  0 part /boot
/dev/sda4   8:4    0  61,5G  0 part 
/dev/sda2   8:2    0  74,5G  0 part /
/dev/sda    8:0    0 149,1G  0 disk 
/dev/sdb1   8:17   0 232,9G  0 part /home
/dev/sdb    8:16   0 232,9G  0 disk 
/dev/sdc1   8:33   0 298,1G  0 part 
/dev/sdc    8:32   0 298,1G  0 disk 

Listet alle erkannten Geräte mit Pfadangabe und sortiert sie nach Größe.


user@host:~$ lsblk -p -d /dev/sda1 -o NAME
NAME
/dev/sda1

Gibt den vollständigen Pfad und nur den Namen vom Gerät aus.


user@host:~$ lsblk -p -d /dev/sda1 -o NAME -n
/dev/sda1

Unterdrückt die Ausgabe der Kopfzeile.


user@host:~$ lsblk -p -d /dev/sda1 -o NAME -n | echo $?
0

Gerät wurde erfolgreich gefunden. Umleitung zum Rückgabewert 0 = erfolgreich.


user@host:~$ lsblk -p -d /dev/sda1 -o NAME -n 2>/dev/null || echo $?
/dev/sda1

Gerät wurde erfolgreich gefunden. Der Pfad zum Gerät wird ausgegeben.


user@host:~$ lsblk -p -d /dev/sdd -o NAME -n 2>/dev/null || echo $?
32

Gerät wurde nicht gefunden. Mit 2>/dev/null wird die Meldung von lsblk unterdrückt und der Exit-Code 32 zurückgegeben.



Cloud

  • Zuletzt geändert: 09.03.2019 16:41
  • von Tom