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.
Gerätedateien
- /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.
Partitionen
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.
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 ...
Informationen über Blockgeräteattribute ermitteln/ausgeben
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.
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.
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.
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