因爲某些緣由,致使在經過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的相應的值,不然會致使寫髒數據