@tony-yin
2017-10-31T16:03:32.000000Z
字数 2446
阅读 1247
Magicloud RBD NFS
具体场景
在Server端创建RBD块设备并挂载到某个目录,然后在Client端通过NFS将Server端之前说的目录再挂载到本地,就可以实现在客户端写文件通过NFS到Server端的块设备上
这波操作的目的是因为测试EC性能时,Ceph版本还是Hammer,CephFS不是很稳定,性能不行,所以想用RBD的方式取代,但是Hammer版本中EC是只支持RGW的,并不支持CephFS和RBD,至于这个场景具体流程之后会在其他文章分享
这波操作在之前Ceph的Hammer版本做过,这次是要在新版本Luminous上实践,由于遇到了很多问题,大部分都是新版本缘故引入的,故与大家分享
PS:
Luminous新版本提供了新的NFS的处理方式,不再需要用这种老式的RBD的手段,之后也会在其他文章分享出来
操作步骤
1. 使用RBD方式导出NFS,步骤如下:1.1 create RBD block device image (size unit: MB)# rbd create --size 1024 ec-pool/test_image1.2 map RBD device# rbd map ec-pool/test_image[Optional] check mapped device# rbd showmapped1.3 create filesystem on the device# mkfs.ext4 /dev/rbd01.4 mount it,# mkdir -p /vol/test_image# mount /dev/rbd0 /vol/test_image/1.5 export it, modify the /etc/exports# cat /etc/exports/vol/test_image *(rw,async,no_subtree_check,no_root_squash)# service nfs-kernel-server restart# exportfs -r1.6 check mount info for NFS server# showmount -e 192.168.1.1672. 在客户端以nfs方式mount上述导出的文件夹# mount -t nfs 192.168.1.167:/vol/test_image /mnt
之前EC Pool只能为RGW服务 ,直到Luminous版本,EC Pool也可以应用在RBD和CephFS,并且增加了data-pool这样的新特性,具体请参考官网:http://docs.ceph.com/docs/luminous/rados/operations/erasure-code/#erasure-coding-with-overwrites
所以创建image的方式也有所改变
ceph osd pool set ec_pool allow_ec_overwrites true
由于EC不支持omap,所以在CephFS或者RBD场景使用EC时,需要将data存在EC Pool中,将metadata存在Replicated Pool中
// 创建poolceph osd pool create ec-pool 12 12 erasure // ec pool, store dataceph osd pool create md-pool 12 12 replicated // replicated pool, store metadataceph osd pool create ssd-pool 12 12 replicated // replicated pool, used as cache pool// 创建imagerbd create --size 1024 --data-pool ec-pool md-pool/test_image
这一步之前的操作是rbd map ec-pool/test_image,所以当前需要执行
rbd map md-pool/test_image
但是一直timeout,通过查看dmesg和网上资料发现是因为linux kernel版本太低,所以升级了一下内核到4.3版本之后就可以work了
升级内核版本请参考:
rbd showmapped
mkfs.ext4 /dev/rbd0
mkdir -p /vol/test_imagemount /dev/rbd0 /vol/test_image/
vim /etc/exports/vol/test_image *(rw,async,no_subtree_check,no_root_squash) // Modify it to /etc/exports
Server端执行一下操作
yum -y install nfs-utils rpcbind
nfs依赖rpcbind,所以必须先启动rpcbind,这很重要
service rpcbind startservice nfs startexportfs -r
客户端也执行以上操作,假设客户端ip为192.168.1.1,服务端为192.168.1.2
查看是否可以挂载
showmount -e 192.168.1.2
mount -t nfs 192.168.1.2:/vol/test_image /mnt
遇到的主要问题
EC Pool创建image因为新版本改动rbd map因为linux kernel版本低nfs因为nfs在rpcbind前启动希望帮助大家尽量少些踩坑 ~~~
作者: Tony
日期: 2017-10-31 22:33
