openstack cinder卷无法删除

僵尸卷,真烦人,管理员权限你也杀不死。再横,我们依然消灭它

<The rest of contents | 余下全文>

在存储节点操作删除卷

首先在controller节点执行 cinder list查看那几个僵尸卷的id

然后在存储节点lvdisplay查看是否有其中的卷 如果你的存储节点不止一个。所以想删那个就去存储节点找如图在其中一个存储节点,找到其中一个僵尸卷

尝试删除命令

lvremove /dev/cinder-volumes/volume-a476ddb3-8076-47ec-ad4b-d84f8f743470

结果显示卷正在 in use

开玩笑的简直,本王在删除卷的时候,连实例都给删除了,还有状态都 设置为error了,怎么可能还在用。检查是否有占用进程

lsof | grep "a476ddb3-8076-47ec-ad4b-d84f8f743470" 

查看 是否 被 打开
fuser -m /dev/cinder-volumes/volume-a476ddb3-8076-47ec-ad4b-d84f8f743470
依然什么也没返回。
那么直接将存储节点的服务关闭

systemctl stop openstack-cinder-volume.service target.service

然后继续执行操作,就可以删除了

当然还没有结束,你在controller节点执行 cinder-list可能依然会看到那几个卷

这就需要在控制节点在数据库删除了,因为此时虽然在物理机上已经删除了,但是数据库中还有该记录 ,不能直接删除记录,数据库有外键依赖,要把cinder卷的deleted改成“1”

————————分割线————————————

在控制节点操作删除卷

1) 进入数据库

mysql -u root -pxxxxxx

2) 进入cinder数据库表

use cinder;

3) selete找到出错的表

select id, status, display_name from volumes where id=’a476ddb3-8076-47ec-ad4b-d84f8f743470’;

4)修改数据库cinder相关卷记录

update volumes set deleted=1 where id=’a476ddb3-8076-47ec-ad4b-d84f8f743470’;

到此问题解决注意别忘了重新打开刚才stop的cinder相关服务

关于磁盘卷组误操作的小插曲

本想vgcreate cinder-volumes /dev/sdb 创建逻辑卷组,结果敲成 pvcreate cinder-volumes /dev/sdb.

采取删除 pvremove cinder-volumes /dev/sdb 删除不掉

则 pvremove -ff cinder-volumes /dev/sdb 可以删除

关于大磁盘(大于2T)格式化

pvcreate /dev/sdb  
Device /dev/sdb not found (or ignored by filtering)

我的出错是因为我的硬盘没有格式化。但是问题是fdisk /dev/sdb 只能对不超过2T的硬盘分区。所以用fdisk格式化成lvm的思路就行不通了,只能用parted分区。但是我们只需要格式化就可以了。

mkfs.ext4 /dev/sdb

这样就可以 pvcreate物理分区

文章目录
  1. 1. 在存储节点操作删除卷
  • 在控制节点操作删除卷
  • 关于磁盘卷组误操作的小插曲
  • 关于大磁盘(大于2T)格式化
  • ,