SquashFS
SquashFS (.sfs oder .sqfs) ist ein von Phillip Lougher entwickeltes, freies (GPL), komprimiertes Dateisystem für GNU/Linux-Betriebssysteme, welches nur lesbar ist. SquashFS komprimiert Dateien, Inodes und Verzeichnisse und unterstützt zur besseren Komprimierung Blockgrößen bis zu 1 Mebibyte. Der Zugriff darauf erfolgt über ein Kernel-Modul als Virtuelles Dateisystem.
Technische Einzelheiten
SquashFS ist als universelles, nur lesbares Dateisystem, das alle zu speichernden Dateien in einem Dateicontainer, ähnlich wie z. B. .tar.gz-Archiv, speichert. Zugriffe werden zur Laufzeit dekomprimiert, und es erlaubt so den Einsatz unter anderem in Live-Systemen oder in Anwendungen, in denen nur eine geringe Speicherkapazität wie z. B. in eingebetteten Systemen vorhanden ist.
Zur Datenkompression wird standardmäßig Deflate (zlib) verwendet, wobei auch Unterstützung für den Lempel-Ziv-Markow-Algorithmus (LZMA)[1], LZ4[2] (seit Linux 3.19) und Zstandard[3] (seit Linux 4.14) vorhanden ist.
- Squashfs speichert die komplette Benutzer- und Gruppenkennung (UID/GID) und die Zeit der Dateierstellung.
- Theoretisch werden Dateien bis zu 16 Exbibyte ( Bytes) unterstützt.
- Inode- und Verzeichnisdaten sind stark komprimiert. Jeder Inode hat dabei durchschnittlich eine Länge von 8 Byte. Die exakte Länge variiert mit dem Dateityp, z. B. Verzeichnis, symbolische Verknüpfung usw.
- SquashFS kann mit Blockgrößen bis zu 1 MiB benutzt werden (Standardwert 128 KiB).[4] Je größer die Blockgröße gewählt wird, desto höher sind die Kompressionsraten.
- Dateien, die mehrfach vorhanden sind, werden nur einmal gespeichert.
- Es werden Big- und Little-Endian-Architekturen unterstützt.
Zu SquashFS gibt es einen Satz Werkzeuge, die squashfs-tools, die unter anderen mksquashfs (zur Erzeugung eines Dateisystems) und unsquashfs enthalten. Mit den Werkzeugen kann aus einem bestehenden Verzeichnisbaum, welcher beispielsweise auf einer regulären Festplatte mit einem ext4-Dateisystem liegt, ein SquashFS-Container gebildet werden oder umgekehrt, die Dateien aus einem erstellten SquashFS-Container extrahiert werden.
SquashFS wird häufig zusammen mit UnionFS verwendet, um damit mehrere logischen Dateisysteme zur Laufzeit zu vereinigen: Die ursprünglichen Dateien, welche nur gelesen werden können, kommen von SquashFS, während Änderung daran im UnionFS abgelegt werden. Damit kann in Kombination auch ein Schreibzugriff und eine permanente Speicherung von Dateien ermöglicht werden.
Geschichte
Am 23. Oktober 2002 wurde die erste Version (1.0) veröffentlicht. Mit Version 3.3 wurde die effiziente Behandlung von Sparse-Dateien hinzugefügt.[4] Nachdem sich die SquashFS-Entwickler bereits mehrfach um die Aufnahme des Dateisystems in den Linux-Kernel bemüht hatten, hielt Version 4 des SquashFS-Codes schließlich in die am 23. März 2009 veröffentlichte Version 2.6.29 des Kernels Einzug, nachdem sich Linus Torvalds aufgrund der verbreiteten Nutzung dafür aussprach.[5]
Siehe auch
- CramFS, ein älteres, einfacheres vergleichbares Dateisystem
Einzelnachweise
- Official Squashfs LZMA. Abgerufen am 21. November 2011 (englisch).
- Pull squashfs update from Phillip Lougher:. Abgerufen am 5. Mai 2021 (englisch).
- squashfs: Add zstd support. Abgerufen am 5. Mai 2021 (englisch).
- Phillip Lougher: [ANN] Squashfs 3.3 released. 1.2. Sparse files are now supported. 5. November 2007, abgerufen am 21. November 2011 (englisch).
- Thorsten Leemhuis: Kernel-Log – Was 2.6.29 bringt: Btrfs, SquashFS, Ext4 ohne Journal und neue Storage-Treiber. Kürbis-Dateisystem. In: heise online. 10. März 2009, S. 2, abgerufen am 21. November 2011.