在创建微型和嵌入式 Linux 系统时,存储设备(软盘、闪存盘等)的每一字节都非常重要,因此压缩技术被广泛应用。此外,压缩文件系统也经常用于存档目的。对于庞大的公共档案以及个人媒体档案而言,这至关重要。
SquashFS 将这一切提升到了新的水平。它是一个只读文件系统,允许您压缩整个文件系统或单个目录,将它们写入其他设备/分区或普通文件,然后直接挂载它们(如果是设备)或使用环回设备(如果是文件)。SquashFS 的模块化、紧凑系统设计堪称完美。对于存档目的而言,SquashFS 比 tarball 存档具有更大的灵活性和性能速度。
SquashFS 以 Linux 内核源代码补丁(在您的内核中启用 SquashFS 读取支持)、mksquashfs 工具(用于创建压缩文件系统,可以创建在文件或块设备上)以及 unsquashfs 工具(用于从现有的压缩文件系统中提取多个文件)的形式分发。
最新的 SquashFS 发布树是 3.x,之前的版本是 2.x。本文档描述了这两个版本,并提供了适当的注释。例如,如果某些特性或参数在这两个发布树中有所不同,将按如下方式书写:新值 (3.x) 或旧值 (2.x)
数据、inode 和目录均被压缩
SquashFS 存储完整的 uid/gid(32 位)和文件创建时间
支持最大 2^64 字节的文件;文件系统最大可达 2^64 字节
Inode 和目录数据被高度压缩,并以字节边界打包;每个压缩的 inode 平均长度为 8 字节(确切长度因文件类型而异,即常规文件、目录、符号链接以及块/字符设备 inode 具有不同的大小)
SquashFS 可以使用高达 64 Kb (2.x) 和 1Mb (3.x) 的块大小。默认大小为 128Kb (3.x),这比正常的 4K 块大小实现了更高的压缩率
在 2.x 版本中引入了碎片块的概念:将多个小于块大小的文件合并到单个块中的能力,从而实现更高的压缩率
文件重复项被检测并删除
同时支持大端和小端架构;SquashFS 可以挂载在不同字节序机器上创建的文件系统