@tony-yin
2017-11-01T00:03:32.000000Z
字数 2446
阅读 974
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_image
1.2 map RBD device
# rbd map ec-pool/test_image
[Optional] check mapped device
# rbd showmapped
1.3 create filesystem on the device
# mkfs.ext4 /dev/rbd0
1.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 -r
1.6 check mount info for NFS server
# showmount -e 192.168.1.167
2. 在客户端以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
中
// 创建pool
ceph osd pool create ec-pool 12 12 erasure // ec pool, store data
ceph osd pool create md-pool 12 12 replicated // replicated pool, store metadata
ceph osd pool create ssd-pool 12 12 replicated // replicated pool, used as cache pool
// 创建image
rbd 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_image
mount /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 start
service nfs start
exportfs -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