这里主要想将ceph三种客户端(FS/RBD/RGW),在和ceph rados通信时经过了哪些模块简单描述下。
结构图
先上图(虽然画的有点丑…),ceph官网上虽然有类似的架构图,但是画的有点太抽象了。不是很具体,这里稍微稍微的详细点吧?!
说明
RGW
RGW相对简单些,应用层直接通过librgw
调用librados
提供的接口,然后到达rados。没有什么好特别说明的。
RBD
RBD有两种方式将消息发送到rados层:
1.和librgw
一样,应用层通过librbd
调用librados
提供的接口,将消息送达至rados层。
2.rbd.ko
它是一个内核模块,在该内核模块里面自己实现了类似osdc的功能,然后直接使用rados protocol和rados进行通信。
RGW
fs也有两种方式将消息送达到rados层:
1.libcephfs
看到lib这几个字母,是不是会认为它也是通过调用librados
和raods进行通信的,其实在libcephfs
内部自己也实现了osdc的功能,它不用调用librados
,而直接和rados通信。
2.ceph.ko
它也是一个内核模块,它调用libceph.ko
内核模块和rados进行通信。