Warum ich immer noch ext4 als Dateisystem einsetze

Heute kommt mal wieder ein technischer Beitrag. Ich hatte die Eingebung, euch mal zu erläutern, warum ich im Jahre 2021 immer noch bevorzugt ext4 als Dateisystem unter Linux benutze.

Die Kurzversion lautet: Das liegt daran, dass ich inzwischen konservativ geworden bin. Im Fall der Dateisysteme gehen wir dabei mal wieder auf den Wortsinn zurück – mir kommt es in erster Linie darauf an, dass ein von mir verwendetes Dateisystem meine Daten möglichst gut konserviert.

Vor Jahren hatte Fefe mich im Jahr 2016 auf den Vortrag Filesystem Fuzzing with American Fuzzy Lop aufmerksam gemacht. Da hatten Leute von Oracle den Fuzzer American fuzzy lop auf Dateisysteme unter Linux losgelassen. LWN.net hatte das Vorgehen in einem Artikel skizziert.

Mich interessierte in erster Linie das Ergebnis, nämlich wie lange die unterschiedlichen Dateisysteme durchgehalten haben, bis der erste Bug auftrat:

Filesystem Time Type
[Btrfs](https://en.wikipedia.org/wiki/Btrfs) 5s BUG()
Ext4 2h BUG()
[F2fs](https://en.wikipedia.org/wiki/F2FS) 10s BUG()
[Gfs2](https://en.wikipedia.org/wiki/GFS2) 8m Double free
[Hfs](https://en.wikipedia.org/wiki/Hierarchical_File_System) 30s Page Fault
[Hfsplus](https://en.wikipedia.org/wiki/HFS_Plus) 25s Page Fault
[Nilfs2](https://en.wikipedia.org/wiki/NILFS) 1m Page Fault
[Ntfs](https://en.wikipedia.org/wiki/NTFS) 4m Soft lockup
[Ocfs2](https://en.wikipedia.org/wiki/OCFS2) 15s BUG()
[Reiserfs](https://en.wikipedia.org/wiki/ReiserFS) 25s BUG()
[Xfs](https://en.wikipedia.org/wiki/XFS) 1h45m Soft lockup

Da zeigt sich deutlich, dass ext4 im Vergleich zu den meisten anderen Dateisystemen sehr gut abgehangen ist; XFS im Übrigen auch (HFS sowie NTFS laufen etwas außerhalb der Wertung, da die Linux-Implementationen dieser Dateisysteme getestet wurden; niemand benutzt diese Dateisysteme ernsthaft, um Linux selbst darauf zu betreiben). Fefe schrieb damals

Wenn Code das überlebt, haben die Programmierer was richtig gemacht.

Ich fände es übrigens sehr sinnvoll, wenn Oracle oder jemand anderes diesen Fuzzing-Test regelmäßig, sagen wir alle 5 Jahre wiederholte. Es kann ja durchaus sein, dass sich in so einem langen Zeitraum die Stabilität einzelner Dateisysteme massiv verbessert (oder vielleicht auch verschlechtert) hat. Damit wäre es dieses Jahr wieder so weit.

Nachtrag: Das Anliegen der Fuzzing-Aktion war nicht, die grundsätzliche Stabilität von Dateisystemen zu untersuchen (darauf lässt sich nur indirekt schließen), sondern herauszufinden inwieweit sie sich als Angriffsvektoren eignen. Vor dem Hintergrund sollte m.E. unbedingt auch exFAT mal mit Fuzzing traktiert werden. Das benutze ich für den Datenaustausch zwischen Linux, Windows & MacOS. Ein exFAT-formatierter USB-Stick, der irgendwo rumliegt, wäre daher der ideale Angriffsvektor, um jemand einen Trojaner unterzuschieben. Das gute alte FAT32 wäre auch mal interessant im Vergleich, das ist immerhin auch sehr gut abgehangen. Ach, und ZFS würde mich in dem Zusammenhang auch mal interessieren.