一、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"命令删除虚拟机。