ceph架构缺点,四大开源分布式存储

首页 > 技术 > 作者:YD1662023-11-10 20:00:40

ceph_message_3

4.5 Ceph通信数据格式

通信协议格式需要双方约定数据格式。

消息的内容主要分为三部分:

class Message : public RefCountedObject { protected: ceph_msg_header header; // 消息头 ceph_msg_footer footer; // 消息尾 bufferlist payload; // "front" unaligned blob bufferlist middle; // "middle" unaligned blob bufferlist data; // data payload (page-alignment will be preserved where possible) /* recv_stamp is set when the Messenger starts reading the * Message off the wire */ utime_t recv_stamp; //开始接收数据的时间戳 /* dispatch_stamp is set when the Messenger starts calling dispatch() on * its endpoints */ utime_t dispatch_stamp; //dispatch 的时间戳 /* throttle_stamp is the point at which we got throttle */ utime_t throttle_stamp; //获取throttle 的slot的时间戳 /* time at which message was fully read */ utime_t recv_complete_stamp; //接收完成的时间戳 ConnectionRef connection; //网络连接 uint32_t magic = 0; //消息的魔术字 bi::list_member_hook<> dispatch_q; //boost::intrusive 成员字段 }; struct ceph_msg_header { __le64 seq; // 当前session内 消息的唯一 序号 __le64 tid; // 消息的全局唯一的 id __le16 type; // 消息类型 __le16 priority; // 优先级 __le16 version; // 版本号 __le32 front_len; // payload 的长度 __le32 middle_len;// middle 的长度 __le32 data_len; // data 的 长度 __le16 data_off; // 对象的数据偏移量 struct ceph_entity_name src; //消息源 /* oldest code we think can decode this. unknown if zero. */ __le16 compat_version; __le16 reserved; __le32 crc; /* header crc32c */ } __attribute__ ((packed)); struct ceph_msg_footer { __le32 front_crc, middle_crc, data_crc; //crc校验码 __le64 sig; //消息的64位signature __u8 flags; //结束标志 } __attribute__ ((packed));
5. Ceph CRUSH算法

5.1 数据分布算法挑战

5.2 Ceph CRUSH算法说明

5.3 Ceph CRUSH算法原理

CRUSH算法因子:

5.3.1 层级化的Cluster Map

ceph架构缺点,四大开源分布式存储(21)

ceph_crush

CRUSH Map是一个树形结构,OSDMap更多记录的是OSDMap的属性(epoch/fsid/pool信息以及osd的ip等等)。

叶子节点是device(也就是osd),其他的节点称为bucket节点,这些bucket都是虚构的节点,可以根据物理结构进行抽象,当然树形结构只有一个最终的根节点称之为root节点,中间虚拟的bucket节点可以是数据中心抽象、机房抽象、机架抽象、主机抽象等。

5.3.2 数据分布策略Placement Rules

数据分布策略Placement Rules主要有特点:

a. 从CRUSH Map中的哪个节点开始查找

b. 使用那个节点作为故障隔离域

c. 定位副本的搜索模式(广度优先 or 深度优先)

rule replicated_ruleset #规则集的命名,创建pool时可以指定rule集 { ruleset 0 #rules集的编号,顺序编即可 type replicated #定义pool类型为replicated(还有erasure模式) min_size 1 #pool中最小指定的副本数量不能小1 max_size 10 #pool中最大指定的副本数量不能大于10 step take default #查找bucket入口点,一般是root类型的bucket step chooseleaf firstn 0 type host #选择一个host,并递归选择叶子节点osd step emit #结束 }

5.3.3 Bucket随机算法类型

ceph架构缺点,四大开源分布式存储(22)

ceph_bucket

5.4 CRUSH算法案例

说明:

集群中有部分sas和ssd磁盘,现在有个业务线性能及可用性优先级高于其他业务线,能否让这个高优业务线的数据都存放在ssd磁盘上。

普通用户:

ceph架构缺点,四大开源分布式存储(23)

ceph_sas.png

高优用户:

ceph架构缺点,四大开源分布式存储(24)

上一页23456下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.