您的位置:

使用virsh删除虚拟机

一、virsh简介

virsh是libvirt提供的一种工具,它是一个命令行工具,可以用来管理KVM、Xen、QEMU等虚拟化程序,通过它可以进入虚拟化的控制台、创建、修改、删除虚拟机等操作。在使用virsh删除虚拟机之前,我们首先要了解virsh的基本用法和命令。

二、virsh删除虚拟机的命令

删除一个虚拟机需要使用virsh的"undefine"命令,具体命令格式如下:

virsh undefine 虚拟机名称

其中,"虚拟机名称"是指要删除的虚拟机的名称。

在执行以上命令之前,我们需要先确认虚拟机是否处于关闭状态,否则会出现如下错误:

error: Failed to undefine domain centos7
error: Requested operation is not valid: domain has active devices

这个错误是因为虚拟机处于开启状态,不能直接删除,需要先关闭虚拟机,再执行删除操作。

三、关闭虚拟机的命令

关闭虚拟机需要使用virsh的"shutdown"命令,具体命令格式如下:

virsh shutdown 虚拟机名称

其中,"虚拟机名称"是指要关闭的虚拟机的名称。执行以上命令后,虚拟机会立即开始关闭。

四、等待虚拟机关闭的命令

等待虚拟机关闭需要使用virsh的"domstate"命令,具体命令格式如下:

virsh domstate 虚拟机名称

如果虚拟机已经关闭,则命令返回"shut off";如果虚拟机处于关闭中,则命令返回"shutting down"。我们需要等待虚拟机完全关闭,再执行删除操作。

五、删除虚拟机的完整代码

以下是完整的删除虚拟机的代码示例:

#!/bin/bash

#定义虚拟机名称
vm_name="centos7"

#关闭虚拟机
virsh shutdown $vm_name

#等待虚拟机关闭
while [ "$(virsh domstate $vm_name)" != "shut off" ]; do
    sleep 1
done

#删除虚拟机
virsh undefine $vm_name

以上代码首先定义了要删除的虚拟机名称,然后使用virsh的"shutdown"命令关闭虚拟机,再使用"domstate"命令等待虚拟机关闭,最后使用"undefine"命令删除虚拟机。