• [转]ceph rbd到OSD的数据映射


    [转自 From <https://my.oschina.net/u/2460844/blog/531686> ]

    说明:

    先建立一个ceph集群,这个集群有3个monitor节点、多个OSD节点,然后这个上面有个存储池,每个存储中的对象都保留3个副本。这时如果发下一个写request则会经过如下步骤。

    1. 客户端的使用

    在客户端使用rbd设备时,一般有两种方法。

          图1-1 client rbd设备的使用

    第一种 是kernel rbd。就是创建了rbd设备后,把rbd设备map到内核中,形成一个虚拟的块设备,这时这个块设备同其他通用块设备一样,一般的设备文件为/dev/rbd0,后续直接使用这个块设备文件就可以了,可以把/dev/rbd0格式化后mount到某个目录,也可以直接作为裸设备使用。这时对rbd设备的操作都通过kernel rbd操作方法进行的。

    第二种是librbd方式。就是创建了rbd设备后,这时可以使用librbd、librados库进行访问管理块设备。这种方式不会map到内核,直接调用librbd提供的接口,可以实现对rbd设备的访问和管理,但是不会在客户端产生块设备文件。

    2 . ceph上数据的组织

    ceph上组合物理资源时的进行了多重映射。

     

                                    图1-2 ceph数据的映射层次

    客户想要创建一个rbd设备前,必须创建 一个pool,需要为这个pool指定pg的数量,在一个pool中的pg数量是不一定的,同时这个pool中要指明保存数据的副本数量3个副本。再在这个pool中创建一个rbd设备rbd0,那么这个rbd0都会保存三份,在创建rbd0时必须指定rbd的size,对于这个rbd0的任何操作不能超过这个size。之后会将这个块设备进行切块,每个块的大小默认为4M,并且每个块都有一个名字,名字就是object+序号。将每个object通过pg进行副本位置的分配(pg map 到osd的过程会在下一节讲述),pg会寻找3个osd,把这个object分别保存在这三个osd上。osd上实际是把底层的disk进行了格式化操作,一般部署工具会将它格式化为xfs文件系统。最后对于object的存储就变成了存储一个文件rbd0.object1.file

    3.客户端写数据到osd上的过程

    假设这次采用的是librbd的形式,使用librbd创建一个块设备,这时向这个块设备中写入数据,在客户端本地同过调用librados接口,然后经过pool,rbd,object、pg进行层层映射,在PG这一层中,可以知道数据保存在哪3个OSD上,这3个OSD分为主从的关系,也就是一个primary OSD,两个replica OSD。客户端与primay OSD建立SOCKET 通信,将要写入的数据传给primary OSD,由primary OSD再将数据发送给其他replica OSD数据节点。

    总结剖析这个写数据过程,第一部分客户端处理对rbd读写的请求,经过librbd与librados库可知道数据保存在哪些OSD上,客户端与primary OSD建立通信,传输请求,再由primary OSD 发送给其他replica OSD

     

                            图1-3 数据写操作

  • 相关阅读:
    Educational Codeforces Round 85 D. Minimum Euler Cycle(模拟/数学/图)
    Educational Codeforces Round 85 C. Circle of Monsters(贪心)
    NOIP 2017 提高组 DAY1 T1小凯的疑惑(二元一次不定方程)
    Educational Codeforces Round 85 B. Middle Class(排序/贪心/水题)
    Educational Codeforces Round 85 A. Level Statistics(水题)
    IOS中的三大事件
    用Quartz 2D画小黄人
    strong、weak、copy、assign 在命名属性时候怎么用
    用代码生成UINavigationController 与UITabBarController相结合的简单QQ框架(部分)
    Attempting to badge the application icon but haven't received permission from the user to badge the application错误解决办法
  • 原文地址:https://www.cnblogs.com/yi-mu-xi/p/10369894.html
Copyright © 2020-2023  润新知