2.3. CRUSH 中的 Ceph OSD


具有 OSD 的 CRUSH 层次结构后,将 OSD 添加到 CRUSH 层次结构。您还可以从现有层次结构中移动或移除 OSD。Ceph CLI 用法具有以下值:

id
描述
OSD 的数字 ID。
类型
整数
必填
示例
0
name
描述
OSD 的全名。
类型
字符串
必需
示例
osd.0
Weight
描述
OSD 的 CRUSH 权重。
类型
必填
示例
2.0
root
描述
OSD 所在的层次结构或树的根存储桶的名称。
类型
键-值对。
必填
示例
root=default,root=replicated_rule, 等
bucket-type
描述
一个或多个 name-value 对,其中 name 是存储桶类型,值是存储桶的名称。您可以在 CRUSH 层次结构中为 OSD 指定 CRUSH 位置。
类型
健值对。
必填
示例
datacenter=dc1 room=room1 row=foo rack=bar host=foo-bar-1

2.3.1. 在 CRUSH 中查看 OSD

ceph osd crush tree 命令在树视图中打印 CRUSH bucket 和项目。使用此命令来确定特定 bucket 中的 OSD 列表。它将输出类似于 ceph osd tree

要返回附加详情,请执行以下操作:

# ceph osd crush tree -f json-pretty

该命令返回一个类似如下的输出:

[
    {
        "id": -2,
        "name": "ssd",
        "type": "root",
        "type_id": 10,
        "items": [
            {
                "id": -6,
                "name": "dell-per630-11-ssd",
                "type": "host",
                "type_id": 1,
                "items": [
                    {
                        "id": 6,
                        "name": "osd.6",
                        "type": "osd",
                        "type_id": 0,
                        "crush_weight": 0.099991,
                        "depth": 2
                    }
                ]
            },
            {
                "id": -7,
                "name": "dell-per630-12-ssd",
                "type": "host",
                "type_id": 1,
                "items": [
                    {
                        "id": 7,
                        "name": "osd.7",
                        "type": "osd",
                        "type_id": 0,
                        "crush_weight": 0.099991,
                        "depth": 2
                    }
                ]
            },
            {
                "id": -8,
                "name": "dell-per630-13-ssd",
                "type": "host",
                "type_id": 1,
                "items": [
                    {
                        "id": 8,
                        "name": "osd.8",
                        "type": "osd",
                        "type_id": 0,
                        "crush_weight": 0.099991,
                        "depth": 2
                    }
                ]
            }
        ]
    },
    {
        "id": -1,
        "name": "default",
        "type": "root",
        "type_id": 10,
        "items": [
            {
                "id": -3,
                "name": "dell-per630-11",
                "type": "host",
                "type_id": 1,
                "items": [
                    {
                        "id": 0,
                        "name": "osd.0",
                        "type": "osd",
                        "type_id": 0,
                        "crush_weight": 0.449997,
                        "depth": 2
                    },
                    {
                        "id": 3,
                        "name": "osd.3",
                        "type": "osd",
                        "type_id": 0,
                        "crush_weight": 0.289993,
                        "depth": 2
                    }
                ]
            },
            {
                "id": -4,
                "name": "dell-per630-12",
                "type": "host",
                "type_id": 1,
                "items": [
                    {
                        "id": 1,
                        "name": "osd.1",
                        "type": "osd",
                        "type_id": 0,
                        "crush_weight": 0.449997,
                        "depth": 2
                    },
                    {
                        "id": 4,
                        "name": "osd.4",
                        "type": "osd",
                        "type_id": 0,
                        "crush_weight": 0.289993,
                        "depth": 2
                    }
                ]
            },
            {
                "id": -5,
                "name": "dell-per630-13",
                "type": "host",
                "type_id": 1,
                "items": [
                    {
                        "id": 2,
                        "name": "osd.2",
                        "type": "osd",
                        "type_id": 0,
                        "crush_weight": 0.449997,
                        "depth": 2
                    },
                    {
                        "id": 5,
                        "name": "osd.5",
                        "type": "osd",
                        "type_id": 0,
                        "crush_weight": 0.289993,
                        "depth": 2
                    }
                ]
            }
        ]
    }
]

2.3.2. 将 OSD 添加到 CRUSH

在可以启动一个 OSD(为 upin)且 Ceph 为 OSD 分配放置组前,将一个 Ceph OSD 添加到 CRUSH 层次结构中是最终的步骤。

您必须将 Ceph OSD 添加到 CRUSH 层次结构前,您必须准备 Ceph OSD。部署实用程序(如 Ceph 编排器)可以为您执行此步骤。例如,在单个节点上创建 Ceph OSD:

语法

ceph orch daemon add osd HOST:_DEVICE_,[DEVICE]

CRUSH 层次结构不同,因此 ceph osd crush add 命令允许您在您想要的 CRUSH 层次结构中添加 OSD。您指定的位置反映其实际位置。如果您至少指定了一个存储桶,命令会将 OSD 放置到您指定的最特定的存储桶中,并将该 存储桶移到您指定的任何其他存储桶下。

将 OSD 添加到 CRUSH 层次结构:

语法

ceph osd crush add ID_OR_NAME WEIGHT [BUCKET_TYPE=BUCKET_NAME ...]

重要

如果您只指定 root 存储桶,命令会将 OSD 直接附加到 root。但是,CRUSH 规则预期 OSD 在主机或机箱内,主机或机箱 应位于 反映您的集群拓扑的其他 bucket 内。

以下示例将 osd.0 添加到层次结构中:

ceph osd crush add osd.0 1.0 root=default datacenter=dc1 room=room1 row=foo rack=bar host=foo-bar-1
注意

您还可以使用 ceph osd crush setceph osd crush create-or-move 将 OSD 添加到 CRUSH 层次结构。

2.3.3. 在 CRUSH 层次结构内移动 OSD

如果存储集群拓扑发生变化,您可以移动 CRUSH 层次结构中的 OSD 来反映其实际位置。

重要

在 CRUSH 层次结构中移动 OSD 意味着 Ceph 将重新计算哪些放置组分配给 OSD,可能会导致大量重新分发数据。

在 CRUSH 层次结构内移动 OSD:

语法

ceph osd crush set ID_OR_NAME WEIGHT root=POOL_NAME  [BUCKET_TYPE=BUCKET_NAME...]

注意

您还可以使用 ceph osd crush create-or-move 来移动 CRUSH 层次结构中的 OSD。

2.3.4. 从 CRUSH 层次结构中移除 OSD

当您想从集群中删除 OSD 时,从 CRUSH 层次结构中删除 OSD 是第一步。从 CRUSH map 移除 OSD 时,CRUSH 重新计算 OSD 获取放置组和数据相应地重新平衡。如需了解更多详细信息,请参阅添加/删除 OSD。

要从正在运行的集群的 CRUSH 映射中删除 OSD,请执行以下操作:

语法

ceph osd crush remove NAME

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.