首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

OpenStack手动从数据库中剔除实例

2012-09-12 
OpenStack手动从数据库中删除实例由于某种原因我将OpenStack的一个计算节点移除了,但移除前并没有删除在其

OpenStack手动从数据库中删除实例

由于某种原因我将OpenStack的一个计算节点移除了,但移除前并没有删除在其上运行的实例,后来想通过dash删除这些实例,于是N天过去了,我的dash还显示如下内容:
OpenStack手动从数据库中剔除实例
很碍眼是不是?于是我打算手动从数据库中删除它们!

1.数据库中与删除实例相关的表

数据库中与删除实例相关的表如下:
OpenStack手动从数据库中剔除实例
fixed_ips记录给实例分配的fixed ip,floating_ips显然与实例分配的floating ip有关,但我在实验中一直没有使用过floating故不作评断,instance_actions我这里是空的不管,instance_faults记录与实例有关的错误不管,instance_info_caches与实例的网络设置缓存有关,instance_metadata实例的元数据有关不管,instance_type_extra_specs与instance_types与flavor设置有关不管,instances显然是实例的主表,volumes与实例的volumes有关。我的实验中没有floating ip也没有volumes故我只关注fixed_ips,instance_info_caches,instances三个表。

2.OpenStack的删除策略

通过观察发现Nova中的表中基本都有如下字段:
OpenStack手动从数据库中剔除实例
OpenStack在删除对象时并不删除数据库中的记录,只是修改deleted_at和deleted字段。

3.操作数据库

删除实例的操作主要集中在instances,instance_info_caches,fixed_ips三个表。

3.1操作instances表
下图是我的数据库中曾经删除了的test3(右边)与现在无法删除的test3(左边)的对比:
OpenStack手动从数据库中剔除实例
因此我的操作如下:

update instance_info_caches set deleted_at = updated_at, deleted = 1 where id = 9;update fixed_ips set instance_id = NULL, allocated = 0, virtual_interface_id = NULL where id = 7;

OK,如法炮制又删除了另一个实例,总算在dash中不用看那两个讨厌的实例了。


热点排行