一、Ceph概述
1、背景
Ceph 是一个去中心化的分布式存储系统, 提供较好的性能、可靠性和可扩展性。 Ceph 项目最早起源于Sage就读博士期间的工作(最早的成果于 2004 年发表),并随后贡献给开源社区, 遵循 LGPL 协议 (LESSER GENERAL PUBLIC LICENSE 的简写,中文译为 “ 较宽松公共许可证 ” )。在经过了数年的发展之后,目前已得到众多云计算厂商(OpenStack 、 CloudStack 、 OpenNebula 、 Hadoop )的支持并被广泛应用。
2、介绍
Ceph 是一个可靠、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将 Ceph 分为三大块,分别是对象存储、块设备和文件系统服务。
Ceph 的主要优点是分布式存储,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,不存在传统的单点故障的问题,可以水平扩展。
Ceph 存储集群至少需要一个 Ceph Monitor 和两个 OSD 守护进程。而运行 Ceph 文件系统客户端时,则必须要有元数据服务器(Metadata Server )。
3、特点
Ceph 适合跨集群的小文件存储, 拥有以下特点:
高性能
Client 和 Server 直接通信, 不需要代理和转发;
Client 不需要负责副本的复制, 有 Primary 主节点负责, 这样可以有效降低 clien 网络的消耗 ;
采用 CRUSH 算法,数据分布均衡,并行度高,支持上千个存储节点, 支持 TB 及 PB 级数据。
高可用性
数据多副本, 支持故障域分隔,数据强一致性;
没有单点故障,较好的容错性, 有效支撑各种故障场景;
支持所有故障的检测和自动恢复,可以做到自动化管理;
支持并行恢复,能够极大的降低数据恢复时间, 提高数据的可靠性。
高扩展性
高度并行化设计,没有单个中心控制组件,所有负载都能动态的划分到各个服务器上。
去中心化、灵活、随节点增加线性增长。
场景丰富
支持三种存储接口类型 : 块存储、文件存储、对象存储。 同时支持自定义接口, C++ 为底层实现, 兼容多种语言。
块存储: 将磁盘空间映射给主机使用, 适用 docker容器、虚拟机磁盘存储分配;日志存储, 文件存储。
文件存储: 解决块存储无法共享问题, 在服务器架设FTP和NFS服务器,适用目录结构的存储、日志存储等。
对象存储: 大容量硬盘, 安装存储管理软件, 对外提供读写访问能力, 具备块存储的高速读写能力, 也具备文件存储共享的特性; 适用图片存储或视频存储。
4、分布式存储系统横纵对比