Einführung
Der Linux-Speicher besteht aus mehreren miteinander verbundenen Ebenen. Ein Gerät kann Partitionen enthalten, und eine Partition oder ein Image kann ein Dateisystem enthalten. Ein Dateisystem wird zugänglich, sobald es an einem Einhängepunkt in den Verzeichnisbaum eingebunden ist. Wenn Sie diese Begriffe getrennt betrachten, lassen sich Befehle zur Datenträgerverwaltung wesentlich leichter verstehen.
In diesem Lab untersuchen Sie den Speicher sicher, analysieren die Speicherplatznutzung, erstellen ein ext4-Dateisystem in einer regulären Datei, hängen es ein und aus, lesen Partitionsinformationen und erstellen eine fstab-Übungsdatei. Alle Schreibvorgänge beziehen sich auf temporäre Dateien, die für dieses Lab erstellt werden. Sie partitionieren keinen echten Datenträger neu und ändern nicht die systemweite Datei /etc/fstab.
Die Linux-Speicherebenen verstehen
In diesem Schritt untersuchen Sie den Zusammenhang zwischen Blockgeräten, Dateisystemen und Einhängepunkten. Anschließend richten Sie einen sicheren Arbeitsbereich ein.
Der Befehl lsblk steht für „list block devices“, also „Blockgeräte auflisten“. Mit der Option -o wählen Sie die anzuzeigenden Spalten aus:
lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINTS
Lesen Sie die Ausgabe von links nach rechts:
NAMEkennzeichnet das Gerät oder die Partition.TYPEunterscheidet Datenträger, Partitionen und Loop-Geräte.SIZEzeigt die Kapazität an.FSTYPEzeigt den erkannten Dateisystemtyp an, sofern ein Dateisystem vorhanden ist.MOUNTPOINTSzeigt, an welcher Stelle das Dateisystem in den Verzeichnisbaum eingebunden ist.
Ein Datenträger kann eine oder mehrere Partitionen enthalten. Ein Dateisystem wie ext4 organisiert Dateien innerhalb einer Partition oder eines anderen Speicherobjekts. Ein Einhängepunkt ist ein gewöhnliches Verzeichnis, über das Linux dieses Dateisystem zugänglich macht.
Verwenden Sie findmnt, um das Dateisystem zu ermitteln, das aktuell das Projektverzeichnis enthält. Die Option -T akzeptiert einen beliebigen Pfad und ermittelt das daran eingebundene Dateisystem:
findmnt -T /home/labex/project
Das genaue Quellgerät kann variieren. Die Ausgabe enthält jedoch die Quelle, das Ziel, den Dateisystemtyp und die Einhängeoptionen.
Der Befehl blkid liest Dateisystemsignaturen, Bezeichnungen und UUIDs aus. Für die Untersuchung aller verfügbaren Blockgeräte benötigen Sie administrative Rechte:
sudo blkid
Eine UUID ist eine Dateisystemkennung, die auch dann stabil bleiben soll, wenn sich der Gerätename ändert. Später verwenden Sie dieses Konzept beim Untersuchen dauerhaft eingebundener Dateisysteme.
Erstellen Sie einen eigenen Arbeitsbereich und wechseln Sie in dieses Verzeichnis:
mkdir -p /home/labex/project/storage-lab
cd /home/labex/project/storage-lab
pwd
Die letzte Ausgabe sollte /home/labex/project/storage-lab lauten.
Die Nutzung von Dateisystemen und Verzeichnissen analysieren
In diesem Schritt vergleichen Sie df, das den Speicherplatz vollständiger Dateisysteme meldet, mit du, das den Speicherbedarf von Dateien und Verzeichnisbäumen misst.
Erstellen Sie zwei Beispieldateien mit bekannten logischen Größen. Mit der Option truncate -s legen Sie die Dateigröße effizient fest, ohne die Datei mit relevanten Daten zu füllen:
cd /home/labex/project/storage-lab
mkdir -p usage/reports usage/archive
truncate -s 2M usage/reports/weekly.log
truncate -s 5M usage/archive/records.bin
Verwenden Sie df -h für den Arbeitsbereich. Die Option -h zeigt menschenlesbare Einheiten wie MiB und GiB an:
df -h /home/labex/project/storage-lab
df beantwortet die Frage: „Wie viel Speicherplatz wird auf dem Dateisystem verwendet, das diesen Pfad enthält, und wie viel ist dort verfügbar?“ Die wichtigen Spalten heißen Size, Used, Avail, Use% und Mounted on.
Verwenden Sie du -sh, um das Beispielverzeichnis zusammenzufassen. Dabei steht -s für eine Zusammenfassung und -h für menschenlesbare Einheiten:
du -sh usage
Im Gegensatz zu df beantwortet du die Frage: „Wie viel Speicherplatz gehört zu dieser Datei oder diesem Verzeichnisbaum?“ Die mit truncate erstellten Sparse-Dateien können eine große logische Größe haben, aber nur wenig tatsächlich zugewiesenen Speicherplatz belegen. Mit der Option --apparent-size messen Sie ihre logische Größe:
du -h --apparent-size --max-depth=1 usage
Sie sollten erkennen, dass usage/archive größer ist als usage/reports. Kombinieren Sie du mit einer Sortierung, um die größten logischen Größen zuerst aufzulisten:
du -ah --apparent-size usage | sort -rh | head -n 5
Die Pipe leitet die Ausgabe von du an sort weiter. Die Option -r kehrt die Reihenfolge um, und -h versteht menschenlesbare Größenkürzel. head -n 5 behält die ersten fünf Ergebnisse.
Ein ext4-Dateisystem erstellen und untersuchen
In diesem Schritt erstellen Sie ein virtuelles Datenträger-Image, formatieren es mit ext4 und untersuchen seine Dateisystemmetadaten, ohne einen echten Datenträger zu verändern.
Erstellen Sie eine 128 MiB große Image-Datei. Diese Datei dient im weiteren Verlauf des Labs als temporärer Speicher:
cd /home/labex/project/storage-lab
truncate -s 128M virtual.img
Prüfen Sie ihre logische Größe:
ls -lh virtual.img
Vor dem Formatieren erkennt file nur allgemeine Daten oder eine leere Datei:
file virtual.img
Der Befehl mkfs.ext4 erstellt ein ext4-Dateisystem. Die Option -F bestätigt, dass eine reguläre Datei absichtlich als Ziel verwendet wird, und -L weist die Bezeichnung LABEXDATA zu:
sudo mkfs.ext4 -F -L LABEXDATA virtual.img
Beim Formatieren werden Dateisystemstrukturen innerhalb des Images angelegt. Untersuchen Sie das Ergebnis mit zwei Werkzeugen:
file virtual.img
sudo blkid -p virtual.img
Die Ausgabe sollte ext4 erkennen, die Bezeichnung LABEXDATA anzeigen und eine erzeugte UUID enthalten. Lassen Sie nur diese UUID ausgeben:
sudo blkid -s UUID -o value virtual.img
Die UUID wird beim Formatieren erzeugt und unterscheidet sich daher bei den einzelnen Lernenden.
Das Dateisystem einhängen, verwenden und aushängen
In diesem Schritt hängen Sie das virtuelle Dateisystem in den Linux-Verzeichnisbaum ein, schreiben eine Datei und hängen es anschließend sicher wieder aus.
Ein Einhängepunkt ist das Verzeichnis, in dem ein Dateisystem sichtbar wird. Erstellen Sie unter /mnt einen Einhängepunkt. /mnt ist ein üblicher Ort für temporäre administrative Einbindungen:
sudo mkdir -p /mnt/labex-virtual
Hängen Sie das Image ein. Die Option -o loop weist Linux an, die reguläre Datei mit einem Loop-Gerät zu verknüpfen, damit sie wie ein Blockspeicher behandelt werden kann:
cd /home/labex/project/storage-lab
sudo mount -o loop virtual.img /mnt/labex-virtual
Untersuchen Sie den aktiven Mount:
findmnt /mnt/labex-virtual
Die Quelle erscheint normalerweise als Loop-Gerät, das Ziel ist /mnt/labex-virtual, und der Dateisystemtyp ist ext4. Sie können df auch gezielt zu diesem Dateisystem befragen:
df -h /mnt/labex-virtual
Schreiben Sie eine Datei in das eingebundene Dateisystem. sudo sh -c ist erforderlich, weil die Umleitung von der Shell ausgeführt wird und das Stammverzeichnis des eingebundenen Dateisystems root gehört:
sudo sh -c 'echo "stored inside the virtual filesystem" > /mnt/labex-virtual/welcome.txt'
cat /mnt/labex-virtual/welcome.txt
Beim Aushängen werden ausstehende Schreibvorgänge abgeschlossen und das Dateisystem von seinem Einhängepunkt getrennt:
sudo umount /mnt/labex-virtual
Bestätigen Sie, dass das Dateisystem nicht mehr eingebunden ist:
findmnt /mnt/labex-virtual
Es wird keine Ausgabe erwartet. findmnt liefert außerdem einen von null verschiedenen Statuscode, weil an diesem Ziel kein aktiver Mount gefunden wurde. Das Verzeichnis des Einhängepunkts ist weiterhin vorhanden, aber die Inhalte des Images sind darüber nicht mehr zugänglich, bis Sie das Image erneut einhängen.
Partitionstabellen sicher untersuchen
In diesem Schritt verwenden Sie fdisk im schreibgeschützten Auflistungsmodus und unterscheiden zwischen einer Partitionstabelle und einer Dateisystemsignatur.
Listen Sie die sichtbaren Datenträger und Partitionen des Systems auf:
sudo fdisk -l
Die Option -l steht für „list“, also „auflisten“. Der Befehl meldet Datenträgergrößen, Sektorgrößen, Typen von Partitionstabellen und Partitionen, ohne diese zu verändern. Starten Sie niemals auf einem unbekannten Produktivdatenträger eine interaktive Partitionierungssitzung.
Untersuchen Sie nun das virtuelle Image:
cd /home/labex/project/storage-lab
sudo fdisk -l virtual.img
Das Image besitzt eine Datenträgergröße, aber keine Partitionseinträge. In diesem kontrollierten Beispiel wurde ext4 direkt im gesamten Image erstellt. Ein typischer Aufbau eines physischen Datenträgers sieht so aus:
disk device -> partition table -> partition -> filesystem -> mount point
Erstellen Sie zum Vergleich ein zweites leeres Image:
truncate -s 64M partition-demo.img
sudo fdisk -l partition-demo.img
Auch dieses Image besitzt keine Partitionstabelle. Vergleichen Sie die Dateisystemsignaturen mit wipefs im standardmäßigen schreibgeschützten Modus:
sudo wipefs virtual.img partition-demo.img
virtual.img sollte eine ext4-Signatur anzeigen, während das leere Vergleichsimage keine Dateisystemsignatur enthalten sollte. Verwenden Sie in diesem Lab nicht die destruktive Option wipefs -a.
Eine fstab-Übungsdatei erstellen und validieren
In diesem Schritt lernen Sie die sechs Felder eines fstab-Eintrags kennen und testen sicher eine separate Übungsdatei, ohne /etc/fstab zu ändern.
Das System liest /etc/fstab, um festzulegen, welche Dateisysteme dauerhaft und einheitlich eingebunden werden sollen. Zeigen Sie die nicht auskommentierten Zeilen an, ohne die Datei zu bearbeiten:
grep -Ev '^\s*(#|$)' /etc/fstab
Ein fstab-Eintrag besteht aus sechs durch Leerzeichen getrennten Feldern:
source mount-point filesystem-type options dump fsck-order
Bei physischen Partitionen ist UUID=<value> in der Regel sicherer als ein Name wie /dev/sdb1, da sich Gerätenamen ändern können, wenn sich die Reihenfolge der Hardwareerkennung ändert.
Lesen Sie die UUID Ihres Images aus und schreiben Sie ein auskommentiertes UUID-Beispiel in eine Übungsdatei:
cd /home/labex/project/storage-lab
uuid=$(sudo blkid -s UUID -o value virtual.img)
printf '## Real block device example: UUID=%s /mnt/data ext4 defaults,nofail 0 2\n' "$uuid" > practice-fstab
Da dieses Lab eine reguläre Datei und keine physische Partition verwendet, nutzt der aktive Übungseintrag den absoluten Pfad des Images und die Option loop:
printf '%s\n' '/home/labex/project/storage-lab/virtual.img /mnt/labex-virtual ext4 loop,nofail 0 2' >> practice-fstab
Geben Sie die Übungsdatei aus und validieren Sie sie. Mit --tab-file weisen Sie findmnt an, nicht die echte Datei /etc/fstab zu verwenden:
cat practice-fstab
findmnt --verify --tab-file practice-fstab
Die abschließende Zusammenfassung sollte 0 parse errors und 0 errors melden. Zusätzlich wird eine Warnung angezeigt, dass es sich bei der Quelle um eine reguläre Datei handelt. Diese Warnung ist hier zu erwarten, weil dieses kontrollierte Lab absichtlich ein dateibasiertes Loop-Dateisystem statt eines physischen Blockgeräts verwendet.
Verwenden Sie die Übungsdatei für einen kontrollierten Mount. Mit der Option -T weisen Sie mount an, die angegebene alternative fstab-Datei zu lesen:
sudo mount -T practice-fstab /mnt/labex-virtual
findmnt /mnt/labex-virtual
Die zuvor erstellte Datei welcome.txt sollte weiterhin vorhanden sein. Damit ist bestätigt, dass der Mount die gespeicherten Daten des Dateisystems zugänglich macht:
cat /mnt/labex-virtual/welcome.txt
Hängen Sie das Dateisystem erneut aus, damit das Lab in einem sicheren, nicht eingebundenen Zustand endet:
sudo umount /mnt/labex-virtual
Sie haben die Syntax für dauerhaft eingebundene Dateisysteme validiert, ohne die Boot-Konfiguration des Systems zu ändern. Ein Fehler in der echten Datei /etc/fstab kann den Systemstart beeinträchtigen. Deshalb validieren Administratoren Änderungen üblicherweise vor einem Neustart.
Zusammenfassung
Sie haben die wichtigsten Linux-Speicherebenen miteinander verknüpft: Geräte, Partitionen, Dateisysteme und Einhängepunkte. Mit lsblk, blkid und findmnt haben Sie diese Ebenen untersucht und anschließend die dateisystemweite Nutzung mit df mit der Nutzung von Dateien und Verzeichnissen aus du verglichen.
Sie haben in einem temporären Image ein ext4-Dateisystem erstellt und mit einer Bezeichnung versehen, es über ein Loop-Gerät eingebunden, Daten über das Aushängen hinweg erhalten und Partitionsinformationen untersucht, ohne echte Datenträger zu verändern. Abschließend haben Sie die sechs fstab-Felder kennengelernt, die Bedeutung stabiler UUIDs verstanden und gelernt, wie Sie eine separate fstab-Übungsdatei validieren, bevor Sie sie verwenden.



