2.4. 设备类


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

CRUSH 规则在 CRUSH 层次结构中工作。但是,如果不同的存储设备类别驻留在相同的主机上,该过程会变得更加复杂 - 需要用户为每个设备类创建多个 CRUSH 层次结构,然后禁用 osd crush update on start 选项,以自动执行许多 CRUSH 层次结构管理。设备类别通过告知 CRUSH 规则应使用的设备类别,从而大大简化了 CRUSH 管理任务,从而消除了此繁琐的问题。

注意

ceph osd tree 命令有一个列,它反映了一个设备类。

以下小节详细介绍了设备类使用。如需了解更多示例,请参阅 Using Different Device ClassesCRUSH Storage Strategy Examples

2.4.1. 设置设备类

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

# ceph osd crush set-device-class <class> <osdId> [<osdId>...]
Copy to Clipboard Toggle word wrap

例如:

# ceph osd crush set-device-class hdd osd.0 osd.1
# ceph osd crush set-device-class ssd osd.2 osd.3
# ceph osd crush set-device-class bucket-index osd.4
Copy to Clipboard Toggle word wrap
注意

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

2.4.2. 删除设备类

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

# ceph osd crush rm-device-class <class> <osdId> [<osdId>...]
Copy to Clipboard Toggle word wrap

例如:

# ceph osd crush rm-device-class hdd osd.0 osd.1
# ceph osd crush rm-device-class ssd osd.2 osd.3
# ceph osd crush rm-device-class bucket-index osd.4
Copy to Clipboard Toggle word wrap

2.4.3. 重命名设备类

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

# ceph osd crush class rename <oldName> <newName>
Copy to Clipboard Toggle word wrap

例如:

# ceph osd crush class rename hdd sas15k
Copy to Clipboard Toggle word wrap

2.4.4. 列出设备类

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

# ceph osd crush class ls
Copy to Clipboard Toggle word wrap

输出将类似如下:

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

2.4.5. 列出设备类的 OSD

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

# ceph osd crush class ls-osd <class>
Copy to Clipboard Toggle word wrap

例如:

# ceph osd crush class ls-osd hdd
Copy to Clipboard Toggle word wrap

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

0
1
2
3
4
5
6
Copy to Clipboard Toggle word wrap

2.4.6. 按类列出 CRUSH 规则

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

# ceph osd crush rule ls-by-class <class>
Copy to Clipboard Toggle word wrap

例如:

# ceph osd crush rule ls-by-class hdd
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat