首页/云/云平台与虚拟化速查/qemu-img check 一致性检查
虚拟化操作94 条

qemu-img check 一致性检查

check 扫描 qcow2 的引用计数与簇一致性,-r 参数可尝试修复泄漏或全部问题;执行前先备份,且镜像必须未被虚机占用。

云平台与虚拟化速查云更新于 2026-10-13

qemu-img check 是什么

qemu-img check 扫描 qcow2 镜像的内部一致性:引用计数、簇分配与元数据是否自相矛盾。它回答的是镜像本身有没有坏这个问题——典型线索包括虚机启动异常、快照删除后容量统计异常、上一次 qemu-img 操作被中断。加上 -r 参数可以尝试修复,但修复本身是写操作,必须先备份,而且要求镜像没有被任何 QEMU 进程占用。

基本信息

适用平台任意安装了 qemu-img 的 Linux 发行版,支持 qcow2 与部分其他格式
只检不修qemu-img check disk.qcow2
修复泄漏qemu-img check -r leaks disk.qcow2
尽量修复qemu-img check -r all disk.qcow2(谨慎,改动更多)
前提条件镜像未被运行中的虚机或进程占用,需要写权限
退出码0 表示无错误,非 0 表示存在损坏或修复未完全成功
配套命令qemu-img info 看元数据,qemu-img compare 比对两份镜像

典型使用场景

  • 虚机启动报错或引导失败,怀疑磁盘镜像损坏
  • 上一次镜像转换或备份被中断,需要确认产物是否完整
  • 删除快照后容量没有按预期释放,检查元数据是否一致
  • 迁移前对导出的镜像做体检,避免把损坏镜像带到新环境
  • 扩容或压缩镜像后复核,确认操作没有破坏内部结构
  • 日常巡检:对少量关键镜像做定期一致性抽查

安全执行的顺序

安全执行的顺序
sudo virsh destroy vm1 2>/dev/null || virsh shutdown vm1   # 先确保虚机不再占用镜像
virsh domblklist vm1 | grep qcow2                           # 或先确认没有 qcow2 盘被该域使用
cp --sparse=always disk.qcow2 disk.qcow2.bak                 # 修复前必备份,保留稀疏属性省空间
qemu-img check disk.qcow2                                    # 先只检查,看清楚报错类型与计数
qemu-img check -r leaks disk.qcow2                           # 泄漏类问题从最轻的修复级别开始
qemu-img check disk.qcow2                                    # 修复后复检,确认退出码为 0
qemu-img info disk.qcow2 | head -8                            # 核对虚拟大小与实际占用是否合理

输出项读法

输出项含义处理建议
leaks存在未被引用的簇,空间被占用但没人用可用 -r leaks 修复,修复前备份
corruptions元数据损坏,如引用计数不一致优先从备份恢复,修复会丢数据风险较高
检查的簇数量扫描范围,用于估算耗时镜像越大耗时越长,建议在维护窗口执行
退出码0 为一致,非 0 表示有错误非 0 时不要直接投入生产,先备选方案
占用与容量实际分配与虚拟容量的比例比例异常偏小可能意味着元数据异常
check 不是数据校验:它检查镜像结构而非文件系统内容,检查通过不代表里面的业务数据没坏,还需要在虚机内做文件系统与业务层校验。
对运行中的镜像执行 check 或修复:可能拿不到锁、读到变化中的数据,甚至加重损坏,务必先停掉虚机。

易错点

  • 对运行中的镜像执行 check:拿到写锁冲突或读到中间状态,结论不可信
  • 修复前不做备份:修复动作本身可能加重损坏,且不可回退
  • 直接用 -r all 处理:改动范围最大,应先用最轻级别尝试
  • 把 check 通过当成数据完好:镜像结构正常不代表文件系统与业务数据没坏
  • 在业务高峰做全盘扫描:大镜像扫描消耗大量 IO,影响同宿主其他虚机

数据来源与参考

  • qemu-img 手册:check
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌