僵尸卷,真烦人,管理员权限你也杀不死。再横,我们依然消灭它
<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物理分区