一. ceph

随着OpenStack日渐成为开源云计算的标准软件栈,Ceph也已经成为OpenStack的首选后端存储。Ceph是一种为优秀的性能、可靠性和可扩展性而设计的

统一的、分布式文件系统。
ceph官方文档http://docs.ceph.org.cn/
ceph中文开源社区http://ceph.org.cn/

Ceph是一个开源的分布式文件系统。因为它还支持块存储、对象存储,所以很自然的被用做云计算框架openstack或cloudstack整个存储后端。当然也可以
单独作为存储,例如部署一套

1.1 ceph支持

1、对象存储:即radosgw,兼容S3接口。通过rest api上传、下载文件。

2、文件系统:posix接口。可以将ceph集群看做一个共享文件系统挂载到本地。

3、块存储:即rbd。有kernel rbd和librbd两种使用方式。支持快照、克隆。相当于一块硬盘挂到本地,用法和用途和硬盘一样。比如在OpenStack项目
里,Ceph的块设备存储可以对接OpenStack的后端存储

1.2 Ceph相比其它分布式存储有哪些优点?

1、统一存储
虽然ceph底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口。所以在开源存储软件中,能够一统江湖。至于能不能千秋万代,就不
知了。
2、高扩展性
扩容方便、容量大。能够管理上千台服务器、EB级的容量。
3、可靠性强
支持多份强一致性副本,EC。副本能够垮主机、机架、机房、数据中心存放。所以安全可靠。存储节点可以自管理、自动修复。无单点故障,容错性
强。
4、高性能
因为是多个副本,因此在读写操作时候能够做到高度并行化。理论上,节点越多,整个集群的IOPS和吞吐量越高。另外一点ceph客户端读写数据直接与
存储设备(osd) 交互。

1.3 Ceph各组件介绍:

Ceph OSDs: Ceph OSD 守护进程( Ceph OSD )的功能是存储数据,处理数据的复制、恢复、回填、再均衡,并通过检查其他OSD 守护进程的
心跳来向 Ceph Monitors 提供一些监控信息。当 Ceph 存储集群设定为有2个副本时,至少需要2个 OSD 守护进程,集群才能达
到active+clean 状态( Ceph 默认有3个副本,但你可以调整副本数)。
Monitors: Ceph Monitor维护着展示集群状态的各种图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。 Ceph 保存着发生
在Monitors 、 OSD 和 PG上的每一次状态变更的历史信息(称为 epoch )。
MDSs: Ceph 元数据服务器( MDS )为Ceph 文件系统存储元数据(也就是说,Ceph 块设备和 Ceph 对象存储不使用MDS )。元数据服务器使
得 POSIX 文件系统的用户们,可以在不对 Ceph 存储集群造成负担的前提下,执行诸如ls、find 等基本命令。

二. ceph集群部署实验

test1 10.1.1.1 admin, mon作为管理和监控节点
test2 10.1.1.2 osd,mds
test3 10.1.1.3 osd,mds
test4 10.1.1.4 osd,mds
test5 10.1.1.5 client

test1作管理. mon节点; test2和test3和test4作osd mds; test5客户端
增加一块硬盘/dev/sdb实验, 创建目录并挂载到/var/local/osd{0,1,2}

[root@test2 ~]# mkfs.xfs /dev/sdb
[root@test2 ~]# mount /dev/sdb /var/local/osd0/
[root@test3 ~]# mkfs.xfs /dev/sdb
[root@test3 ~]# mount /dev/sdb /var/local/osd1/
[root@test4 ~]# mkfs.xfs /dev/sdb
[root@test4 ~]# mount /dev/sdb /var/local/osd2/

2.2 编辑hosts文件

(规范系统主机名添加hosts文件实现集群主机名与主机名之间相互能够解析(host 文件添加主机名不要使用fqdn方式)可用hostnamectl set-hostname name设置
分别打开各节点的/etc/hosts文件,加入这四个节点ip与名称的对应关系
10.1.1.1 test1
10.1.1.2 test2
10.1.1.3 test3
10.1.1.4 test4
10.1.1.5 test5

2.3 SSH免密码登录

在管理节点使用ssh-keygen 生成ssh keys 发布到各节点
[root@test1 ~]# ssh-keygen #所有的输入选项都直接回车生成。

2.4 管理节点安装ceph-deploy工具

a .增加163源

[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/x86_64
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
priority=1

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
priority=1

b. 安装

[root@test1 ~]# yum install ceph-deplo

c. 创建monitor服务

[root@test1 ~]# mkdir /etc/ceph && cd /etc/ceph
[root@test1 ceph]# ceph-deploy new xuegod67 #mon安装在xuegod67节点
[root@test1 ceph]# ls #生成配置文件在当前目录下
ceph.conf ceph.log ceph.mon.keyring
Ceph配置文件、一个monitor密钥环和一个日志文件

d 在所有节点安装ceph

[root@test1 ceph]# ceph-deploy install test1 test2 test3 test4 test5
(如果网络源安装失败,手工安装epel-release 再yum -y install ceph ceph-radosgw)

a