OpenStack Juno 删除僵尸实例

注意:这里还有一个很关键的问题没解决,配额信息如何处理?查看僵尸实例占用了多少配额倒是比较简单,但如何把这些配额释放回去?

我目前只能人工计算删除之后的instance、cores、ram值,然后去reservations和quota_usages表中修改。

这个方法很二缺,而且容易出错,但暂时没有更好的办法,还望路过的前辈支个招。

操作之前,我也尝试在网上找了一些,很多都是同出一源,屏蔽外键(SET FOREIGN_KEY_CHECKS=0;),然后删除instances表中的记录。显而易见,这种方式很暴力,会留下相当多的数据库垃圾条目。

当然,也是有一些通过脚本,或者逐条清除的办法来解决的,但版本相对比较早,比如像这位前辈的blog中的记录(传送门),关联的数据库条目相对非常少。

所以,只好自己照着前辈的方法摸索着去处理了…

以下以demo1实例为例,测试删除僵尸实例

获取当前状态,尝试删除,状态仍然是ERROR

[[email protected] ~(demo)]$ nova list |grep demo1

| 38887ca5-b697-451f-8d95-36b8b64aae3e | demo1 | ERROR | - | NOSTATE | |

  1. 回收floating ip,这个例子里面实例并没有分配到floating ip,但还是需要先提出来,避免出现更多的数据库外键错误
    # nova remove-floating-ip demo1 192.168.8.101
    # nova floating-ip-delete 192.168.8.101
  2. 确认需要删除的实例的id,在数据库的表中,它可能以uuid,instance_uuid,id等名称出现
    # nova list | grep demo1
    从上面图中可以看到id是 38887ca5-b697-451f-8d95-36b8b64aae3e
  3. 确认数据库中此实例的信息
    mysql -uroot -pPASSWORD -e "USE nova; SELECT uuid, vm_state, display_name FROM instances WHERE uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"
  4. 逐条删除数据库表记录
    mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM security_group_instance_association WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"
    mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_info_caches WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"
    mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM block_device_mapping WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"
    mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_extra WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"

    mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_actions_events WHERE action_id IN (SELECT id FROM instance_actions WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘) ;"

    mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_actions WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"
    mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_faults WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"
    mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_system_metadata WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"
    mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instances WHERE uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"

  5. 如果删除过程中提示还有其他外键,比如以下提示,
    ERROR 1451 (23000) at line 1: Cannot delete or update a parent row: a foreign key constraint fails (`nova`.`instance_system_metadata`, CONSTRAINT `instance_system_metadata_ibfk_1` FOREIGN KEY (`instance_uuid`) REFERENCES `instances` (`uuid`))
    在执行命令时,依次替换3个下划线的位置。第1个是关联外键所在表,第2个是该表中相关联的字段,第3个是被引用的表中对应的字段,就是前面查询到的instance_id。前两条直接复制,后面instance_id根据实际需要删除的实例的uuid去替换。执行的实际命令如下:
    mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_system_metadata WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"
  6. 接下来,删除实例所使用的镜像。默认位于 /var/lib/nova/instances 目录中,镜像文件仍然是以instance_id命名,删除整个instance_id的文件夹即可。保险起见,可以将文件夹先备份到其他位置保留一段时间。

最后,就是前面提到的,手动去处理配额用量信息。

时间: 2024-10-27 19:37:33

OpenStack Juno 删除僵尸实例的相关文章

如何删除 OpenStack Nova 僵尸实例

http://www.vpsee.com/2011/11/how-to-delete-a-openstack-nova-zombie-instance/ 前天强制重启一台 OpenStack Nova 控制结点以后发现虚拟机消失,但是 euca-describe-instances 命令显示 instances 仍然是 running 的状态,使用 euca-terminate-instances 终止命令仍然无效,暂时把这样的 instance 称作"僵尸实例(zombie instance)

在Ubuntu14.04上OpenStack Juno安装部署

在Ubuntu14.04上OpenStack Juno安装部署 0 安装方式 0.1 安装方式 安装方式 说明 目标 备注 单结点 一台服务器运行所有的nova-xxx组件,同时也驱动虚拟实例. 这种配置只为尝试Nova,或者为了开发目的进行安装.   1控制节点+N个计算节点 一个控制结点运行除nova-compute外的所有nova-services,然后其他compute结点运行nova-compute.所有的计算节点需要和控制节点进行镜像交互,网络交互,控制节点是整个架构的瓶颈. 这种配

[IaaS与数据中心] centos7下安装openstack juno

最近不忙,安装了一下openstack juno与大家分享一下.根据以下安装步骤http://docs.openstack.org/juno/i ... ent/ch_preface.html                                openstack-install-guide-yum-juno.pdf                (1.03 MB, 下载次数: 313)先看一下安装完的效果.cryboy2001  2014-12-18一.整体效果,有两台实例aa与bb

openstack Juno系列之控制节点搭建

openstack Juno系列之控制节点搭建 controller控制节点搭建 安装keystone ------------- 所有主机hosts: 取消其中127.0.0.1 10.0.0.11  controller 10.0.0.21  neutron 10.0.0.31  compute to configure prerequisites: apt-get install python-software-properties add-apt-repository cloud-arc

openstack Juno系列之计算节点搭建

openstack Juno系列之计算节点搭建 nova-compute安装配置 -------------------- apt-get install nova-compute sysfsutils 编辑配置文件 vi /etc/nova/nova.conf [DEFAULT] verbose = True rpc_backend = rabbit rabbit_host = controller rabbit_password = RABBIT_PASS auth_strategy = k

原生js实现的创建和删除元素实例代码

原生js实现的创建和删除元素实例代码:在实际应用中,往往需要动态的创建和删除指定的元素,下面就通过代码实例介绍一下如何实现此功能.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title&g

openStack juno for ubuntu12-04

1,pwgen(openssl rand -hex 10) some Open-Stack services add a root wrapper to sudo that can interfere with security policies  (Mirantis openStack Certification涉及) 2,apt-get update && apt-get intall ntp; 3,OpenStack juno apt repo packages for ubuntu

使用Fuel安装OpenStack juno之一安装Fuel Master

安装OpenStack是一件很复杂的事情,特别是在想目中,如果一个组件一个组件,一台一台的coding部署,估计太消耗时间,而且出错的概率很高,所以使用工具推送部署的效率就很高了,而且必须得可靠.mirantis是一家专门做openstack服务的公司,对openstack的贡献也很高,目前已经实现盈利,其openstack部署工具Fuel也很高效稳定,可以在生产环境使用,而且可以购买其服务. 那就不多说此工具了,咱们开始部署,先来了解下大致的环境: 部署硬件:windows 7 (8GB RA

FileSystemObject组件新建读取添加修改删除功能实例

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>FileSystemObject组件应该实例</title> </head> <