欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

001.Ceph简介概述

程序员文章站 2022-03-12 15:33:34
一 Ceph简介 Red Hat Ceph是一个分布式的数据对象存储,系统设计旨在性能、可靠性和可扩展性上能够提供优秀的存储服务。分布式对象存储是存储的未来,因为它们适应非结构化数据,并且客户端可以同时使用当前及传统的对象接口进行数据存取。例如: 本地语言绑定接口(C/C++, Java, Pyth ......

一 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