SquashFS
SquashFS est un système de fichiers compressé en lecture seule sous Linux.
SquashFS | |
Introduction | 2002 (Linux) |
---|---|
Limitations | |
Taille maximale de fichier | 16 Eio (264) octets |
Taille maximale de volume | 16 Eio (264) octets |
Fonctionnalités | |
Compression intégrée | gzip LZMA LZO LZMA2 LZ4 Zstd |
Il peut être utilisé sur des supports de mémoire flash, CD-ROM ou disque dur pour des systèmes de fichiers disponible en lecture seulement.
Il est notamment employé pour la création de nombreux live CD ainsi qu’en informatique embarquée, en remplacement de cramfs.
Historique
SquashFS a été initialement maintenu comme un jeu de patchs en dehors du noyau Linux (out-of-tree). La première version de SquashFS est publiée le [1].
En 2009, SquashFS a été fusionné dans le noyau Linux dans sa version 2.6.29 (en même temps que Btrfs)[2] - [3]. Depuis cet instant, le code noyau de SquashFS est maintenu dans le code source du noyau Linux, tandis que l’outillage dans l’espace utilisateur reste disponible sur la page Sourceforge du projet[4]. Depuis le , le code a migré de Sourceforge vers Github[5].
La version originale de SquashFS utilisait l’algorithme de compression de données « deflate » de gzip. À partir de la version 2.6.34 du noyau Linux, les méthodes LZMA et LZO furent ajoutées[6]. À la venue du noyau Linux 2.6.38, c’est la méthode LZMA2 (également utilisée dans XZ) qui devient disponible[7]. À la venue du noyau Linux 3.19, la méthode LZ4[8]. Enfin, Zstandard fut ajouté dans la version 4.14 du noyau Linux[9].
Fonctionnalités
Le système de fichier a une taille maximale de 16 Eio (264) octets.
Les fichiers peuvent avoir une taille maximale de 16 Eio (264) octets, avant compression. Les doublons sont automatiquement détectés et regroupés à un seul endroit.
SquashFS est capable de compresser les fichiers, les inodes et les répertoires (ces deux derniers étant alignés sur 8 bits[note 1]). Il supporte une taille de bloc allant de 4 KiB à 1 MiB (par défaut 128 Kio) afin d’améliorer le taux de compression. De nombreux algorithmes de compression sont supportés. Cela permet d’atteindre des taux de compression bien meilleurs que son ancêtre cramfs — limité à des blocs de 4 KiB et à un faible taux de compression dû au support de la zlib uniquement.
Les UID et GID sont stockés dans leur forme complète (sur 32 bits) et les dates de création des fichiers sont préservées (là où cramfs tronque le GID aux 8 bits de poids faible et ne stocke aucune date).
Tout comme cramfs, les images au format SquashFS possède un boutisme déterminé lors de leur création : petit-boutisme (little-endian) ou gros-boutisme (big-endian). Ce boutisme doit être choisi pour correspondre à l’architecture ciblée.
Performances
En comparaison avec Zisofs (format ISO 9660 avec l'extension Rock Ridge et une définition des fichiers compressés, généré par le programme "mkzftree"[10]), cloop (en), cramfs et ext3, SquashFS permet d'occuper moins de place et est plus rapide pour tout type de lecture (contenu des répertoires, lecture séquentielle de fichiers, lecture aléatoire) à partir d'un CD-ROM ou d'un disque dur[11].
Utilisation
Des logiciels tels que mksquashfs[12] ou gensquashfs[13] permet de générer une image au format SquashFS. Il est ensuite possible de monter l’image à l’aide de la commande mount
.
Notes et références
Notes
- En moyenne un inode prend 8 octets, mais cela dépend de la nature du fichier (normal, répertoire, lien symbolique, périphérique bloc ou caractère).
Références
- (en) « SquashFS CHANGES file », sur github.com (consulté le )
- (en) « Linux 2.6.29 », sur kernelnewbies.org, Linux Kernel Newbies (consulté le )
- (en) « Btrfs and Squashfs merged into Linux kernel », sur h-online.com, The H Open, (consulté le )
- (en) « SquashFS README file », sur sourceforge.net (consulté le )
- (en) « Update README regarding GitHub », sur github.com, (consulté le )
- (en) « Linux 2.6.34 », sur kernelnewbies.org, Kernel Newbies, (consulté le )
- (en) « Linux 2.6.38 », sur kernelnewbies.org, Kernel Newbies, (consulté le )
- (en) « Merge of LZ4 compression support to SquashFS », sur git.kernel.org, (consulté le )
- (en) « squashfs: Add zstd support », sur git.kernel.org, (consulté le )
- (en) « Mkzftree(1) - Linux man page », sur die.net (consulté le ).
- http://www.las.ic.unicamp.br/pub/imagineos/imagineos-current/source/k/squashfs-lzma-tools/docs/PERFORMANCE.README
- (en) Phillip Lougher, « squashfs-tools: tools to create and extract SquashFS filesystems », sur github.com (consulté le )
- (en) David Oberhollenzer, « squashfs-tools-ng: A new set of tools and libraries for working with SquashFS images », sur github.com (consulté le )
Annexes
Articles connexes
- cramfs, le système de fichiers compressé en lecture seule historique qui a inspiré SquashFS
- ramfs, le système de fichiers temporaire du noyau Linux