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 auf SquashFS-Daten erfolgt über ein Kernel-Modul als virtuelles Dateisystem.
SquashFS wird unter anderem in Live-Systemen von Arch Linux, Debian, Ubuntu, Clonezilla, SystemRescue und Kali Linux eingesetzt, und im Bereich von Embedded Linux wie bei OpenWrt. Weiters wird es beim Linux Terminal Server Project eingesetzt.
SquashFS ist als universelles, nur lesbares Dateisystem implementiert, das alle zu speichernden Dateien in einem Dateicontainer, ähnlich wie tar.gz-Archiv, speichert. Beim Zugriff werden Daten zur Laufzeit dekomprimiert und SquashFS erlaubt so den Einsatz unter anderem in Live-Systemen und 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), LZ4 (seit Linux 3.19) und Zstandard (seit Linux 4.14) vorhanden ist.
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.
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. 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.
EROFS ist der Nachfolger von SquashFS. EROFS ist ein nur lesbares Dateisystem, welches auf maximale Lesegeschwindigkeit optimiert wurde. Wegen der besseren Leseperformance ersetzen einige Linuxdistributionen SquashFS durch EROFS. Und haben die Unterstützung von SquashFS abgekündigt.