2.4. 设备类
Ceph 的 CRUSH map 在控制数据放置方面提供了额外的灵活性。这是 Ceph 的最大优势之一。早期 Ceph 部署使用硬盘几乎独占使用。现在,Ceph 集群经常会使用多种类型的存储设备构建: HDD、SSD、NVMe 甚至各种更旧的类型。例如,在 Ceph 对象网关部署中通常会有存储策略,以供客户端在较慢的 HDD 中保存数据和其他存储策略,用于将数据存储到快 SSD 上。Ceph 对象网关部署甚至具有由快速 SSD 支持用于 bucket 索引的池。此外,OSD 节点也经常使用 SSD,专门用于日志或写-ahead 日志,这些日志不会出现在 CRUSH map 中。这些复杂的硬件场景过去需要手动编辑 CRUSH map,这可能非常耗时且繁琐。对于不同的存储设备类别,并不需要不同的 CRUSH 层次结构。
CRUSH 规则在 CRUSH 层次结构方面工作。但是,如果不同的存储设备类别驻留在同一主机上,该过程会变得更加复杂,需要为每个设备类别创建多个 CRUSH 层次结构,然后在 start 选项中禁用 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 可能会自动为设备分配类。但是,类名称只是任意字符串。不需要遵循 hdd、ssd 或 nvme。在示例中,名为 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