OpenStack删除Cinder盘失败解决办法
Posted Mr_扛扛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenStack删除Cinder盘失败解决办法相关的知识,希望对你有一定的参考价值。
OpenStack删除Cinder盘失败解决办法
一、写在前面
这篇文章主要介绍了OpenStack cinder vloume在dashboard删除时出现删除错误或者一直在删除状态下的处理方式,由于作者能力或者理解不够透彻或许不是最好的方式,如果错误请告知, 如果转载,请保留作者信息。
邮箱地址:jpzhang.ht@gmail.com
个人博客:https://jianpengzhang.github.io/
CSDN博客:http://blog.csdn.net/u011521019
二、问题
Openstack Cinder云硬盘,无法删除对应的云硬盘,一直在删除中,或者删除提示报错为云硬盘的状态不是错误或者可用状态,这块云硬盘成为僵尸记录。
三、思路
Cinder创建云硬盘,如果是本地存储,即通过lvm的方式在物理机上划分一块空间,整体思路是通过lvremove删除物理服务器上的云硬盘空间,在数据库中标记这条记录的状态为已删除。
1、针对lvm,可以用命令lvdisplay列出所有卷的信息,如果应用命令lvremove来删除相应的卷,提示要删除的卷正在使用中,使用命令lsof查看相应卷所占用的进程,然后kill这个进程;
2、应用命令lvremove来删除相应的卷;
3、进入元数据库,修改这条记录状态,标记为已删除;
四、操作
1、通过lvdisplay |grep查询cinder对应的卷地址。
root@compute:~# lvdisplay | grep "8580f464-02e1-411c-bd94-a4af35e499a3"
LV Path /dev/cinder-volumes/volume-8580f464-02e1-411c-bd94-a4af35e499a3
LV Name volume-8580f464-02e1-411c-bd94-a4af35e499a3
2、通过lsof | grep查询占用cinder卷的端口
lsof| grep "8580f464-02e1-411c-bd94-a4af35e499a3"
kill-9 76568
3、通过lvremove删除相应的卷
lvremove /dev/cinder-volumes/volume-8580f464-02e1-411c-bd94-a4af35e499a3
4、报错处理
报错:device-mapper: remove ioctl on failed: Deviceor resource busy。设备繁忙
- 查看是否被打开:
dmsetup info -c /dev/cinder-volumes/volume-8580f464-02e1-411c-bd94-a4af35e499a3 查看是否被打开,如果看到open为4或者数字说明它被打开了,所以remove不掉。
- 查看被谁打开:
fuser -m /dev/cinder-volumes/volume-8580f464-02e1-411c-bd94-a4af35e499a3
查看是谁打开的,显示产用进程号
- 把占用设备的进程杀掉:
kill -9 xxxx xxxx xxxx xxxx
- 重新执行上面验证的几个步骤,验证是否还有进程占用,如果看到open为0,表示现在没有进程占用,再执行lvremove删除相应的卷
5、验证是否已经删除
root@compute:~# lvdisplay | grep "8580f464-02e1-411c-bd94-a4af35e499a3"
6、进入云平台系统,更改需要删除云硬盘状态为“可用配额”,然后“删除云硬盘”,如果再界面上删除依旧没有执行成功或者依旧一直再删除中,就采用比较暴力的方式,修改云硬盘再数据库中的状态,因为此时云硬盘再存储设备(物理机)上已经删除了,仅仅还有数据库中还有该记录信息,但不能直接删除这条记录,数据库有外键依赖,而是要把cinder盘的deleted改成“1”,“1”即为删除,0为不删除。
- 进入数据库:
mysql -uxxxx -pxxxx
- 选择数据库表
use cinder;
- select找到出错的数据:
select id, status, display_name from volumes where id='2d5d206d-0720-42aa-b178-3f3238177583';
- 修改数据库记录状体:
update volumes set deleted=1 where id='2d5d206d-0720-42aa-b178-3f3238177583';
以上是关于OpenStack删除Cinder盘失败解决办法的主要内容,如果未能解决你的问题,请参考以下文章