您的位置:首页 > 运维架构

如何删除openstack nova里的僵尸实例

2013-04-15 11:24 771 查看
前天强制重启一台 OpenStack Nova 控制结点以后发现虚拟机消失,但是 nova-list 命令显示 instances 仍然是 running 的状态,使用 nova-delete 终止命令仍然无效,暂时把这样的 instance 称作“僵尸实例(zombie instance)”:
# virsh list
Id Name         State
----------------------------------

# euca-describe-instances
RESERVATION	r-bkl83j20	bangcloud	default
INSTANCE	i-0000001d	ami-00000002	172.16.39.121	172.16.39.121	running	vpsee (vpseecloud, node00)	0			2011-11-10T12:45:12Z	nova	aki-00000001	ami-00000000
RESERVATION	r-j335q6ny	bangcloud	default
INSTANCE	i-0000001e	ami-00000002	172.16.39.122	172.16.39.122	running	vpsee (vpseecloud, node00)	0			2011-11-10T12:54:27Z	nova	aki-00000001	ami-00000000

# euca-terminate-instances i-0000001d
# euca-terminate-instances i-0000001e
删除 OpenStack Nova Volume 时遇到的 error_deleting 问题 这篇文章提到的解决办法一样,直接操作数据库来删除这2条僵尸实例的记录。登录 mysql,使用 nova 数据库,找出要删除 instance 的 id,然后删除:
# mysql -u root -p
Enter password:

mysql> use nova;

mysql> select * from instances;

mysql> delete from instances where id = '29';
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`nova`.`virtual_interfaces`, CONSTRAINT `virtual_interfaces_ibfk_1` FOREIGN KEY (`instance_id`) REFERENCES `instances` (`id`))
MySQL 删除 id 为 29 的 instance 时触发外键限制错误,简单的办法是暂时关闭外键检查,等删除后再打开:
mysql> SET FOREIGN_KEY_CHECKS=0;
Query OK, 0 rows affected (0.00 sec)

mysql> delete from instances where id = '29';
Query OK, 1 row affected (0.04 sec)

mysql> delete from instances where id = '30';
Query OK, 1 row affected (0.04 sec)

mysql> SET FOREIGN_KEY_CHECKS=1;
Query OK, 0 rows affected (0.00 sec)
删除 instance 29 和 30后再用 euca-describe-instances 命令验证一下:
# euca-describe-instances
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  删除 僵尸 如何