如何在 KVM 中通过 virsh 命令删除虚拟机?

问题浏览数Icon
64
问题创建时间Icon
2025-05-24 21:21:00
回答 | 共 4 个
作者头像
jingming99

在 KVM 中通过 virsh 命令删除虚拟机需遵循以下步骤:

  1. 确认虚拟机状态

    virsh list --all

    找到目标虚拟机的名称(如 vm_name)。

  2. 若虚拟机在运行,先关闭

    virsh destroy vm_name  # 强制停止(类似断电)

    若需正常关机,使用 virsh shutdown vm_name(需虚拟机支持ACPI)。

  3. 删除虚拟机配置

    virsh undefine vm_name

    默认保留虚拟磁盘文件。若需同时删除关联存储,添加 --storage <磁盘路径>--remove-all-storage 参数。

  4. 手动清理磁盘文件(如未自动删除)

    rm -f /path/to/vm_disk.qcow2

注意事项

  • 操作需 root 权限或通过 sudo 执行。
  • undefine 前建议备份虚拟机配置(virsh dumpxml vm_name > backup.xml)。
  • 若使用 LVM/网络存储,需单独处理存储资源。
作者头像
sunshine001

如何在 KVM 中通过 virsh 命令删除虚拟机?

  1. 关闭虚拟机:若虚拟机正在运行,先执行 virsh destroy <虚拟机名称> 强制关闭,或 virsh shutdown <虚拟机名称> 正常关机。
  2. 删除虚拟机配置:执行 virsh undefine <虚拟机名称> 删除虚拟机定义文件。若需同时删除关联的磁盘文件,添加 --remove-all-storage 参数。

延伸知识点:virsh undefine 的存储管理选项

virsh undefine 默认仅删除虚拟机配置文件(位于 /etc/libvirt/qemu/),不会清理磁盘文件。通过以下参数可管理存储:

  • --remove-all-storage:删除配置文件中定义的所有关联磁盘文件。
  • --storage <卷名称>:仅删除指定存储卷。
  • --delete-snapshots:同时删除与虚拟机关联的快照元数据。

示例

virsh undefine myvm --remove-all-storage --delete-snapshots

此命令将彻底删除虚拟机配置、磁盘文件及快照,避免残留数据占用空间。需谨慎操作,确保数据已备份!

作者头像
icebai99

先关掉虚拟机:virsh shutdown 虚拟机名字。然后删配置和磁盘:virsh undefine 虚拟机名字 --remove-all-storage。注意先virsh list --all确认名字别搞错,删了就找不回来啦!

作者头像
liulixing351
  1. 确认虚拟机状态virsh list --all 检查目标虚拟机名称及状态(若运行需先关闭)

  2. 关闭虚拟机virsh shutdown <虚拟机名称> 若强制关闭: virsh destroy <虚拟机名称>

  3. 删除虚拟机配置virsh undefine <虚拟机名称> 若需同时删除存储: virsh undefine --domain <虚拟机名称> --remove-all-storage

  4. 手动清理残留文件(如未自动删除): 根据原磁盘路径执行: rm -f /var/lib/libvirt/images/<虚拟机名称>.qcow2

注意事项

  • 操作前务必确认虚拟机名称
  • 永久性删除前建议快照备份
  • 检查关联虚拟网络/存储池