从Ceph集群中删除OSD节点
从集群中删除OSD节点
使用cephadm
部署的Ceph集群,再尝试从集群中删除OSD节点的时候遇到了各种问题……
既然自动化工具目前不太完善(或者说在文档里目前还没看到使用cephadm删除OSD节点的方法),那么就手动删除吧!记录一次使用cephadm
搭建的集群如何删除OSD节点。当然使用其他方式部署的OSD要删除的话也是大同小异的。
ceph版本:ceph version 15.2.4 (7447c15c6ff58d7fce91843b705a268a1917325c) octopus (stable)
查看集群OSD状态
先查看集群内OSD的状态,并找到要删除的OSD节点。现在准备删除osd.4
和osd.5
这两个节点,他们都在vm2
这台主机上。
ceph osd tree
ceph osd dump
可以留意一下ID,之后便于确认ID所对应的块设备名(如:/dev/sdx或/dev/nvmex)
删除OSD节点节点
使用cephadm
删除OSD节点
目前使用cephadm
删除OSD节点后也需要手动的释放磁盘占用。
ceph orch osd rm <svc_id>... [--replace] [--force]
要删除osd.4
和osd.5
节点则执行:ceph orch osd rm 4 5
删除的过程需要一段时间,会重新分配集群内的PG,删除CRUSH图节点信息,删除这两个OSD所对应的用户和密钥环。
查看自动删除状态进度ceph orch osd rm status
,如果长时间无响应或者依旧没有删除,可以开始尝试手动删除OSD节点
手动删除OSD节点
移除daemon守护进程
接下来的操作请确保你对整个集群拥有admin
权限并且对要删除OSD节点的主机有root
权限。
登录到拥有Ceph集群admin
权限的主机,执行如下命令:
ceph orch daemon rm osd.4 osd.5 --force
返回结果如下,已经移除他们容器的守护进程:
1 | Removed osd.4 from host 'vm2' |
此时查看集群中这两个OSD的状态:
要删除osd.4
和osd.5
这两个节点的状态变成了DOWN。接下来就可以从crush
表中将他们移除。
如果还没有使用
cephadm
管理集群,此处你可以登录到vm2
这台主机中手动的将他们的systemd
守护进程disable
。
1
2 systemctl disable --now ceph-osd@4
systemctl disable --now ceph-osd@5
删除CRUSH图中所对应的OSD节点
删除CRUSH图中的OSD节点信息
ceph osd crush remove osd.4
ceph osd crush remove osd.5
执行成功返回结果:
1 | removed item id 4 name 'osd.4' from crush map |
此时再次手动检查集群内的OSD节点中是否还包含osd.4
和osd.5
:
已经从CRUSH图标中删除,此处已经看不到这两个OSD节点。
删除osd节点
ceph osd rm osd.4 osd.5
返回执行成功结果:removed osd.4, osd.5
删除osd用户
ceph auth ls | grep ^osd -A4
发现Ceph的OSD用户未被删除,残留在此处(会影响下一次添加OSD时,导致密钥环不匹配的错误)。执行如下命令删除:
ceph auth rm osd.4
ceph auth rm osd.5
删除OSD配置(如果有的话)
如果额外对OSD进行了额外配置的话需要手动删除当时的配置信息。登录到这台被删除OSD节点的主机上,修改配置文件:vim /etc/ceph/ceph.conf
,将对该OSD节点额外配置的信息删除。
之后把更新过的ceph.conf文件要拷贝到其他集群主机的/etc/ceph/
目录下。
解除Ceph对磁盘的占用
之后的操作都需要在移除OSD节点的主机(vm2
)上通过root
用户特权执行操作。
当删除了OSD之后,由于先前的配置,Ceph仍然对磁盘进行占用。需要移除这块OSD磁盘的DM状态,并之后对其格式化,这样才完整的手动移除一个OSD节点(磁盘)。
查询磁盘DM状态并移除编码
dmsetup status
注意在一开始要留意的哪个ID,在这里用来识别要删除哪个磁盘的DM标记。
dmsetup remove ceph--14c75e65--a33e--459a--8bc7--c95add15d8a3-osd--block--d2af5a38--54b9--4112--9bbf--8ea313c673f1
dmsetup remove ceph--6ceb7c60--8b90--44fc--b159--34bd3d8c8e0f-osd--block--5f1d52fa--e50c--4915--b059--f672684ce571
执行完上面的命令后,再检查一下DM状态,发现已经成功被删除DM标记:
wipefs
格式化文件系统
在使用wipefs
工具清除文件系统前,要找到所对应的块设备名称。
执行lsblk -f
命令:
下面的图片中可以看到,nvme0n2
和nvme0n3
这两个块设备已经没有了像nvme0n4
下方的ID标记,所以可以判定nvme0n2
和nvme0n3
和两块磁盘是我们移除的OSD节点所使用的磁盘。
接下来对nvme0n2
和nvme0n3
两个块设备格式他们的文件系统,执行命令:
wipefs -a /dev/nvme0n2 /dev/nvme0n3
到此,完成的将OSD节点从集群中移除。你可以使用lsblk工具或稍后一段时间后在拥有集群admin权限的主机上执行ceph orch device ls
命令查看这两个OSD节点所使用的磁盘是否是可以用的状态了。现在你可以将这两个磁盘取出或者在这两块磁盘上重新部署OSD节点…