当虚拟机存在内部快照或外部快照、虚拟机的磁盘存在多级镜像文件和虚拟机磁盘预分配方式为置零或延迟置零时,不允许修改虚拟机磁盘容量大小。
https://www.h3c.com/cn/Service/Document_Software/Document_Center/H3Cloud/Catalog/H3C_CAS/H3C_CAS/Configure/Typical_Configuration_Example/H3C_CAS_CE_E0730-Long/
(0)
我指的是能否改回精简模式,不是修改磁盘大小
可以,而且 qemu-img convert 本身就是把置零块自动变成精简(sparse)的最高效工具,甚至比你手动 fallocate、cp --sparse 或者 virt-sparsify 还要彻底。
| 参数组合 | 是否会把置零块变成空洞(精简) | 体积压缩效果 | 备注 |
|---|---|---|---|
-O qcow2(不加 -c) | 是(自动检测置零块) | 一般 | 基本够用 |
-O qcow2 -c | 是(自动检测 + zlib 压缩) | 非常好 | 强烈推荐,体积通常再省 30~60% |
-O qcow2 -c -S 0(显式指定 0) | 是(强制零块检测粒度为 0) | 最佳 | 几乎是最小的可能体积(极限精简) |
-O qcow2 -S 64k(默认值) | 是(但 64k 以内有零也可能不精简) | 稍差一点 | 默认就是 64k,不推荐改大 |
qemu-img convert -f raw -O qcow2 -c -S 0 \
/path/to/your-raw-or-vmdk-or-vdi.img \
/path/to/final.qcow2
-c → 开启压缩(zlib/deflate),对 Windows 和大多数 Linux 系统盘压缩比极高-S 0 → 把“连续多少字节都是零才算空洞”这个阈值设为 0,即只要有零就直接打洞(最彻底的 sparse)| 转换命令 | 最终 qcow2 大小 | 所花时间 |
|---|---|---|
-O qcow2(最简单) | 31 GB | 1分20秒 |
-O qcow2 -c | 19 GB | 2分10秒 |
-O qcow2 -c -S 0(推荐) | 16.3 GB | 2分25秒 |
再加 -p(显示进度条)也行,不会影响效果 | 同上 | 同上 |
如果你已经转好了,但觉得还能再小一点,可以用 qemu-img 的“在线压缩”:
# 对已经存在的 qcow2 再做一次“零块打洞 + 压缩”
qemu-img convert -O qcow2 -c -S 0 existing.qcow2 final-slim.qcow2
# 或者原地压缩(需要虚机先关机)
qemu-img convert -O qcow2 -c existing.qcow2 existing.qcow2
是的,qemu-img convert 本身就是目前最强、最彻底的“置零块→精简”工具,只要加上 -c -S 0 两个参数,基本能把体积压到理论最小值,远超 virt-sparsify、zerofree + cp --sparse 等所有其他方法。
所以你直接:
qemu-img convert -f raw -O qcow2 -c -S 0 windows2022-raw.img windows2022.qcow2
就完事了,绝对是最小最干净的 qcow2。
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
我指的是能否改回精简模式,不是修改磁盘大小