Rook Ceph 移除 OSD
我有一个环境给每个 Node 节点挂载了 2 个盘,但是这个情况会导致挂了 2 台服务器就导致业务不可用所以需要精简 OSD 将每个 Node 至挂一个盘就好了.
这边我将 ID 为 6 7 8 9 10 的 OSD 删除
开始操作
rook自动化
使用 rook/deploy/examples/osd-purge.yaml
删除 osd 将 osd-ids 配置成你需要的 id
....
args:
- "ceph"
- "osd"
- "remove"
- "--preserve-pvc"
- "false"
- "--force-osd-removal"
- "false"
- "--osd-ids"
- "6,7,8,9"
...
执行脚本
kubectl -f osd-purge.yaml
等待一会后就可以自动删除全部...
手动操作
使 Operator 改为0
kubectl -n rook-ceph scale deployment rook-ceph-operator --replicas=0
移除配置
**可以使用 **kubectl edit
进行配置也可以直接在本地的 cluster.yaml
中删除
Kubectl edit
# kubectl edit cephclusters.ceph.rook.io -n rook-ceph rook-ceph
改为
保存配置
:wq
cluster.yaml
**进入 **/rook/deploy/examples/cluster.yaml
改为
进入 rook-ceph-tools
kubectl exec -i -t -n rook-ceph rook-ceph-tools-7b67b65bd-r7gjc -c rook-ceph-tools -- sh -c "clear; (bash || ash || sh)"
设置noup标签
ceph osd set noup #当设置此标志时,Ceph会阻止任何OSD的启动或重新上线。
不要一下子全部down一个一个来
下线OSD节点
**执行 **ceph osd down 0
将手动告知Ceph集群OSD 0处于“down”状态。这意味着尽管OSD 0可能在物理上仍在运行,Ceph逻辑上不再考虑它处于”up”状态,从而不参与数据操作。
ceph osd down 6
# marked down osd.6.
迁移OSD数据
还是在 rook-ceph-tools 节点中
**执行 **ceph osd out 0
将OSD 0从集群数据存储和复制活动中移除。Ceph会根据CRUSH算法重新分配原本存储在该OSD上的数据块,使集群数据在其他可用OSD上进行重新平衡和复制。
ceph osd out 6
# marked out osd.6.
# 想要恢复使用 ceph osd in 6
查看是否迁移完成
命令行查看 ceph -w
ceph -w
cluster:
id: 8bcfc496-89fb-4064-bf11-fdc0aaa0ba2a
health: HEALTH_WARN
noup flag(s) set
services:
mon: 3 daemons, quorum a,b,c (age 80m)
mgr: b(active, since 2h), standbys: a
osd: 11 osds: 6 up (since 6m), 6 in (since 6m)
flags noup
data:
pools: 2 pools, 33 pgs
objects: 1.93k objects, 7.5 GiB
usage: 28 GiB used, 196 GiB / 224 GiB avail
pgs: 33 active+clean
使用Dashborad
循环以上操作
循环以上操作直到全部关闭并 33PG 没有任何问题
移除OSD 节点
**执行 **ceph osd purge 0 --yes-i-really-mean-it
命令会永久删除指定的OSD(在此例中为OSD 0),包括OSD的相关数据、日志以及在内存中的信息元数据。这是一个不可逆的操作
ceph osd purge 0 --yes-i-really-mean-it
# purged osd.6
删除OSD 密钥
ceph auth del osd.0 命令用于删除指定OSD(在此例中为OSD 0)的身份验证密钥。这是Ceph安全性管理的一部分,涉及Ceph Monitor节点上存储的身份认证信息。
ceph auth del osd.6
查看是否删除
循环以上操作
循环以上操作直到OSD 全部关闭
删除 Deployment
在ceph-tools外操作
kubectl delete deploy -n rook-ceph rook-ceph-osd-6
恢复noup标签
ceph osd unset noup
命令用于清除集群级别的 noup
标志。
ceph osd unset noup #当设置此标志时,Ceph会阻止任何OSD的启动或重新上线。
# ceph osd unset noup
启动Operator
kubectl -n rook-ceph scale deployment rook-ceph-operator --replicas=1
评论