SquashFS 如何处理解压?

SquashFS 如何处理解压?

SquashFS 如何处理解压?我对 LZ4 在 SquashFS 文件系统上的开销感兴趣。我的理论是,SquashFS 文件系统中的文件在读取过程中会被解压缩。目录列表怎么样?

答案1

SquashFS 有一些详细的文档记录在内核文档中。 SquashFS 文件系统的所有内容都可以被压缩,包括 inode 和目录项; inode 和目录条目也经过专门设计以提高压缩率。

这意味着从文件系统读取的任何数据或元数据都涉及解压缩;然而,开销有所减少使用缓存

  • 文件数据解压到页缓存,因此同一页的多次读取不需要多次解压数据;
  • 元数据和片段(尾端打包块)被解压缩到小的、特定的元数据和片段缓存,因此可以多次读取相同的元数据块(例如当列出目录的内容时)不需要多次解压缩相同的块。

还有各种查找表来加速涉及各种索引(块、用户和组标识符以及片段)的操作。

答案2

来自man mksquashfs(强调我的):

quashfs 是 Linux 的高度压缩的只读文件系统。它使用 gzip/xz/lzo/lz4/zstd 压缩压缩文件、索引节点和目录

因此,它还压缩目录内容。

顺便说一句,您可以使用标志来控制是否压缩 inode、uid/gid 表、数据或数据片段块以及扩展属性-no{I,Id,D,F,X}

回复:开销:您会发现在许多系统上,解压缩比从永久存储中读取要快得多,因此速度方面的开销实际上是负数。

相关内容