天天看点

Ceph介绍(一):基本原理

转载;开源社区的明星项目—Ceph谈

前言

启迪云作为一家知名私有云提供商,面向客户提供一套完整的私有云解决方案。存储作为私有云的重中之重,因此启迪云后端也支持多种存储,包括开源社区的明星项目—Ceph。

启迪云与Ceph实现了无缝对接,不仅优化了原有的功能,而且增加了启迪云特有的定制化的功能,为用户数据提供了可靠性、易用性、一致性。

简介

诞生于2006年的Ceph,是开源社区的明星项目,也是私有云事实上的标准-OpenStack的默认存储后端。

Ceph是一种软件定义存储,可以运行在几乎所有主流的Linux发行版(比如CentOS和Ubuntu)和其它类UNIX操作系统(典型如FreeBSD)。

Ceph的分布式基因使其可以轻易管理成百上千个节点、PB级及以上存储容量的大规模集群,同时基于计算的扁平寻址设计使得Ceph客户端可以直接和服务端的任意节点通信,从而避免因为存在访问热点而导致性能瓶颈。

Ceph是一个统一存储系统,即支持传统的块、文件存储协议,例如SAN和NAS;也支持对象存储协议,例如S3和Swift。

Ceph介绍(一):基本原理

❖ Ceph和存储的未来

所有存储系统的要求都是统一、分布式、可靠、高性能且能够大规模扩展至艾字节,甚至更高级别。Ceph存储系统是一个真正的解决方案,它可以应对这个星球上爆炸式增长的数据。其统一、分布式、高性价比和可扩展的特性使它成为满足今天和将来数据存储需求的潜在解决方案。

Ceph介绍(一):基本原理

❖ Ceph云存储解决方案

所有想在存储基础设施上省钱的用户最有可能很快就考虑采用软件定义存储(SDS)。SDS可以为在传统存储上有大投入但仍然没有获得必要的灵活性和扩展性的用户提供一个很好的解决方案。Ceph是一个真正的SDS解决方案,它可以从软件层面正确提供所有的企业级存储特性。低成本、可靠性、可扩展性是Ceph的主要特点。

❖ Ceph统一存储解决方案

从存储厂商的角度来看,统一存储的定义就是在单一的平台上同时提供基于文件和基于块的访问。企业存储环境在单一平台提供NAS和SAN。

在Ceph中,统一存储这个词涵盖的功能比现在的存储厂商所声称的更多。Ceph是一个真正的统一存储解决方案,它从单一统一软件层提供对象、块和文件存储。

在传统基于文件的存储系统中,文件是通过文件目录进行寻址的。相类似,Ceph中的对象通过唯一的标识符进行寻址,并存储在一个扁平的寻址空间中。剔除了元数据操作之后,对象提供了无限的规模扩展和性能提升。Ceph通过一个算法来动态计算存储和获取某个对象的位置。

下一代架构

传统的存储系统并不具备更智能地管理元数据的方法。传统的存储系统通过维护一张集中的查找表来跟踪它们的元数据。客户端每次发出读写操作请求时,存储系统首先要查找这个巨大的元数据表,得到结果之后它才能执行客户端请求的操作。对于一个小的存储系统而言,也许不会感觉到性能问题,但对于一个大的存储集群来说,你将会受制于这种方法的性能限制,也会限制系统的扩展性。

Ceph引入了一个叫CRUSH的新算法,而不是保存和操纵元数据。

CRUSH是Controlled Replication Under Scalable Hashing的缩写,CRUSH算法在后台计算数据存储和读取的位置,而不是为每个客户端请求执行元数据表的查找。通过动态计算元数据,不需要管理一个集中式的元数据表。

CRUSH使得Ceph能够自我管理和自我治愈。当故障区域中的组件故障时,CRUSH能够感知哪个组件故障了,并确定其对集群的影响。无须管理员的任何干预,CRUSH就会进行自我管理和自我疗愈,为因故障而丢失的数据执行恢复操作。

使用CRUSH,我们能够设计一个没有单点故障的高度可靠的存储基础设施。它也使得Ceph成为一个面向未来的高度可扩展和可靠的存储系统。

兼容性组合

Ceph是一个完备的企业级存储系统,它支持多种协议以及访问方式。这个统一的存储支持Ceph块、文件和对象存储。

Ceph块存储

块存储是存储区域网络中使用的一个数据存储类别。

在这种类型中,数据以块的形式存储在卷里,卷会挂接到节点上。这些块形成的卷会映射到操作系统中,并被文件系统层控制。

Ceph引入了一个新的RBD协议,也就是Ceph块设备。RBD为客户端提供了可靠、分布式、高性能的块存储。RBD已经被Linux内核支持,几乎所有的Linux操作系统发行版都支持RBD。除了可靠性和性能之外,RBD也支持其他的企业级特性,如完整和增量式快照,精简的配置,写时复制式克隆以及全内存是缓存。

Ceph RBD支持的最大镜像为16EB。这些镜像可以作为磁盘映射到物理机裸机、虚拟机或者其他主机用。业界领先的开源hypervisor,例如KVM和Xen完全支持RBD。

Ceph介绍(一):基本原理

Ceph文件系统

Ceph文件系统(也就是CephFS)是一个兼容POSIX的文件系统,利用Ceph存储集群来保存用户数据。Linux内核驱动程序支持CephFS,这也使得CephFS高度适用于各大Linux操作系统发行版。CephFS将数据和元数据分开存储,为上层的应用程序提供较高的性能以及可靠性。

在Ceph集群内部,Ceph文件系统库(libcephfs)运行在RADOS库(librados)之上,后者是Ceph存储集群协议,由文件、块和对象存储共用。要使用CephFS,集群节点上最少要配置一个Ceph元数据服务器(MDS),客户端可以采用多种方式使用CephFS。

如果要把Ceph挂在成文件系统,客户端可以使用本地Linux内核的功能或者使用Ceph社区提供的ceph-fuse驱动。

除此之外,客户端可以使用第三方开源程序,例如NFS的ganesha和SMB/CIFS的Samba。这些程序通过libcephfs将用户数据存入可靠的分布式Ceph存储集群。CephFS可以用来替代HDFS。也是通过libcephfs组件将数据存入Ceph集群。为了无缝实现这个功能,Ceph社区为Hadoop和Hadoop插件提供了必要的CephFS Java接口。

Ceph介绍(一):基本原理

Ceph对象存储

对象存储是一种以对象形式而不是传统文件和块形式存储数据的方法。基于对象的存储已经引起了行业界的大量关注。为灵活地使用它们的巨量数据,这些组织正快速采用对象存储解决方案。

Ceph介绍(一):基本原理

Ceph是一个分布式对象存储系统,通过它的对象网关(object gateway),也就是RADOS网关(radosgw)提供对象存储接口。RADOS网关利用librgw(RADOS网关库)和librados这些库,允许应用程序跟Ceph对象存储建立连接。Ceph通过RESTful API提供可访问且最稳定的多租户对象存储解决方案之一。

RADOS网关提供RESTful接口让用户的应用程序将数据存储到Ceph集群中。RADOS网关接口满足一下特点:

兼容Swift:为OpenStack Swift API提供的对象存储功能;

兼容S3:为Amazon S3 API提供的对象存储功能;

Admin API:这也称为管理API或者原生API,应用程序可以直接使用它来获取访问存储系统的权限以管理存储系统。

要访问Ceph的对象存储系统,也可以绕开RADOS网关层,librados软件库允许用户的应用程序通过C、C++、Java、Python和PHP直接访问Ceph对象存储。

Ceph介绍(一):基本原理

总结

以上是对Ceph的整体框架做了一些介绍,后续我们将对里面的技术细节进行详细的讨论。