本帖最后由 pig2 于 2014-3-2 18:23 编辑
在我们创建实例的过程中,由于种种错误的操作,会产生了大量状态为 ERROR 或 BUILD 的僵尸实例,主要原因出现在 RabbitMQ 服务,中途有很多连接都 timeout 了。这些僵尸实例创建不成功或者根本就没有运行,只是在 nova 数据库里有纪录而已,直接用 nova delete 命令无法删除,可以进行强制删除。下面方法你可以尝试一下。
首先,清理instance目录,看看对应的哪些instance是僵尸实例,有的话直接通过# rm -rf删除即可:
比如:instance-00000010是僵尸实例
- # ls /var/lib/nova/instances/
复制代码
可以看到nova文件下先存在的实例:
_base instance-00000010 instance-00000011
删除实例instance-00000010:- # rm -rf /var/lib/nova/instances/instance-00000010
复制代码
然后清理 nova 数据库,你可以直接登陆数据库后手动删除纪录,具体的操作方法网上有很多。不过这是常见操作,最好还是保存成一个脚本,便于你以后再次使用数据库。方法如下:- # nano deletevm.sh
- #!/bin/bash
- mysql -uroot << EOF
- use nova;
- DELETE a FROM nova.security_group_instance_association
- AS a INNER JOIN nova.instances AS b
- ON a.instance_id=b.id where b.uuid='$1';
- DELETE FROM nova.instance_info_caches WHERE instance_id='$1';
- DELETE FROM nova.instances WHERE uuid='$1';
- EOF
-
- # chmod +x deletevm.sh
复制代码
运行脚本,比如删除 ID 为 efc6e9c7-4ef8-4350-9451-83bcfcafe101 的实例:- # ./deletevm.sh efc6e9c7-4ef8-4350-9451-83bcfcafe101
复制代码
复制代码 这样你可以看到,现在你的nova中存在的实例。
|