11.6. 使用 BlueStore 管理工具重新划分 RocksDB 数据库


您可以使用 BlueStore 管理工具重新划分数据库。它将 BlueStore 的 RocksDB 数据库从一形转换为几列的系列,而无需重新部署 OSD。列系列的功能与整个数据库相同,但允许用户在较小的数据集上运行并应用不同的选项。它利用存储的键的不同生命周期。密钥会在转换过程中移动,而不会创建新密钥或删除现有密钥。

重新定义 OSD 的方法有两种:

  1. 使用 rocksdb-resharding.yml playbook。
  2. 手动重新划分 OSD。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 对象存储配置为 BlueStore。
  • 部署在主机上的 OSD 节点。
  • 对所有主机的 root 级别访问。
  • 在所有主机上安装 ceph-commoncephadm 软件包。

11.6.1. 使用 rocksdb-resharding.yml playbook

  1. 在管理节点上,以 root 用户身份导航到安装 playbook 的 cephadm 文件夹:

    示例

    [root@host01 ~]# cd /usr/share/cephadm-ansible

  2. 运行 playbook:

    语法

    ansible-playbook -i hosts rocksdb-resharding.yml -e osd_id=OSD_ID -e admin_node=HOST_NAME

    示例

    [root@host01 ~]# ansible-playbook -i hosts rocksdb-resharding.yml -e osd_id=7 -e admin_node=host03
    
    ...............
    TASK [stop the osd] ***********************************************************************************************************************************************************************************************
    Wednesday 29 November 2023  11:25:18 +0000 (0:00:00.037)       0:00:03.864 ****
    changed: [localhost -> host03]
    TASK [set_fact ceph_cmd] ******************************************************************************************************************************************************************************************
    Wednesday 29 November 2023  11:25:32 +0000 (0:00:14.128)       0:00:17.992 ****
    ok: [localhost -> host03]
    
    TASK [check fs consistency with fsck before resharding] ***********************************************************************************************************************************************************
    Wednesday 29 November 2023  11:25:32 +0000 (0:00:00.041)       0:00:18.034 ****
    ok: [localhost -> host03]
    
    TASK [show current sharding] **************************************************************************************************************************************************************************************
    Wednesday 29 November 2023  11:25:43 +0000 (0:00:11.053)       0:00:29.088 ****
    ok: [localhost -> host03]
    
    TASK [reshard] ****************************************************************************************************************************************************************************************************
    Wednesday 29 November 2023  11:25:45 +0000 (0:00:01.446)       0:00:30.534 ****
    ok: [localhost -> host03]
    
    TASK [check fs consistency with fsck after resharding] ************************************************************************************************************************************************************
    Wednesday 29 November 2023  11:25:46 +0000 (0:00:01.479)       0:00:32.014 ****
    ok: [localhost -> host03]
    
    TASK [restart the osd] ********************************************************************************************************************************************************************************************
    Wednesday 29 November 2023  11:25:57 +0000 (0:00:10.699)       0:00:42.714 ****
    changed: [localhost -> host03]

  3. 验证重新划分已经完成。

    1. 停止重新划分的 OSD:

      示例

      [ceph: root@host01 /]# ceph orch daemon stop osd.7

    2. 进入 OSD 容器:

      示例

      [root@host03 ~]# cephadm shell --name osd.7

    3. 检查重新划分:

      示例

      [ceph: root@host03 /]# ceph-bluestore-tool --path /var/lib/ceph/osd/ceph-7/ show-sharding
          m(3) p(3,0-12) O(3,0-13) L P

    4. 启动 OSD:

      示例

      [ceph: root@host01 /]# ceph orch daemon start osd.7

11.6.2. 手动重新划分 OSD

  1. 登录 cephadm shell:

    示例

    [root@host01 ~]# cephadm shell

  2. 从管理节点获取 OSD_ID 和主机详情:

    示例

    [ceph: root@host01 /]# ceph orch ps

  3. root 用户身份登录对应的主机,再停止 OSD:

    语法

    cephadm unit --name OSD_ID stop

    示例

    [root@host02 ~]# cephadm unit --name osd.0 stop

  4. 进入已停止的 OSD 守护进程容器:

    语法

    cephadm shell --name OSD_ID

    示例

    [root@host02 ~]# cephadm shell --name osd.0

  5. 登录到 cephadm shell 并检查文件系统一致性:

    语法

    ceph-bluestore-tool --path/var/lib/ceph/osd/ceph-OSD_ID/ fsck

    示例

    [ceph: root@host02 /]# ceph-bluestore-tool --path /var/lib/ceph/osd/ceph-0/ fsck
    
    fsck success

  6. 检查 OSD 节点的分片状态:

    语法

    ceph-bluestore-tool --path /var/lib/ceph/osd/ceph-OSD_ID/ show-sharding

    示例

    [ceph: root@host02 /]# ceph-bluestore-tool --path /var/lib/ceph/osd/ceph-6/ show-sharding
    
    m(3) p(3,0-12) O(3,0-13) L P

  7. 运行 ceph-bluestore-tool 命令来重新划分。红帽建议使用命令中的参数:

    语法

    ceph-bluestore-tool --log-level 10 -l log.txt --path /var/lib/ceph/osd/ceph-OSD_ID/ --sharding="m(3) p(3,0-12) O(3,0-13)=block_cache={type=binned_lru} L P" reshard

    示例

    [ceph: root@host02 /]# ceph-bluestore-tool --path /var/lib/ceph/osd/ceph-6/ --sharding="m(3) p(3,0-12) O(3,0-13)=block_cache={type=binned_lru} L P" reshard
    
    reshard success

  8. 要检查 OSD 节点的分片状态,请运行 show-sharding 命令:

    语法

    ceph-bluestore-tool --path /var/lib/ceph/osd/ceph-OSD_ID/ show-sharding

    示例

    [ceph: root@host02 /]# ceph-bluestore-tool --path /var/lib/ceph/osd/ceph-6/ show-sharding
    
    m(3) p(3,0-12) O(3,0-13)=block_cache={type=binned_lru} L P

  9. cephadm shell 退出:

    [ceph: root@host02 /]# exit
  10. root 用户身份登录对应的主机,再启动 OSD:

    语法

    cephadm unit --name OSD_ID start

    示例

    [root@host02 ~]# cephadm unit --name osd.0 start

其它资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.