一 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

001.Ceph简介概述的更多相关文章

  1. 001 Ceph简介

    一.Ceph简介 Red Hat Ceph是一个分布式的数据对象存储,系统设计旨在性能.可靠性和可扩展性上能够提供优秀的存储服务.Ceph分布式存储能够在一个统一的系统中同时提供了对象.块.和文件存储 ...

  2. 001.Docker简介概述

    一 简介 Docker最初是dotCloud公司的一个内部项目,诞生于 2013 年初,由google公司开源的Go语言开发. Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移 ...

  3. Phoenix简介概述,Phoenix的Java API 相关操作优秀案例

    Phoenix简介概述,Phoenix的Java API 相关操作优秀案例 一.Phoenix概述简介 二.Phoenix实例一:Java API操作 2.1 phoenix.properties 2 ...

  4. ceph ---(ceph简介)

    ceph简介: Ceph是一种为优秀的性能.可靠性和可扩展性而设计的统一的.分布式文件系统.ceph 的统一体现在可以提供文件系统.块存储和对象存储,分布式体现在可以动态扩展.在国内一些公司的云环境中 ...

  5. 001.Kubernetes简介

    一 Kubernetes概述 Kubernetes是一个全新的基于容器技术的分布式架构领先方案.Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg).在Docker ...

  6. 001.Heartbeat简介

    一 Heartbeat简介 1.1 概述 Heartbeat是Linux-HA项目中的一个组件,也是当前开源HA项目中最成功的一个例子,它提供了所有HA软件所需要的基本功能,如心跳检测和资源接管.监测 ...

  7. 001.etcd简介及单节点使用

    一 etcd简介 1.1 概述 etcd 是 CoreOS 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的分布式键值(key- ...

  8. ceph 简介

    Ceph 存储集群 数据的存储 伸缩性和高可用性 CRUSH 简介 集群运行图 高可用监视器 高可用性认证 智能程序支撑超大规模 动态集群管理 关于存储池 PG 映射到 OSD 计算 PG ID 互联 ...

  9. 001.Nginx简介

    一 Nginx概述 1.1 Nginx简介 Nginx是一个高性能的HTTP和反向代理web服务器,Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在B ...

随机推荐

  1. css样式之补充。。。

    css常用的一些属性: 1.去掉下划线 :text-decoration:none ;2.加上下划线: text-decoration: underline; 3.调整文本和图片的位置(也就是设置元素 ...

  2. linux三剑客

    grep grep       "oldboy"     test.txt   过滤掉文件中oldboy的字符串 -v                               ...

  3. 饮冰三年-人工智能-Python-13Python基础之运算符与数据类型

    1:算数运算符 + - * / ** % // 2: 成员运算符 in not in name = """张三""" if "张& ...

  4. Python(文件操作实例)

    给定一个文件:以及给定的字符,比如“a”; 统计字符个数:(可选) # 文件的打开操作f = open("wyl.txt","r")# 文件的读取操作conte ...

  5. 五.hadoop 从mysql中读取数据写到hdfs

    目录: 目录见文章1 本文是基于windows下来操作,linux下,mysql-connector-java-5.1.46.jar包的放置有讲究. mr程序 import java.io.DataI ...

  6. Beyond-Compare 4 -linux 破解

    key失效了可以去https://www.serials.be/serial/Beyond_Compare_4_Linux_68803632.html生成 Crack-Beyond-Compare-l ...

  7. Docker建立自己的私有仓库

    拉去仓库镜像 docker pull registry:latest 创建存储账户的文件夹路径 mkdir -p /{dir}/auth/ 创建用户密码信息文件 docker run --entryp ...

  8. Hbase启动hbase shell运行命令报Class path contains multiple SLF4J bindings.错误

    1:Hbase启动hbase shell运行命令报Class path contains multiple SLF4J bindings.错误,是因为jar包冲突了,所以对于和hadoop的jar包冲 ...

  9. expdp、impdp 使用sys用户操作时的注意事项

    https://blog.csdn.net/ctypyb2002/article/details/78420711

  10. Git Flow,Git团队协作最佳实践

    规范的Git使用 Git是一个很好的版本管理工具,不过相比于传统的版本管理工具,学习成本比较高, 实际开发中,如果团队成员比较多,开发迭代频繁,对Git的应用比较混乱,会产生很多不必要的冲突或者代码丢 ...