鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

如何进行KVM+QEMU外部磁盘快照合并和释放存储空间

问题现象描述

在虚拟机运行状态下,尝试进行快照合并操作时失败,导致快照占用的存储空间不断增长且无法有效释放。

关键过程、根本原因分析

  • 使用的操作系统和软件版本可能存在缺陷,导致快照合并操作失败。
  • 对KVM、QEMU及libvirt的快照管理功能不熟悉,可能导致操作不当,进而影响快照合并的成功率。

结论、解决方案及效果

  1. 建议使用如表1所示操作系统和软件版本。
    表1 操作系统和软件要求

    项目

    版本

    获取方式

    OS

    openEuler 22.03 LTS SP3

    http://openeuler.org/zh/download/

    qemu

    6.2.0-83

    通过配置Yum源的方式安装

    libvirt

    6.2.0-57

    通过配置Yum源的方式安装

  2. 在虚拟机运行状态下,创建快照。
    virsh snapshot-create-as --domain VM_NAME SNAPHOT_NAME SNAPHOT_DESC --disk-only --diskspec vda,snapshot=external --atomic
    • VM_NAME:虚拟机名称。
    • SNAPHOT_NAME:快照名称。
    • SNAPHOT_DESC:快照描述。
    • vda:指定创建快照的虚拟机磁盘。
    • 外部磁盘快照默认存储在虚拟机磁盘相同的目录下,创建完成后虚拟机磁盘设备将指向新建的外部磁盘快照。每个虚拟机最多可创建199个外部磁盘快照。
    • 查询虚拟机磁盘设备信息。
      virsh domblklist VM_NAME

  3. 虚拟机运行状态下,合并快照(blockcommit)。
    virsh blockcommit --domain VM_NAME vda --base path_to_base_snapshot --top path_to_top_snapshot --wait --verbose
    • VM_NAME:虚拟机名称。
    • path_to_base_snapshot:要提交到的基本文件的绝对路径(不能是初始的虚拟机磁盘文件)。
    • path_to_top_snapshot:要提交的顶部文件的绝对路径(不能是最后一个外部磁盘快照)。
  4. 删除合并后的不在需要的快照文件(谨慎操作)。

    不能删除初始的虚拟机磁盘文件、最后一个外部磁盘快照,以及提交合并到的基本外部磁盘快照。

    virsh snapshot-delete --domain VM_NAME SNAPHOT_NAME --metadata
    rm path_to_snapshot
    • VM_NAME:虚拟机名称。
    • SNAPHOT_NAME:快照名称。
    • path_to_snapshot:快照文件的绝对路径。