2.4. 设备类


Ceph 的 CRUSH map 在控制数据放置时提供了额外的灵活性。这是 Ceph 的最大优势之一。早期 Ceph 部署使用硬盘几乎独占。现在,Ceph 集群经常会使用多种类型的存储设备构建: HDD、SSD、NVMe 甚至各种更旧的类型。例如,在 Ceph 对象网关部署中通常会有存储策略,以供客户端在较慢的 HDD 中保存数据和其他存储策略,用于将数据存储到快 SSD 上。Ceph 对象网关部署可能甚至具有由快速 SSD 支持用于 bucket 索引的池。此外,OSD 节点通常具有专门用于日志或 write-ahead 日志的 SSD,它们没有出现在 CRUSH map 中。之前,这些复杂的硬件方案需要手动编辑 CRUSH map,这可能会非常耗时且非常繁琐。对于不同的存储设备类别,并不需要不同的 CRUSH 层次结构。

CRUSH 规则在 CRUSH 层次结构方面工作。但是,如果不同类别存储设备驻留在同一主机上,该过程会变得更为复杂 - 询问用户为每个类设备创建多个 CRUSH 层次结构,然后禁用 osd crush update on start 选项,以自动执行大部分 CRUSH 层次结构管理。设备类通过告诉 CRUSH 规则要使用的设备类,大大简化了 CRUSH 管理任务,从而消除了这种明显性。

注意

ceph osd tree 命令具有反映设备类的列。

2.4.1. 设置设备类

要为 OSD 设置设备类,请执行以下操作:

语法

ceph osd crush set-device-class  CLASS OSD_ID [OSD_ID..]

示例

[ceph: root@host01 /]# ceph osd crush set-device-class hdd osd.0 osd.1
[ceph: root@host01 /]# ceph osd crush set-device-class ssd osd.2 osd.3
[ceph: root@host01 /]# ceph osd crush set-device-class bucket-index osd.4

注意

Ceph 可能会自动为设备分配类。但是,类名称只是任意字符串。不需要遵循 hddssdnvme。在示例中,名为 bucket-index 的设备类可能表示 Ceph 对象网关池使用独占 bucket 索引工作负载的 SSD 设备。要更改已经设置的设备类,请首先使用 ceph osd crush rm-device-class

2.4.2. 删除设备类

要为 OSD 删除设备类,请执行以下操作:

语法

ceph osd crush rm-device-class CLASS OSD_ID [OSD_ID..]

示例

[ceph: root@host01 /]# ceph osd crush rm-device-class hdd osd.0 osd.1
[ceph: root@host01 /]# ceph osd crush rm-device-class ssd osd.2 osd.3
[ceph: root@host01 /]# ceph osd crush rm-device-class bucket-index osd.4

2.4.3. 重命名设备类

要为使用该类的所有 OSD 重命名设备类,请执行以下操作:

语法

ceph osd crush class rename OLD_NAME NEW_NAME

示例

[ceph: root@host01 /]# ceph osd crush class rename hdd sas15k

2.4.4. 列出设备类

要列出 CRUSH 映射中的设备类,请执行以下操作:

语法

ceph osd crush class ls

输出将类似如下:

示例

[
    "hdd",
    "ssd",
    "bucket-index"
]

2.4.5. 列出设备类的 OSD

要列出属于特定类的所有 OSD,请执行以下操作:

语法

ceph osd crush class ls-osd CLASS

示例

[ceph: root@host01 /]# ceph osd crush class ls-osd hdd

输出是一个 OSD 号列表。例如:

0
1
2
3
4
5
6

2.4.6. 按类列出 CRUSH 规则

要列出引用同一类的所有 CRUSH 规则,请执行以下操作:

语法

ceph osd crush rule ls-by-class CLASS

示例

[ceph: root@host01 /]# ceph osd crush rule ls-by-class hdd

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.