如何使用virsh命令删除KVM VM guest虚拟机

时间:2020-01-09 10:40:25  来源:igfitidea点击:

如何在Linux操作系统上使用virsh命令行删除VM guest虚拟机?
如何在Ubuntu或CentOS Linux服务器上删除名为vps42的虚拟机?
默认情况下,删除VM Guest会删除其XML配置,该配置存储在/etc /目录中。
您也可以删除来宾存储文件以完全删除来宾。
在本快速教程中,您将学习如何在Debian/Ubuntu/RHEL/CentOS Linux服务器上使用virsh删除VM guest虚拟机。

要使用Virsh删除KVM guest虚拟机,请执行以下操作:

  • 首先,使用" virsh list"命令列出所有正在运行的KVM guest虚拟机。
  • 接下来,您需要使用" virsh shutdown VM"命令关闭来宾虚拟机。
  • 最后,使用virsh undefine VM命令删除VM Guest。

让我们详细了解步骤。

步骤1:列出所有VM guest虚拟机

执行以下命令:

# virsh list
# virsh list --all

输出示例:
Virsh列出了一个KVM虚拟机

要查看有关名为openbsd的域(VM)的信息,请执行:

# virsh dumpxml VM_NAME
# virsh dumpxml --domain VM_NAME
# virsh dumpxml --domain openbsd

记下访客存储文件:

# virsh dumpxml --domain openbsd | grep 'source file'
`<source file='/nfswheel/kvm/openbsd.qcow2'/>`

步骤2:关闭来宾

执行以下命令以关闭名为openbsd的虚拟机:

# virsh shutdown VM_NAME
# virsh shutdown --domain VM_NAME
# virsh shutdown --domain openbsd

您可以使用virsh destroy命令强制来宾虚拟机停止:

# virsh destroy VM_NAME
# virsh destroy --domain VM_NAME
# virsh destroy --domain openbsd

步骤3:删除虚拟机

使用virsh删除VM Guest

# virsh undefine VM_NAME
# virsh undefine --domain VM_NAME
# virsh undefine --domain openbsd

输出示例:

Domain openbsd has been undefined

没有选项可以自动删除名为/nfswheel/kvm/openbsd.qcow2的追加存储文件。
要删除它,请执行:

# rm -rf /nfswheel/kvm/openbsd.qcow2

关于错误的说明:无法删除带有快照的非活动域

您无法删除带有快照的虚拟机。
例如:

# virsh undefine --domain openbsd

输出示例:

error: Failed to undefine domain openbsd
error: Requested operation is not valid: cannot delete inactive domain with 2 snapshots

要列出快照,请执行:

# virsh snapshot-list --domain VM_NAME
# virsh snapshot-list --domain openbsd

输出示例:

Name                 Creation Time             State
-----------------------------------------------------------
3sep2015             2015-09-02 13:38:18 -0500 shutoff
3sep2015u1           2015-09-02 15:04:50 -0500 shutoff

删除快照的语法如下:

# virsh snapshot-delete --domain VM_NAME --snapshotname SNAPSHOT_NAME

要删除两个快照,请执行:

# virsh snapshot-delete --domain openbsd --snapshotname 3sep2015 
`Domain snapshot 3sep2015 deleted`
# virsh snapshot-delete --domain openbsd --snapshotname 3sep2015u1 
`Domain snapshot 3sep2015u1 deleted`

验证一下:

# virsh snapshot-list --domain openbsd

现在删除虚拟机:

# virsh undefine --domain openbsd
`Domain openbsd has been undefined`
# rm -f /nfswheel/kvm/openbsd.qcow2

在取消定义域/VM的同时删除关联的VM存储卷和快照

最新版本的virsh命令支持使用以下语法删除关联的存储卷:

# virsh undefine --domain {VM_NAME_HERE} --storage {source_path}

使用以下命令找出存储ID和源路径:

# virsh domblklist --domain {VM_NAME_HERE}
## List VM snapshots ##
# virsh snapshot-list --domain {VM_NAME_HERE}

甚至还有一个消除所有关联的存储VM云存储卷的选项,必须谨慎使用:

# virsh undefine --domain {VM_NAME_HERE} --remove-all-storage

要转换与卷(VM存储)关联的快照,请使用以下语法以及该选项:

# virsh undefine --domain {VM_NAME_HERE} --delete-snapshots --remove-all-storage

为了安全起见,我们还可以擦除已删除卷上的数据,因此以后没有人可以恢复数据:

# virsh undefine --domain {VM_NAME_HERE} --storage {source_path} --wipe-storage

在具有所有存储的Linux上删除和删除虚拟机

简而言之,使用以下简单语法删除名为mysql-server的虚拟机:

# virsh undefine --domain mysql-server --remove-all-storage
# virsh undefine --domain mysql-server --remove-all-storage --delete-snapshots