Ceph是一个一致的分布式存储系统,规划初衷是供应较好的功能、可靠性和可扩展性。
Ceph项目最早起源于Sage就读博士期间的作业(最早的成果于2004年宣告),并随后贡献给开源社区。在通过了数年的发展之后,现在已得到众多云计算厂商的支撑并被广泛应用。RedHat及OpenStack都可与Ceph整合以支撑虚拟机镜像的后端存储。
Monitor
MDS
PG
Libradio
RBD
CephFS
主要是将裸磁盘空间映射给主机运用的。
通过Raid与LVM等办法,对数据供应了维护。
多块廉价的硬盘组合起来,前进容量。
多块磁盘组合出来的逻辑盘,前进读写功率。
选用SAN架构组网时,光纤交换机,造价本钱高。
主机之间无法同享数据。
docker容器、虚拟机磁盘存储分配。
日志存储。
文件存储。
…
为了战胜块存储文件无法同享的问题,所以有了文件存储。
长处:
典型设备:内置大容量硬盘的分布式服务器(swift, s3)
长处:
进程:
2. client 读取装备文件。
4. client 读写io 根据crshmap 算法恳求对应的主osd数据节点。
6. 等候主节点以及别的两个副本节点写完数据情况。
2.2 新主IO流程图
假设新加入的OSD1替代了原有的 OSD4成为 Primary OSD, 由于 OSD1 上未创建 PG , 不存在数据,那么 PG 上的 I/O 无法进行,怎样作业的呢?
进程:
2. 一同新主osd1由于没有pg数据会主动上报monitor告知让osd2暂时顶替为主。
4. client IO读写直接衔接暂时主osd2进行读写。
6. 等候osd2以及别的两副本写入成功。
8. 假设osd1数据同步结束,暂时主osd2会交出主人物。
2.3 Ceph IO算法流程
1. File用户需求读写的文件。File->Object映射:
2. Object是RADOS需求的政策。Ceph指定一个静态hash函数计算oid的值,将oid映射成一个近似均匀分布的伪随机值,然后和mask按位相与,得到pgid。Object->PG映射:
3. PG(Placement Group),用处是对object的存储进行安排和方位映射, (类似于redis cluster里面的slot的概念) 一个PG里面会有许多object。选用CRUSH算法,将pgid代入其间,然后得到一组OSD。PG->OSD映射:
ceph_rbd_io
1. 客户端创建一个pool,需求为这个pool指定pg的数量。
3. 用户写入的数据进行切块,每个块的大小默以为4M,并且每个块都有一个姓名,姓名就是object+序号。
5. pg根据cursh算法会寻找3个osd,把这个object别离保存在这三个osd上。
7. object的存储就变成了存储一个文rbd0.object1.file。
客户端写数据osd进程:
2. 在客户端本地同过调用librados接口,然后通过pool,rbd,object、pg进行层层映射,在PG这一层中,可以知道数据保存在哪3个OSD上,这3个OSD分为主从的关系。
ceph_pool_pg
pool是ceph存储数据时的逻辑分区,它起到namespace的作用。
每个pool包含必定数量(可装备)的PG。
PG里的政策被映射到不同的Object上。
pool是分布到整个集群的。
pool可以做缺点隔绝域,根据不同的用户场景纷歧进行隔绝。
问题:
及时:伙伴OSD可以在秒级发现节点失效并陈述Monitor,并在几分钟内由Monitor将失效OSD下线。
忍受网络颤抖:Monitor收到OSD对其伙伴OSD的陈述后,并没有马上将政策OSD下线,而是周期性的等候几个条件:
政策OSD的失效时刻大于通过固定量osd_heartbeat_grace和前史网络条件动态确认的阈值。
来自不同主机的陈述到达mon_osd_min_down_reporters。
满足前两个条件前失效陈述没有被源OSD撤销。
Simple线程形式
Async事情的I/O多路复用形式
XIO办法运用了开源的网络通讯库accelio来完成
客服支持
微信咨询
售后