1. 创建 CRUSH 规则
语法
ceph osd crush rule create-replicated <rule-name> <root> <failure-domain> <class>
参数说明
<rule-name>:规则的名称。<root>:CRUSH 层次结构的根节点(通常是default)。<failure-domain>:故障域(如host、rack等),用于控制数据的副本分布。<class>:设备类型(如hdd、ssd等),可选参数。
示例
创建一个名为 myrule 的规则,使用 default 根节点,故障域为 host,设备类型为 hdd:
ceph osd crush rule create-replicated myrule default host hdd2. 修改 CRUSH 规则
如果需要修改现有的 CRUSH 规则,通常需要先删除旧规则,然后重新创建。
删除规则
ceph osd crush rule rm <rule-name>
重新创建规则
按照上述创建规则的步骤重新创建。
3. CRUSH 规则类型
Ceph 17.2.7 支持多种 CRUSH 规则类型,常见的有:
Replicated Rule
功能:将数据复制到多个 OSD 上,提供冗余和高可用性。
示例:
ceph osd crush rule create-replicated myrule default host hdd
Erasure Code Rule
功能:使用纠删码技术存储数据,节省存储空间。
示例:
ceph osd erasure-code-profile set myprofile k=2 m=1 ceph osd crush rule create-erasure myrule myprofile default
4. CRUSH 规则属性
CRUSH 规则可以配置多种属性,以满足不同的需求。以下是一些常见的属性:
故障域(Failure Domain)
定义数据的副本分布范围,常见的故障域包括:
host:副本分布在不同的主机上。rack:副本分布在不同的机架上。datacenter:副本分布在不同的数据中心。
设备类型(Device Class)
定义规则适用的设备类型,如
hdd、ssd等。
权重(Weight)
定义 OSD 的权重,影响数据分布的均衡性。
副本数(Replica Count)
定义数据的副本数量。
5. CRUSH 规则功能
CRUSH 规则的主要功能包括:
数据分布控制
通过定义故障域和设备类型,控制数据在集群中的分布。
容错和高可用
通过副本或纠删码技术,确保数据在硬件故障时仍可访问。
性能优化
通过将数据分布在不同的设备类型(如 SSD 和 HDD)上,优化读写性能。
地理分布
通过定义不同的故障域(如
datacenter),支持跨数据中心的数据分布。
6. 查看 CRUSH 规则
可以使用以下命令查看当前的 CRUSH 规则:
ceph osd crush rule ls查看特定规则的详细信息:
ceph osd crush rule dump <rule-name>
7. 示例:创建和使用 CRUSH 规则
步骤 1:创建规则
ceph osd crush rule create-replicated myrule default host hdd步骤 2:创建存储池并应用规则
ceph osd pool create mypool 128 128 myrule
步骤 3:验证规则
ceph osd crush rule ls
ceph osd crush rule dump myrule
没有评论:
发表评论