Ceph官网有一篇“Getting started with the Docker RBD volume plugin”里面提到了一个驱动“github.com/yp-engineering/rbd-docker-plugin”,此驱动使用的是krbd(kernel RBD)。krbd与librbd相比很多功能被阉割了,如果你只想用Ceph作为backend,那你可以使用这个驱动。如果你不甘心只是简单的使用Ceph,还想体验他的很多特性,那你可以考虑下面这个方案。。。
原理
本方案的想法来自于Ceph的一个命令nbd-rbd
,只要你的系统支持nbd,并且支持docker,nbd与rbd的通讯方式依然使用socket文件的形式,只是rbd client相关程序需要放置到容器中;因为有些操作系统没有包管理器,不能方便的安装软件包(如:CoreOS)。
图画的这么清晰,还需要再说明吗!好吧,还是再说点儿吧。
- 每个nbd设备与rbd设备之间使用一个socket文件进行通讯
- NBDServer用于管理所有nbd设备
- RBDServer用于管理所有rbd设备
实现
*** Todo… ***