首先安装的xenserver6.5的环境,看到有地方有提到这个上面可以安装rbd的支持,网上有一种方式是libvirt+kvm方式,因为ceph对libviet是原生支持的,但是xenserver底层是xen的,这个就不去研究太多,这个用最简单的方式最好

https://github.com/mstarikov/rbdsr

这个是个第三方的插件,最近才出来的

实现原理是ssh到ceph的机器上获取到可以使用的rbd信息,然后在xenserver的图形界面上通过配置iscsi的方式去配置rbd,里面套用了iscsi的界面,实际去xenserver机器后台同样做的是map的操作

这个试了下,界面的操作都可以实现,都可以获取到rbd的信息,但是在最后提交的一下的时候,后台会报错误的信息,这个有可能才出来,还有点问题

这个地方可以用其他的方式实现,xenserver在添加硬盘的时候本来就支持的命令行模式,下面为实现方式

先检查内核的信息,这个有rbd模块,并且用的是3.10的,这个是用的centos7同等的内核,问题不大

[root@xenserver ]# modinfo rbd
filename: /lib/modules/3.10.0+2/kernel/drivers/block/rbd.ko
license: GPL
author: Jeff Garzik <jeff@garzik.org>
description: rados block device
author: Yehuda Sadeh <yehuda@hq.newdream.net>
author: Sage Weil <sage@newdream.net>
srcversion: B03197D54ABE3BD7A32A276
depends: libceph
intree: Y
vermagic: 3.10.0+2 SMP mod_unload modversions

查看系统上软件包的信息,可以看到xenserver6.5虽然用的是centos7同等的内核,实际上环境还是基于centos5的软件版本进行的定制,这个地方本来准备把ceph的软件包安装上去,版本上的依赖相隔太大,就没装了,也没太多的必要,能实现需求即可

[root@xenserver]# rpm -qa|grep ssh
openssh-4.3p2-82.el5

这个地方在xenserver的机器上使用这个方式使用rbd,需要做下面几个事情:

  • 一个是写rbdmap配置文件
  • 一个是rbdmap启动的脚本
  • 一个是ceph.conf的配置文件

修改/etc/ceph/rbdmap配置文件

/etc/ceph/rbdmap 里面的配置文件书写方式
# RbdDevice Parameters
#poolname/imagename id=client,keyring=/etc/ceph/ceph.client.keyring
rbd/testrbd id=admin

/etc/ceph/rbdmap根据需要去写,我不喜欢用keyring就没写keyring,但是id是必须写,否则会报错

修改rbdmap启动的脚本

/etc/init.d/rbdmap这个脚本要修改,默认的脚本里面是要去使用rbd命令的,rbd命令是在ceph-common里面的这个里面,可以修改一个不需要安装ceph-common的版本的启动脚本

改版的如下:

/etc/init.d/rbdmap文件内容替换如下:

#!/bin/bash
#
# rbdmap Ceph RBD Mapping
#
# chkconfig: 2345 20 80
# description: Ceph RBD Mapping ### BEGIN INIT INFO
# Provides: rbdmap
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Ceph RBD Mapping
# Description: Ceph RBD Mapping
### END INIT INFO DESC="RBD Mapping"
RBDMAPFILE="/etc/ceph/rbdmap" . /lib/lsb/init-functions modprobe rbd || exit 1 do_map() {
touch /var/lock/subsys/rbdmap
if [ ! -f "$RBDMAPFILE" ]; then
echo "$DESC : No $RBDMAPFILE found."
exit 0
fi echo "Starting $DESC"
# Read /etc/rbdtab to create non-existant mapping
newrbd=
RET=0
while read DEV PARAMS; do
case "$DEV" in
""|\#*)
continue
;;
*/*)
;;
*)
DEV=rbd/$DEV
;;
esac
if [ ! -b /dev/rbd/$DEV ]; then
echo $DEV
#rbd map $DEV $CMDPARAMS
mons=`egrep 'mon[ _]host' /etc/ceph/ceph.conf | cut -f2 -d'=' | sed 's/ //g'`
args=`echo $PARAMS | sed 's/id/name/g'`
rbddev=`echo $DEV | tr '/' ' '`
echo "$mons $args $rbddev" > /sys/bus/rbd/add
[ $? -ne "0" ] && RET=1
newrbd="yes"
fi
done < $RBDMAPFILE
echo $RET # Mount new rbd
if [ "$newrbd" ]; then
echo "Mounting all filesystems"
mount -a
echo $?
fi
} do_unmap() {
rm -rf /var/lock/subsys/rbdmap
echo "Stopping $DESC"
RET=0
# Recursive umount that depends /dev/rbd*
#原始版本可能没这个命令
# MNTDEP=$(findmnt --mtab | awk '$2 ~ /^\/dev\/rbd[0-9]*$/ {print $1}' | sort -r)
#修改如下:
MNTDEP=$(mount| awk '$1 ~ /^\/dev\/rbd[0-9]*$/ {print $3}' | sort -r) for MNT in $MNTDEP; do
umount $MNT
done
# Unmap all rbd device
cd /sys/bus/rbd/devices/
if ls * >/dev/null 2>&1; then
for DEV in *; do
echo $DEV
echo $DEV > /sys/bus/rbd/remove
[ $? -ne "0" ] && RET=1
done
fi
echo $RET
} case "$1" in
start)
do_map
;; stop)
do_unmap
;; reload)
do_map
;; status)
ls /sys/bus/rbd/devices/
;; *)
echo "Usage: rbdmap {start|stop|reload|status}"
exit 1
;;
esac exit 0

使用下面的命令进行rbd的挂载:

/etc/init.d/rbdmap start

启动后可以查看本地rbd映射的磁盘

[root@xenserver15 ceph]# ll /dev/rbd1
brw-r----- 1 root disk 252, 0 Dec 16 11:35 /dev/rbd1

卸载rbd的命令为

/etc/init.d/rbdmap stop

加入到自启动

[root@xenserver]# chkconfig rbdmap on

检查rbdmap的自启动状态

[root@xenserver]# chkconfig --list|grep rbdmap
rbdmap 0:off 1:off 2:on 3:on 4:on 5:on 6:off

将rbdmap从自启动删除

[root@xenserver]# chkconfig rbdmap off

这个地方因为xenserver添加存储的时候选择类型为lvm,而系统默认是识别不了rbdmap到本地的那个文件系统的类型的,所以需要修改一点东西:

在/etc/lvm/lvm.conf的98行修改如下

    #types= [ "nvme", 64, "mtip32xx", 64 ]
types= [ "nvme", 64, "mtip32xx", 64 , "rbd", 64 ]

查询新加磁盘的uuid(只有格式化了的磁盘才有uuid,格式化完了start_udev)

用绝对路径的时候可能会出现编号错乱的问题,因为/dev/rbd*只是一个软链接

[root@xenserver ceph]# ll /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Dec 16 11:35 0edeba9a-8b58-463c-bdea-0d46e90dd929 -> ../../rbd1
lrwxrwxrwx 1 root root 10 Dec 7 09:23 5170e462-18db-4fc6-a45c-dfc160cb86ee -> ../../sda1

如果上面的方法做完没有找到uuid

如果没有找到uuid,那么就用udev进行下控制,流程如下

vi /usr/bin/ceph-rbdnamer

创建一个文件

#!/bin/sh

DEV=$1
NUM=`echo $DEV | sed 's#p.*##g; s#[a-z]##g'`
POOL=`cat /sys/devices/rbd/$NUM/pool`
IMAGE=`cat /sys/devices/rbd/$NUM/name`
SNAP=`cat /sys/devices/rbd/$NUM/current_snap`
if [ "$SNAP" = "-" ]; then
echo -n "$POOL $IMAGE"
else
echo -n "$POOL $IMAGE@$SNAP"
fi

给权限

chmod 777 /usr/bin/ceph-rbdnamer

添加规则文件

 vi /etc/udev/rules.d/50-rbd.rules

添加

KERNEL=="rbd[0-9]*", ENV{DEVTYPE}=="disk", PROGRAM="/usr/bin/ceph-rbdnamer %k", SYMLINK+="rbd/%c{1}/%c{2}"
KERNEL=="rbd[0-9]*", ENV{DEVTYPE}=="partition", PROGRAM="/usr/bin/ceph-rbdnamer %k", SYMLINK+="rbd/%c{1}/%c{2}-part%n"

让udev生效

[root@xenserver15 rules.d]#  /sbin/udevcontrol reload_rules
[root@xenserver15 rules.d]# start_udev

检查

[root@xenserver15 rules.d]# ll /dev/rbd/rbd/zp
lrwxrwxrwx 1 root root 10 Dec 29 11:57 /dev/rbd/rbd/zp -> ../../rbd1

现在用设备的时候就用下面的路径,这个是唯一值

/dev/rbd/rbd/zp

添加磁盘rbd到xenserver中

[root@xenserver ceph]#  xe sr-create type=lvm content-type=user device-config:device=/dev/disk/by-uuid/0edeba9a-8b58-463c-bdea-0d46e90dd929 name-label="ceph storage (rbdtest)"

然后去图形管理界面就可以看到添加的存储了

到这里就创建好了,这里介绍下删除存储的的操作

列出pdb模块,找到对应存储的UUID

xe pbd-list

找到对应设备的 uuid 卸载对应uuid的存储

[root@xenserver ceph]# xe pbd-unplug uuid="09b97cda-24ad-0a36-8cf7-f7fb0b61cd55"

列出存储的UUID,找到对应存储的UUID

[root@xenserver ceph]# xe sr-list

删除本地存储连接

[root@xenserver ceph]# xe sr-forget uuid=bb24ee6f-e457-685b-f0b9-fe7c92387042

对于已经挂载的rbd磁盘的信息查询的问题

如果用的是/dev/rbd4

查询存储池

[root@xenserver ceph]# cat /sys/bus/rbd/devices/4/pool_id

查询镜像名称

[root@xenserver ceph]# cat /sys/bus/rbd/devices/4/name

附加知识

删除重新加进来的过程

[root@xenserver15 rules.d]# xe pbd-list |grep rbd -A 2 -B 5

uuid ( RO)                  : 6242d000-567d-257f-d030-7f360855f87f
host-uuid ( RO): 91171862-9954-46e1-9210-3cebb55df395
sr-uuid ( RO): bbfd0739-b0a1-d2e3-986f-10827e4637ea
device-config (MRO): device: /dev/rbd/rbd/zp
currently-attached ( RO): true

删除掉pbd

[root@xenserver15 rules.d]# xe pbd-unplug uuid=6242d000-567d-257f-d030-7f360855f87f
[root@xenserver15 rules.d]# xe pbd-destroy uuid=6242d000-567d-257f-d030-7f360855f87f

删掉sr(sr的uuid在vg的名称里面包含了)

[root@xenserver15 rules.d]# xe sr-list |grep rbd -A 4 -B 2

uuid ( RO)                : bbfd0739-b0a1-d2e3-986f-10827e4637ea
name-label ( RW): ceph storage (rbdtest)
name-description ( RW):
host ( RO): <not in database>
type ( RO): lvm
content-type ( RO): user [root@xenserver15 rules.d]# xe sr-forget uuid=bbfd0739-b0a1-d2e3-986f-10827e4637ea

重新加入sr

[root@xenserver15 rules.d]# xe sr-introduce uuid=bbfd0739-b0a1-d2e3-986f-10827e4637ea  type=lvm content-type=user device-config:device=/dev/rbd/rbd/zp  name-label="ceph storage (rbdtest)"
bbfd0739-b0a1-d2e3-986f-10827e4637ea

查询主机的uuid

[root@xenserver15 rules.d]# xe host-list
uuid ( RO) : 91171862-9954-46e1-9210-3cebb55df395
name-label ( RW): xenserver1.5
name-description ( RW): Default install of XenServer
[root@xenserver15 rules.d]# xe pbd-create   sr-uuid=bbfd0739-b0a1-d2e3-986f-10827e4637ea device-config:device=/dev/rbd/rbd/zp host-uuid=91171862-9954-46e1-9210-3cebb55df395
51a40dd6-2b91-7590-8a81-04d129aed1ea

加载存储

xe pbd-plug uuid=51a40dd6-2b91-7590-8a81-04d129aed1ea

然后在前台repair下就可以了

附加

xenserver7升级了lvm

增加lvm的识别

需要识别rbd的话需要修改下面两个文件

/etc/lvm/lvm.conf和/etc/lvm/master/lvm.conf

# Configuration option devices/types.
# List of additional acceptable block device types.
# These are of device type names from /proc/devices, followed by the
# maximum number of partitions.
#
# Example
# types = [ "fd", 16 ]
#
# This configuration option is advanced.
# This configuration option does not have a default value defined.

修改为

# Configuration option devices/types.
# List of additional acceptable block device types.
# These are of device type names from /proc/devices, followed by the
# maximum number of partitions.
#
# Example
types = [ "rbd", 64 ]
#
# This configuration option is advanced.
# This configuration option does not have a default value defined.

执行命令

sed -i  "s/metadata_read_only =.*/metadata_read_only = 0/g" /etc/lvm/master/lvm.conf
sed -i "s/metadata_read_only =.*/metadata_read_only = 0/g" /etc/lvm/lvm.conf

创建sr

xe sr-create type=lvm content-type=user device-config:device=/dev/rbd1 name-label="ceph"

然后就可以用了

相关文件路径

/var/log/SMlog 存储创建日志路径

/opt/xensource/sm/lvutil.py 创建lv的代码

变更记录

Why Who When
创建 武汉-运维-磨渣 2015-12-16
增加 touch /var/lock/subsys/rbdmap 武汉-运维-磨渣 2016-05-10
增加xenserver7lvm支持 武汉-运维-磨渣 2017-02-07

xenserver使用ceph的rbd的方法的更多相关文章

  1. 理解 OpenStack + Ceph (8): 基本的 Ceph 性能测试工具和方法

    本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 ...

  2. 如何统计Ceph的RBD真实使用容量

    前言 ceph的rbd一直有个问题就是无法清楚的知道这个分配的空间里面到底使用了多少,这个在Jewel里面提供了一个新的接口去查询,对于老版本来说可能同样有这个需求,本篇将详细介绍如何解决这个问题 查 ...

  3. ceph查询rbd的使用容量(快速)

    ceph在Infernalis加入了一个功能是查询rbd的块设备的使用的大小,默认是可以查询的,但是无法快速查询,那么我们来看看这个功能是怎么开启的 ceph版本 root@lab8107:~/cep ...

  4. k8s使用ceph的rbd作后端存储

    k8s使用rbd作后端存储 k8s里的存储方式主要有三种.分别是volume.persistent volumes和dynamic volume provisioning. volume: 就是直接挂 ...

  5. ceph中rbd的增量备份和恢复

    ceph中rbd的增量备份和恢复 ceph的文档地址:Ceph Documentation ​ 在调研OpenStack中虚机的备份和恢复时,发现OpenStack和ceph紧密结合,使用ceph做O ...

  6. 006 管理Ceph的RBD块设备

    一, Ceph RBD的特性 支持完整和增量的快照 自动精简配置 写时复制克隆 动态调整大小 二.RBD基本应用 2.1 创建RBD池 [root@ceph2 ceph]# ceph osd pool ...

  7. ceph的rbd备份软件ceph-backup

    teralytics是一家国外的大数据公司,这个是他们开源的ceph的备份的工具,在twitter上搜索相关信息的时候看到,觉得不错就拿来试用一番 这是个什么软件 一个用来备份 ceph 的 rbd ...

  8. Ceph性能测试工具和方法。

    0. 测试环境 同 Ceph 的基本操作和常见故障排除方法 一文中的测试环境. 1. 测试准备 1.1 磁盘读写性能 1.1.1 单个 OSD 磁盘写性能,大概 165MB/s. root@ceph1 ...

  9. java操作ceph之rbd基本操作

    一.安装librados和librbd Ceph存储集群提供了基本的存储服务,允许Ceph在一个统一的系统中唯一地传送对象,块和文件存储. 但是,不限于使用RESTful,块或POSIX接口. 基于R ...

随机推荐

  1. centos8安装fastdfs6.06集群方式三之:storage的安装/配置/运行

    一,查看本地centos的版本 [root@localhost lib]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) 说 ...

  2. ReSharper 注册码

    用户名:ronle 注册码:ZoJzmeVBoAv9Sskw76emgksMMFiLn4NM 原文地址:http://hi.baidu.com/ronle/item/a509b5f7b851971be ...

  3. Codeforces Round #677 (Div. 3) D/1433D Districts Connection

    https://codeforces.com/contest/1433/problem/D 找两个不同权值的节点A.B连起来,所有与A不同权值的连到A上,相同的连到B上. #include<io ...

  4. poj1655 Balancing Act (dp? dfs?)

    Balancing Act Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14247   Accepted: 6026 De ...

  5. 构造函数原理 - Js对象

    构造函数内部原理 有new之后,函数变成构造函数,产生三步隐式变化 1.函数执行,在函数体顶端隐式加上var this = {}; 2.执行赋值,AO{ this : {name:'zhangsan' ...

  6. Lombda表达式(四)

    /* * 自定义函数式接口: * 1.声明一个接口,只能包含一个抽象方法 * 2.给这个接口加@FunctionalInterface */ public class Test { public st ...

  7. vue 路由知识点(一级路由与二级路由嵌套)

    本人小白一个,如果问题,麻烦大神指点, 一级路由: path:'/' 默认为显示; 二级路由: path: '',默认显示为index组件,因为二级路有没有写index组件,所以使用redirect: ...

  8. Win32之创建进程

    CreateProcess函数介绍 BOOL CreateProcessA( LPCSTR lpApplicationName, //可执行文件的名称完整的路径+程序名字) LPSTR lpComma ...

  9. 一套轻量级销售团队管理系统【CRM】

    项目描述 Hi,大家好,又到了源码分享时间啦,今天我们分享的源码一个<轻量级销售团队管理系统>,这套系统是一套轻量级的CRM系统,基于SSM的SpringBoot架构.这套项目用到很多潮流 ...

  10. CodeForces 1025G Company Acquisitions

    题意 描述有点麻烦,就不写了. \(\texttt{Data Range:}1\leq n\leq 500\) 题解 势能函数这个东西好神啊-- 这个题目用常规的 DP 好像做不出来,所以我们可以考虑 ...