您的位置:首页 > 其它

删除僵尸实例脚本

2013-12-30 08:20 197 查看
在我们创建实例的过程中,由于种种错误的操作,会产生了大量状态为 ERROR 或 BUILD 的僵尸实例,经过进一步研究,发现其主要原因出现在 RabbitMQ 服务,中途有很多连接都 timeout 了。这些僵尸实例创建不成功或者根本就没有运行,只是在 nova 数据库里有纪录而已,直接用 nova delete 命令无法删除,那么如何进行强制删除instance呢?

首先,清理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/bashmysql -uroot << EOFuse 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-list

这样你可以看到,现在你的nova中存在的实例。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: