3.6. 删除 Ceph OSD 节点

要减少存储集群的容量,请删除 OSD 节点。

警告

在移除 Ceph OSD 节点之前,请确保存储集群可以回填所有 OSD 的内容,而无需达到全满比率。达到 全满比率 将导致存储集群拒绝写操作。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 对存储集群中所有节点的根级别访问权限。

流程

  1. 检查存储集群的容量:

    语法

    ceph df
    rados df
    ceph osd df

  2. 临时禁用清理:

    语法

    ceph osd set noscrub
    ceph osd set nodeep-scrub

  3. 限制回填和恢复功能:

    语法

    ceph tell DAEMON_TYPE.* injectargs --OPTION_NAME VALUE [--OPTION_NAME VALUE]

    示例

    [root@mon ~]# ceph tell osd.* injectargs --osd-max-backfills 1 --osd-recovery-max-active 1 --osd-recovery-op-priority 1

  4. 从存储集群中移除节点上的每个 OSD:

    • 使用 Ansible
    • 使用命令行界面

      重要

      从存储集群中移除 OSD 节点时,红帽建议在节点中一次删除一个 OSD,并允许集群恢复到 active+clean 状态,然后继续移除下一个 OSD。

      1. 移除 OSD 后,检查以验证存储集群是否没有达到 near-full 比率

        语法

        ceph -s
        ceph df

      2. 重复此步骤,直到将节点上的所有 OSD 从存储集群中移除。
  5. 移除所有 OSD 后,从 CRUSH map 中删除主机 bucket:

    语法

    ceph osd crush rm BUCKET_NAME

    示例

    [root@mon ~]# ceph osd crush rm node2

  6. 启用清理:

    语法

    ceph osd unset noscrub
    ceph osd unset nodeep-scrub

  7. 将回填和恢复功能设置为默认:

    语法

    ceph tell DAEMON_TYPE.* injectargs --OPTION_NAME VALUE [--OPTION_NAME VALUE]

    示例

    [root@mon ~]# ceph tell osd.* injectargs --osd-max-backfills 1 --osd-recovery-max-active 3 --osd-recovery-op-priority 3

其它资源

  • 如需了解更多详细信息,请参阅 Red Hat Ceph Storage 配置指南中的 在运行时设置特定 配置设置部分。