栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

OpenStack控制节点上,虚拟机硬重启,虚机状态为error,底层查看虚拟机被删除的问题分析

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OpenStack控制节点上,虚拟机硬重启,虚机状态为error,底层查看虚拟机被删除的问题分析

【问题描述】

OpenStack云平台在控制节点上,执行虚拟机硬重启指令,虚拟机状态为error,底层查询虚拟机发现 该虚拟机被删除

nova  reboot  --hard  虚拟机UUID

【问题排查】

1、底层查看虚拟机的操作

nova   instance-action-list  虚拟机UUID

根据Action 中的 操作动作,以及查看对应的操作结果为 Error的,获取对应的Request_ID  

2、根据获取到的操作请求的Request_ID,登录到宿主机上查看对应的/var/log/nova日志

req-6c60cdd6-acd8-4c61-846f-ad678df9f26d

ERROR nova.virt.libvirt.guest [] Error launching a defined domain with XML

libvirtError:Failed to activate service 'org.freedesktop.machine1':timed out

Failed to start libvirt guest:libvirtError:Failed to activate service 'org.freedesktop.machine1':timed out

Error from  libvirt while getting description of instance-00006666:[Error Code 42] Domain not found : no domain with matching uuid 'xxxx-xxxx-xxxx-xxxx' (instance-00006666): libvirtError: Domain not found :no domain with matching uuid 'xxxx-xxxx-xxxx-xxxx'

ErroR oslo_messaging.rpc.server File "usr/lib/python2.7/site-packages/oslo_messaging/rpc/server.py",line 160,in _process_incoming

3、查看底层虚拟机的状态

nova show 虚拟机UUID

虚拟机状态为Error

4、在宿主机上找不到出故障的虚拟机

virsh  list --all

5、计算节点上检查虚拟机相关的文件

ll  /var/lib/nova/instance/

/var/lib/nova/instance/目录下还有虚拟机的那个uuid

ll  /var/lib/libvirt/qemu/

/var/lib/libvirt/qemu/目录下的domain-xxx-instance-000006666对应的实例目录已经不存在了

6、到计算节点computer-node-AA上查看reboot的调用逻辑

Failed to soft reboot instance. Trying hard reboot.

INFO nova.virt.libvirt.driver [-] [instance: xxxxxxxxxxxx] Instance destroyed successfully.

注意:destroyed没关系,destroyed后虚拟机还是可以通过virsh list --all能查到的

【问题分析】

在OpenStack控制节点上进行虚拟机硬重启

nova  reboot  --hard  虚拟机UUID

底层计算节点上,会先shutdown 关闭虚拟机,然后销毁 destroyed 虚拟机,最后通过 虚拟机机的配置文件xml来实现创建虚拟机。目前发现在创建虚拟机的时候,底层计算节点上发现虚拟机的配置文件找不到了,找不到与虚拟机UUID相匹配的domain ,可能是程序底层调用逻辑中涉及到删除虚拟机相关文件从操作。

虚拟机被程序删除了,没办法恢复,但是数据盘还在,现在只能订购一台新的虚拟机,把数据盘给挂上去,让厂商重新根据数据盘的数据来部署业务系统,来尽快恢复业务了。

原有的/var/lib/nova/instance目录下其实存的是一些系统盘的东西,比如disk文件,这个东西日志里看是被删除了,而且实际看也确实被删掉了。

reboot操作能把这个/var/lib/nova/instance/下的东西删除,不知道底层代码怎么走的,只能交研发分析了。

这个地方有个问题:虚拟机reboot不成功后为何底层将虚拟机从libvirt层面给删了。这种属于reboot重启,起不来之后OpenStack正常底层处理逻辑!

【问题解决】

因为对应的虚拟机配置文件已经不存在了,而且对应的虚拟机系统盘也找不到了。在重启虚拟机之前,尚未对虚拟机做快照或者镜像备份,所以目前虚拟机已经找不回来了。

1、先将原先的虚拟机状态从error状态恢复成active状态

nova  reset-state --active 虚拟机UUID

2、新建一台与原先虚拟机同规格的云主机,并将原先的数据盘以及公网IP(EIP即浮动IP)绑定到新创建的这台云主机上

3、尝试挂载数据盘,查看数据盘数据的完成程度

1)为了确保数据盘的数据安全,先对数据盘制作快照

2)开始挂载数据盘

创建测试目录

mkdir -v /test

尝试单独挂载其中的一块盘,失败,如下:

mount  /dev/vdb1  /test

mount: unknown  filesystem type 'LVM2_member'

lsblk  -f

数据盘现状:总共有4块盘,并且4块盘底层做了 LVM ,需要先激活 lvm 逻辑卷,才能进行挂载

lvdisplay

-bash:lvdisplay:command not found

安装一下

yum install -y lvm2

lvdisplay

----Logical  volume  ---

LV  Path  /dev/vgdata/lvdata

LV  Name  lvdata

 

激活逻辑卷

vgchange  -ay  /dev/vgdata

1 logical volume(s) in volume group "vgdata" now active

 

mount  /dev/vgdata/lvdata  /test

lsblk  -f

ll  /test

最后挂载成功,lvm逻辑卷里面的数据,可以正常显示出来

【补充说明】

vgchange命令,用于修改卷组的属性,经常被用来设置卷组是处于活动状态或非活动状态。处于活动状态的卷组无法被删除,必须使用vgchange命令将卷组设置为非活动状态后才能删除。

参数:

-a:设置卷组的活动状态

例子:

使用vgchange命令将卷组状态改为活动的。在命令行中输入下面的命令:

vgchange  -ay  vg1000     #将卷组"vg1000"设置为活动状态

写在最后:

两条成长道理,一是向外追求,适应别人;二是向内建设,关注自己的价值成长

多元思维模型的本质,就是把更多的学科知识带入自己的思考中,形成自己对认识世界,系统而包容的态度;形成自己的思考模式,摆脱人云亦云

要更多关注与“怎么做”,而不要总是停留在“为什么”

人生,选择,经历,承担,成长

更多详情,请见公众号

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/730579.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号