kernel rbd是ceph 的块存储当中的linux-kernel client。在整个ceph当中的位置如图所示:
其中kernel module就是本文提到的kernel rbd 模块。
ceph 作为一个统一存储的分布式存储系统,提供了对象,文件和块存储三种存储接口。其中块存储又提供了两种client接口用于块存储的不同场景使用。
(1)librbd:这是ceph 块存储目前使用最多的一个场景,也就是云计算场景对接openstack或者其他平台。这也是ceph出现十几年,但是前几年才大火的一个原因,搭上云计算的顺风车。这个场景不是这个系列的重点,就不做详细分析了。
(2)krbd(kernel rbd):这是ceph 块设备直接对接到linux 系统的场景。也就是说,在linux kernel当中提供了一个块设备的driver,直接对ceph server端进行数据IO。这个场景主要用于不能直接利用librbd 进行业务改造的场景。比如 container 场景(实际上对于container,最适合的应该是文件存储,但是ceph的文件存储cephfs,并不是很稳定,所以暂时使用krbd来使用)。另外相比于librbd,krbd 还有最大的优势在于,其可以充分利用linux block layer的众多特性,比如pagecache,bcache,md,multiqueue等等。
<