zoukankan      html  css  js  c++  java
  • OpenStack手动从数据库中删除实例

    由于某种原因我将OpenStack的一个计算节点移除了,但移除前并没有删除在其上运行的实例,后来想通过dash删除这些实例,于是N天过去了,我的dash还显示如下内容:

    很碍眼是不是?于是我打算手动从数据库中删除它们!

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

    数据库中与删除实例相关的表如下:

    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在删除对象时并不删除数据库中的记录,只是修改deleted_at和deleted字段。

    3.操作数据库

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

    3.1操作instances表
    下图是我的数据库中曾经删除了的test3(右边)与现在无法删除的test3(左边)的对比:

    因此我的操作如下:

    [sql]view plaincopy

    1. update instances set
    2. deleted_at = updated_at,   
    3. deleted = 1,   
    4. power_state = 0,   
    5. vm_state = "deleted",   
    6. terminated_at = updated_at,   
    7. root_device_name = NULL,   
    8. task_state = NULL
    9. where id = 9;  


    3.2操作instance_info_caches和fixed_ips

    这两个操作简单,在前一步操作后已经在dash中看不到被删除的实例了,这两步操作主要是释放被删除实例所占用的网络资源,直接上代码:

    [sql]view plaincopy

    1. update instance_info_caches set
    2. deleted_at = updated_at,   
    3. deleted = 1   
    4. where id = 9;  
    5.  
    6. update fixed_ips set
    7. instance_id = NULL,   
    8. allocated = 0,   
    9. virtual_interface_id = NULL
    10. where id = 7;  


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

  • 相关阅读:
    让Dreamweaver支持cshtml (MVC Razor环境)
    href="#"与href="javascript:void(0)"的区别
    ASP.NET MVC 4 中Razor 视图中JS无法调试 (重要)
    03011_HttpServletRequest
    1004. 成绩排名 (20)
    1003. 我要通过!(20)
    C语言文件读写命令fprintf和fscanf
    1002. 写出这个数 (20)
    1001. 害死人不偿命的(3n+1)猜想 (15)
    汇编in和out实例解析
  • 原文地址:https://www.cnblogs.com/IvanChen/p/4489407.html
Copyright © 2011-2022 走看看