点击上方蓝字 关注我们吧
杨子夜 ,Intel 存储软件开发工程师
Ceph[1] 作为一个开源很久的分布式文件系统,至今依然被广泛使用。各种Linux 发行版本也都集成了Ceph相关的软件包, 用户可以非常方便地安装、配置以及搭建Ceph集群,从而对外提供各种存储相关的服务。目前在Ceph社区也有很多工作在继续优化Ceph这个开源的解决方案。在这篇文章中, 我们的重点不是介绍怎么优化Ceph,而是介绍SPDK [2]项目中的RBD bdev (RBD块设备模块)。这个模块主要是利用Ceph的librados/librbd的客户端软件库,把Ceph集群的RBD pool中的image file (镜像文件),转化为SPDK 定义的块设备。最终这个块设备可以被各类SPDK的target 程序使用(诸如SPDK NVMe-oF target, Vhost target, iSCSI target),充当Ceph的存储网关服务,对真正的客户端应用提供块设备服务。
一
SDPK RBD bdev module介绍
SPDK RBD bdev 模块属于SPDK的bdev 这个系统(SPDK bdev subsystem),需要根据SPDK bdev相关头文件定义的接口实现需要的功能,比如对于块设备READ/WRITE/FLUSH等操作的支持。图1给出了RBD 模块的典型使用场景。作为SPDK BDEV模块的一员,它可以被SPDK iSCSI/vhost-scsi/NVMe-oF target使用。另外这个模块负责连接到Ceph集群中,主要依赖于Ceph的librbd/librados 软件库。
图 1 SPDK Ceph RBD bdev桥接Ceph和 各类SPDK target 程序
在SPDK RBD bdev 模块中,我们采用了和其他应用程序一样的4个调用步骤来进行一个Ceph的rbd image打开操作(如表一所示)。
|