我正在处理一些非常大的数据包捕获文件(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
。