2.4. 设备类


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

CRUSH 规则在 CRUSH 层次结构方面工作。但是,如果不同类型的存储设备驻留在同一主机上,该过程变得更为复杂,即用户为每个设备创建多个 CRUSH 层次结构,然后在启动选项中禁用 osd crush update 来自动执行大部分 CRUSH 层次结构管理。设备类通过告知 CRUSH 规则要使用什么类设备,从而显著简化 CRUSH 管理任务,从而消除了这种繁琐性。

注意

ceph osd tree 命令有一个代表设备类的列。

2.4.1. 设置设备类

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

语法

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

示例

[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
Copy to Clipboard

注意

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

2.4.2. 删除设备类

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

语法

ceph osd crush rm-device-class OSD_ID [OSD_ID..]
Copy to Clipboard

示例

[ceph: root@host01 /]# ceph osd crush rm-device-class 20
done removing class of osd(s): 20
[ceph: root@host01 /]# ceph osd crush rm-device-class 19 21
done removing class of osd(s): 19,21
Copy to Clipboard

2.4.3. 重命名设备类

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

语法

ceph osd crush class rename OLD_NAME NEW_NAME
Copy to Clipboard

示例

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

2.4.4. 列出设备类

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

语法

ceph osd crush class ls
Copy to Clipboard

输出将类似如下:

示例

[
    "hdd",
    "ssd",
    "bucket-index"
]
Copy to Clipboard

2.4.5. 列出设备类的 OSD

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

语法

ceph osd crush class ls-osd CLASS
Copy to Clipboard

示例

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

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

0
1
2
3
4
5
6
Copy to Clipboard

2.4.6. 按类列出 CRUSH 规则

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

语法

ceph osd crush rule ls-by-class CLASS
Copy to Clipboard

示例

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat