一、Ceph概述

1、Ceph简介

    Ceph是可靠的、可扩展的、统一的、分布式存储系统。Ceph可以同时提供对象存储RADOSGW(Reliable Autonomic Distributed Object Strorage Gateway)、块存储RBD(Rados Block Device)、文件系统存储CephFS(Ceph FileSystem) 3种功能,以满足不同需求。

    Ceph消除了对系统单一中心节点的依赖,从而实现可真正的无中心节点结果的设计思想,这种设计思想是其他分布式存储系统所不能相比的。

     Ceph之所以能那么火,与OpenStack有莫大的关系;OpenStack是目前比较流行的开源云管理平台;OpenStack与Ceph的集成已成为开源云平台的标配。


2、Ceph设计思想:

  • 每个组件可线性扩展
  • 无任何单点故障
  • 解决方案必须是基于软件的、开源的、适应性强的
  • 运行在现有商业硬件之上,商业硬件一般是指x86服务器
  • 每个组件必须尽可能拥有自我管理和自我修复功能
     高可用性指的是系统某个组件失效后,系统依然可以提供正常的服务的功能。可以采用设备部件和数据冗余来提高可靠性。在Ceph集群中可通过数据多副本、纠删码这两种方式提供数据冗余。

   可线性扩展指的是可以灵活的应对集群伸缩。这里可以指两方面:

1、指集群的存储容量可以伸缩、可以任意添加、删除存储节点和存储设备;

2、指系统的性能随集群的扩充而线性增加。

3、Ceph的发展史

   Ceph的创始人是Sage Weil

2004年 Ceph项目诞生并提交了第一行代码

2006年Sage发表Ceph论文,并提供了项目下周链接

2010年Linus Torvalds将Ceph Client合并到内核2.6.34中,使Linux与Ceph磨合度更高

2012年投入OpenStack怀抱,进入Cinder项目,使其成为重要的存储驱动

2014年Ceph正赶上OpenStack的大浪潮;被Red Hat公司收购

2015年RedHat成立Ceph顾问委员会;Ceph顾问委员会负责定义存储项目的广泛议题,目标是使Ceph成为云存储系统

2016年OpenStack社区调查报告公布,Ceph任为存储首选。

4、Ceph应用场景

  Ceph可以提供对象存储、块设备存储和文件系统存储,其对象存储可以对接网盘应用业务;其块设备可以对接IaaS云平台软件。IaaS云平台软件包括:OpenStack、CloudStack、Zstack等;其文件系统存储目前还未成熟,官方不建议在生产环境中使用。

5、Ceph生态圈

Ceph作为开源项目,遵循LGPL协议,使用C++语言开发 目前Ceph社区超过40个公司上百名开发者贡献代码。

6、Ceph发行版本

Ceph正处于持续开发、快速发展中。2012年7月3日 发布第一个LTS版本,此后陆续发布了9个新版本。ceph版本被分为LTS(长期稳定版)以及开发版。ceph每隔一段时间就会发布一个长期稳定版。版本发行如下表:

UKmdkL4JqSWmnCAI9EhMuRJ0X8DciIDN8X+itMmH2nv1LgAAAABJRU5ErkJggg==

目前最新版本为12.1

二、功能组件

Ceph提供了RADOS、OSD、MON、LIBRADOS、RBD、RGW和CephFS等功能组件;组件架构如下图所示:

image

根据上面组件架构图从上往下对各个组件进行逐一介绍:

  由于Ceph是一个统一的分布式存储系统,因此它包含了不同的客户端接口,主要体现在这3种功能形式:块存储(RBD)、对象存储(RGW)、文件系统(CephFS);每一个功能其接口方式也不一样。

1、RBD(块存储服务)

RBD是Ceph存储中的块设备,用于提供持久存储;它是自动精简模式并可以调整大小的,数据分散存储在多个OSD上。RBD服务已经被封装到成基于Librados的一个原生接口。

  RBD(Rados Block Device)是通过Librbd库对应用提供块存储,主要用途是为云平台环境中的虚拟机提供虚拟磁盘;传统SAN存储就是块存储,通过iSCSI或者FC接口给应用提供独立的LUN或者Volume。因此RBD与存储SAN存储类似,都是提供块级别的访问模式。

  目前RBD主要提供了两种接口方式:一种是直接在用户态模式实现,通过QEMU驱动为KVM虚拟机使用;另一种则是在Linux操作系统内核加载了RBD内核模块,可以通过该模块可以把RBD设备直接映射给物理服务,使物理服务器直接对RBD块设备进行读写操作。

  RBD设备一般主要用作虚拟机的虚拟硬盘,因此对I/O的要求同物理磁盘是一致的;要求能应付大文件的读写,也能处理好小文件的读写。因此RBD设备既要求有较好的随机I/O;又要求有较好的顺序I/O;同时根据不同应用需求对响应延时也有较高的要求。

2、RGW(对象存储网关)

RadosGW基于Librados提供了Amazon S3接口和OpenStack Swift接口兼容的对象存储接口。可以简单的理解为文件或者对象的上传、下载需求。RadosGW客户端接有两个特点:

1、提供RESTful Web API接口

这种方式提供了简单的GET、PUT、DEL等其他接口,可对对应的对象文件进行上传、下载、删除、查询等操作,因此对象存储的I/O访问模型都是顺序I/O。

2、采用扁平的数据组织形式

  在描述扁平数据组织形式前先了解一下传统NAS存储的组织模式,NAS存储提供给应用的是一个文件系统或者是一个文件夹,如:ZFS文件系统;NFS\CIFS服务都是提供的文件夹的形式。其本质上是一个层级化的树状存储组织模式,其层级和规模程度理论上看来是不受限制的。

  然而随着存储系统规模逐渐扩大,特别是处于当下的云存储时代,其扩展性的缺点就暴露出来了。与传统NAS存储相比,对象存储放弃目录树结构,而采用了扁平化组织结构(一般为3级组织结构),采用这种组织结构有利于实现存储容量的横向扩展。

Amazon对象存储

  谈到对象存储不得不提及Amazon在云存储领域的影响力,Amazon的S3接口已经成为对象存储的标准接口。它的结构如下图:

通过上面的图可以看出存储架构分为了3个层级分别为:Account、Bucket、Object其意思:账户、桶、对象

一个Account可以看作一个用户或者租户,下面包含N个Bucket;而一个Bucket拥有N个对象,且数量不受限制。

OpenStack对象存储

  OpenStack在云计算领域广泛应用,其对象存储接口为Swift,同样也采用3级存储模式:Account、Container、Object(账户、容器、对象);每层节点数量均没有限制。Swift接口和S3接口类似。Swift中的Container对应S3中的Bucket概念,别的没有太大区别。

3、CephFS

CephFS通过在RADOS基础上增加了MDS(Metadata Server)来提供文件存储。它提供了libcephfs库和标准的POSIX文件接口。相比CephFS类似NAS存储,通过NFS、CIFS协议提供文件系统或者文件目录服务,目前稳定性还有待提升,可用于生成环境的最新版本Jewel版本的CephFS为主从模式的元数据服务器。

4、Librados

Librados库为PHP、Ruby、Java、Python、C和C++这些编程语言提供了访问接口。

5、RADOS

RADOS是ceph存储系统的基石,是一个可扩展、稳定的、自我管理的、自我修复的对象存储系统,是ceph存储系统的核心。主要包含这些功能:

1、通过CRUSH算法实现对象的寻址过程,完成对象的读写以及其他数据功能

2、通过Monitor模块为整个存储集群提供全局的配置和系统信息

3、提供数据均衡功能

4、通过Peering过程完成一个PG达成数据一致性过程

5、提供数据自动恢复功能

6、提供克隆、快照功能

7、提供对象分层存储功能

8、实现了数据一致性检查工具Scrub

6、Moniter(MON)

  Ceph Moniter是一个独立部署的Daemon进程,通过保存一份集群状态映射来维护整个集群的健康状态。它为每个组件维护隐射信息,其中包含OSDmap、MONmap、PGmap、CRUSHmap。所有集群节点都向MON节点汇报状态信息,并分享他们的状态信息;Monitor集群通过Paxos算法实现了自己数据的一致性。

Cluster Map保存了系统的全局信息:

Monitor Map

包括集群fsid

所有Monitor的地址和端口

Current epoch

OSD Map:所有OSD的列表和OSD状态

MDS Map:所有MDS的列表和状态

7、MDS(Metadata Server)

主要保存的是Ceph文件系统的元数据。Ceph MDS基于POSIX文件系统的用户提供了基础命令。

三、设计思想

Ceph设计思想

透过ceph设计思想可以得出ceph的技术特性,总体表现在:集群可靠性、集群扩展性、数据安全性、接口统一性这个四个方面。

集群可靠性

首先从用户角度来数据安全是第一位的,要尽可能保证数据不会丢失;其次就是数据写入过程中的可靠性,在用户数据写入Ceph存储系统的过程中,不会因意外情况导致数据丢失。最后是降低不可控物理因素的可靠性,避免因机器断电等因素产生的数据丢失。

集群可扩展性

即包括系统规模、存储容量的可扩展,同时也包括随着系统、节点的聚合数据访问带宽线性扩展。

数据安全性

首先保证由于服务器死机或者停电等因素不会导致数据丢失,并且支持数据自动恢复,自动平衡。即保证了系统的高度可靠和数据的安全,又保证了在系统规模扩大之后运维难度保持在相对低的水平。

接口统一

在前面的章节已经给出答案了,Ceph目前可以支持3种类型存储接口:块存储、对象存储、文件系统存储。

设计思想归纳

根据前面介绍ceph存储系统设计思想主要体现两大点:

1、发挥存储硬件自身计算能力,充分理由硬件资源,减少投资浪费

2、去中心点,增强可靠性、消除单点故障。