首页 > 其他分享 >初识Ceph之0——Ceph概述

初识Ceph之0——Ceph概述

时间:2023-08-09 17:00:38浏览次数:30  
标签:存储 对象 object Ceph 初识 概述 PG OSD

一、Ceph的起源 Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合,为物理机及虚拟机提供块存储,对象存储与文件存储。由于AWS的对象存储S3与OpenStack的对象存储swift并不兼容,而Ceph的对象存储RADOS GW可以同时兼容二者,起到桥接作用。 二、Ceph的特点 1.接口类型 说Ceph是一个统一的分布式存储系统,是因为Ceph底层使用RADOS分布式存储系统,该存储系统对外提供librados接口进行调用,使用者可根据该接口自行开发客户端,考虑到易用性,Ceph官方提供了RDB,RADOS GW和CEPH FS接口,对外提供块存储,对象存储和文件存储,其中RDB和RADOS GW是给予librados的二次封装,而CEPH FS并未使用librados封装,直接使用RADOWS对象存储。 image.png 2.存储引擎 ceph后端支持多种存储引擎,以插件化的形式来进行管理使用,目前支持filestore,kvstore,memstore以及bluestore。Filestore因为仍然需要通过操作系统自带的本地文件系统间接管理磁盘,所以所有针对RADOS层的对象操作,都需要预先转换为能够被本地文件系统识别、符合POSIX语义的文件操作。这个转换的过程极其繁琐,效率低下,目前默认使用的是bluestore,即直接使用本地磁盘裸设备。 3.层级结构 对象存储本质上是一个平层结构,不像传统的文件系统倒装树接口,在对象存储下,所有对象位于同一层级,通过K/V方式进行查找,典型的应用就是我们日常见到的云盘,而云盘中不同的目录,在对象存储中是以“/”进行表示,所以对于对象存储而言,云盘中的所有对象都在一个层级目录下。 4.Ceph存储网络 Ceph存储网络分为public network和cluster network两个平面,当仅有一张网卡时,两个平面可以共用一个网络出口,生产环境中推荐两个平面分开。 ● public network:服务端响应客户端请求的流量 ● cluster network:OSD之间的心跳,object之间的复制和修复流量 5.Ceph组件 Ceph 存储集群需要至少一个 Ceph Monitor 、 Ceph Manager和 Ceph OSD ,如果需要对外提供 Ceph FS,需要额外部署 Ceph Metadata 。 image.png ● Monitors:Ceph Monitor (Ceph-mon),负责维护集群状态信息,包括monitor map、manager map、 OSD map、 MDS map和 CRUSH map。这些map是 Ceph 集群进程间彼此通信的关键信息。monitor还负责服务进程和客户端之间的身份验证。通常monitor需要至少三节点部署来保证冗余和高可用性。 ● Managers:Ceph Manager 守护进程(Ceph-mgr),负责跟踪 Ceph 集群运行时的当前指标状态,包括存储利用率、当前性能指标和系统负载,并且提供 Web 页面的 Ceph Dashboard和 REST API,供监控程序调用,通常mgr为双节点部署。 ● Ceph OSDs:Ceph OSD (对象存储守护进程,Ceph-OSD),负责存储数据,处理数据之间的复制、恢复、重新平衡,并向 Ceph Monitor 和 Manager 提供其他 OSD 的心跳,一般高可用性场景下至少需要三个 Ceph OSD。 ● MDSs:Ceph 元数据服务器(MDS,Ceph-MDS),存储 Ceph FS的元数据(块存储和对象存储不需要使用 MDS)。Ceph 元数据服务器允许 POSIX 文件系统用户执行如 ls、 find 等基本命令 ,而不会给 Ceph 存储集群带来巨大负担。 三、Ceph中的几个概念 在弄清Ceph的映射关系前,先搞清楚Ceph中的三个重要概念:object、PG、OSD。 1.Object Ceph本身是一个对象存储,为了和客户端待存储对象进行区分,下文中将待存储的对象统称为file,Ceph切分后的对象统称为object。Ceph存储时,是将一个file切分为多个object(默认4M大小),每个object经过两重映射,最终存放到RADOS对象存储上,所以无论是块存储,对象存储还是文件存储都可以看作是RADOS存储的二次封装。 image.png 2.OSD RADOS存储内,每一个最小存储单元称为一个OSD,通常每一个OSD代表一块物理磁盘,而该磁盘所在的物理节点上,每一个物理磁盘需要有一个对应的OSD进程来相应客户请求。 image.png Ceph官方给出的资源需求如下表所示(以ceph 15.2.17 octopus版为例): image.png 3.PG PG全称placement group,直译为归置组,他本身是一个逻辑概念。通过前文得知,每一台物理节点上面会有若干个磁盘设备,在ceph集群中,每一个磁盘设备需要运行一个OSD进程管理,而OSD之间会相互监听心跳信息并及时上报给monitor,而monitor也会监视OSD的状态。如果让monitor监视每一个OSD,当OSD发生故障时进行数据恢复,这样物理节点资源开销很大;如果以物理节点为单位,当物理节点发生故障时再进行数据恢复,恢复的数据量又会非常大,为了兼顾性能与速度,所以在中间加入了一个逻辑归置组PG,其特点如下: ● PG是一个存储池(pool)的最小基本单元,数据在不同节点之间的同步、恢复时的数据修复也都是依赖PG完成。 ● PG位于object和RADOS的中间,往上负责接收和处理来自客户端的请求,往下负责将这些数据请求翻译为能够被本地对象存储所能理解的事务。 ● 在ceph中数据存储到集群后端可以简单的分为两步:object --> PG,PG --> OSD。 四、Ceph的存储映射 客户端将一个数据存储到Ceph集群上,会经过两次映射,object --> PG,PG --> OSD,以下分别对这两次映射进行说明。 1.object --> PG(一致性哈希算法) Ceph存储池在创建时要求指定PG数量(假设为32),客户端数据在存储时默认会以4M为单位切分成多个object,以一个object为例,该object通过一致性哈希算法对32取模,最终选取一个PG,其余object进行类似操作,所有object可能分布于不同PG,但同一object多次访问会得到相同PG,通过这种伪随机算法提升I/O性能。 2.PG --> OSD(crush算法) CRUSH算法通过计算数据存储位置来确定如何存储和检索数据。CRUSH使Ceph客户机能够直接与OSDs通信,而不是通过集中的服务器或代理。通过算法确定的数据存储和检索方法,Ceph避免了单点故障、性能瓶颈和对其可伸缩性的物理限制(后续会出一篇专门说明crush算法),此时数据存储过程如下:

  1. 客户端向monitor节点发起请求,获取到集群状态信息
  2. 客户端经过本地计算,得到数据存放的OSD位置
  3. 客户端直接向primaryOSD发起读写请求
  4. primary OSD负责向second OSD发起数据同步
  5. second OSD复制完成后向primary OSD进行确认
  6. primary OSD向客户进行确认 image.png

标签:存储,对象,object,Ceph,初识,概述,PG,OSD
From: https://blog.51cto.com/arkling/7022853

相关文章

  • 第1章 Git概述
    第1章Git概述Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。Git易于学习,占地面积小,性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion、CVS、Perforce和ClearCase等版本控制工具。1.......
  • 微信支付 V3 开发教程:初识 Senparc.Weixin.TenPayV3
    前言我在9年前发布了 Senparc.WeixinSDK 第一个开源版本,一直维护至今,如今Stras已经破7K,这一路上得到了.NET社区的积极响应和支持,也受到了非常多的宝贵建议,甚至代码的PR,目前累计的代码贡献者数量已经超过350人,在此表示衷心的感谢!我们也总在第一时间及时更新微......
  • 操作系统概述
    2.1.1操作系统的概念操作系统 是一组控制盒管理计算机系统的硬件和软件资源、控制程序执行、改善人机界面、合理地组织计算机工作流程并未用户使用计算机提供良好运行环境的一种系统软件。 目的:提高计算机系统的效率,增强系统的处理能力,提高系统资源的利用率,方便用户使用计算机。2......
  • shell命令概述 Shell作用:命令解释器 介于操作系统内核与用户之间,负责解释命令行 获得
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......
  • 手动安装ceph和使用
    我们已经对ceph有了一个大概的了解,现在就进行手动的安装ceph集群。在我们安装集群之前,首先应该对自己的服务器环境以及集群节点作用做一个规划。架构设计Ceph分布式存储集群有三大组件组成,分为:CephMonitor、CephOSD、CephMDS,后边使用对象存储和块存储时,MDS非必须安装,只有当使......
  • 云存储---ceph简介架构原理和一些基本概念
    Ceph简介Ceph是一个分布式存储系统,提供对象,块和文件存储,是一个免费开源软件的存储解决方案,可以部署于普通的x86兼容服务器上,可用于解决统一存储的io问题。Ceph诞生于2004年,最早是SageWeil一项关于存储系统的PhD研究项目,致力于开发下一代高性能分布式文件系统的项目。随着云计算的发......
  • 【考研政治】 总体概述
    整个政治分为五部分:1.马原包括:总论,马克思主义哲学,政治经济学,科学社会主义2.毛中特导论,毛思想,中特社理论,习新中特社思想(重点)3.近代史纲要中国近代史:旧民主主义时期,新民主主义时期中国现代史(新中国成立以后)4.思想道德与法治绪论,思想教育,道德观,法治5.形势与政策......
  • moke初识
    fromflaskimportFlask#初始化对象app=Flask(__name__)#创建函数@app.route('/moke')defget_res():res='hellomoke'returnresif__name__=='__main__':app.run()   ......
  • 【Spring | 事件监听概述】
    本篇主要对Spring的事件监听机制简单介绍下。(事件监听)概述  ApplicationContext中的事件处理是通过ApplicationEvent类和ApplicationListener接口提供的。如果将实现该ApplicationListener接口的bean部署到上下文中,那么每当ApplicationEvent发布到ApplicationCon......
  • 使用ceph的对象存储
    Ceph对象存储Ceph对象存储使用Ceph对象网关守护进程(radosgw),它是个与Ceph存储集群交互的FastCGI模块。因为它提供了与OpenStackSwift和AmazonS3兼容的接口,RADOS要有它自己的用户管理。Ceph对象网关可与CephFS客户端或Ceph块设备客户端共用一个存储集群。S......