qemu-img怎么将RAW格式虚拟机磁盘转换为精简置备的qcow2格式

夏强同学_1527

夏强同学_1527

2026-10-07

570人浏览

原创

能,但必须加 -o lazy_refcounts=on,cluster_size=65536,compression_type=zlib 参数,否则默认生成的 qcow2 不满足精简置备语义;转换前需在虚拟机内归零空扇区并执行 fstrim,转换后须验证 lazy refcounts: true 及文件大小是否显著缩小。

qemu-img怎么将raw格式虚拟机磁盘转换为精简置备的qcow2格式

qemu-img convert -f raw -O qcow2 能直接生成精简置备磁盘吗

能,但必须加 -o lazy_refcounts=on 和 -o cluster_size=65536(或更大),否则默认创建的 qcow2 虽然文件稀疏,但不满足“精简置备”语义——它仍会预分配元数据结构,且快照链管理效率低。真正的精简行为依赖于写时分配(copy-on-write)和延迟引用计数,这两个选项缺一不可。

常见错误是只执行:qemu-img convert -f raw -O qcow2 old.img new.qcow2,结果新镜像在 qemu-img info 中显示 lazy refcounts: false,后续做快照或反复克隆时 I/O 开销明显上升。

转换前必须关机并清理未使用空间

RAW 磁盘里大量“空扇区”(全零)不会自动压缩进 qcow2,除非你在转换前主动归零。否则 qcow2 会把那些零块也当成有效数据存进去,失去空间节省意义。

  • 在虚拟机内执行:dd if=/dev/zero of=/zerofill bs=1M; sync; rm -f /zerofill
  • 再运行 fstrim -v /(需启用 discard 挂载选项)
  • 最后关机,再执行 qemu-img convert

若跳过这步,new.qcow2 的 disk size 可能接近原 RAW 大小,而非实际已用空间。

Zapier Agents
Zapier Agents

Zapier Agents是一款用于构建和运行自动化 AI 代理的工作流工具。

下载

转换命令要带关键参数并验证输出

正确命令示例:

qemu-img convert -f raw -O qcow2 \
  -o lazy_refcounts=on,cluster_size=65536,compression_type=zlib \
  centos7.raw centos7-thin.qcow2

执行后务必验证:

  • qemu-img info centos7-thin.qcow2 → 检查 lazy refcounts: true、compression type: zlib
  • du -h centos7-thin.qcow2 → 对比 disk size 和实际文件大小,应基本一致
  • 启动虚拟机前,先用 qemu-img check -r all centos7-thin.qcow2 排查元数据损坏

替换磁盘后别忘了更新虚拟机配置

PVE 或 libvirt 不会自动识别你换掉的磁盘文件。手动操作时容易漏掉这步:

  • 编辑 /etc/pve/qemu-server/<vmid>.conf</vmid>(PVE)或 virsh edit <vm-name></vm-name>(libvirt)
  • 找到类似 scsi0: local:100/vm-100-disk-0.raw 的行,替换成新路径,如 scsi0: local:100/vm-100-disk-0.qcow2
  • 确保 cache=writeback 或 cache=none 保持不变,避免因缓存策略突变引发 I/O 错误

最易忽略的是:即使文件名没变(比如你覆盖重写了原 .raw),只要格式变了,就必须显式指定 type=qcow2,否则 QEMU 仍按 RAW 解析,直接报错 Invalid argument。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

虚拟机

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

120

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

100

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

80

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

60

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

80

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

280

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

180

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

140

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

80

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程