OpenStack虚拟机删除后停在deleting无法正常删除

公司环境中批量删除虚拟机的过程中出现某些虚拟机无法正常删除,任务状态显示删除中但是虚拟无法删除。

通过查询相关文章(下文转载)发现应该是instances row中键值未更新错误导致,但是按照操作云主机数量中内容移除信息但是概况中还是出现该资源被占用的情况。(批量方式待解决)

1.命令行处理方式:(完美解决)

通过rest-state和force-delete后某些报错VM可以清除(测试可行,但是有时候nova delete命令无效,控制台测试可以正常删除)

# nova reset-state --active UUID

# nova force-delete --active UUID

[[email protected] ~]# nova list

[[email protected] ~]# nova reset-state 1274d42e-4934-4c8b-96ea-c62adeb0210d
Reset state for server 1274d42e-4934-4c8b-96ea-c62adeb0210d succeeded; new state is error
[[email protected] ~]# nova list

[[email protected] ~]# nova reset-state 1274d42e-4934-4c8b-96ea-c62adeb0210d --active
Reset state for server 1274d42e-4934-4c8b-96ea-c62adeb0210d succeeded; new state is active
[[email protected] ~]# nova list

[[email protected] ~]# nova delete 1274d42e-4934-4c8b-96ea-c62adeb0210d
Request to delete server 1274d42e-4934-4c8b-96ea-c62adeb0210d has been accepted.
[[email protected] ~]# nova list

 

具体的BUG信息请参考:https://review.openstack.org/#/c/294491/  (通常需要删除后重启nova-compute服务才能生效该方法不需要重启服务)

https://community.rackspace.com/products/f/45/t/1478

2.数据库处理方式:(未完全解决,概况中存在资源被占用情况)

MariaDB [nova]> select * from instances\G

*************************** 73. row ***************************
created_at: 2017-08-24 09:49:35
updated_at: 2017-08-25 03:40:45
deleted_at: NULL
id: 174
internal_id: NULL
user_id: 1487af17b9b34850972f451f34394c34
project_id: af087ac33ae2455091db74836d07e1b0
image_ref: e5cf5847-50d0-4584-b77e-0db5479ee7c0
kernel_id:
ramdisk_id:
launch_index: 0
key_name: NULL
key_data: NULL
power_state: 1
vm_state: active
memory_mb: 16384
vcpus: 4
hostname: concar-es01
host: compute1
user_data: NULL
reservation_id: r-b4ya1x14
scheduled_at: NULL
launched_at: 2017-08-24 09:50:46
terminated_at: NULL
display_name: concar-es1
display_description: concar-es01
availability_zone: nova
locked: 0
os_type: NULL
launched_on: compute1
instance_type_id: 57
vm_mode: NULL
uuid: d1027782-6dbe-4bd2-ae02-f69c5632e905
architecture: NULL
root_device_name: /dev/vda
access_ip_v4: NULL
access_ip_v6: NULL
config_drive:
task_state: deleting
default_ephemeral_device: NULL
default_swap_device: NULL
progress: 0
auto_disk_config: 1
shutdown_terminate: 0
disable_terminate: 0
root_gb: 30
ephemeral_gb: 0
cell_name: NULL
node: compute1
deleted: 0
locked_by: NULL
cleaned: 0
ephemeral_key_uuid: NULL

*************************** 74. row ***************************

使用命令进行修改

MariaDB [nova]> update instances set deleted=1 where uuid='d1027782-6dbe-4bd2-ae02-f69c5632e905';

修改后:

*************************** 73. row ***************************
created_at: 2017-08-24 09:49:35
updated_at: 2017-08-25 03:40:45
deleted_at: NULL
id: 174
internal_id: NULL
user_id: 1487af17b9b34850972f451f34394c34
project_id: af087ac33ae2455091db74836d07e1b0
image_ref: e5cf5847-50d0-4584-b77e-0db5479ee7c0
kernel_id:
ramdisk_id:
launch_index: 0
key_name: NULL
key_data: NULL
power_state: 1
vm_state: active
memory_mb: 16384
vcpus: 4
hostname: concar-es01
host: compute1
user_data: NULL
reservation_id: r-b4ya1x14
scheduled_at: NULL
launched_at: 2017-08-24 09:50:46
terminated_at: NULL
display_name: concar-es1
display_description: concar-es01
availability_zone: nova
locked: 0
os_type: NULL
launched_on: compute1
instance_type_id: 57
vm_mode: NULL
uuid: d1027782-6dbe-4bd2-ae02-f69c5632e905
architecture: NULL
root_device_name: /dev/vda
access_ip_v4: NULL
access_ip_v6: NULL
config_drive:
task_state: deleting
default_ephemeral_device: NULL
default_swap_device: NULL
progress: 0
auto_disk_config: 1
shutdown_terminate: 0
disable_terminate: 0
root_gb: 30
ephemeral_gb: 0
cell_name: NULL
node: compute1
deleted: 1
locked_by: NULL
cleaned: 0
ephemeral_key_uuid: NULL

修改前和修改后对比:

修改后和其他正常删除的虚拟信息对比:

 删除后更新为:

 

转载链接:http://www.cnblogs.com/horizonli/p/5172213.html

部署OpenStack问题汇总(五)--openstack中删除虚拟主机,状态一直未deleting

【原创文章,转载请注明出处】

一、我重启了该机器,之后想删除没有创建成功的虚拟机(没有打开cpu的vt),结果发现状态一直为deleting状态。在这个状态下创建虚拟机也失败。

 

二、分析:在/var/log/nova/nova-compute.log的log找到如下的信息:

---------------------------------------------------------------------------------------------------------

2012-08-13 14:30:45 CRITICAL nova [-] Instance instance-00000002 could not be found.

---------------------------------------------------------------------------------------------------------

接着又发现nova-compute(service nova-compute status)的状态为stop,重启不能成功。

 

三、处理:

最后我修改了nova数据库中的instance-00000002的deleted,把它变成1。

mysql> select * from instances\G
mysql> update instances set deleted=1 where id=2;   (注意:根据不同的版本deleted的值不定,有些版本会改成对应的ID号。)

之后,dashboard的页面中发现已经删除了。

重启nova-compute,再次创建虚拟机,状态都为active。

 

问题的思考方向:虚拟机的操作(创建、删除等)一定跟nova-compute有关。


----------------------------------------------------------------------------------------------------
2014年3月25日更新
在按照以上操作后,发现虽然实例已经删除,如下图:
如果要手动删除一个instance:
 
 
                           
但是在概况中依然出现了该实例占用内存、cpu的信息:如下图的windows7-vm,这个instance已经做了上面的操作进行删除,但是这里还在显示。
 
 
然后,为了避免干扰测试,正确删除了testwin后,ssh连接上主机。打开mysql数据库,进入nova数据库。
使用show tables命令找到下面三个表:
quota_classes      #打开发现为空表
quota_usages      #这里面的内容表示为上图中的图饼。
quotas                  #这里面表示的是一些配额的限制值。
这时候,查看quota_usages表
select  *  from quota_usages;
 
将表中的in_use 的值改为0,再刷新dashboard,就看到正常的图饼了。
 
 
 
 删除完毕。