6 Punkte von GN⁺ 2024-01-09 | 1 Kommentare | Auf WhatsApp teilen

Wie sieht ein ext4-Dateisystem aus?

  • Wenn man auf einem leeren Laufwerk den Befehl mkfs.ext4 ausführt, wird auf dem Laufwerk ein ext4-Dateisystem angelegt.
  • Dabei verwandelt es sich von „gar nichts“, also nur aus 0x00 bestehend, in ein zielgerichtetes Byte-Layout eines ext4-Dateisystems.
  • Das Experiment wird vereinfacht, indem man einer virtuellen Maschine ein kleines zusätzliches Laufwerk hinzufügt oder mit einer gewöhnlichen Datei arbeitet, die als Loop-Device eingerichtet ist.

Experiment mit einem Loop-Device

  • Die Nutzung eines Loop-Device ist einfacher geworden, sodass Mounten und Unmounten ohne losetup nur mit mount -o loop <foo_file> <bar_dir> und umount <bar_dir> möglich sind.
  • Mit dem Befehl dd wird eine Datei erzeugt, die Daten aus /dev/zero liest und aus 8 Blöcken mit jeweils 64x1024 Byte besteht.

Änderungen nach dem Erstellen des ext4-Dateisystems

  • Nach dem Ausführen von mkfs.ext4 lässt sich bei der Blockdatei über die Ausgabe des Befehls od die Struktur prüfen.
  • In dieser Ausgabe sind die strukturellen Merkmale des ext4-Dateisystems zu erkennen.

ext4-Struktur durch Visualisierung verstehen

  • Es wird ein Visualisierungsbild erstellt, bei dem jeder Block 1024x64 Pixel groß ist und jedes Pixel ein Byte darstellt.
  • Im Bild nach dem Erstellen des ext4-Dateisystems sieht man die von mkfs.ext4 hinzugefügten Strukturen und die Position der Daten.
  • Um ext4-Daten und „Benutzer“-Daten zu unterscheiden, wird eine mit /dev/urandom erzeugte 1024-Byte-Datei auf das Loop-Device kopiert und im Visualisierungscode getrennt erkannt und farblich markiert.

Visualisierung nach dem Hinzufügen von Benutzerdaten

  • Im Bild nach dem Kopieren der Benutzerdaten auf das Laufwerk lassen sich ext4-Daten und Benutzerdaten voneinander unterscheiden.
  • Zusätzlich wird eine animierte GIF erstellt, indem die Benutzerdatendatei dreimal auf das Laufwerk kopiert wird.

Vergleich von ext4 und ext2

  • Zusätzlich zum Vergleich mit der Animation des ext4-Dateisystems wird auch eine Animation des ext2-Dateisystems erstellt.

Meinung von GN⁺

  • Dieser Beitrag hilft dabei, visuell zu verstehen, wie ein ext4-Dateisystem tatsächlich auf einem Laufwerk angelegt wird.
  • Die Visualisierungsmethode, die zwischen Benutzerdaten und Systemdaten unterscheidet, ist sehr hilfreich, um die Funktionsweise eines Dateisystems zu lernen.
  • Der Vergleich zwischen ext4 und ext2 bietet die Möglichkeit, Unterschiede zwischen Dateisystemen intuitiv zu erfassen.

1 Kommentare

 
GN⁺ 2024-01-09
Hacker-News-Kommentare
  • Vor einigen Jahren gab es auf der FOSDEM eine echte grafische Visualisierung des ext4-Dateisystems. Die Visualisierung ist in einem Video zu sehen, das etwa ab Minute 20 beginnt. Der vom Projektor verwendete hellblaue Farbton wurde nicht richtig dargestellt, was verwirrend sein kann, aber im Blog gibt es ein korrekt gerendertes Video.

  • Das Ziel vieler Menschen, die die Computernutzung vereinfachen wollen, führt zu Dingen, die pädagogischen Wert haben können. Zum Beispiel kann ein rotes Lämpchen, das Festplattenaktivität anzeigt, die Neugier der Nutzer wecken und Informationen vermitteln. Eine gute Kompromisslösung könnte sein, die erweiterten Ansichten zu verstecken, sie für Neugierige aber weiterhin verfügbar zu lassen.

  • Ein Kommandozeilen-Utility namens pixd bietet eine ähnliche Datenvisualisierung, ist aber nicht so cool wie ein animiertes GIF, das Dateisystemänderungen im Zeitverlauf zeigt. Die Anordnung der Pixel mithilfe einer Hilbert-Kurve könnte hilfreicher sein, als Pixel Zeile für Zeile zu zeichnen.

  • Die nbdkit-Demo zur Visualisierung von Dateisystem-IO fand ich interessant.

  • Ich habe mit der Visualisierung eines Dateisystems experimentiert. Das resultierende a.png ist rückkonvertierbar, sodass man wieder eine gültige .ext4-Datei erhalten kann.

  • Datenvisualisierung kann helfen, die Komplexität zu verstehen, wie ein Datenträgerformat Daten tatsächlich auf der Platte anordnet. Dazu gehören zum Beispiel Metadaten, die für minimale Nutzung vorab alloziert werden. Ich frage mich, was passieren würde, wenn der Speicherplatz knapp wird, aber die Animation stoppt vorher.

  • Falls der Autor diesen Kommentar sieht: Er könnte das GIF in ein Video umwandeln, um übertragene Bytes zu sparen und den Nutzern Videosteuerungen wie Pause, Scrubbing oder Geschwindigkeitsanpassung zu geben.

    • Beispielbefehl: ffmpeg -i ext4.gif -pix_fmt yuv420p -c:v libx264 ext4.mp4
  • Ein Tool-Set namens innodb_ruby ist sehr nützlich, um InnoDB-Strukturen zu visualisieren und zu verstehen.

  • Mit der Kaitai IDE kann man verschiedene Binärformate Byte für Byte oder sogar Bit für Bit visualisieren. Soweit ich mich erinnere, gibt es auch eine Definitionsdatei für ext4.

  • Beim Betrachten dieses Diagramms frage ich mich, ob es Dateisysteme gibt, die Metadaten auf einem separaten Gerät speichern können. Zum Beispiel könnten Daten auf einer HDD und Metadaten auf einer zugehörigen SSD liegen. Da sich Metadaten leicht im Speicher cachen lassen, ist der Nutzen möglicherweise nicht groß genug, um die zusätzliche Komplexität zu rechtfertigen.