|
前天强制重启一台 OpenStack Nova 控制结点以后发现虚拟机消失,但是 nova-list 命令显示 instances 仍然是 running 的状态,使用 nova-delete 终止命令仍然无效,暂时把这样的 instance 称作“僵尸实例(zombie instance)”:
# virsh list
Id Name State
----------------------------------
# euca-describe-instances
RESERVATIONr-bkl83j20bangclouddefault
INSTANCEi-0000001dami-00000002172.16.39.121172.16.39.121runningvpsee (vpseecloud, node00)02011-11-10T12:45:12Znovaaki-00000001ami-00000000
RESERVATIONr-j335q6nybangclouddefault
INSTANCEi-0000001eami-00000002172.16.39.122172.16.39.122runningvpsee (vpseecloud, node00)02011-11-10T12:54:27Znovaaki-00000001ami-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
|
|
|