zoukankan      html  css  js  c++  java
  • multipath路径残留导致虚拟机无法重启

    客户反馈一台虚拟机重启后虚拟机状态显示为错误。

    检查云平台各个组件服务,未发现异常后,首先尝试重置虚拟机状态,然后硬重启看下

     

    一段时间后,虚拟机状态仍然为error。检查虚拟机所在计算节点的nova-compute日志,发现如下错误



    日志显示,终止虚拟机的qemu-kvm进程时失败(Failed to terminate process 2216397),有资源占用未释放(device or resource busy)。

    尝试从kvm层面,用virsh destroy 命令关闭虚拟机


    如上图,virsh destroy也无法终止此qemu-kvm进程(nova的硬重启其实调用的就是destroy接口)

    在宿主机上面,查看此qemu-kvm进程,发现此进程已经变成僵尸进程(Z状态),用kill --9无法kill掉,用lsof 命令尝试找出进程占用的资源文件,发现输出为空。


    咨询客户重启虚拟机之前对虚拟机有哪些操作,客户反馈卸载了一块商业存储类型的云硬盘(cinder对接的IBM的v7000,走的iscsi协议,使用过程中坑不断,不细述),怀疑可能存储资源未释放。

    cinder查看卸载的云硬盘的状态,发现为未挂载的available可用状态。

    通过virsh domblklist 命令,发现虚拟机仍显示挂载有云硬盘。

    通过virsh dumpxml 命令,查看虚拟机的运行状态

    如上图,从路径名分析,商业存储云硬盘,在虚拟机里面挂载为vdb。

    在宿主机上面,查看此路径如下:

    如上图,虚拟机的vdb对应于宿主机的/dev/dm-8设备,通过multipath -ll命令,发现dm-8设备仍存在,说明虚拟机占用此资源一直未释放,导致虚拟机进程无法关闭。

    解决办法:

    通过multipath -f命令释放此路径

    如上图,multipath -f释放此路径后,再次执行multipath -ll,dm-8设备已经不存在,重启虚拟机也正常了。

    后续工作:排查卸载云硬盘的过程中,卸载已经完成,云硬盘状态已经为未挂载可用状态时,为何multipath路径仍然占用未释放的原因,进而从源头解决此问题。

  • 相关阅读:
    无需数学基础如进行机器学习
    机器学习路线图
    机器学习的最佳学习路线原来只有四步
    机器学习是否需要完整扎实的数学基础?
    可无注解的 SpringBoot API文档生成工具
    JApiDocs是一个无需额外注解、开箱即用的SpringBoot接口文档生成工具
    python 两个文件夹里的文件名对比
    Navicat for MySQL 激活方法
    mysql —— 利用Navicat 导出和导入数据库
    HTTP请求错误码大全(转)
  • 原文地址:https://www.cnblogs.com/360linux/p/13062079.html
Copyright © 2011-2022 走看看