librbd库的使用




qemu、rbd-nbd等客户端都是使用librbd进行ceph rbd卷的IO访问,如果要深入理解librbd,那么尝试自己写一个client来访问rbd卷(控制操作、IO操作),肯定是一个不错的途径。

写了个C的(异步IO模式),C++的可以参考:https://blog.csdn.net/JDPlus/article/details/76522298

测试ceph peering对客户端IO影响的场景下正好用到了异步IO工具,于是稍微改造了一下这个基于librbd的client工具:https://github.com/aspirer/study/blob/master/rbdclient.c

依赖包:apt-get install librbd-dev librados-dev
编译:gcc -g3 -O0 librbdtest.c -o librbdtest -lrados -lrbd

执行(需要先创建”rbd” pool和”sotest”卷):

 

官方example:https://github.com/ceph/ceph/blob/master/examples/librbd/hello_world.cc