![为什么 ZFS gzip-9 压缩比实际使用 zip 文件差很多?](https://linux22.com/image/1354420/%E4%B8%BA%E4%BB%80%E4%B9%88%20ZFS%20gzip-9%20%E5%8E%8B%E7%BC%A9%E6%AF%94%E5%AE%9E%E9%99%85%E4%BD%BF%E7%94%A8%20zip%20%E6%96%87%E4%BB%B6%E5%B7%AE%E5%BE%88%E5%A4%9A%EF%BC%9F.png)
我正在处理一些非常大的数据包捕获文件(30 个文件,约 150GB),但由于数据包捕获的冗余度很高,使用 .zip 文件可以将这些文件压缩到原始文件大小的约 7%(14.29 倍)。
我想知道我是否可以通过创建一个带有“compression=gzip-9”设置的 ZFS 分区来“本地”处理这些文件。我创建了分区,复制了数据包捕获,最终结果是压缩率为 20.83% (4.80x)。
我很奇怪为什么会有这么大的差异。
答案1
这是因为每个记录(文件块)都是单独压缩的(以便从大文件的中间读取)。设置大记录大小:
zfs set recordsize=128k zpool/fsname
或者创建具有较大记录大小的新文件系统:
zfs create -o recordsize=128k zpool/fsname
此设置仅影响文件系统中创建的新文件fsname
。