OpenStack删除Cinder盘失败解决办法

来源:互联网 发布:试用期被辞退补偿知乎 编辑:程序博客网 时间:2024/04/28 15:08

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';
0 0