Ceph 概述
随着 OpenStack 日渐成为开源云计算的标准软件栈,Ceph 也已经成为 OpenStack 的首选后端存储。Ceph 是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。
ceph 官方文档 http://docs.ceph.org.cn/
ceph 中文开源社区 http://ceph.org.cn/
Ceph 是一个开源的分布式文件系统。因为它还支持块存储、对象存储,所以很自然的被用做云计算框架 openstack 或 cloudstack 整个存储后端。当然也可以单独作为存储,例如部署一套集群作为对象存储、SAN 存储、NAS 存储等。
ceph 支持
1、对象存储:即 radosgw,兼容 S3 接口。通过 rest api 上传、下载文件。
2、文件系统:posix 接口。可以将 ceph 集群看做一个共享文件系统挂载到本地。
3、块存储:即 rbd。有 kernel rbd 和 librbd 两种使用方式。支持快照、克隆。相当于一块硬盘挂到本地,用法和用途和硬盘一样。比如在 OpenStack 项目里,Ceph 的块设备存储可以对接OpenStack 的后端存储
Ceph 相比其它分布式存储有哪些优点?
1、统一存储
虽然 ceph 底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口。所以在开源存储软件中,能够一统江湖。至于能不能千秋万代,就不知了。
2、高扩展性
扩容方便、容量大。能够管理上千台服务器、EB 级的容量。
3、可靠性强
支持多份强一致性副本,EC。副本能够垮主机、机架、机房、数据中心存放。所以安全可靠。存储节点可以自动管理、自动修复。无单点故障,容错性强。
4、高性能
因为是多个副本,因此在读写操作时候能够做到高度并行化。理论上,节点越多,整个集群的IOPS 和吞吐量越高。另外一点 ceph 客户端读写数据直接与存储设备(osd) 交互。
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 集群部署实验
主机准备 (禁用 selinux, 关闭防火墙)
centos60 192.168.0.60 admin,osd, mon 作为管理和监控节点
centos70 192.168.0.70 osd,mds
centos80 192.168.0.80 osd,mds
centos90 192.168.0.90 client
前三台服务器增加一块硬盘/dev/sdb 实验, 创建目录并挂载到/var/local/osd{0,1,2}
[root@centos60 ~]# mkfs.xfs /dev/sdb -f -f是强制格式化
[root@centos60 ~]# mkdir /var/local/osd{0,1,2}
[root@centos60 ~]# mount /dev/sdb /var/local/osd0/
[root@centos70 ~]# mkfs.xfs /dev/sdb
[root@centos70 ~]# mkdir /var/local/osd{0,1,2}
[root@centos70 ~]# mount /dev/sdb /var/local/osd1/
[root@centos80 ~]# mkfs.xfs /dev/sdb
[root@centos80 ~]# mkdir /var/local/osd{0,1,2}
[root@centos80 ~]# mount /dev/sdb /var/local/osd2/
编辑 hosts 文件(所有节点需要操作):
可用 hostnamectl set-hostname name 设置主机名
vim /etc/hosts
192.168.0.50 centos50
192.168.0.6