专栏首页木二天空001.Ceph简介概述

001.Ceph简介概述

一 Ceph简介

Red Hat Ceph是一个分布式的数据对象存储,系统设计旨在性能、可靠性和可扩展性上能够提供优秀的存储服务。分布式对象存储是存储的未来,因为它们适应非结构化数据,并且客户端可以同时使用当前及传统的对象接口进行数据存取。例如:

  • 本地语言绑定接口(C/C++, Java, Python)
  • RESTful 接口(S3/Swift)
  • 块设备接口
  • 文件系统接口

Red Hat Ceph具有非常好的可扩展性——数以千计的客户端可以访问PB级到EB级甚至更多的数据。

二 Ceph优势及特点

2.1 Ceph优势

Ceph区别于其他文件系统(如glusterfs、swift等)主要具有以下优势:

  1. CRUSH算法

CRUSH算法运行在Ceph Clients和Ceph OSD上,用于计算对象的位置信息,它代替了传统的查表的思想,把工作分摊到所有Ceph Clients和Ceph OSD上,增强了弹性扩展和高可用性,是ceph的两大创新之一。ceph摒弃了传统的集中式存储元数据寻址的方案,而使用CRUSH算法完成数据的寻址操作。CRUSH在一致性哈希基础上很好的考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。Crush算法有相当强大的扩展性,理论上支持数千个存储节点。

  1. 高可用

Ceph中的数据副本数量可以由管理员自行定义,并可以通过CRUSH算法指定副本的物理存储位置以分隔故障域,支持数据强一致性;ceph可以忍受多种故障场景并自动尝试并行修复。

  1. 高扩展性

Ceph不同于swift,客户端所有的读写操作都要经过代理节点,一旦集群并发量增大时,代理节点很容易成为单点瓶颈。Ceph本身并没有主控节点,扩展起来比较容易,并且理论上,它的性能会随着磁盘数量的增加而线性增长。

  1. 特性丰富

Ceph支持三种调用接口:对象存储,块存储,文件系统挂载。三种方式可以一同使用。

2.2 Ceph特点

  1. 统一存储
  2. 无任何单点故障
  3. 数据多份冗余
  4. 存储容量可扩展
  5. 自动容错及故障自愈

三 体系架构

体系架构示意图(来源于官方):

3.1 RADOS

Ceph的底层核心为RADOS(Reliable, Autonomic Distributed Object Store),RADOS本身也是分布式存储系统,CEPH所有的存储功能都是基于RADOS实现。Ceph的上层应用调用本机上的librados API,再由后者通过socket与RADOS集群中的其他节点通信并完成各种操作。

Ceph的本质是一个对象存储。RADOS由两个组件组成:OSD和Monitor。

OSD主要提供存储资源,每一个disk、SSD、RAID group或者一个分区都可以成为一个OSD,而每个OSD还将负责向该对象的复杂节点分发和恢复;

Monitor维护Ceph集群并监控Ceph集群的全局状态,提供一致性的决策。

RADOS分发策略依赖于CRUSH(Controlled Replication Under Scalable Hashing)算法(基于可扩展哈希算法的可控复制)。

3.2 RADOS GW和RBD

RADOS GateWay、RBD其作用是在librados库的基础上提供抽象层次更高、更便于应用或客户端使用的上层接口。其中,RADOS GW是一个提供与Amazon S3和Swift兼容的RESTful API的gateway,以供相应的对象存储应用开发使用。

RBD则提供了一个标准的块设备接口,常用于在虚拟化的场景下为虚拟机创建volume。目前,Red Hat已经将RBD驱动集成于KVM/QEMU中,以提高虚拟机访问性能。这两种方式目前在云计算中应用的比较多。

3.3 CEPHFS

CEPHFS则提供了POSIX接口,用户可直接通过客户端挂载使用。它是内核态的程序,所以无需调用用户空间的librados库。它通过内核中的net模块来与Rados进行交互。

四 Ceph角色及原理

4.1 角色及作用

所有Ceph存储集群的部署都始于部署一个个Ceph节点、网络和Ceph存储集群。Ceph存储集群至少需要一个Ceph Monitor和两个OSD守护进程。而运行Ceph文件系统客户端时,则必须要有元数据服务器(Metadata Server)。

  • 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等基本命令。

4.2 存储通信机制

当一个OSD需要存储数据时(不管是来自Ceph块设备、Ceph对象存储、Ceph文件系统、还是基于librados的自定义实现),Ceph OSD在扁平的命名空间内把所有数据都存储为对象。

提示:对象包含一个标识符、二进制数据、和由名字/值对组成的元数据,元数据语义完全取决于Ceph客户端。例如,CephFS用元数据存储文件属性,如文件所有者、创建日期、最后修改日期等等。一个对象ID不止在本地唯一 ,它在整个集群内都是唯一的。

Ceph客户端维护对象ID和存储对象的存储池名称,但它们既不需要维护对象到OSD的索引,也不需要与一个集中的对象索引进行通信来查找数据对象的位置。

为了能够存储并获取数据,Ceph客户端首先会访问一台Ceph mon并得到最新的存储集群映射关系,然后Ceph客户端可以通过提供的对象名称与存储池名称,使用集群映射关系和CRUSH算法(可控的、可扩展的、分布式的副本数据放置算法)来计算出提供对象所在的归置组(PG)和主Ceph OSD。

最后,Ceph客户端连接到可执行读写操作的主OSD上进而达到数据的存储与获取。客户端和OSD之间没有中间服务器,中间件或总线。

五 Ceph应用场景

Ceph的应用场景主要由它的架构确定,Ceph提供对象存储、块存储和文件存储。

5.1 LIBRADOS应用

通俗理解,Librados提供了应用程序对RADOS的直接访问,目前Librados已经提供了对C、C++、Java、Python、Ruby和PHP的支持。它支持单个单项的原子操作,如同时更新数据和属性、CAS操作,同时有对象粒度的快照操作。它的实现是基于RADOS的插件API,也就是在RADOS上运行的封装库。

5.2 RADOSGW应用

此类场景基于Librados之上,增加了HTTP协议,提供RESTful接口并且兼容S3、Swfit接口。RADOSGW将Ceph集群作为分布式对象存储,对外提供服务。

5.3 RBD应用

此类场景也是基于Librados之上的,细分为下面两种应用场景。

第一种应用场景为虚拟机提供块设备。通过Librbd可以创建一个块设备(Container),然后通过QEMU/KVM附加到VM上。通过Container和VM的解耦,使得块设备可以被绑定到不同的VM上。

第二种应用场景为主机提供块设备。这种场景是传统意义上的理解的块存储。

以上两种方式都是将一个虚拟的块设备分片存储在RADOS中,都会利用数据条带化提高数据并行传输,都支持块设备的快照、COW(Copy-On-Write)克隆。最重要的是RBD还支持Live migration。

5.4 CephFS(Ceph文件系统)应用

此类场景是基于RADOS实现的PB级分布式文件系统,其中引入MDS(Meta Date Server),它主要为兼容POSIX文件系统提供元数据,比如文件目录和文件元数据。同时MDS会将元数据存储在RADOS中,这样元数据本身也达到了并行化,可以大大加快文件操作的速度。MDS本身不为Client提供数据文件,只为Client提供对元数据的操作。当Client打开一个文件时,会查询并更新MDS相应的元数据(如文件包括的对象信息),然后再根据提供的对象信息直接从RADOS中得到文件数据。

更多有趣知识可见:https://blog.csdn.net/sunhf_csdn/article/details/79797186

官方文档:http://docs.ceph.org.cn

参考:http://ceph.org.cn/2018/06/29/red-hat-ceph%E5%AD%98%E5%82%A8-%E3%80%8A%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3ceph%E6%9E%B6%E6%9E%84%E3%80%8B/

https://www.jianshu.com/p/25163032f57f

http://www.51niux.com/?id=161

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 004.NTP多层级架设

    Border-NTP:边界NTP服务器,用于同步外部时钟,同时对内部IN-NTP服务器提供校对;

    木二
  • 001.SQLServer高可用简介

    Windows故障转移群集是由多个服务器组成的共同提供某高可用服务,该服务用于防止单台服务器故障导致服务失效。故障转移群集是一种高可用性的基础结构层,由多台计算...

    木二
  • 009.Nginx缓存及配置

    缓存对于Web至关重要,尤其对于大型高负载Web站点。Nginx缓存可作为性能优化的一个重要手段,可以极大减轻后端服务器的负载。通常对于静态资源,即较少经常更新...

    木二
  • Ceph 基金会正式成立 接受 Linux 基金会的管理

    2018年11月12日,北京时间16:00,Linux基金会在德国柏林“Ceph Day”上正式宣布成立“Ceph基金会”来支持Ceph开源项目。Ceph基金会...

    Debian社区
  • SDNLAB技术分享(十七):Ceph在云英的实践

    大家好,我是云英负责存储的研发工程师,杨冠军,很高兴今天能在这里跟大家一起讨论分享下Ceph和Ceph在云英的实践。 首先我先介绍下,Ceph是什么,我们为什么...

    SDNLAB
  • 从传统运维到云运维演进历程之软件定义存储(一)

    运维是企业业务系统从规划、设计、实施、交付到运维的最后一个步骤,也是重要的步骤。运维从横向、纵向分可以分为多个维度和层次,本文试图抛开这纷繁复杂的概念,讲述一个...

    DevinGeng
  • 携程网的Ceph实践之路

    今天分享的内容分为两部分,前面一部分为携程网Ceph的具体实践讲解,后面一部分为携程工程师在Ceph中国社区针对Ceph应用的一系列问答

    用户1257215
  • 配置 Ceph 内外网分离

      先明确一下这么做的必要性。Ceph 的客户端,如 RADOSGW,RBD 等,会直接和 OSD 互联,以上传和下载数据,这部分是直接提供对外下载上传能力的;...

    用户2443625
  • 【算法】快速排序及优化

    其实,这就是快排的partition过程,通过三个指针,index,less,more进行的,初始less=左边界-1,more=右边界+1,说明一开始不存在l...

    MapleYe
  • 各种排序算法总结

    排序算法是最基本最常用的算法,不同的排序算法在不同的场景或应用中会有不同的表现,我们需要对各种排序算法熟练才能将它们应用到实际当中,才能更好地发挥它们的优势。今...

    前朝楚水

扫码关注云+社区

领取腾讯云代金券