Ceph存储系列(二十三) Ceph集群常见维护操作
1 | 作者:李晓辉 |
添加/移除OSD节点
添加或删除 OSD 可能会影响集群性能。回填操作会导致 OSD 之间出现大数据传输,造成集群性能降级。
更换故障的OSD
Ceph 存储具有自我修复设计。当存储设备出现故障时,其他 OSD 上的额外数据副本会自动回填,让集群恢复正常状态。
替换故障 OSD 需要同时替换物理存储设备和软件定义的 OSD。当 OSD 出现故障时,你可以替换物理存储设备,可以重复利用同样的 OSD ID 或创建新的 ID。重复使用同一 OSD ID 可以避免必须重新配置 CRUSH map。
查看集群状态并验证 OSD 是否出现了故障。
1
[ceph: root@serverc /]# ceph health detail
识别故障OSD
1
[ceph: root@serverc /]# ceph osd tree | grep -i down
定位OSD所在的OSD节点
1
[ceph: root@serverc /]# ceph osd find osd.OSD_ID
尝试启动失败的OSD
1
[ceph: root@serverc /]# ceph orch daemon start OSD_ID
如果 OSD 没有启动,则物理存储设备可能出现了故障。如果你已确认物理设备需要更换,请执行以下步骤。
暂时禁用清理
1
2[ceph: root@serverc /]# ceph osd set noscrub
[ceph: root@serverc /]# ceph osd set nodeep-scrub将OSD从集群中移除
1
2
3
4
5
6
7
8
9
10
11
12
13[root@serverc ~]# ceph osd out osd.3
[root@serverc ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.58612 root default
-3 0.19537 host ceph1
0 hdd 0.09769 osd.0 up 1.00000 1.00000
1 hdd 0.09769 osd.1 up 1.00000 1.00000
-5 0.19537 host ceph2
2 hdd 0.09769 osd.2 up 1.00000 1.00000
3 hdd 0.09769 osd.3 down 0 1.00000
-7 0.19537 host ceph3
4 hdd 0.09769 osd.4 up 1.00000 1.00000
5 hdd 0.09769 osd.5 up 1.00000 1.00000观察群集事件并验证已启动回填操作
1 | [ceph: root@serverc /]# ceph -w |
确认回填进程已经将所有pg从OSD上移走,现在可以安全移除了
1
2[root@ceph1 ~]# while ! ceph osd safe-to-destroy osd.3; do sleep 18; done
OSD(s) 3 are safe to destroy without reducing data durability.当OSD可以安全移除时,更换物理存储设备并销毁OSD。可以选择从设备中删除所有数据、文件系统和分区
用这个命令来查找哪个主机的哪个设备
1
[ceph: root@serverc /]# ceph osd metadata 3
1
[ceph: root@serverc /]# ceph orch device zap servere /dev/vdb --force
使用与故障 OSD 相同的 ID 来替换 OSD。先验证操作是否已完成,然后再继续。
ceph orch rm
命令保留 OSD ID。OSD 不会从 CRUSH 层次结构中永久移除,而是分配有destroyed
标志。此标志用于确定可在下一个 OSD 部署中重复使用的 OSD ID1
2[ceph: root@serverc /]# ceph orch osd rm 3 --replace
[ceph: root@serverc /]# ceph orch osd rm status更换物理设备,重建OSD。新的OSD与故障的OSD使用相同的OSD ID,新存储设备的设备路径可能与故障设备不一致,使用ceph orch device ls命令查找新的设备路径
1
[ceph: root@serverc /]# ceph orch daemon add osd HOST_NAME:DEVICE PATH
启动OSD,确认OSD状态正常
1
2[ceph: root@serverc /]# ceph orch daemon start OSD_ID
[ceph: root@serverc /]# ceph osd tree重新启用擦洗
1
2[ceph: root@node /]# ceph osd unset noscrub
[ceph: root@node /]# ceph osd unset nodeep-scrub
添加MON
通过执行以下步骤将MON添加到集群:
验证当前MON计数和放置
1
2
3[root@serverc ~]# ceph orch ls --service_type=mon
NAME RUNNING REFRESHED AGE PLACEMENT
mon 4/4 8m ago 23M clienta.lab.example.com;serverc.lab.example.com;serverd.lab.example.com;servere.lab.example.com向集群中添加新主机
1
2
3[root@serverc ~]# ceph cephadm get-pub-key > ~/ceph.pub
[root@serverc ~]# ssh-copy-id -f -i ~/ceph.pub root@HOST_NAME
[root@serverc ~]# ceph orch host add HOST_NAME指定MON节点应该运行的主机
1
[root@serverc ~]# ceph orch apply mon --placement="NODEl NODE2 NODE3 NODE4"
使用该命令时需要指定所有MON节点。如果只指定新的MON节点,那么该命令将删除所有其他的MON,使集群只剩下一个MON节点
删除一个MON
使用ceph orch apply mon命令从集群中删除一个mon。指定除要删除的mon外的所有mon
1 | [root@serverc ~]# ceph orch apply mon --placement="NODEl NODE2 NODE3" |
设置主机进入维护模式
使用ceph orch host maintenance命令设置主机进入或退出维护模式。维护模式停止主机上所有Ceph守护进程。使用可选的–force选项可以绕过警告
1 | [root@serverc ~]# ceph orch host maintenance enter clienta.lab.example.com |
维护结束后,退出维护模式
1 | [root@serverc ~]# ceph orch host maintenance exit clienta.lab.example.com |