块设备(rbd)
1、块设备可以应用为:
1、作为额外的磁盘使用
2、可以作为裸设备使用
3、可以格式化成文件系统,然后挂载给虚拟机或者物理服务器使用
2、创建块设备(可以在任意一台ceph节点上创建)
下面的命令创建一个名为ceph-client1-rbd1、大小为10G的RBD设备
[[email protected] ~]# rbd create ceph-client1-rbd1 --size 10240
注意:默认情况下rbd镜像会保存在ceph集群的rbd池中,可以使用-p参数改变池
3、列出rbd设备镜像(可在任意一台节点上列出)
[[email protected] ~]# rbd ls
ceph-client1-rbd1
4、查看创建后的块设备的信息(可以在任意一台ceph节点上查看)
[[email protected] ~]# rbd --image ceph-client1-rbd1 info
rbd image 'ceph-client1-rbd1':
size 10240 MB in 2560 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.857a238e1f29
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
flags:
5、创建ceph客户端
安装一台虚拟机或者用一台物理机来作为cpeh客户端进行测试,操作系统需要是linux(我的环境是centos7)
需要注意:
1、linux内核从2.6.32版本开始支持ceph
2、建议使用2.6.34以及以上的内核版本
查看内核版本命令:uname -rbd
检查是否支持rbd命令: modprobe rbd
安装完客户端的操作系统之后,记得将ceph集群的IP地址和主机名添加到hosts文件中:
192.168.89.101 ceph-node1
192.168.89.102 ceph-node2
192.168.89.103 ceph-node3
192.168.89.139 ceph-client1
6、映射rados块设备给客户端
在映射之前,需要授权给客户端访问ceph集群的权限,需要下面两个步骤,添加秘钥环(客户端与ceph集群之间的身份验证就是基于这个秘钥环)和添加ceph配置文件
1、在管理节点(ceph-deploy)上通过ceph-deploy工具给ceph-client1安装ceph包
deploy install ceph-client1-rbd1
2、在管理节点上(ceph-deploy)上通过ceph-deploy工具给ceph-client1客户端下发秘钥环和ceph配置文件
用于授予客户端访问ceph集群的权限
ceph-deploy admin ceph-client1
3、登录ceph-client1客户端检查秘钥文件和配置文件是否下发成功
进入/ect/ceph/目录
[[email protected] ceph]# ls -l
-rw------- 1 root root 129 Jan 6 22:51 ceph.client.admin.keyring #这是下发后的秘钥文件
-rw-r--r-- 1 root root 234 Jan 6 22:51 ceph.conf #这是下发后的配置文件
-rw-r--r-- 1 root root 92 Oct 4 10:50 rbdmap
-rw------- 1 root root 0 Jan 6 22:51 tmpUcImw6
4、在ceph-client1客户端上查询ceph集群的RBD镜像
[[email protected] ~]# rbd ls #列出rbd列表
ceph-client1-rbd1
[[email protected] ~]# rbd info --image ceph-client1-rbd1 #查看rbd镜像详细信息
rbd image 'ceph-client1-rbd1':
size 10240 MB in 2560 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.857a238e1f29
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
flags:
5、授权之后,就在ceph-client1客户端上映射名为'ceph-client1-rbd1'的rbd镜像:
rbd map --image ceph-client1-rbd1
执行上述映射命令后发生如下错误:
[[email protected] log]# rbd map --image ceph-client1-rbd1
rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable".
In some cases useful info is found in syslog - try "dmesg | tail" or so.
rbd: map failed: (6) No such device or address
遇到问题:rbd镜像的一些特性,OS kernel并不支持,所以映射失败
查看下该镜像支持了哪些特性
[[email protected] ~]# rbd info ceph-client1-rbd1
rbd image 'ceph-client1-rbd1':
size 10240 MB in 2560 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.857a238e1f29
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
flags:
可以看到特性feature一栏,由于我OS的kernel只支持layering,其他都不支持,所以需要把部分不支持的特性disable掉。
以下方法根据实际情况选其一即可!
方法一:直接diable这个rbd镜像的不支持的特性:
$ rbd feature disable docker_test exclusive-lock object-map fast-diff deep-flatten
[[email protected] ~]# rbd info ceph-client1-rbd1 #关闭后查看
rbd image 'ceph-client1-rbd1':
size 10240 MB in 2560 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.857a238e1f29
format: 2
features: layering #仅剩一个特性
flags:
方法二:创建rbd镜像时就指明需要的特性,如:
$ rbd create --size 4096 docker_test --image-feature layering
方法三:修改Ceph配置文件/etc/ceph/ceph.conf,在global section下,增加
rbd_default_features = 1
再创建rdb镜像。
$ rbd create --size 4096 docker_test
6、解决上述问题之后,再次尝试映射
[[email protected] ~]# rbd map --image ceph-client1-rbd1
/dev/rbd0
此刻,映射成功
7、查看映射信息
[[email protected] ~]# rbd showmapped
id pool image snap device
0 rbd ceph-client1-rbd1 - /dev/rbd0
8、如需指定RBD镜像所属池的名称(这是可选的操作)可以执行以下命令:
rbd map rbd/ceph-client1-rbd1
10、格式化映射之后的RBD镜像,并创建文件系统
[[email protected] ~]# fdisk -l /dev/rbd0
Disk /dev/rbd0: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4194304 bytes / 4194304 bytes
[[email protected] ~]# mkfs.xfs /dev/rbd0
[[email protected] ~]# mkdir /mnt/ceph-vol1
[[email protected] ~]# mount /dev/rbd0 /mnt/ceph-vol1/
[[email protected] ~]# df -H
Filesystem Size Used Avail Use% Mounted on
devtmpfs 494M 0 494M 0% /dev
tmpfs 507M 0 507M 0% /dev/shm
tmpfs 507M 6.9M 500M 2% /run
tmpfs 507M 0 507M 0% /sys/fs/cgroup
/dev/mapper/cl-root 8.6G 1.6G 7.0G 19% /
/dev/sda1 1.1G 195M 869M 19% /boot
tmpfs 102M 0 102M 0% /run/user/0
/dev/rbd0 11G 35M 11G 1% /mnt/ceph-vol1 #这个是挂载后的
原文地址:http://blog.51cto.com/freshair/2058538