Linux bringt die passenden Tools mit, um Speichermedien zu erkennen, zu finden, einzurichten und deren Belegung zu erkennen.
Bei einer Standardinstallation einer gängigen Distribution sorgen die Installationsprogramme meist für die Auswahl der richtigen Platte, richten eine passable Plattengeometrie ein und halten sich auch sonst mit dem Thema Massenspeicher nicht groß auf.
Ruckzuck ist das System installiert, in den meisten Fällen brauchen Sie sich als Anwender nicht mit Festplattenpartitionen und deren Bezeichnungen auskennen. Möchten Sie jedoch später einmal einen weiteren Datenträger ins System einbinden, stehen die Assistenzprogramme aber nicht mehr bereit.
Am Anfang steht das Erkennen des Datenträgers, mit dem Sie arbeiten möchten. Um hier eindeutig das richtige Gerät zu finden, benutzen Sie das Kommando lsblk (siehe Kasten “Gerätenamen”).
Gerätenamen
Auch eine Festplatte oder ein USB-Stick wird als Gerätedatei angesprochen, nämlich in der Regel mit /dev/sdx, wobei x hier für einen Buchstaben von a bis z steht. Dieser Gerätename ist jedoch nicht in Beton gegossen, je nach Schnittstelle beginnen die Gerätenamen auch mit /dev/nvme.
Partitionen erhalten eine laufende Nummer. Die erste Partition der ersten Platte trägt also den Gerätenamen /dev/sda1. Beim häufig vorhandenen Gerät /dev/sr handelt es sich um das CD/DVD-ROM oder den DVD-Brenner.
Eine für die Praxis wichtige Option ist -p. Damit erhalten Sie die vollständigen Namen der Geräte, also mit absoluter Pfadangabe, in einer als Baum strukturierten Ansicht. Abbildung 1 zeigt Ihnen den Zustand vor und nach dem Verbinden eines weiteren Datenträgers mit dem Rechner.
Massenspeicher
Im Falle eines externen USB-Massenspeichergeräts funktioniert alles recht einfach. Stecken in Ihrem Rechner jedoch mehrere Datenträger, hilft Ihnen das Shell-Skript aus Listing 1. Damit verlieren Sie nicht die Übersicht, wenn Sie nach der Erstabfrage den Rechner herunterfahren und abschalten, um eine neue Festplatte einzubauen.
Listing 1
#! /bin/bash
# Erkennen des neuen Datenträgers
if [ -f dta1.txt ];
then
lsblk -p > dta2.txt
# Anzeigen des Unterschiedes und des damit neuen
# Datenträgers
diff dta1.txt dta2.txt
# Hilfsdateien löschen?
read -p "Suchergebnisse löschen? (j) " we
if [ "$we" = "j" ];
then
rm dta1.txt
rm dta2.txt
fi
exit
fi
# Erkennen des Zustandes VOR dem Verbinden des neuen
# Datenträgers
lsblk -p > dta1.txt
Führen Sie das Skript einmal vor dem Herunterfahren und einmal nach dem Einbau der neuen Platte aus. Beim zweiten Durchlauf erhalten Sie den Unterschied der beiden Hilfsdateien angezeigt, nämlich den neuen Datenträger. Selbstverständlich funktioniert dies auch bei einem USB-Massenspeichergerät (Abbildung 2).

Abbildung 2: Führen Sie das Skript aus Listing 1 jeweils vor und nach dem Anhängen eines Datenträgers aus.
Auch mit dem Aufruf blkid -o list finden Sie einen neuen, unbenutzten, unpartitionierten Datenträger (Abbildung 3). Für ihn existiert kein Einhängepunkt, und er hat auch noch kein Dateisystem.

Abbildung 3: Haben Sie eine neue Platte in den Rechner eingebaut, hilft Ihnen Blkid dabei, Informationen über die Hardware zu ermitteln.
Partitionieren
Das Anlegen von Partitionen geschieht entweder mittels Fdisk, Parted oder einem entsprechenden GUI-Programm (etwa mit Gparted). Für alle Aktionen, die über das Auslesen der Partitionsdaten hinausgehen, benötigen Sie in der Regel administrative Rechte. Sie rufen also, je nach Konfiguration, diese Befehle über Sudo auf oder nehmen die Identität von root an.
In jedem Fall legen Sie fest, welche Art von Partitionstabelle (Disklabel) zum Einsatz kommt. Hier wählen Sie bei Parted zwischen gpt und msdos, bei Fdisk zwischen dos, gpt oder bsd. Bei Fdisk legen Sie den Typ der Partition gemäß der Tabelle “Partitionstypen” fest. Sie zeigt Ihnen einige häufig verwendete.
|
Typ |
Bezeichner fdisk |
Bezeichner parted |
|---|---|---|
|
Linux |
83 |
|
|
Linux Swap |
82 |
|
|
FAT32 |
6 |
|
|
NTFS, exFAT |
7 |
|
|
EFI FAT 12/16 |
|
n.V. |
|
FreeBSD |
|
n.V. |
Parted kennt mehrere Partitionstypen. Der Umfang gegenüber Fdisk unterscheidet sich aber deutlich. Nur Ext2, FAT16, FAT32, Linux-swap, NTFS, XFS sind möglich. Das Programm kennt einen Dialogmodus (Abbildung 4) und einen direkten Kommandomodus im klassischen Stil.
Abbildung 4 zeigt Ihnen das Vorgehen: Zunächst rufen Sie das Programm unter Angabe der Gerätedatei auf. Mit print gibt das Tool die Geometrie des Datenträgers aus. Anschließend setzen Sie mit mklabel ein Disklabel, und legen mittels mkpart Partitionstyp Dateisystem Von Bis die Partition selbst an. Abschließend beenden Sie mit der Eingabe von quit das Werkzeug. Das Entfernen einer Partition geschieht mit rm Partitionstyp.
Die weitere Möglichkeit besteht im Absetzen direkter Kommandos, zum Beispiel in einem Shell-Skript. Als Beispiel bereiten wir einen USB-Stick für den Datenaustausch mit Rechnern “aus einer anderen Welt” vor: Eine der Optionen von Parted lautet --script. Damit führt der Befehl die Aktion sofort und ohne Rückfragen aus (Listing 2).
Listing 2
### Anlegen des Disklabels: $ parted /dev/sde --script -- mklabel msdos ### Anlegen der Partition: $ parted /dev/sde --script -- mkpart primary fat32 0% 100%
Besonders für große Platten ist Parted von Vorteil. Allerdings setzt das voraus, dass die Firmware im Rechner mitspielt, wenn es um bootfähige Datenträger geht. Oftmals ist GPR/UEFI fehlerhaft und nur “pro Windows” implementiert. Hier ist es wichtig, dass Sie das Gerät in den BIOS-Modus bringen und gegebenenfalls Secure boot abschalten.
Fdisk und Mkfs
Dieses Programm ermöglicht ebenso mit wenigen Handgriffen das Anlegen einer Partitionstabelle (Typen MBR und BSD) sowie das Erstellen von Partitionen. Mit fdisk -l sehen Sie die Datenträgergeometrie. Auch fdisk kennt einen Dialogmodus. Die Tabelle “Fdisk im Dialog” zeigt Ihnen eine Auswahl.
|
Eingabe |
Aktion |
|---|---|
|
Allgemein |
|
|
[M] |
Menü anzeigen |
|
[P] |
Plattengeometrie anzeigen |
|
[W] |
Beenden, Änderungen schreiben |
|
[Q] |
Beenden, Abbruch |
|
Disklabel festlegen (Partitionstabelle) |
|
|
[O] |
DOS |
|
[G] |
GPT |
|
Allgemeine Funktionen |
|
|
[N] |
Neue Partition anlegen |
|
[L] |
Bekannte Partitionstypen auflisten |
|
[T] |
Partitionstyp ändern |
|
[Umschalt]+[F] |
Unbelegten Speicherplatz auflisten |
|
[I] |
Details einer Partition |
|
[D] |
Partition löschen |
|
[V] |
Partitionstabelle sofort schreiben |
Im folgenden Beispiel statten Sie einen leeren USB-Stick mit einem neuen Disklabel und einer Partitionstabelle aus. Zunächst rufen Sie Fdisk zusammen mit der Gerätedatei fdisk /dev/sde auf und lassen sich zur Kontrolle mit [P]+ die Partitionstabelle ausgeben – diese ist im vorliegenden Fall leer. Anschließend setzen Sie mittels [O]+ das Disklabel für DOS und schreiben mit [W] die Änderung auf den Datenträger (Abbildung 5).
Danach rufen Sie erneut Fdisk zusammen mit Nennung der Gerätedatei auf. Mit [N]+ legen Sie nun eine neue Partition an. Dabei wählen wir das Anlegen einer primären Partition. Fdisk setzt dabei automatisch den Partitionstyp Linux. Für den Kontakt mit anderen Betriebssystemen und dem noch aufzubringenden Dateisystem wählen wir davon abweichend mit [F] den Typ 7, also “HPFS/NTFS/exFAT”.
Mit [W] schreiben Sie die Änderung auf den Datenträger und beenden das Programm (Abbildung 6). Im letzten Schritt sollten Sie den Erfolg kontrollieren. Das Kommando fdisk -l /dev/sdx gibt die nun vorbereiteten Partitionen aus (Abbildung 7).
Eine blanke Partition ist noch nicht für den Einsatz geeignet. Das Speichermedium benötigt noch ein Dateisystem: Mkfs ist hier das Mittel der Wahl. Zunächst kontrollieren Sie, ob es sich wirklich um den richtigen Datenträger handelt (fdisk -l Gerätename).
Mit dem Ergebnis arbeiten Sie dann in der Form mkfs -t Dateisystem Gerätename oder Sie benutzen einfach die Tabulatortaste, ein Komfortmerkmal der Shell. Dazu starten Sie mit der Eingabe mkfs und drücken danach doppelt auf die Tabulatortaste, die Shell bietet Ihnen dann automatisch alle bereitstehenden Dateisysteme an. Dabei handelt es sich zum einen um symbolische Links, zum anderen auch um eigene Programme. Nach der Vervollständigung, hier für das Dateisystem vfat, wird das Dateisystem angelegt (Abbildung 8).
Komfortabel mit GUI
Komfortabler und vermeintlich in einem Arbeitsgang behandeln Sie Datenträger mit dem Programm Gparted, das Sie in der Regel in den Paketquellen der großen Distributionen finden. Nach dem Start wählen Sie rechts oben das gewünschte Gerät aus. Im Falle eines blanken Datenträgers zeigt das Programm zunächst keine Partitionen und Dateisysteme an (Abbildung 9).
Beim Bearbeiten eines schon benutzten Geräts sind hier Einträge zu sehen. In diesem Fall klicken Sie mit der rechten Maustaste auf die Partition und wählen, um das Bearbeiten zu ermöglichen, Aushängen. Anschließend ist es möglich, die Partition zu löschen, zu kopieren oder gegebenenfalls mit einem anderen Dateisystem zu formatieren.
Zum Start klicken Sie links oben auf das Symbol Neu. Im Folgefenster des Programms stellen Sie alles Wesentliche ein, um die neue Partition anzulegen: Größe, Typ (Primäre Partition) und Dateisystem sowie die Bezeichnung. Klicken Sie auf Hinzufügen, sobald Sie mit den Einstellungen zufrieden sind (Abbildung 10).
In Abbildung 11 finden Sie nun die voraussichtliche Belegung in der Tabellenansicht des Datenträgers. Im unteren Teil des Fensters zeigt das Tool die noch auszuführenden Aufgaben an. In diesem Stadium könnten Sie noch abbrechen oder Änderungen vornehmen. Um die konfigurierten Arbeiten auszuführen, klicken Sie auf den grünen OK-Haken in der oberen Symbolleiste.
Es erscheint noch eine letzte Abfrage, und dann werden Ihre Anweisungen umgesetzt. Nach erfolgreicher Aktion sehen Sie die Partition mit Dateisystem, Größe und Belegung aufgelistet. Wichtig ist auch die Anmerkung am unteren Bildrand, dass keine Operationen mehr ausstehen. Damit beenden Sie das Programm (Abbildung 12).
Die UUID
Auf die klassischen Gerätenamen (etwa /dev/sda) dürfen Sie sich dabei nicht verlassen, da sich diese beim Hinzufügen oder Entnehmen von Geräten dynamisch verändern. Um im System eine eindeutige Kennzeichnung von Speichergeräten zu gewährleisten, kommt der “Universally Unique Identifier” oder kurz die UUID zum Einsatz. In der RFC 4122 [1] finden Sie das Regelwerk, das Aufbau und Bildung des UUID genau beschreibt.
Massenspeicher bekommen in der Regel automatisch eine UUID. Wie die Kennung aussieht, hängt vom gewählten Dateisystem ab. Der in Abbildung 12 gezeigte Datenträger verfügt über eine FAT32-Partition, welche die UUID 74EB-52A7 trägt.
Nach dem Formatieren mit einem Ext4-Dateisystem ändert sich auch die UUID. Nunmehr lautet diese b1954918-9adc-42ed-8b17-729c20415abb. Mittels Gparted lässt sich – in Abhängigkeit des Dateisystems – bei Bedarf eine neue UUID setzen. Auslesen können Sie diese Information, indem Sie die Partition mit der rechten Maustaste anklicken und aus dem Menü die Option Information wählen (Abbildung 13).
Mit Shell-Mitteln erhalten Sie diese Auskunft ebenfalls: Der Aufruf blkid -o list gibt Ihnen alle Massenspeicher des Systems in einer Übersicht aus. In der Abbildung 14 wurde die Ausgabe per Grep auf den USB-Stick begrenzt. Aber auch andere Programme zeigen den UUID an. Mit lsblk -f erhalten Sie ebenso eine Auflistung der im System vorhandenen Speichergeräte mitsamt ihrer UUID.
Dauerhafte Integration
Die Datei /etc/fstab beschreibt in allen gängigen Distributionen, wie das System welche Partition und Netzwerkfreigaben in den Verzeichnisbaum einhängt. Alleine das Aufzählen der Möglichkeiten, die sich Ihnen hier bieten, würde einen eigenen Artikel beanspruchen. Wir konzentrieren uns daher auf das Wesentliche.
Der allgemeine Aufbau nutzt eine Tabelle. Die einzelnen Spalten beschreiben von links nach rechts die Gerätedatei (oder alternativ ein Label oder die UUID), den Mount-Punkt im Verzeichnisbaum, das Dateisystem (vfat, ext4 oder Netzwerkprotokolle wie cifs), Optionen (Standard sind rw, suid, dev, exec, auto, nouser, async) sowie am Ende mit “Dump” und “Pass” zwei Anweisungen die Backup-Programme (Standard 0 für niemals) beziehungsweise die Reihenfolge der Dateisystemprüfung (0: Nie, 1: Sofort beim Start (für /), 2: Alle anderen Partitionen) betreffen.
Um das für den im Beispiel genutzten USB-Stick zu demonstrieren, versehen wir die erste Partition mit einem Ext4-Dateisystem und der Bezeichnung “MOBIL” (Ausgabe siehe Abbildung 15). Die Bezeichnung tragen Sie im mit der rechten Maustaste aufgerufenen Kontextmenü zur Partition unter Dateisystem bezeichnen ein.
Listing 3 zeigt nun den Eintrag in der /etc/fstab. Einmal mit der UUID als Parameter für die Gerätedatei und einmal mit dem Label. Zum Bearbeiten rufen Sie die Datei mit administrativen Rechten in einem Editor auf, etwa via sudo nano /etc/fstab. Mit [Strg]+[O][Eingabe] sichern Sie Ihre Änderung, mit [Strg]+[X] beenden Sie das Programm und kehren auf die Kommandozeile zurück.
Listing 3
### Mouten mit der UUID: UUID=80dc00f5-0429-4c81-b42f-43e452051d92 /dasi ext4 noauto,user,rw 0 2 ### Identifikation über das Label: LABEL=MOBIL /dasi ext4 noauto,user,rw 0 2
Des Weiteren wurde der Einhängepunkt /dasi mittels mkdir erstellt. Das Einhängen des Datenträgers anhand der Nennung der UUID oder der Bezeichnung funktioniert nun. Damit auch gewöhnliche Benutzer auf dem Laufwerk schreiben dürfen, erstellen Sie als root im Einhängepunkt ein Verzeichnis und übereignen dieses mittels chown dem Benutzer (Listing 4).
Listing 4
$ sudo mkdir /dasi $ sudo mount /dasi $ sudo mkdir /dasi/artikel $ sudo chown Benutzer:Benutzer /dasi/artikel
In der Abbildung 16 finden Sie die Abfrage von lsblk nach dem Einstecken des USB-Sticks. Anschließend hängt der Benutzer ihn nur anhand der Bezeichnung ein. Dabei werden die Einträge der Datei /etc/fstab gelesen und geprüft, ob der Benutzer das Einhängerecht hat.
Mit den Kommandos danach testen Sie, ob Sie als Benutzer Schreib- und Leserechte auf dem Datenträger besitzen. Letztendlich hängen Sie den Datenträger wieder aus dem System aus. Zum Schluss sehen Sie nochmals den Zustand vor und nach dem Abziehen des USB-Sticks.
Blockiert
Fehler beim Aushängen eines Datenträgers treten auf, falls Benutzer oder Anwendungen noch auf Inhalte des Dateisystems zugreifen. Mit dem Befehl lsof finden Sie heraus, wer und was darauf das Aushängen des Datenträgers blockiert (im Beispiel lsof /dasi). Erst wenn alle Zugriffe beendet sind, kann das Dateisystem ausgehängt werden.
Füllstand
Ein vollgelaufenes Dateisystem verhindert das Weiterarbeiten. Allerdings gibt es bei internen Massenspeichern oftmals, abhängig von der Systemkonfiguration, eine Reserve, die dem Benutzer root vorbehalten ist. So passiert es, dass für normale Benutzer bei 95 Prozent Belegung nicht mehr möglich ist, auf diesem Dateisystem zu speichern, root die verbliebenen 5 Prozent aber noch beschreiben darf.
Selbst bei den heutigen Größen der Massenspeicher ist es keinesfalls ausgeschlossen, dass ein Dateisystem mal überläuft. Programmierfehler, Zip-Bomben oder einfach Sammelwut sorgen schnell für schwindenden Speicher. Und wer auf einem RasPi – der ja nur über eine Micro-SD-Karte als Speichermedium verfügt – arbeitet, sollte öfter die Speicherbelegung kontrollieren.
Benutzer haben keinen direkten Zugriff auf die Swap-Partition, wohl aber auf Prozesse. Daten gelangen in der Regel erst auf dieses spezielle Dateisystem, wenn der Arbeitsspeicher (RAM) nicht mehr ausreicht. Planen Sie bei der Systeminstallation mindestens so viel Platz ein, wie der Arbeitsspeicher beträgt, besser das Doppelte. Eine ausreichend bemessene Swap-Partition verhindert, dass bei hohem RAM-Bedarf der Rechner nicht einfriert.
Unvermeidlich läuft ein System viel langsamer, wenn der Arbeitsspeicher nicht ausreicht. Es ist aber noch möglich, wichtige Prozesse zu beenden, sodass die Arbeitsfähigkeit erhalten bleibt. Programme wie Top, Htop und die GUI-Verwandten zeigen die Belegung an (Abbildung 18). In der Shell lesen Sie mittels Free die Belegung des Arbeitspeichers aus, womit auch die SWAP-Partition aufgeführt wird (Abbildung 17).
Speicherbelegung
Die Abfrage der Speicherbelegung dürfen einzelne Nutzer für sich oder systemweit vornehmen. Besonders, wenn Sie für Ihre Benutzer Speicherplatz-Quota (Beschränkung des persönlichen Speicherplatzes unter /home) verwenden, lohnt es sich, öfter einen Blick darauf zu werfen.
Mit der Mate-Systemüberwachung haben Sie auch die Festplattenbelegung insgesamt im Blick, viele Desktops verfügen über eine ähnliche Funktionen (Abbildung 19). Mehr Übersicht bietet das Werkzeug Baobab, das Sie über das gleichnamige Paket bei vielen Distributionen nachinstallieren. Es zeigt die Speicherbelegung innerhalb des Home-Verzeichnisses oder einer beliebigen Ordnerstruktur an (Abbildung 20).
Für die Abfrage der Speicherplatzbelegung stehen Ihnen zudem einige Shell-Tools bereit. Jede Distribution kennt Df. Mit df -h erhalten Sie zudem intuitive Zahlenangaben. Das Programm zeigt alle Dateisysteme an, also auch virtuelle und entfernte. Die Begrenzung auf lokal vorhandene erfolgt mit der Option -l. Bestimmte Dateisysteme geben Sie mit -T Typ an.
Abbildung 21 zeigt Ihnen das Programm im Einsatz. Echte Plattengeräte führt es dabei mit dem absoluten Pfad auf. Mit Grep setzen Sie deshalb den Filter, um die virtuellen, aber auch entfernt eingehängten Dateisysteme nicht auszugeben.
Das Programm zeigt die Größe des Datenträgers sowie den freien und belegten Speicherplatz an. Weitere ähnliche, aber oftmals in der Optik verbesserte Programme sind Dfc oder Discus. Hier ist es sogar möglich, eine ASCII-Grafik zu erzeugen.
Besonders beim Ermitteln des belegten Speicherplatzes eines Verzeichnisses (zum Beispiel vor dem Kopieren auf einen externen Datenträger) kommt die Ausgabe von Du gelegen. Mit der Option -sh summiert das Programm die Dateigrößen im angegebenen Pfad auf und gibt den belegten Speicherplatz in ganzen Kilo-, Mega- oder Gigabyte an.
Abbildung 22 zeigt, wie Sie die gesamte Belegung des Home-Verzeichnisses in einem Betrag ausgeben. Abbildung 23 zeigt auf, wie Sie ein Verzeichnis abfragen, einmal detailliert und einmal mit der Ausgabe der Summe.
Die beiden Befehle Df und Du integrieren sich gut in Shell-Skripte. Oftmals passiert es, dass man auf einen USB-Stick Daten speichern will, aber der Platz nicht reicht. Das wäre oft nicht weiter schlimm, wenn es sich nur um eine einzige Datei handelt. Bei einer größeren Anzahl von Dateien aber befindet sich dann ein Teil am USB-Stick.
Um sicherzustellen, dass alle Daten vollständig kopiert wurden, müssten Sie die Daten von Hand wieder löschen und die Kopie neu starten. Mit dem Shell-Skript in Listing 5 sehen Sie diese Aufgabe gelöst. Auch andere Aktionen, zum Beispiel Kopieren oder Verschieben, wenn am Zieldatenträger der Platz ausreicht, können Sie hier einbauen. Den Ablauf des Skripts finden Sie in der Abbildung 24.
Listing 5
#! /bin/bash quelle=$(ls -1 | smenu -t1) duquelle=$(du -BK -s $quelle | \ tr [:alpha:] \- | tr -d [:space:] | \ cut -d \- -f1 ) ziel=$(df -l --output=target | grep -v "/run" |\ grep -v "/sys" | grep -v "/dev" |\ grep -v "/boot" | sed -e '1d' | smenu -t1) zielwert=$(df -k --output=avail $ziel | tail -1) if [ $duquelle -gt $zielwert ]; then echo "Platz am Zieldatenträger reicht nicht aus!" else echo "Platz am Zieldatenträger reicht aus!" fi

Abbildung 24: Das Shell-Skript aus Listing 5 prüft, ob auf dem Datenträger ausreichend Platz bereitsteht.
Ein Shell-Skript kann auch den aktuellen Belegungszustand eines Dateisystems überwachen und gegebenenfalls vorbereitete Aktionen ausführen (Listing 6).
Listing 6
#! /bin/bash while true; do fuell=$(df --output=pcent /dev/sdd1 | sed -e '1d' | cut -d% -f1) # Auswertung if [ $fuell -gt 80 ]; then # AKTION! echo "Speichergerät hat bedenklichen Füllstand!" fi sleep 30 done
Die Abbildung 25 zeigt die Ausgabe des Skripts, sobald der Datenträger zu mehr als 80 Prozent mit Daten befüllt wurde. Bei Bedarf lässt sich die reine Warnung auch mit Handlungen verknüpfen, etwa indem das Programm die ältesten Daten automatisch auf einem Netzwerkspeicher sichert und dann lokal löscht.

Abbildung 25: Das Skript aus Listing 6 meldet sich, sobald der Datenträger zu mehr als 80 Prozent mit Daten belegt wird.
Der Autor
Harald Zisler beschäftigt sich seit den frühen 90er-Jahren mit FreeBSD und Linux. Zu Technik- und EDV-Themen verfasst er Zeitschriftenbeiträge und Bücher.
Infos
-
RFC 4122: https://tools.ietf.org/html/rfc4122


























