100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Ceph集群搭建系列(六):RBD块设备的使用场景 原理分析及其创建

Ceph集群搭建系列(六):RBD块设备的使用场景 原理分析及其创建

时间:2023-05-06 23:13:41

相关推荐

Ceph集群搭建系列(六):RBD块设备的使用场景 原理分析及其创建

一、前言

下图数据出自ceph社区用户调查报告,Ceph RBD接口的使用场景主要是VM和DB数据库。

而使用Ceph RBD的接口方式的用户数据如下,主要是librbd 和 kernel RBD,如下图:

那么对于初学者来说,librbd 和 linux kernel RBD是什么?通过它们来访问RBD块设备有什么区别呢?

二、librbd 和 linux kernel RBD的框架

从下图可以清晰的看到,librbd是用户态的API,基于librados.so动态库。而linux kernel RBD 是有两个ko 模块组成:rbd.ko+libceph.ko,libceph.ko提供的功能类似用户太的librados.so动态库。所以它们的区别是,一个是用户态,另一个是内核态的实现。那为什么有用户态了?还要提供一个内核的版本实现呢? 一是通过盘符/dev/xxx就可以使用RBD块设备(实现内核block device与ceph的更好结合);二是为了更好的支持内核层的其它调用(如VM)。

三、OSD的创建

创建RBD块设备前,我们需要创建OSD (0...n),OSD (0) 可以是OSD服务器节点上的一块磁盘,一个raid组合,甚至是一个文件夹。一般是在OSD节点服务器上的每个磁盘创建一个OSD,来提高磁盘的吞吐率。每个创建的OSD 块设备都有一个独立的OSD daemon负责维护及管理。

集群搭建,更多参考:Ceph集群搭建系列(一):Ceph 集群搭建

3.1 基于一个文件夹创建OSD

3.1.1 新建目录

$ ssh node2$ sudo mkdir /var/local/osd0$ sudo chmod 777 /var/local/osd0/$ exit$ ssh node3$ sudo mkdir /var/local/osd1$ sudo chmod 777 /var/local/osd1/$ exit

3.1.2 osd prepare 准备OSD

$ ceph-deploy osd prepare node2:/var/local/osd0 node3:/var/local/osd1

3.1.3 osd activate 激活OSD

$ ceph-deploy osd activate node2:/var/local/osd0 node3:/var/local/osd1

3.2 基于一个磁盘创建OSD

3.2.1 需要先擦除磁盘的数据

命令格式:ceph-deploy disk zap {osd-server-name}:{disk-name},该命令擦除磁盘的分区表及其内容。例如:ceph-deploy disk zap node1:sdb

3.2.2 准备OSD

命令格式:ceph-deploy osd prepare {node-name}:{data-disk}。例如:ceph-deploy osd prepare node1:sdb1:sdc

3.2.3 激活OSD

ceph-deploy osd activate {node-name}:{data-disk-name}。例如:ceph-deploy osd activate node1:sdb1:sdc

四、查看OSD 状态:

查看 集群的 OSD 列表,如下,我一共创建了3个OSD

$ sudo ceph osd treeID CLASS WEIGHT TYPE NAMESTATUS REWEIGHT PRI-AFF-1 0.02939 root default-3 0.00980host node20 hdd 0.00980 osd.0up 1.00000 1.00000-5 0.01959host node31 hdd 0.00980 osd.1up 1.00000 1.000002 hdd 0.00980 osd.2up 1.00000 1.00000

五、基于OSD创建存储池和块设备(client 端就在Monitor或OSD节点)

5.1 创建存储池和RBD块设备

rbd命令格式:rbd [ -cceph.conf] [ -mmonaddr] [–clustercluster-name] [ -p | –poolpool] [command:create… ],

而子命令command;create 的参数格式为:create(-s | –sizesize-in-M/G/T) [–image-formatformat-id] [–object-sizesize-in-B/K/M] [–stripe-unitsize-in-B/K/M–stripe-countnum] [–thick-provision] [–no-progress] [–image-featurefeature-name]… [–image-shared]image-spec

例如:rbd create image1 --size 1024,默认在名为rbd 的pool下创建一个名为image1的块设备,大小为1G,等同于rbd create rbd/image1 --size 1024 --image-format 2

5.2 查看创建好的RBD 块设备

$ sudo rbd listimage1//查看详细的信息~/ceph-cluster$ sudo rbd info rbd/image1rbd image 'image1':size 1GiB in 256 objectsorder 22 (4MiB objects)block_name_prefix: rbd_data.10356b8b4567format: 2features: layeringflags:create_timestamp: Wed Jun 19 16:05:40

如果想关掉image1 块设备的一些feature,命令如下:

//关掉image1的一些featurerbd feature disable image1 exclusive-lock, object-map, fast-diff, deep-flatten

5.3 映射块设备到设备符

把test_image块设备映射到操作系统,例如:

$ sudo rbd map image1

5.4 查看映射好的设备符

$ sudo rbd showmappedid pool image snap device0 rbd image1 - /dev/rbd0

使用/dev/rbd0即使用ceph 的块设备了,这个使用方式是通过 linux kernel RBD方式访问的,即rbd.ko/libceph.ko的 IO path.

5.5 而 fio +rbd ioengine是使用的librbd 方式访问的RBD

这部分可参考Ceph测试系列(二):ceph性能测试fio工具(2 of 4)

六、远程创建块设备(client 端不在Monitor或OSD节点)

在Monitor节点上把 ceph.conf 及ceph.client.admin,keyring拷贝到client端

yjiang2@ubuntu:~$ scp ceph/ceph.conf 10.110.141.30:~/test/yjiang2@ubuntu:~$ scp ceph/ceph.client.admin.keyring 10.110.141.30:~/test/

在client端创建rbd image,如下:

$ sudo rbd -c ./ceph.conf create remote --size 1024 --keyring ./ceph.client.admin.keyringyjiang2@ubuntu-sebre:~/test$ rbd -c ./ceph.conf --keyring ./ceph.client.admin.keyring listimageremote

关闭kernel不支持的rbd feature:

$ rbd -c ./ceph.conf --keyring ./ceph.client.admin.keyring feature disable remote exclusive-lock, object-map, fast-diff, deep-flatten

映射该 rbd image:

yjiang2@ubuntu-sebre:~/test$ ls /dev/rbd*ls: cannot access '/dev/rbd*': No such file or directory$ sudo rbd -c ./ceph.conf --keyring ./ceph.client.admin.keyring map remote/dev/rbd0$ ls /dev/rbd*/dev/rbd0

七、参考

/docs/master/man/8/rbd/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。