文档章节

rbd-mirror动手实践

linuxhunter
 linuxhunter
发布于 2016/05/31 14:32
字数 851
阅读 946
收藏 1

rbd-mirror是jewel版本新加入的一个特性,目的是在不同的ceph集群中同步rbd设备上的数据。

rbd-mirror的内部实现如下图所示:

在两个相互独立的ceph集群中分别多了一个守护进程rbd-mirror,该守护进程负责同步rbd设备上的数据。rbd-mirror的主要处理流程如下图所示:

用户操作块设备向块设备中写入数据时,librbd首先将写操作写入日志,当日志写入完毕后应答用户写操作完毕。之后日志向本地块设备写入数据,于此同时日志通过rbd-mirror守护进程将日志发送到对端ceph集群。对端ceph集群将日志内容写入到块设备中,由此完成块设备的同步功能。由此看到rbd-mirror的核心在于rbd-mirror守护进程和块设备写入的日志。

rbd-mirror动手实践部分如下:

1、集群环境。

    rbd-mirror的测试环境采用手动编译ceph源代码的方式安装并配置ceph集群,具体操作过程请参考http://my.oschina.net/linuxhunter/blog/682013。集群名称分别是ceph和ceph2。测试rbd-mirror使用的用户是各自集群中的admin用户(当然可以自行创建一个专门为rbd-mirror的特定用户)。

2、rbd-mirror设置。

    1)复制ceph配置文件和admin用户的keyring到对端ceph集群。

        将ceph集群中的ceph.conf和ceph.client.admin.keyring复制到ceph2集群中的/etc/ceph目录下,于此同时将ceph2集群中的ceph2.conf和ceph2.client.admin.keyring复制到ceph集群中。这样ceph集群可以查看ceph2集群的状态,ceph2集群也可以查看ceph集群的状态。

    2)在两个ceph集群中创建相同名称的pool。

        #rbd --cluster ceph osd pool create image-pool 64 64

        #rbd --cluster ceph2 osd pool create image-pool 64 64

    3)使能mirror功能。

        #rbd --cluster ceph mirror pool enable image-pool pool

        #rbd --cluster ceph2 mirror pool enable image-pool pool

    4)添加cluster peer。

        #rbd --cluster ceph mirror pool peer add image-pool client.admin@ceph2

        #rbd --cluster ceph2 mirror pool peer add image-pool client.admin@ceph

    5)启动rbd-mirror守护进程。

        #rbd-mirror -f --cluster ceph --setuser ceph --setgroup ceph

        #rbd-mirror -f --cluster ceph2 --setuser ceph --setgroup ceph

    6)查看rbd-mirror状态。

        #rbd --cluster ceph mirror pool info

Mode: image

Peers: 

  UUID                                 NAME  CLIENT       

  30018a0a-52b6-499e-b8f2-174d61eeeafe ceph2 client.admin 

        #rbd --cluster ceph mirror pool status 

health: OK

images: 0 total

        到此rbd-mirror环境已经成功搭建完毕。

3、rbd-mirror测试。

    1)在ceph集群中image-pool中创建一个块设备。

        #rbd --cluster ceph create image-pool/test1 --size 10240 --image-feature exclusive-lock, journaling

    2)向ceph集群中image-pool中的块设备写入数据。

        #mkdir -p /tmp/rbd

        #rbd-fuse -p image-pool /tmp/rbd

        #mkfs.ext4 /tmp/rbd/test1

        #mount -o loop /tmp/rbd/test1 /mnt/

        #echo "hello, world" > /mnt/test.txt

        #umount /mnt

        #fusermount -u /tmp/rbd

    3)在ceph2集群中查看image-pool中的块设备信息。

        #rbd --cluster ceph2 -p image-pool ls

test1

        此时在ceph2集群中就可以看到刚刚在ceph集群中创建出来的test1块设备;

    4)在ceph2集群中挂载块设备且查看块设备中的内容。

        #mkdir -p /tmp/rbd

        #rbd-fuse -p image-pool /tmp/rbd

        #mount -o loop /tmp/rbd/test1 /mnt

        #ls /mnt/

test1.txt

        #cat /mnt/test1.txt

hello,world

        #umount /mnt

        #fusermount -u /tmp/rbd

4、补充说明。

    1)当前版本的rbd-mirror功能只支持集群之间一对一的mirror,并不支持一对多的mirror;

    2)做rbd-mirror的两个集群的pool名称必须一致;

    

© 著作权归作者所有

linuxhunter
粉丝 72
博文 144
码字总数 93264
作品 0
沈阳
高级程序员
私信 提问
从传统运维到云运维演进历程之软件定义存储(五)下

上篇文章讲到了Ceph在灾备方面有三大神兵利器:故障域、RBD异地灾备、RGW异地灾备。那么本文讲述下剩下的两大利器RBD异地灾备和RGW异地灾备 关卡五:Ceph灾备神兵利器-RBD Mirroring & RGW异...

Devin
2016/12/20
0
0
ceph(jewel版)编译

一、在github下载ceph源码: git clone --recursive https://github.com/ceph/ceph.git 下载ceph的其他子模块,否则在编译过程中会出现缺少库 git submodule update --force --init --recurs...

zrz11
2016/11/02
47
0
Ceph v10.2.10 Jewel 发布,分布式文件系统

Ceph 10.2.10 发布了,该版本包含重要的 Bug 修复,建议所有 10.2.x 的用户升级。 值得关注的改进包括: build/ops: Add fix subcommand to ceph-disk, fix SELinux denials, and speed up ...

红薯
2017/10/09
1K
3
Rainbond构建Java Maven项目原理解读(CI)

Apache Maven相关知识说明 Apache Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,项目管理和项目信息管理。所谓的项目构建就是对项目进行清理、编译、测试、报告、打包、...

barnettzqg
07/25
0
0
Ceph 11.1.0 发布,分布式存储系统

Ceph 11.1.0 发布了。Ceph是加州大学Santa Cruz分校的Sage Weil(DreamHost的联合创始人)专为博士论文设计的新一代自由软件分布式文件系统。自2007年毕业之后,Sage开始全职投入到Ceph开 发...

王练
2016/12/13
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux 运行shell文件,出现 $'\r': command not found

运行编写的shell脚本时,出现了 $'\\r': command not found 这样的错误提示。 报错的原因是我们在windows系统操作时,编辑器里的换行符是\r\n ,而Linux上为\n,两个系统之间有差异导致的。 ...

芥末无敌
今天
10
0
Java数据结构(上)

枚举(Enumeration) 位集合(BitSet) 向量(Vector) 栈(Stack) 1.Enumeration(枚举) boolean hasMoreElements( ):测试是否有更多的元素 Object nextElement( ):如果此枚举对象至少还...

Firefly-
昨天
18
0
vue 跨层组件通讯 provide inject

https://cn.vuejs.org/v2/api/#provide-inject 类型: provide:Object | () => Object inject:Array<string> | { [key: string]: string | Symbol | Object } 详细: provide 和 inject 主......

阿豪boy
昨天
14
0
黑马程序员面试宝典(Java)Beta6.0免费下载

场景 JavaSE基础 面向对象特征以及理解 访问权限修饰符区别 理解clone对象 JavaSE语法 java有没有goto语句 &和&&的区别 如何跳出当前的多重嵌套循环? 是否可以继承String? 重载与重写的区别...

badaoliumang
昨天
14
0
监控linux系统状态

查看系统负载: w/uptime 最后面三个数字表示1分钟,5分钟,15分钟平均有多少个进程占用CPU 占用CPU的进程可以是Running,也可以是Waiting 某一时刻1颗CPU只能有一个进程在使用其资源 #查看c...

asnfuy
昨天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部