前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Ceph简介

Ceph简介

作者头像
thierryzhou
修改于 2022-11-08 07:56:49
修改于 2022-11-08 07:56:49
2K1
举报

Ceph简介

什么是分布式存储

与集中式存储相反,分布式存储通常采用存储单元集群的形式,并具有在集群节点之间进行数据同步和协调的机制。分布式存储最初是由Google提出的,其目的是通过廉价服务器解决大规模,高并发情况下的Web访问问题。

分布式存储具有几个优点:

  1. 可扩展性-支持通过在系统中添加或删除存储单元来水平扩展存储系统。
  2. 冗余-在多台服务器之间存储相同数据的复制,以实现高可用性, 备份和灾难恢复目的。
  3. 节省成本 -可以使用更便宜的商品服务器以低成本存储大量 数据。
  4. 性能-在某些情况下,性能比单个服务器更好,例如,它可以将数据存储在离其使用者更近的位置,或者允许大规模并行访问大文件。

起源

Ceph项目最早起源于Sage就读博士期间发表的,并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。但是在2014年OpenStack火爆的时候、Ceph并不被很多人所接受。当时Ceph并不稳定(Ceph发布的第四个版本 Dumpling v0.67),而且架构新颖,复杂,当时人们对Ceph在生产落地如何保障数据的安全,数据的一致性存在怀疑。

随着OpenStack的快速发展,越来越多的人使用Ceph作为OpenStack的底层共享存储,Ceph在中国的社区也蓬勃发展起来。近两年OpenStack火爆度不及当年,借助于云原生尤其是Kubernetes技术的发展,作为底层存储的基石,Ceph再次发力,为Kubernets有状态化业务提供了存储机制的实现。

优点

  1. 高性能undefineda. 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高。undefinedb. 考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。undefinedc. 能够支持上千个存储节点的规模,支持TB到PB级的数据。
  2. 高可用性undefineda. 副本数可以灵活控制。undefinedb. 支持故障域分隔,数据强一致性。undefinedc. 多种故障场景自动进行修复自愈。undefinedd. 没有单点故障,自动管理。
  3. 高可扩展性undefineda. 去中心化。undefinedb. 扩展灵活。undefinedc. 随着节点增加而线性增长。
  4. 特性丰富undefineda. 支持三种存储接口:块存储、文件存储对象存储。undefinedb. 支持自定义接口,支持多种语言驱动。

服务架构

一个 Ceph 存储集群至少需要一个 Ceph Monitor(监视器)、Ceph Manager(管理器) 和 Ceph OSD(对象存储守护进程)。

ceph-arch.png
ceph-arch.png

Monitors

Ceph Monitor (ceph-mon) 通过维护包括监视器表(MonMap)、管理表(MGRMap)、OSD表(OSDMap)等组件状态表的保障集群正常运行。ceph-osd 相互之间协调工作时,需要从 ceph-mon 中获取这些表的信息。ceph-mon 还负责管理 ceph-osd 和客户端之间的身份验证。一个Ceph集群为了保证冗余和高可用性通常需要至少三个监视器,它们之间通过Paxos同步数据。

Managers

Ceph Manager (ceph-mgr) 负责跟踪运行时指标和 Ceph 集群的当前状态,包括存储利用率、当前性能指标、集群报警和系统负载等。ceph-mon 和 ceph-mgr 协调配合共同维持集群稳定。高可用性通常需要至少两个管理器。

OSDS

Ceph OSD(ceph-osd)全称是Object Storage Device,负责包括处理数据复制、恢复、重新平衡在内的实际数据存储工作,并且一个 OSD 检查可以通过检查其他 OSD 的心跳的方式将其他 OSD 的异常状态上报给 MON。一个Ceph集群一般都有很多个OSD。

逻辑架构

Ceph 将数据作为对象存储在逻辑存储池中。使用 CRUSH算法,Ceph 计算出哪个归置组应该包含该对象,并进一步计算出哪个 Ceph OSD Daemon 应该存储该归置组。CRUSH 算法使 Ceph 存储集群能够动态扩展、重新平衡和恢复。

RADOS: 由自我修复、自我管理、智能存储节点组成的可靠、自主、分布式对象存储。

LIBRADOS: Ceph 供的外部访问的对象存储 API,允许客户端通过此 API 访问Ceph集群完成文件的读写工作,支持 C、C++、Java、Python、Ruby 和 PHP 等多种语言。

ceph-stack.png
ceph-stack.png

用户可以基于自己的业务需要直接 LIBRADOS API 的基础上,开发自己需要的存储业务。社区在 LIBRADOS API 开发了三种成熟的存储产品:块存储、分布式文件存储系统、对象存储。

RADOSGW(Rados Gateway)

基于LIBRADOS API构建的兼容了 s3 和 Swift 协议的 RESTful 网关。

rgw-stack.png
rgw-stack.png

RBD(Rados Block Device)

基于LIBRADOS API构建的,使用了Linux内核client和QEMU/KVM驱动程序的分布式块存储设备。

rbd-stack.png
rbd-stack.png

CEPHFS(Ceph FileSystem)

基于LIBRADOS API构建的,符合POSIX标准的分布式文件系统。Ceph 文件系统 需要至少指定一个metadata存储池和一个data存储池,并且Ceph 文件系统 需要集群至少有一个Metadata服务。

cephfs-stack.png
cephfs-stack.png

Ceph逻辑组件

Object

Ceph 最底层的存储单元是 Object 对象,每个 Object 包含元数据和原始数据。

PG

PG 全称 Placement Grouops,是一个逻辑的概念,一个 PG 包含多个 OSD。引入 PG 这一层其实是为了更好的分配数据和定位数据。

CRUSH

CRUSH 是 Ceph 使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。

文件存储

不管是来自 Ceph 块设备、 Ceph 对象存储、 Ceph 文件系统、还是基于 librados 的自定义存储,将数据存储到 Ceph 集群上的步骤大致相同,大概可以归纳为Ceph客户端将数据存放在存储对象中,存储对象经过Ceph集群处理被发送给了 OSD ,由 OSD 将对象持久化到磁盘上。

ceph-file.png
ceph-file.png

Ceph OSD 在扁平的命名空间内把所有数据存储为对象(也就是没有目录层次)。对象包含一个标识符、二进制数据、和由名字/值对组成的元数据,元数据语义完全取决于 Ceph 客户端。例如, CephFS 用元数据存储文件属性,如文件所有者、创建日期、最后修改日期等等。

IO流程

ceph-osd-io.png
ceph-osd-io.png
  1. client 创建 cluster handler。
  2. client 读取配置文件。
  3. client 连接上 monitor,获取集群 map 信息。
  4. client 读写 io 根据 crshmap 算法请求对应的主 osd 数据节点。
  5. 主 osd 数据节点同时写入另外两个副本节点数据。
  6. 等待主节点以及另外两个副本节点写完数据状态。
  7. 主节点及副本节点写入状态都成功后,返回给 client,io 写入完成。
ceph-logical-io.png
ceph-logical-io.png
  1. File 用户需要读写的文件。File->Object 映射:undefineda. ino (File 的元数据,File 的唯一 id)。undefinedb. ono(File 切分产生的某个 object 的序号,默认以 4M 切分一个块大小)。undefinedc. oid(object id: ino + ono)。
  2. Object 是 RADOS 需要的对象。Ceph 指定一个静态 hash 函数计算 oid 的值,将 oid 映射成一个近似均匀分布的伪随机值,然后和 mask 按位相与,得到 pgid。Object->PG 映射:undefineda) hash(oid) & mask-> pgid 。undefinedb) mask = PG 总数 m(m 为 2 的整数幂)-1 。
  3. PG(Placement Group),用途是对 object 的存储进行组织和位置映射, (类似于 redis cluster 里面的 slot 的概念) 一个 PG 里面会有很多 object。采用 CRUSH 算法,将 pgid 代入其中,然后得到一组 OSD。PG->OSD 映射:undefineda) CRUSH(pgid)->(osd1,osd2,osd3) 。

Ceph编排工具

Ceph社区开发了多种编排工具,方便你快速构建一个Ceph集群。

如果你想在物理机上以传统后台服务的方式运行你的集群,可以使用基于ansible框架开发的ceph-ansible。

https://docs.ceph.com/projects/ceph-ansible/en/latest/index.html

如果你希望你的集群运行在物理机上的docker容器中,可以使用cephadm工具。

https://docs.ceph.com/en/quincy/cephadm/#cephadm

如果你希望你的集群运行在Kubernetes中,运行在云服务器上,可以使用rook-ceph。

https://rook.io/docs/rook/v1.10/Getting-Started/intro/

更多技术分享浏览我的博客:

https://thierryzhou.github.io

参考

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
感谢分享
感谢分享
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
ceph介绍_ceph为什么用rgw
Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。ceph 的统一体现在可以提供文件系统、块存储和对象存储,分布式体现在可以动态扩展。在国内一些公司的云环境中,通常会采用 ceph 作为openstack 的唯一后端存储来提高数据转发效率。
全栈程序员站长
2022/09/20
5760
ceph介绍_ceph为什么用rgw
zhangdd谈ceph(一)初识ceph
最近在研究ceph分布式存储,刚开始接触时感觉很混乱,无从下手的感觉。于是根据以往经验,先网上看各种资料,一个字 感觉乱,各种配置 各种环境 各种bug 各种坑,没办法了 买书从头开始,开始买了ceph中国社区的《ceph分布式存储实战》,如果你是新手刚接触的话,不要迟疑买了吧。然后通读了一遍,感觉稍微有了点头绪,于是按照套路,本地装虚拟机,经典三节点先上测试环境跑一遍看看,心里有点底,最后都捋顺了,基本的配置也有点明白了,做规划,生产环境与测试环境不同,需要考虑各种因素,只有全方位考虑好了,才能开始正式部署。
zhangdd
2018/08/01
8360
zhangdd谈ceph(一)初识ceph
学IT高薪之ceph--RADOS Block Device超完整用例及学习(外包精通)
ceph-ansible Installation tutorial(ceph-ansible安装教程) https://cloud.tencent.com/developer/article/2297745
Godev
2023/09/08
7780
学IT高薪之ceph--RADOS Block Device超完整用例及学习(外包精通)
【重识云原生】第三章云存储3.3节——Ceph统一存储方案
Ceph最早起源于Sage就读博士期间的工作、成果于2004年发表,并随后贡献给开源社区。经过多年的发展之后,已得到众多云计算和存储厂商的支持,成为应用最广泛的开源分布式存储平台。
江中散人_Jun
2022/04/11
2.8K0
【重识云原生】第三章云存储3.3节——Ceph统一存储方案
ceph工作原理和安装
一、概述 Ceph是一个分布式存储系统,诞生于2004年,最早致力于开发下一代高性能分布式文件系统的项目。随着云计算的发展,ceph乘上了OpenStack的春风,进而成为了开源社区受关注较高的项目之一。 Ceph有以下优势: 1. CRUSH算法 Crush算法是ceph的两大创新之一,简单来说,ceph摒弃了传统的集中式存储元数据寻址的方案,转而使用CRUSH算法完成数据的寻址操作。CRUSH在一致性哈希基础上很好的考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。Crush算
小小科
2018/05/03
2.4K1
ceph工作原理和安装
分布式存储Ceph(一)
Ceph使用C++语言开发,Sage Weil(Ceph论文发表者)于2011年创立了以Inktank公司主导Ceph的开发和社区维护。2014年Redhat收购inktank公司,并发布Inktank Ceph企业版(ICE)软件,业务场景聚焦云、备份和归档,支持对象存储和块存储以及文件系统存储应用。出现Ceph开源社区版本和Redhat企业版。
用户8639654
2021/08/18
1.2K0
Ceph介绍及原理架构分享
Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。
Lucien168
2020/07/20
2.3K0
Ceph介绍及原理架构分享
Ceph 分布式存储使用指南
*注意:本文大部分参考官方文档https://docs.ceph.com/docs/octopus/,因为网络原因,部署命令和官网有些许出入,更符合现在条件一些,且官方已经抛弃ceph-deploy 部署工具改用cephadm,不要傻傻看使用ceph-deploy的老古董啦。
jwangkun
2021/12/23
2.9K0
Ceph 分布式存储使用指南
Ceph架构综述
Ceph是一款以对象存储技术(独立存储技术)为核心,并在此基础之上实现块存储、文件系统的一体化存储系统。
河边一枝柳
2021/08/06
2.4K0
Ceph架构综述
linux ceph原理及搭建
Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。在虚拟化领域里,比较常用到的是Ceph的块设备存储,比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的cinder后端存储、Glance的镜像存储和虚拟机的数据存储,比较直观的是Ceph集群可以提供一个raw格式的块存储来作为虚拟机实例的硬盘。
葫芦
2019/06/20
3.8K0
Ceph分布式存储工作原理 及 部署介绍
存储根据其类型,可分为块存储,对象存储和文件存储。在主流的分布式存储技术中,HDFS/GPFS/GFS属于文件存储,Swift属于对象存储,而Ceph可支持块存储、对象存储和文件存储,故称为统一存储。
洗尽了浮华
2022/03/28
8.1K0
Ceph分布式存储工作原理 及 部署介绍
ceph分布式存储学习指南
ceph是模块化和可扩展的,并且有容错设计。先进的分布式存储系统。 ceph凭借其高可扩展性、高可靠性、高性能的特点,逐渐成为openstack\cloudstack、opennebula等主流开源云平台后端存储的首选。可靠性、自平衡、自恢复、一致性 软件定义存储。 可以大幅降低企业存储基础设施的成本。 分布式、可大规模扩展,经济 虚拟平台KVM、VMWARE也支持ceph ceph存储介绍 ceph部署实战 ceph架构和组件 ceph内部构建 ceph部署 ceph存储配置 ceph操作及管理 监控ceph集群 ceph与openstack集成 ceph性能调优和基准测试 1、ceph是什么 ceph是一个开源项目,它提供软件定义的、统一的存储解决方案。ceph可大规模扩展、高性能并且无单点故障的分布式存储系统。容量可扩展至EB级别。1EB=1024PB
用户5760343
2022/05/14
6670
ceph分布式存储学习指南
Ceph CookBook
原因:2017年5月4日 星期四 理解Ceph。 说明:阅读书籍。 官方文档:http://docs.ceph.com/docs/master/rbd/rbd-openstack/ 块存储、文件储存、对象存储:http://limu713.blog.163.com/blog/static/15086904201222024847744/ 可靠性、低成本、可扩展 SDS(软件定义存储-softwate defined storage) SDS可以降低存储基础设施的TCO(Total Cost of O
ZHaos
2019/02/27
1.6K0
Ceph分布式存储文件系统基础学习与实践
[TOC] 0x00 前言简述 CEPH 简介 Q: 什么是CEPH? 答: Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。 Ceph 项目最早起源于Sage就读博士
全栈工程师修炼指南
2022/09/29
9870
Ceph:一个新时代的开始
目前Ceph 是一种已经震撼了整个存储行业的最热门的软件定义存储技术。它是一个开源项目,为块存储、文件存储和对象存储提供了统一的软件定义解决方案。Ceph 旨在提供一个扩展性强大、性能优越且无单点故障的分布式存储系统。从一开始,Ceph 就被设计为能在通用商业硬件上运行,并且支持高度扩展(逼近甚至超过艾字节的数量)。
博文视点Broadview
2020/06/12
9810
Ceph:一个新时代的开始
001.Ceph简介概述
Red Hat Ceph是一个分布式的数据对象存储,系统设计旨在性能、可靠性和可扩展性上能够提供优秀的存储服务。分布式对象存储是存储的未来,因为它们适应非结构化数据,并且客户端可以同时使用当前及传统的对象接口进行数据存取。例如:
木二
2019/07/26
9770
Ceph分布式存储初步认识(一)
Ceph 是一个去中心化的分布式存储系统, 提供较好的性能、可靠性和可扩展性。 Ceph 项目最早起源于Sage就读博士期间的工作(最早的成果于 2004 年发表),并随后贡献给开源社区, 遵循 LGPL 协议 (LESSER GENERAL PUBLIC LICENSE 的简写,中文译为 “ 较宽松公共许可证 ” )。在经过了数年的发展之后,目前已得到众多云计算厂商(OpenStack 、 CloudStack 、 OpenNebula 、 Hadoop )的支持并被广泛应用。
Lansonli
2022/04/11
1.3K1
Ceph分布式存储初步认识(一)
Ceph IO流程及数据分布
说明: 如果新加入的OSD1取代了原有的 OSD4成为 Primary OSD, 由于 OSD1 上未创建 PG , 不存在数据,那么 PG 上的 I/O 无法进行,怎样工作的呢?
Lucien168
2020/07/20
2.5K0
Ceph IO流程及数据分布
ceph-简介及安装(luminous)版
Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式的存储系统。Ceph 独一无二地用统一的系统提供了对象、块、和文件存储功能,它可靠性高、管理简便、并且是开源软件。 Ceph 的强大足以改变贵公司的 IT 基础架构、和管理海量数据的能力。Ceph 可提供极大的伸缩性——供成千用户访问 PB 乃至 EB 级的数据。 Ceph 节点以普通硬件和智能守护进程作为支撑点, Ceph 存储集群组织起了大量节点,它们之间靠相互通讯来复制数据、并动态地重分布数据。
yuezhimi
2020/09/30
9680
ceph-简介及安装(luminous)版
Ceph部署在Centos7上简明摘要
最近需要研究Ceph,也部署了一下环境,本文分为1,2,3,4章为概念介绍,第5章为实践环节。
麒思妙想
2020/07/10
1.1K0
相关推荐
ceph介绍_ceph为什么用rgw
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档