Bevor ein an einen Linux-Rechner angeschlossenes Speichermedium genutzt werden kann, muss auf ihm ein Dateisystem eingerichtet werden. Dieser Artikel erklärt, wie du mit dem Befehl `mkfs` und weiteren Werkzeugen verschiedene Arten von Dateisystemen erstellst. Wir zeigen dir den genauen Ablauf.
Die Funktion von mkfs
Der Befehl `mkfs` dient der Erzeugung von Dateisystemen. In anderen Betriebssystemen wird dieser Vorgang auch als „Formatieren“ bezeichnet. Unabhängig von der Bezeichnung handelt es sich um den Prozess, der eine Partition für die Speicherung von Daten vorbereitet. Die Partition benötigt nicht nur die Fähigkeit, Dateien zu speichern, sondern auch einen Mechanismus zur Verwaltung der Dateinamen und -speicherorte sowie deren Metadaten, wie z. B. Erstellungszeitpunkt, Änderungszeitpunkt und Dateigröße. Sobald `mkfs` die notwendige Struktur für die Verwaltung und Speicherung der Dateimetadaten erstellt hat, können Dateien auf der Partition abgelegt werden.
Die Syntax ist simpel: Man teilt `mkfs` mit, auf welcher Gerätepartition das Dateisystem erstellt werden soll und welchen Dateisystemtyp man verwenden möchte. In der Praxis ist es jedoch so, dass `mkfs` auf den meisten Linux-Distributionen eine Wrapper-Funktion für `mke2fs` ist. Der `mkfs`-Befehl ruft also den Befehl `mke2fs` auf und übergibt ihm die angegebenen Optionen. `mke2fs` verrichtet die Hauptarbeit, während `mkfs` lediglich die Schnittstelle bildet.
Die Syntax von `mkfs` wurde modernisiert; das alte Format gilt als veraltet. Beide Varianten funktionieren, doch wir verwenden in diesem Artikel die aktuelle Schreibweise.
Die Auswahl des Dateisystems
Die moderne Anwendung von `mkfs` erfolgt durch die Eingabe von `mkfs` gefolgt vom Namen des gewünschten Dateisystems.
Um eine Liste der von `mkfs` unterstützten Dateisysteme zu erhalten, gib `mkfs` ein und drücke zweimal die Tabulatortaste (ohne Leerzeichen nach `mkfs`).
Daraufhin wird im Terminalfenster eine Liste verfügbarer Dateisysteme angezeigt. Die hier gezeigte Liste stammt von Ubuntu 18.04 LTS; andere Distributionen können mehr oder weniger Optionen bieten. Im Folgenden werden die verschiedenen Optionen kurz erläutert, wobei zunächst das Konzept des Journalings vorgestellt wird.
Journaling ist ein wichtiges Konzept bei Dateisystemen. Das Dateisystem schreibt die bevorstehenden Dateischreibvorgänge in ein Journal. Wenn in jede Datei geschrieben wird, wird das Journal aktualisiert und die bevorstehenden Schreibdatensätze werden aktualisiert. Auf diese Weise kann das Dateisystem beschädigte, unvollständige Dateien reparieren, die infolge eines Stromausfalls oder anderer unerwarteter Ereignisse entstanden sind. Einige ältere Dateisysteme unterstützen kein Journaling. Diese schreiben weniger oft auf die Festplatte, da das Journal nicht aktualisiert werden muss. Sie können schneller arbeiten, sind aber anfälliger für Beschädigungen durch unterbrochene Schreibvorgänge.
Hier eine kurze Beschreibung der gängigsten Dateisysteme:
Ext2: | Das erste Dateisystem, das speziell für Linux geschrieben wurde, Ext, wurde von Ext2 abgelöst. Ext2 ist ein Dateisystem ohne Journaling. |
Ext3: | Ext3 ist der Nachfolger von Ext2 und kann als Ext2 mit Journaling betrachtet werden. Dies schützt das Dateisystem vor Datenbeschädigung durch Abstürze und plötzlichen Stromausfall. |
Ext4: | Ext4 ist das Standarddateisystem vieler Linux-Distributionen. Es ist ein stabiles, bewährtes und zuverlässiges Dateisystem, das Dateifragmentierung reduziert und größere Laufwerke, Partitionen und Dateien als Ext3 unterstützt. |
BFS: | Das Boot-Dateisystem dient ausschließlich zur Verwaltung der Dateien in der Boot-Partition. Normalerweise muss man kein Boot-Dateisystem manuell erstellen, dies wird während der Linux-Installation automatisch erledigt. |
FAT: | Das File Allocation Table (FAT)-Dateisystem wurde von einem Konsortium für Disketten entwickelt und 1977 eingeführt. Es ist ein Dateisystem ohne Journaling und wird hauptsächlich zur Kompatibilität mit Nicht-Linux-Betriebssystemen verwendet. |
NTFS: | Das New Technology File System ist ein Journaling-Dateisystem von Microsoft, das mit Windows NT eingeführt wurde. Es löste FAT ab und wird primär zur Kompatibilität mit Nicht-Linux-Betriebssystemen verwendet. |
MINIX: | Andrew S. Tanenbaum entwickelte MINIX ursprünglich als Lernhilfe. Heute ist es ein auf Selbstheilung und Fehlertoleranz ausgerichtetes Betriebssystem. Das MINIX-Dateisystem ist eine vereinfachte Version des Unix-Dateisystems. Möglicherweise wird es für die Entwicklung auf Linux-Rechnern verwendet, wenn auf eine MINIX-Plattform abgezielt wird. |
VFAT: | Virtual File Allocation Table wurde mit Windows 95 eingeführt und hob die Beschränkung auf acht Zeichen für Dateinamen auf, sodass Dateinamen mit bis zu 255 Zeichen möglich wurden. Es wird hauptsächlich zur Kompatibilität mit Nicht-Linux-Betriebssystemen verwendet. |
CRAMFS: | Das Compressed ROM File System ist ein schreibgeschütztes Dateisystem, das für Embedded-Systeme und spezielle schreibgeschützte Anwendungen wie Bootprozesse von Linux-Rechnern entwickelt wurde. Es ist üblich, ein kleines, temporäres Dateisystem zu laden, damit Bootstrap-Prozesse starten können, um das Einhängen des „echten“ Boot-Systems vorzubereiten. |
MSDOS: | Das Dateisystem des Microsoft Disk Operating System. Es wurde 1981 veröffentlicht und ist ein elementares Dateisystem, das so einfach wie möglich ist. Die erste Version hatte nicht einmal Verzeichnisse. Es nimmt einen herausragenden Platz in der Computergeschichte ein, aber abgesehen von der Kompatibilität mit Legacy-Systemen gibt es kaum einen Grund, es heute zu verwenden. |
Sicher mit Dateisystemen experimentieren
Das Erstellen eines Dateisystems auf einer Partition ist destruktiv und löscht alle möglicherweise vorhandenen Daten. Die ideale Methode, um mit verschiedenen Dateisystemen zu experimentieren, wäre eine zusätzliche Festplatte oder ein separater Computer. Da dies jedoch nicht immer praktikabel ist, gibt es eine Alternative.
Wir können eine Image-Datei erstellen und darin Dateisysteme einrichten. Sobald diese gemountet ist, kann sie wie eine normale Partition verwendet werden. Dies ermöglicht das Experimentieren mit Dateisystemen ohne zusätzliche Hardware. Zum Erstellen der Image-Datei verwenden wir den Befehl `dd`.
Die Image-Datei entsteht, indem Quelldaten genommen und in eine Datei geschrieben werden. Wir geben `dd` mit der Option `if` (Input File) an, dass als Datenquelle `/dev/zero` verwendet werden soll. Dies liefert einen Datenstrom aus Nullen.
Die Option `of` (Output File) ermöglicht die Angabe eines Namens für die Image-Datei, in diesem Fall `wdzwdz.img`.
Die Größe der Image-Datei wird durch die Anzahl und Größe der Blöcke bestimmt. Mit der Option `bs` (Block Size) legen wir eine Blockgröße von 1 MB fest. Mit der Option `count` fordern wir 250 Blöcke an, was zu einer Dateigröße von 250 MB führt. Du kannst die Anzahl der Blöcke an deine Bedürfnisse und den verfügbaren Speicherplatz anpassen.
dd if=/dev/zero of=~/wdzwdz.img bs=1M count=250
Die Datei wird erstellt und `dd` meldet die Erzeugung von 250 Blöcken.
Die Image-Datei kann mit `ls` angezeigt werden:
ls -hl
Die Datei ist wie erwartet 250 MB groß.
Das Dateisystem erstellen
Wir wählen das Dateisystem Ext2, die erste Version von Ext, die diese Implementierung von `mkfs` erstellen kann. Da es kein Journaling hat, sollten dort keine wichtigen Daten ohne Backup gespeichert werden. Der Befehl `mkfs.ext2` wird verwendet, um das Dateisystem in der Image-Datei zu erstellen:
mkfs.ext2 ~/wdzwdz.img
Das Dateisystem wird erstellt und Details dazu angezeigt.
Wie im hervorgehobenen Text zu sehen ist, wird `mke2fs` verwendet.
Nun haben wir einen Container (die Image-Datei), der in diesem Fall eine Festplatte repräsentiert, und in diesem Container haben wir ein Dateisystem erstellt. Um es nutzen zu können, muss es noch gemountet werden.
Wir erstellen einen temporären Mount-Punkt mit der Bezeichnung „Geek“ innerhalb von `/mnt`. Nach der Verwendung wird dieser wieder entfernt.
sudo mkdir /mnt/geek
Nun kann die Image-Datei gemountet werden:
sudo mount ~/wdzwdz.img /mnt/geek
Der Dateibesitz des Mount-Punktes muss geändert werden, damit Lese- und Schreibrechte bestehen:
sudo chown dave:users /mnt/geek/
Jetzt sollte das neue Dateisystem nutzbar sein. Wir wechseln in das Dateisystem und kopieren einige Dateien hinein:
cd /mnt/geek
cp ~/Documents/Code/*.? .
Dadurch werden alle Dateien mit einer einstelligen Buchstaben-Endung aus dem Verzeichnis `~/Documents/Code` in das neue Dateisystem kopiert. Eine Überprüfung zeigt, ob die Dateien kopiert wurden:
ls
Die Dateien wurden kopiert, also wurde das Dateisystem erfolgreich erstellt, gemountet und verwendet. Um dies zu bestätigen, wird das Dateisystem wieder ausgehängt. (Beachte das zusätzliche ’n‘ im Befehl `umount`)
sudo umount /mnt/geek
Beim erneuten Zugriff auf `/mnt/geek` sollte nichts angezeigt werden, da die Dateien sich in der ausgehängten Image-Datei befinden:
cd /mnt/geek
ls
Weitere Experimente
Da der Ablauf nun bekannt ist, können weitere Dateisysteme ausprobiert werden. Dieses Mal wird das MINIX-Dateisystem verwendet. Aus dem Home-Verzeichnis heraus kann ein neues Dateisystem in der bestehenden Image-Datei erstellt werden.
Vorsicht! Wenn wichtige Dateien im Dateisystem der Image-Datei liegen, müssen diese vor dem Erstellen eines neuen Dateisystems gemountet und gesichert werden.
mkfs.minix ~/wdzwdz.image
Ohne weitere Nachfrage wird das neue Dateisystem über das alte geschrieben. Die Image-Datei wird mit dem gleichen Befehl wie zuvor gemountet:
sudo mount ~/wdzwdz.img /mnt/geek
Ein Wechsel in das neue Dateisystem unter `/mnt/geek` ermöglicht die Erstellung einer Datei:
touch geek.txt
ls -ahl geek.txt
So einfach und schnell wurde ein neues Dateisystem erstellt, gemountet und kann verwendet werden.
Den Mount-Punkt entfernen
Wenn die Experimente abgeschlossen sind, kann der Mount-Punkt „Geek“ entfernt werden. Dafür wird `rmdir` verwendet:
cd /mnt
sudo rmdir geek
Der sichere Umgang mit kritischen Befehlen
Unter Linux lernt man, wie bei vielen Dingen, durch Übung. Das Problem bei manchen Befehlen ist, dass sie potenziell zerstörerisch sein können. Die Frage ist, wie man die Befehle gefahrlos üben kann, ohne das System oder die Daten zu riskieren?
Du kennst nun eine einfache Methode, um Dateisysteme mit `mkfs` zu erstellen und zu testen, ohne dass dein Computer beschädigt wird.