SquashFS(SQUASH File System) 是一种只读压缩文件系统,旨在最小化存储空间并提供高性能访问。它通常用于 Linux 发行版中的 Live CD/DVD 映像和嵌入式系统等场景,以减小文件系统的大小并提高性能, 以下是 SquashFS 文件系统的一些主要特点和概述:
- 只读文件系统: SquashFS 是一种只读文件系统,这意味着在挂载后不能对其进行写入操作。它主要用于存储静态文件和只读数据,例如操作系统文件、应用程序和配置文件
- 高压缩比: SquashFS 通过使用压缩算法来减小文件系统的大小。它可以实现高压缩比,从而节省存储空间。这对于嵌入式系统和 Live CD/DVD 映像非常有用,因为它们需要占用尽可能少的磁盘空间
- 高性能: 尽管是只读文件系统,但 SquashFS 提供了快速的访问速度。它通过将文件系统的内容预先解压缩并缓存在内存中来实现高性能。这意味着在挂载后,文件系统中的文件可以迅速访问,而无需实时解压缩
- 适用于嵌入式系统: SquashFS 广泛用于嵌入式系统,如路由器、智能电视和嵌入式控制器。它可以帮助减小设备的固件大小,同时提供快速的启动和运行性能
- 可堆叠使用: SquashFS 文件系统可以与其他文件系统堆叠使用,以实现特定的用例。例如,它可以与 tmpfs(临时文件系统) 一起使用,以实现只读根文件系统和可写临时文件系统的组合
- 不支持写入操作: 由于 SquashFS 是只读文件系统,它不支持写入操作。如果需要对文件系统进行写入操作,通常需要与可写文件系统(如 EXT4 或 FAT)一起使用
SquashFS 文件系统在减小文件系统大小、提高性能和存储静态数据方面具有很大优势,因此在嵌入式系统和 Live CD/DVD 制作中非常常见。它提供了一种有效的方式来管理只读数据,并在资源有限的环境中提供高性能, 在 Linux 中使用 SQUASHFS 需要打开内核宏 CONFIG_SQUASHFS.
SQUASHFS 文件系统是一个只读文件系统,可以看到映射文件的 mmap 接口使用了 generic_file_readonly_mmap 函数,generic_file_readonly_mmap 函数为文件映射的 VMA 提供的 vm_ops 接口为 generic_file_vm_ops,该数据接口实现了 fault 接口 filemap_fault,那么文件映射 VMA 发生缺页时 filemap_fault 函数会被调用.