前言:我是一个之前基本没有接触过Ceph的人,平时项目中只通过对象存储 S3 API向对象存储中存放数据,所以想学习下Ceph,网上许多文章都是从Ceph的原理讲起,对于没怎么实际操作和接触过的人来说比较抽象,故按照Ceph官网和Ceph Cookbook为蓝图进行Ceph集群的搭建,希望对Ceph有兴趣的朋友也可以跟着这个教程一步步来完成基本的搭建和使用操作。Ceph的搭建方式有很多种,本文选择了比较简单的Ceph deploy的方式,其它方式的部署请见Ceph官网。本文使用的Ceph集群版本如下:
一、如何搭建集群,我认为下面这篇文章介绍的比较详细,我也是按照下面文章的方式进行的实验,文章链接如下:
http://www.xuxiaopang.com/2016/10/09/ceph-quick-install-el7-jewel/
二、实验环境介绍
在一台物理服务器上通过virsh搭建了四台KVM虚拟机,如下图所示:
其中vm1,vm2,vm3用于部署Ceph集群,vm4用户部署Ceph的客户端,用来进行实验。
vm1-vm4之间通过xkxbr这个网桥进行相连,保证vm1-vm4网络都互相能通信,vm1-vm4均通过virbr0来访问外部网络,先贴出vm1的xml定义文件。
vm1
1048576
1048576
1
hvm
Broadwell-noTSX-IBRS
destroy
restart
destroy
/usr/libexec/qemu-kvm
整个环境网络拓扑图如下:
三、使用Ceph块存储
1.首先登陆vm4,查看操作系统对RBD的支持
2.要通过deploy给vm4安装客户端,那么需要使得vm1能够无密的登陆到vm4,前提是vm1上已经生成好了公钥。
3.在vm1上使用ceph-deploy工具把Ceph二进制程序安装到vm4
ceph-deploy --username root install vm4
4.将Ceph配置文件复制到vm4
5、为了方便,将vm1上面的权限文件拷贝到vm4上面(实际生产需要创建相应权限的用户)
6、创建Ceph块存储,并查看所创建rbd的信息
7、映射Ceph的块存储
进行rbd map的时候发现报错了,通过错误信息(rbd: image rbd1: image uses unsupported features: 0x38),搜索发现Ceph的rbd支撑许多特性,可以通过rbd info rbd1进行查看:
可能部分feature我的实验环境不支持,可以通过取消这些feature,操作如下:
rbd feature disable foo exclusive-lock, object-map, fast-diff, deep-flatten
接着进行映射后就正常了:
检查被映射的块设备:
8、创建并挂载一个文件系统
9、将数据写入块设备来进行检测
10、调整Ceph RBD大小
首先通过rbd resize对rbd进行大小调整
接着通过调整文件系统来增加存储空间
11、使用RBD快照
快照是在某时间点上生成的只读的RBD镜像副本
首先像文件系统中写入一个文件
创建快照并进行查询:
删除前面创建的文件
通过快照进行恢复,恢复完成后需要的重新进行挂载
12、使用RBD克隆
创建一个用于克隆的快照,并对快照进行保护。
进行克隆
克隆后进行信息查看,可以看到其父指向了快照
为了让镜像进行独立,需要将父镜像信息合并到子镜像,合并后再查看rbd信息,可以看到parent消失了
如果不在使用父镜像,可以再解除保护后可以移除它
四、使用Ceph对象存储(这里多弄一个vm5,用作部署RADOSGW)
1.首先生成了一个新的虚拟机vm5用于安装RADOS网关,同时通过cepy-deploy install vm5在vm5上安装了ceph软件包。
2.在vm1上通过ceph-deploy创建一个radosgw的实例,这时候在vm5上已经能够看到监听了7480端口
通过curl获取,可以查看到响应内容。
3.创建一个S3的Access User
4.在vm4上通过python脚本客户端来进行访问,创建bucket成功
五、使用CephFS
1、在创建CephFS之前需要创建两个pool,一个用户存储文件系统数据,一个用于存储文件系统元数据。
2、创建一个文件系统
3、查看mds的状态,对比官方文档给出的结果,好像这个状态没对,后来经过查询后发现,这时候需要建立mds的服务才行,于是运行下面服务(官网手册好像没有建立mds服务这步...)
于是再查看mds状态后进入正常,不然之后去挂载目录的时候会报错:
mount error 5 = Input/output error
4、在集群中创建一个用户允许访问CephFS池,然后通过ceph auth list查看该用户权限状态(注意:一定要添加mds的可写操作,不然在mount的时候会出现权限拒绝的报错)
5、在VM4上通过前面创建用户的密钥进行文件系统的挂载,挂载完成后如下图所示:
6、卸载和开机启动跟Linux中操作文件系统一样,这里不再赘述。