背景
- XenServer7
- Ceph Jewel
- RBDSR
集成原理
应用层客户端i/o通过XenServer将i/o传递给fuse或nbd内核模块,nbd通过文件socket,将i/o请求传递给rbd-nbd。rbd-nbd通过ceph-common(包括librbd和librados)将读写请求发送给Ceph集群。(fuse内部通信方式及协议目前不清楚,待后续调研清楚再更新)
安装配置步骤
依赖库安装
snappy leveldb gdisk gperftools-libs fuse fuse-libs安装
rpm列表:
- snappy-1.1.0-3.el7.x86_64.rpm
- leveldb-1.12.0-11.el7.x86_64.rpm
- gdisk-0.8.6-5.el7.x86_64.rpm
- gperftools-libs-2.4-5.el7.x86_64.rpm
- fuse-2.9.2-6.el7.x86_64.rpm
- fuse-libs-2.9.2-6.el7.x86_64.rpm
安装:
1 | yum -y localinstall *.rpm |
python-argparse 安装
python-argparse依赖rpm列表:
- libunwind-1.1-5.el7.x86_64.rpm
- python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch.rpm
- python-backports-1.0-8.el7.x86_64.rpm
- python-setuptools-0.9.8-4.el7.noarch.rpm
安装:
1 | yum -y localinstall *.rpm |
tar列表:argparse-1.4.0.tar.gz
python-argparse安装:
1 | tar -xzvf ./argparse-1.4.0.tar.gz |
ceph-common rbd-fuse rbd-nbd安装
rpm列表:
- boost-iostreams-1.53.0-25.el7.x86_64.rpm
- ceph-common-10.2.3-0.el7.x86_64.rpm
- librados2-10.2.3-0.el7.x86_64.rpm
- lttng-ust-2.4.1-1.el7.x86_64.rpm
- python-rbd-10.2.3-0.el7.x86_64.rpm
- rbd-fuse-10.2.3-0.el7.x86_64.rpm
- rbd-nbd-10.2.3-0.el7.x86_64.rpm
- python-requests-2.6.0-1.el7_1.noarch.rpm
- python-cephfs-10.2.3-0.el7.x86_64.rpm
- libradosstriper1-10.2.3-0.el7.x86_64.rpm
- fcgi-2.4.0-25.el7.x86_64.rpm
- boost-program-options-1.53.0-25.el7.x86_64.rpm
- boost-random-1.53.0-25.el7.x86_64.rpm
- libbabeltrace-1.2.4-3.el7.x86_64.rpm
- librbd1-10.2.3-0.el7.x86_64.rpm
- python-chardet-2.2.1-1.el7_1.noarch.rpm
- python-six-1.9.0-2.el7.noarch.rpm
- userspace-rcu-0.7.16-1.el7.x86_64.rpm
- python-urllib3-1.10.2-2.el7_1.noarch.rpm
- python-rados-10.2.3-0.el7.x86_64.rpm
- librgw2-10.2.3-0.el7.x86_64.rpm
- libcephfs1-10.2.3-0.el7.x86_64.rpm
- boost-regex-1.53.0-25.el7.x86_64.rpm
安装:
1 | yum -y localinstall *.rpm |
RBDSR安装
获取RBDSR
可通过git获取或svn获取
Git事例:
1 | git clone https://github.com/zhoubofsy/RBDSR-1.git |
安装RBDSR
1 | ./install |
Ceph配置
copy Ceph集群里的配置文件(/etc/ceph/ceph.conf)和 Keyring文件(/etc/ceph/ceph.client.admin.keyring)到XenServer节点的/etc/ceph/
目录下
完成copy工作后,可通过ceph -s
命令来确认ceph访问能力是否正常
重启XAPI
1 | xe-toolstack-restart |
主节点挂载
*** 注:在XenServer Master节点上需要按下述步骤挂载Ceph存储,其他非Master节点只需要执行4
、5
步 ***
1. 在ceph集群上创建链接XenServer需要的存储池
首先使用uuidgen
生成uuid,然后创建存储池,存储池命名规则为“RBD_XenStorage-”前缀加uuid的方式。
eg:ceph osd pool create RBD_XenStorage-ffc44a2c-7de2-49e7-a621-8ecabdb357f4 128 128 replicated
2. 创建SR
eg:
1 | xe sr-introduce name-label="CEPH RBD Storage" type=rbd uuid=ffc44a2c-7de2-49e7-a621-8ecabdb357f4 shared=true content-type=user |
name-label
,可根据需要随意填写uuid
,为创建ceph存储池时使用的uuid
3. 获取host uuid
1 | xe host-list |
取本机的uuid
做为host uuid
4. 创建PBD
使用xe pbd-create
创建PBD,默认创建方式为rbd-nbd方式,若想以rbd-fuse方式创建PBD,需要在rbd-mode
参数中指定fuse。创建成功则返回PBD uuid
rbd-nbd eg:
1 | xe pbd-create sr-uuid=ffc44a2c-7de2-49e7-a621-8ecabdb357f4 host-uuid=11e7e849-fd19-470e-9cb8-0c6c6781531f |
rbd-fuse eg:
1 | xe pbd-create sr-uuid=ffc44a2c-7de2-49e7-a621-8ecabdb357f4 host-uuid=11e7e849-fd19-470e-9cb8-0c6c6781531f device-config:rbd-mode=fuse |
5. 挂载PBD
使用xe pbd-plug
挂载PBD,需要指定PBD uuid。
eg:
1 | xe pbd-plug uuid=c51c8000-ad5f-190e-5a6c-dc12cc8f8733 |