一、前言
下图数据出自2018年ceph社区用户调查报告,Ceph RBD接口的使用场景主要是VM和DB数据库。
而使用Ceph RBD的接口方式的用户数据如下,主要是librbd 和 kernel RBD,如下图:
那么对于初学者来说,librbd 和 linux kernel RBD是什么?通过它们来访问RBD块设备有什么区别呢?
二、librbd 和 linux kernel RBD的框架
从下图可以清晰的看到,librbd是用户态的API,基于librados.so动态库。而linux kernel RBD 是有两个ko 模块组成:rbd.ko+libceph.ko,libceph.ko提供的功能类似用户太的librados.so动态库。所以它们的区别是,一个是用户态,另一个是内核态的实现。那为什么有用户态了?还要提供一个内核的版本实现呢? 一是通过盘符/dev/xxx就可以使用RBD块设备(实现内核block device与ceph的更好结合);二是为了更好的支持内核层的其它调用(如VM)。