ceph(J版)与XenServer7集成

背景

  • XenServer7
  • Ceph Jewel
  • RBDSR

集成原理

rbdsr-xenserver7-integration

应用层客户端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
2
3
tar -xzvf ./argparse-1.4.0.tar.gz
cd argparse-1.4.0
python setup.py install

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节点只需要执行45

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
2
3
4
5
6
7
8
9
# xe host-list
uuid ( RO) : 267cb56e-983f-48fb-a50a-7bcb7bbbee85
name-label ( RW): xenserver-88
name-description ( RW): Default install


uuid ( RO) : 11e7e849-fd19-470e-9cb8-0c6c6781531f
name-label ( RW): xenserver90
name-description ( RW): Default install

取本机的uuid做为host uuid

4. 创建PBD

使用xe pbd-create创建PBD,默认创建方式为rbd-nbd方式,若想以rbd-fuse方式创建PBD,需要在rbd-mode参数中指定fuse。创建成功则返回PBD uuid
rbd-nbd eg:

1
2
# xe pbd-create sr-uuid=ffc44a2c-7de2-49e7-a621-8ecabdb357f4 host-uuid=11e7e849-fd19-470e-9cb8-0c6c6781531f
c51c8000-ad5f-190e-5a6c-dc12cc8f8733

rbd-fuse eg:

1
2
# xe pbd-create sr-uuid=ffc44a2c-7de2-49e7-a621-8ecabdb357f4 host-uuid=11e7e849-fd19-470e-9cb8-0c6c6781531f device-config:rbd-mode=fuse
c51c8000-ad5f-190e-5a6c-dc12cc8f8733

5. 挂载PBD

使用xe pbd-plug挂载PBD,需要指定PBD uuid。
eg:

1
# xe pbd-plug uuid=c51c8000-ad5f-190e-5a6c-dc12cc8f8733

参考&鸣谢