因为某些缘由,致使在经过nova delete删除虚拟机后,其task_state 一致处于deleting状态, 可是始终没法删除。因为虚拟机尚未分配到节点等信息,尚未拷贝镜像,因此能够直接从数据库中将其删除。能够执行如下脚本 delete_zombie.shmysql
#!/bin/bash
mysql -uroot -ppassword << EOF
use nova;
DELETE a FROM nova.security_group_instance_association AS a INNER JOIN nova.instances AS b ON a.instance_uuid=b.uuid where b.uuid='$1';
DELETE FROM nova.instance_info_caches WHERE instance_uuid='$1';
DELETE FROM nova.instance_system_metadata WHERE instance_uuid='$1';
DELETE FROM nova.virtual_interfaces WHERE instance_uuid='$1';
DELETE FROM nova.instances WHERE uuid='$1';
EOFsql
./delete_zombie.sh a23c85eb-27a8-4594-9e7e-b1ca1b410235 数据库
参数为虚拟机的UUIDbash
解释: ui
Mysql 中产看表之间的关联性spa
SELECT * FROM information_schema.KEY_COLUMN_USAGE a WHERE a.TABLE_NAME='virtual_interfaces';orm
其中红色部分为索要查询的表ci
虚拟机的信息是储存在nova.instances 表中,因为表间的一些键之间的关联性,致使直接从instances表中删除数据,mysql会报错,因此要删除关联表中数据。虚拟机
在Openstack 的G版本中,所关联的数据较之前版本多了些。it
另外在执行脚本后须要修改配额信息,将改tenant_id 的配额进行相应的更改,更改数据库中nova.quota_usages的相应的值,不然会致使写脏数据