云存储
湿毒清胶囊
这个作者很懒,什么都没留下…
展开
-
云存储底层技术
待更新…原创 2021-01-31 00:49:29 · 315 阅读 · 0 评论 -
Ceph CRUSH分布算法实现
Ceph CRUSH分布算法实现原创 2022-05-01 13:18:09 · 261 阅读 · 0 评论 -
Ceph 线程池实现
Ceph 线程池实现原创 2022-04-28 12:43:54 · 223 阅读 · 0 评论 -
Ceph log实现
Ceph log实现原创 2022-04-28 12:35:10 · 113 阅读 · 0 评论 -
Ceph 序列化
Ceph 序列化原创 2022-04-17 13:27:58 · 88 阅读 · 0 评论 -
Ceph Bufferlist的设计与使用
Ceph Bufferlist的设计与使用原创 2022-04-17 13:26:37 · 165 阅读 · 0 评论 -
块存储、文件存储、对象存储的区别
块存储、文件存储、对象存储的区别原创 2022-04-16 12:56:40 · 191 阅读 · 0 评论 -
Librados RBD客户端实现
librbd以及librados都是属于ceph 的客户端,其提供ceph的接口向上提供块存储服务。librados提供客户端访问Ceph集群的原生态统一接口。其它接口或者命令行工具都基于该动态库实现。在librados中实现了Crush算法和网络通信等公共功能,数据请求操作在librados计算完成后可以直接与对应的OSD交互进行数据传输。librbd 是Ceph提供的在librados上封装的块存储接口的抽象。原创 2022-04-01 22:24:42 · 199 阅读 · 0 评论 -
Librados API使用教程
Ceph存储集群提供基本的存储服务,Ceph以独特的方式将对象、块和文件存储集成到一个存储系统中。基于RADOS,您不限于RESTful或POSIX接口,使用librados API能够创建自定义的Ceph存储集群接口(除了块存储、对象存储和文件系统存储外)。原创 2022-04-01 22:08:43 · 312 阅读 · 0 评论 -
Ceph Librados介绍
Ceph客户端,通过librados直接与OSD交互,来存储和取出数据。为了与OSD交互,客户端应用必须直接调用librados,连接一个Ceph Monitor。一旦连接好以后,librados会从Monitor处取回一个Cluster map。当客户端的应用想读或者取数据的时候,它会创建一个I/O上下文并且与一个pool绑定。通过这个I/O上下文,客户端将Object的名字提供给librados,然后librados会根据Object的名字和Cluster map计算出相应的PG和OSD的位置。原创 2022-04-01 22:17:55 · 309 阅读 · 0 评论 -
CRUSH Rule基础
CRUSH RuleCRUSH Rule就提供了一种方式,即通过用户定义的规则来指导CRUSH算法的具体执行。其场景主要如下所示。数据备份的数量:规则需要指定能够支持的备份数量。数据备份的策略:通常来说,多个数据副本是不需要有顺序的;但是纠删码不一样,纠删码的各个分片之间是需要有顺序的。所以CRUSH算法需要了解各个关联的副本之间是否存在顺序性。选择存储设备的类型:规则需要能够选择不同的存储设备类型来满足不同的需求,比如高速、昂贵的固态硬盘类型设备,或者低速、廉价的硬盘驱动器类型设备。确定失效域原创 2021-03-02 15:43:18 · 1393 阅读 · 0 评论 -
Ceph集群运行图
集群运行图实际上是多个Map的统称,包括Monitor Map、OSD Map、PG Map、CRUSH Map及MDS Map等,各运行图维护着各自运行状态的变更。CRUSH MapCRUSH Map用于定义如何选择OSD,内容包含了存储设备列表、故障域树状结构(设备的分组信息,如设备、主机、机架、行、房间等)和存储数据时如何利用此树状结构的规则。如图所示,根节点是default,包含3个主机(CephX),每个主机包含3个OSD服务(OSD.X)。相应的CRUSH Map代码片段如下:"buc原创 2021-01-31 23:43:42 · 259 阅读 · 0 评论 -
Ceph 缓存分层
Ceph Cache TieringCeph 缓存分层的基本思想是冷热数据分离,用相对快速/昂贵的存储设备如SSD盘,组成一个Pool来作为Cache层,后端用相对慢速/廉价的设备来组建冷数据存储池( Storage层)。分布式的集群一般都采用廉价的PC与传统的机械硬盘进行搭建,所以在磁盘的访问速度上有一定的限制,没有理想的IOps数据。当去优化一个系统的I/O性能时,最先想到的就是添加快速的存储设备作为缓存,热数据在缓存被访问到,缩短数据的访问延时。Ceph也从Firefly 0.80版本开始引入这种原创 2021-02-01 22:46:40 · 1288 阅读 · 0 评论 -
Ceph 数据读写过程
Ceph的读/写操作采用Primary-Replica模型,客户端只向Object所对应OSD set的Primary OSD发起读/写请求,这保证了数据的强一致性。当Primary OSD收到Object的写请求时,它负责把数据发送给其他副本,只有这个数据被保存在所有的OSD上时,Primary OSD才应答Object的写请求,这保证了副本的一致性。写入数据这里以Object写入为例,假定一个PG被映射到3个OSD上。Object写入流程如图所示。当某个客户端需要向Ceph集群写入一个File时原创 2021-02-01 00:51:29 · 2886 阅读 · 1 评论 -
Ceph寻址
一个大规模分布式存储系统,必须要能够解决两个最基本的问题,即"我应该把数据写到什么地方”与“我之前把数据写到什么地方了” ,因此会涉及数据如何寻址的问题。Ceph寻址流程如图所示。File:此处的File就是用户需要存储或访问的文件。对于一个基于Ceph开发的对象存储应用而言,这个File也就对应于应用中的“对象” ,也就是用户直接操作的“对象”Object:Object是RADOS所看到的“对象” 。Object与File的区别是, Object的最大尺寸由RADOS限定(通常为2MB或4MB)原创 2021-01-30 13:50:24 · 892 阅读 · 0 评论 -
Ceph体系结构
Ceph 官方定义Ceph is a unified, distributed storage system designed for excellent performance, reliability and scalability.(Ceph 是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式的存储系统。)Ceph 设计思路充分发挥存储设备自身的计算能力。 采用具有计算能力的设备作为存储系统的存储节点。去除所有的中心点。 解决单点故障点和当系统规模扩大时出现的规模和性能瓶颈问题。除此原创 2021-01-30 02:09:03 · 243 阅读 · 0 评论