如何更改qcow2镜像的zstd级别?

3

有一个选项compression_type=zstd可以启用qcow2的zstd压缩根据维基百科

但它总是使用zstd级别3,我该怎么做才能用级别19压缩它?这个镜像是只读的,我只想要最大的压缩级别。

我现在使用的命令是:


qemu-img convert -p -f qcow2 -O qcow2 -c -o compression_type=zstd,preallocation=off win10.qcow2 win10-zstd.qcow2

其他信息:
Linux fedora 5.17.5-300.fc36.x86_64
qemu-img.x86_64 2:6.2.0-9.fc36  
1个回答

2

没有命令行选项,因此我们需要修改源代码。在./block/qcow2-threads.c中:

  206 |     return -EIO;
  207 | }
+ 208 | ZSTD_CCtx_setParameter(cctx, ZSTD_c_compressionLevel, ZSTD_maxCLevel());
  209 | /*

按照官方教程编译,以下是一些提示:

# (Fedora) Install dependencies
dnf install bzip2 ninja-build libzstd-devel pixman-devel
# Enable ZSTD, disable useless features for shorter compile time
./configure --enable-zstd --disable-tcg --disable-kvm

现在我们在./build/softemu找到了qemu-img。尝试转换一个文件:

./qemu-img convert -p -f qcow2 -O qcow2 -c -o compression_type=zstd win10.qcow2 win10-2.qcow2

我们明白了:
[kkocdko@fedora tmpfs]$ ls -l
total 3411264
-rw-r--r--. 1 kkocdko kkocdko 1651638272 Jun 12 01:57  win10-2.qcow2
-rw-r--r--. 1 kkocdko kkocdko 1841496064 May 25 18:21  win10.qcow2

也发布在我的博客上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接