Ceph分布式存储工作原理及部署
存储根据其类型,可分为块存储,对象存储和文件存储。在主流的分布式存储技术中,HDFS/GPFS/GFS属于文件存储,Swift属于对象存储,而Ceph可支持块存储、对象存储和文件存储,故称为统一存储。
一、Ceph 基本介绍 Ceph是一个分布式存储系统,诞生于2004年,最早致力于开发下一代高性能分布式文件系统的项目。经过多年的发展之后,已得到众多云计算和存储厂商的支持,成为应用最广泛的开源分布式存储平台。随着云计算的发展,ceph乘上了OpenStack的春风,进而成为了开源社区受关注较高的项目之一。Ceph可以将多台服务器组成一个超大集群,把这些机器中的磁盘资源整合到一块儿,形成一个大的资源池(PB级别),然后按需分配给应用使用。
背景:
ceph 的成功是云计算的快速崛起的产物,存储系统是云计算中最基础,也是最底层的技术之一。流行的存储技术中满足开源,分布式,统一存储这三个特点的存储系统并不多,ceph完全满足这样的条件。
1.1 概念
https://ceph.com/en/discover/
Ceph 是存储的未来;在传统系统无法实现的情况下,Ceph 被设计为卓越。通过可扩展、智能、可靠和高度可用的存储软件,利用您的数据做出更好的业务决策,并实现卓越运营。Ceph 支持对象、块和文件存储,所有这些都在一个统一的存储系统中。
Ceph 是一个开源的分布式存储系统。
Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件存储系统。
其命名和UCSC(University of California,Santa Cruz加利福尼亚大学圣克鲁斯分校 Ceph 的诞生地)的吉祥物有关,这个吉祥物是 “Sammy”,一个香蕉色的蛞蝓,就是头足类中无壳的软体动物。这些有多触角的头足类动物,是对一个分布式文件系统高度并行的形象比喻。
1.2 好处(特点)
https://ceph.com/en/discover/
高可扩展性:
去中心化,支持使用普通X86服务器(对硬件没有要求),支持上千个存储节点的规模,支持TB到EB(TB,PB,EB)级的扩展。
高可靠性:
没有单点故障,多数据副本,自动管理,自动修复。。
高性能:
摒弃了传统的集中式存储元数据寻址的方案,采用 CRUSH(Controlled Replication Under Scalable Hashing可扩展哈希下的受控复制) 算法,数据(被分割的文件)分布均衡,并行度高。
统一存储(科技含量高):
Ceph 为所有数据存储提供了灵活的基础,将对象、块和文件类型统一到一个统一的 RADOS 集群中。对于具有多种存储类型需求的企业,Ceph 提供了简化、灵活的解决方案。
开源:
自成立以来,Ceph 一直倡导开源贡献、开发和创新。我们的开源理念是自由和全球性的努力,所有人都可以访问和改变。
二 .Ceph核心组件及概念介绍
RADOS
RADOS全称:Reliable可靠的 Autonomic自主 Distributed分布式 Object对象 Store存储,是Ceph分布式文件系统的核心之一,它专为Ceph的需求设计,提供了稳定、可扩展、高性能的单一逻辑对象(Object)存储接口,并实现了节点的自适应和自管理。
Monitor(mon)
必要组件,主要负责集群状态的监控和管理;并存储和管理集群的元数据,其中包含了OSD Map(OSD映射)、MON Map(MON映射)、PG Map(放置组映射)和CRUSH Map(可控复制和可扩展哈希映射)等关键信息。确保只有经过授权的客户端才能访问集群中的数据。最少3个,推荐是奇数个3,5,7...
OSD
必要组件,OSD全称Object Storage Daemon,是Ceph集群中的核心进程,负责将磁盘视为对象存储的基本单位。一个Ceph集群一般都有很多个OSD。一个OSD不是一个主机,是一个主机上的一个磁盘。一个磁盘需要一个OSD进程管理,所以一个机上如果有多个磁盘,就有多个OSD。OSD可以处理数据复制(主->从),重新发现,重新负载均衡,提供监视信息给Monitors和Managers。
Manager(MGR)
必要组件,新版Ceph Luminous版本(2017年)引入,它主要负责集群的监控、管理和维护。分担和扩展monitor的部分功能,以减轻monitor的负担。本身不存储数据。一般冗余一份,推荐2个或者以上。
Pool
Pool是Ceph中用于存储Object对象的逻辑分组池,可以看作是对存储对象进行管理和分配的单位。每个Pool可以包含多个PG,并可以配置不同的复制因子(一个对象保存几份)、存储策略和调度算法,以满足不同的存储需求。RBD,RGW,CephFS都可以有自己的存储池。
PG
PG全称Placement Groups(安置小组),是Ceph中用于管理数据和分配存储空间的基本单位。它负责将数据均匀分布在集群中的各个OSD(Object Storage Device)上,以实现数据的副本和恢复。
Librados
Librados是Ceph的底层客户端库,它封装了与Ceph集群交互的复杂逻辑,使得上层应用能够更加方便地访问Ceph存储系统。因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供C和C++、Java、Python、PHP、Ruby支持。
RBD
RBD全称RADOS block device,是Ceph对外提供的块设备服务。后来者居上,使用最广泛,最频繁的最稳定的接口。映射内核,被识别为dev下某一个设备,然后格式化,分区,挂载使用。
RGW
RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。提供http或者https协议的支持,使用这种协议的客户端,都可以使用该接口。
Amazon S3 是亚马逊网络服务 (AWS) 提供的一种基于云的对象存储服务。
OpenStack Swift 是开源云计算平台 OpenStack 中的对象存储组件。
CephFS全称Ceph File System,是Ceph对外提供的文件系统服务。最早出现的,不依赖于librados,可以直接连接rados集群使用,但是最后才到生产环境中使用的。
MDS(MetaData Server)
MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。用Ceph文件系统(File System)时使用。也需要多个节点冗余 。对于对象存储和块存储设备来说,MDS并不是必需的。
Object
Ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据。
CRUSH
CRUSH算法是Ceph分布式存储系统中的核心算法之一,它通过伪随机的方式实现数据的智能分布和负载均衡,为大规模分布式存储系统提供了高性能、高可靠性和高扩展性的存储解决方案
Admin Host
Ceph Admin Host是专门用于执行Ceph集群管理操作的节点。它可以是集群中的一个物理或虚拟服务器,也可以是独立于集群之外的单独设备。Admin Host通过一组命令行工具(如ceph、rados、rbd等)来管理Ceph集群,包括集群的初始化、配置、监控、故障恢复等。
三.Ceph的特点
Ceph支持对象存储、块存储和文件存储服务,故称为统一存储。采用CRUSH算法,数据分布均衡,并行度高,不需要维护固定的元数据结构; 数据具有强一致,确保所有副本写入完成才返回确认,适合读多写少场景; 去中心化,MDS之间地位相同,无固定的中心节点
Ceph存在一些缺点
a)去中心化的分布式解决方案,需要提前做好规划设计,对技术团队的要求能力比较高。
b)Ceph扩容时,由于其数据分布均衡的特性,会导致整个存储系统性能的下降。
Ceph相比于其他存储方案的优势
CRUSH算法:Crush算法是ceph的两大创新之一,简单来说,Ceph摒弃了传统的集中式存储元数据寻址的方案,转而使用CRUSH算法完成数据的寻址操作。CRUSH在一致性哈希基础上很好的考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。Crush算法有相当强大的扩展性,理论上支持数千个存储节点。
高可用:Ceph中的数据副本数量可以由管理员自行定义,并可以通过CRUSH算法指定副本的物理存储位置以分隔故障域,支持数据强一致性; Ceph可以忍受多种故障场景并自动尝试并行修复;Ceph支持多份强一致性副本,副本能够垮主机、机架、机房、数据中心存放。所以安全可靠。Ceph存储节点可以自管理、自动修复。无单点故障,容错性强。
高性能:因为是多个副本,因此在读写操作时候能够做到高度并行化。理论上,节点越多,整个集群的IOPS和吞吐量越高。另外一点Ceph客户端读写数据直接与存储设备(osd) 交互。在块存储和对象存储中无需元数据服务器。
高扩展性:Ceph不同于Swift,客户端所有的读写操作都要经过代理节点。一旦集群并发量增大时,代理节点很容易成为单点瓶颈。Ceph本身并没有主控节点,扩展起来比较容易,并且理论上,它的性能会随着磁盘数量的增加而线性增长。Ceph扩容方便、容量大。能够管理上千台服务器、EB级的容量。
特性丰富:Ceph支持三种调用接口:对象存储,块存储,文件系统挂载。三种方式可以一同使用。在国内一些公司的云环境中,通常会采用Ceph作为openstack的唯一后端存储来提升数据转发效率。Ceph是统一存储,虽然它底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口,所以在开源存储软件中,优势很明显。
Ceph提供3种存储方式分别是对象存储,块存储和文件系统,一般我们主要关心的还是块存储,推荐将虚拟机后端存储从SAN过渡到Ceph。Ceph 现在是云计算、虚拟机部署的最火开源存储解决方案,据统计大概有20%的OpenStack部署存储用的都是Ceph的block storage。
四.Ceph架构详解
Ceph根据场景可分为对象存储、块设备存储和文件存储。Ceph相比其它分布式存储技术,其优势点在于:它不单是存储,同时还充分利用了存储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡。同时,由于采用了CRUSH、HASH等算法,使得它不存在传统的单点故障,且随着规模的扩大,性能并不会受到影响。

Ceph的底层是RADOS,RADOS本身也是分布式存储系统,CEPH所有的存储功能都是基于RADOS实现。RADOS采用C++开发,所提供的原生Librados API包括C和C++两种。Ceph的上层应用调用本机上的librados API,再由后者通过socket与RADOS集群中的其他节点通信并完成各种操作。
RADOS向外界暴露了调用接口,即LibRADOS,应用程序只需要调用LibRADOS的接口,就可以操纵Ceph了。这其中,RADOS GW用于对象存储,RBD用于块存储,它们都属于LibRADOS;CephFS是内核态程序,向外界提供了POSIX接口,用户可以通过客户端直接挂载使用。
RADOS GateWay、RBD其作用是在librados库的基础上提供抽象层次更高、更便于应用或客户端使用的上层接口。其中,RADOS GW是一个提供与Amazon S3和Swift兼容的RESTful API的gateway,以供相应的对象存储应用开发使用。RBD则提供了一个标准的块设备接口,常用于在虚拟化的场景下为虚拟机创建volume。目前,Red Hat已经将RBD驱动集成在KVM/QEMU中,以提高虚拟机访问性能。这两种方式目前在云计算中应用的比较多。
CEPHFS则提供了POSIX接口,用户可直接通过客户端挂载使用。它是内核态程序,所以无需调用用户空间的librados库。它通过内核中net模块来与Rados进行交互。
- 点赞
- 收藏
- 关注作者
评论(0)