ceph的jewel新支持的rbd-nbd
ceph的jewel新支持的rbd-nbd
zphj1987jewel版本新增加了一个驱动NBD,允许librbd实现一个内核级别的rbd
NBD相比较于kernel rbd:
- rbd-ko是根据内核主线走的,升级kernel
- rbd需要升级到相应的内核,改动太大
- rbd-ko的开发要慢于librbd,需要很多的时间才能追赶上librbd
rbd-nbd是通过librbd这个用户空间通过nbd的内核模块实现了内核级别的驱动,稳定性和性能都有保障
怎么理解用户态和内核态?
- librbd就是用户态,一般的kvm对接的就是librbd的
- kernel rbd就是内核态,这个是一个内核模块,是内核直接与osd交互的,一般来说内核态的性能会优于用户态
下面来做下基本的操作:
创建一个image
1 | [root@lab8106 ~]# rbd create testnbdrbd -s 10G |
映射这个image
1 | [root@lab8106 ~]# rbd-nbd map rbd/testnbdrbd |
查询已经映射的nbd
1 | [root@lab8106 ~]# rbd-nbd list-mapped |
上面说了这么多,那么来点直观的认识,nbd带来的好处
查询下image的信息
1 | [root@lab8106 ~]# rbd info testnbdrbd |
jewel版本默认开启了features: layering, exclusive-lock, object-map, fast-diff, deep-flatten这么多的属性,而这些属性是kernel-rbd还不支持的
所以做rbd map的时候就会出现下面的问题:
1 | [root@lab8106 ~]# rbd map testnbdrbd |
如果非要用,就默认禁用掉这些属性,在配置文件增加
rbd_default_features = 3
那么现在开启属性还行想用块设备方式怎么用,就可以用nbd了
1 | [root@lab8106 ~]# rbd-nbd map rbd/testnbdrbd |
这样就可以用了。不用担心接口的问题了,因为只要librbd支持的属性,nbd就默认支持了
查询rbd和nbd对应关系
1 | [root@lab101 mnt]# rbd-nbd list-mapped |
rbd几种常用的模式和新模式图:
本篇ceph版本
ceph version 10.2.1 (3a66dd4f30852819c1bdaa8ec23c795d4ad77269)
变更记录
Why | Who | When |
---|---|---|
创建 | 武汉-运维-磨渣 | 2016-05-19 |
增加映射关系查询方法 | 武汉-运维-磨渣 | 2018-03-27 |
评论
匿名评论隐私政策