当我尝试使用 OpenStack 启动实例时,nova-compute.log 中出现以下错误:
(nova.rpc): TRACE: libvirtError: operation failed: domain 'instance-0000000a' already exists with uuid 5f81a7d2-1b0f-8c72-4e1e-377c275e9289
但是,virsh 没有显示任何域:
$ sudo virsh list
Id Name State
----------------------------------
如果存在该域名,为什么它没有出现在 virsh 中?
答案1
您的域名可能已关闭。运行virsh list --all
以查看所有域名。
答案2
还不熟悉 OpenStack,但在常规的旧 libvirt 中,该错误通常意味着没有正在运行的实例,但有已定义的实例。“virsh list”仅显示当前活动的 VM,而不是每个已定义的 VM。尝试:
virsh edit instance-0000000a
如果弹出打开的 vim 并且里面有一堆 XML,则说明已经有一个定义的“instance-0000000a”VM。如果您 100% 确定不需要它,请退出编辑器并使用:
virsh undefine instance-0000000a
然后让 OpenStack 再次尝试您正在执行的操作,它应该可以工作。
顺便说一句,如果你确实想要那里的东西,你可以从以下开始:
virsh start instance-0000000a
但是再说了,不熟悉 OpenStack,它可能不喜欢你这样做,不知道。
答案3
场景 1:
您确定virsh
命令行上正在与 OpenStack 控制器相同的虚拟机管理程序通信吗?这可能是最简单的解释,因为两个原因virsh
没有显示正在运行的实例。
场景 2:
如果你使用ps
,你看到任何qemu-kvm
正在运行的实例吗?尝试:
ps -fe | grep qemu-kvm
如果有qemu-kvm
实例正在运行,它们将有一个-name
参数,该参数应与 中使用的名称相匹配。如果它们本来应该已经停止运行,那么virsh
您可以只运行这些进程。kill -9
答案4
检查您是否安装了 qemu-system-x86-xen 如果没有 - 安装 apt install qemu-system-x86-xen 这对我很有帮助