1
2
3
4
5
6
7
作者:李晓辉

联系方式:

1. 微信:Lxh_Chat

2. 邮箱:939958092@qq.com

添加/移除OSD节点

添加或删除 OSD 可能会影响集群性能。回填操作会导致 OSD 之间出现大数据传输,造成集群性能降级。

更换故障的OSD

Ceph 存储具有自我修复设计。当存储设备出现故障时,其他 OSD 上的额外数据副本会自动回填,让集群恢复正常状态。

替换故障 OSD 需要同时替换物理存储设备和软件定义的 OSD。当 OSD 出现故障时,你可以替换物理存储设备,可以重复利用同样的 OSD ID 或创建新的 ID。重复使用同一 OSD ID 可以避免必须重新配置 CRUSH map

  1. 查看集群状态并验证 OSD 是否出现了故障。

    1
    [ceph: root@serverc /]# ceph health detail 
  2. 识别故障OSD

    1
    [ceph: root@serverc /]# ceph osd tree | grep -i down 
  3. 定位OSD所在的OSD节点

    1
    [ceph: root@serverc /]# ceph osd find osd.OSD_ID
  4. 尝试启动失败的OSD

    1
    [ceph: root@serverc /]# ceph orch daemon start OSD_ID

如果 OSD 没有启动,则物理存储设备可能出现了故障。如果你已确认物理设备需要更换,请执行以下步骤。

  1. 暂时禁用清理

    1
    2
    [ceph: root@serverc /]# ceph osd set noscrub
    [ceph: root@serverc /]# ceph osd set nodeep-scrub
  2. 将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
  3. 观察群集事件并验证已启动回填操作

1
[ceph: root@serverc /]# ceph -w 
  1. 确认回填进程已经将所有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.
  2. 当OSD可以安全移除时,更换物理存储设备并销毁OSD。可以选择从设备中删除所有数据、文件系统和分区

    用这个命令来查找哪个主机的哪个设备

    1
    [ceph: root@serverc /]# ceph osd metadata 3
    1
    [ceph: root@serverc /]# ceph orch device zap servere /dev/vdb --force
  3. 使用与故障 OSD 相同的 ID 来替换 OSD。先验证操作是否已完成,然后再继续。

    ceph orch rm 命令保留 OSD ID。OSD 不会从 CRUSH 层次结构中永久移除,而是分配有 destroyed 标志。此标志用于确定可在下一个 OSD 部署中重复使用的 OSD ID

    1
    2
    [ceph: root@serverc /]# ceph orch osd rm 3 --replace 
    [ceph: root@serverc /]# ceph orch osd rm status
  4. 更换物理设备,重建OSD。新的OSD与故障的OSD使用相同的OSD ID,新存储设备的设备路径可能与故障设备不一致,使用ceph orch device ls命令查找新的设备路径

    1
    [ceph: root@serverc /]# ceph orch daemon add osd HOST_NAME:DEVICE PATH
  5. 启动OSD,确认OSD状态正常

    1
    2
    [ceph: root@serverc /]# ceph orch daemon start OSD_ID 
    [ceph: root@serverc /]# ceph osd tree
  6. 重新启用擦洗

    1
    2
    [ceph: root@node /]# ceph osd unset noscrub 
    [ceph: root@node /]# ceph osd unset nodeep-scrub

添加MON

通过执行以下步骤将MON添加到集群:

  1. 验证当前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
  2. 向集群中添加新主机

    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
  3. 指定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
2
3
4
5
6
7
8
9
[root@serverc ~]# ceph orch host maintenance enter clienta.lab.example.com
Ceph cluster 2ae6d05a-229a-11ec-925e-52540000fa0c on clienta.lab.example.com moved to maintenance

[root@serverc ~]# ceph orch host ls
HOST ADDR LABELS STATUS
clienta.lab.example.com 172.25.250.10 _admin Maintenance
serverc.lab.example.com 172.25.250.12
serverd.lab.example.com 172.25.250.13
servere.lab.example.com 172.25.250.14

维护结束后,退出维护模式

1
2
[root@serverc ~]# ceph orch host maintenance exit clienta.lab.example.com
Ceph cluster 2ae6d05a-229a-11ec-925e-52540000fa0c on clienta.lab.example.com has exited maintenance mode