分布式存储Ceph 架构 以及 IO算法流程简介

article/2025/10/5 12:06:16

Ceph 简介和特点

Ceph简介 : Ceph是一个统一的分布式存储系统,具有较好的性能、高可用性和可扩展性。

一个定义看上去会让初学者优点 “懵” ,为了有一个更深入 更直观的理解,下来我们分句来解读。

统一的分布式存储系统:

        即支持传统的块、文件存储协议,例如SAN和NAS;也支持对象存储协议,例如Swift.

        分布式存储:可以通过网络将数据分散在多台独立的设备上.

高性能:

  1.摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高。

  2.考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架  
        感知等。

  3.能够支持上千个存储节点的规模,支持TB到PB级的数据。 (1TB=1024GB,约等于一个固态硬盘的容量大小,能够存放一个不间断的监控摄像头录像(200MB/个),长达半年左右。   1PB=1024TB,容量十分嚣张,就很大。应用于大数据存储设备,如服务器等。 1EB =1024PB ,目前还没有单个存储器达到这个容量。)

高可用性:

  1.副本数可以灵活控制。

  2.支持故障域分隔,数据强一致性。

  3.多种故障场景自动进行修复自愈。

  4.没有单点故障,自动管理。

可扩展性:

  1.去中心化。

  2.扩展灵活。

  3.随着节点增加而线性增长。

通过这样的解读,是不是对Ceph 有了一个更加细致的了解,接下来我们来看看Ceph的架构。

Ceph的架构和核心组件

Ceph 的核心存储系统为Raods,LibRados对底层Rados进行抽象与封装,对上层提供接口。

RGW:对象存储,其最基本的功能包括用户,存储桶,对象的增删改查,在此基础之上结合对象存储应用的特征,引申出更多的功能,比如在对象存储应用中,如果对一个存储桶或者对象没有任何访问的限制,该储存桶或对象就会变成公开的资源,任何人都可以访问。因此对存储桶和对象的访问控制变得尤为重要,存储桶和对象的访问功能成为了对象存储的基本功能之一。

RBD:就是Ceph里的块设备,一个4T的块设备的功能和一个4T的SATA类似,挂载的RBD就可以当磁盘用。

CpehFS:是一个支持POSIX接口的文件系统,它使用 Ceph 存储集群来存储数据。文件系统对于客户端来说可以方便的挂载到本地使用。Ceph FS构建在RADOS之上,继承RADOS的容错性和扩展性,支持冗余副本和数据高可靠性。

OSD:

用于集群中所有数据与对象的存储. 处理集群数据的复制、恢复、回填、再均衡. 并向其他osd守护进程发送心跳,然后向Mon提供一些监控信息. 在一个ceph集群里最少要两个Osd节点。

MDS(可选):

只有用cephfs时,也就是文件系统存储时,才需要配置MDS节点. 为ceph文件系统存储提供元数据计算、缓存与同步(也就是说,ceph块设备 和 ceph 对象存储不适用MDS),在ceph中,元数据也是存储在osd节点中的,mds类似于元数据的代理缓存服务器。

Monitor:监控整个集群的状态,维护集群的cluster MAP二进制表,保证集群数据的一致性。

这部分是对Ceph 核心组件的一个简单介绍,下来我们来看看Ceph的IO流程。

正常IO流程:

 

1.client 创建 cluster handler

2.clint 读取配置文件

3.client 连接上 monitor , 获取map 信息

4.client 读写 io 根据crush 算法请求对应的主osd 数据节点.

5. 主osd数据节点同时写入另外两个副本节点数据

6. 等待主节点以及另外两个副本节点写完数据状态

7. 主节点及副本节点写入状态都成功后,返回给client,io写入完成

新主IO流程图:

        新加入的OSD 取代了原有的OSD,由于新OSD 上为还未创建WG,不存在数据,那么PG 上的 I/O 无法进行.

1.client 连接 monitor 获取集群map 信息 .

2.同时 新主 osd1 由于没有pg数据会主动上报 monitor 告知让 osd2 临时接替为主.

3.临时主 osd2会把数据全量同步给新主osd1.

4.client IO 读写直接连接临时主osd2进行读写.

5.osd2 收到读写io,同时写入另外两个副本节点.

6.等待osd2以及另外两个副本写入成功.

7.osd2 三份数据都写入成功返回给client , 此时client io 读写完毕.

8.如果osd1 数据同步完毕,临时主osd2会主动交出角色.

9.osd 1 成为主节点 ,osd2 变成副本.

下面我们再来看看Ceph的IO算法流程。

总体的IO算法流程,可以分为三个映射:

三个映射:

  1.File用户需要读写的文件。  File → Object映射:

     (1) ino(File的元数据,File的唯一id)。

     (2) ono(File切分产生的某个Object的序号,默认4M切分一个块大小)。

     (3) oid(Object id: ino + ono)

  2.Object是RAODS需要的对象。  Object → PG映射:

     Ceph指定一个静态hash函数计算oid的值,将oid映射成一个近似均匀分布的伪随机值,然后和mask按位相于,得到pgid。

     hash(oid) & mask → pgid

     mask = PG总数m(m为2的整数幂) -1

  一个PG负责组织若干个Object,而一个Object只能被映射到一个PG———— 一对多映射。

  3.PG(Placement Group),OSD(对象存储守护程序).    PG → OSD映射:

     PG是一个逻辑概念,用途是对Object的存储进行组织和位置映射,一个PG里面会有很多个Object。采用CRUSH算法,将pgid代入其中,然后得到一组OSD。

     CRUSH(pgid) → (osd1,osd2,osd3)

  一个PG会被映射到多个OSD上,而每个OSD都会承载大量的PG ———— 多对多映射。

接下来抛出两个问题,带着问题来看,会使对流程的学习更深入更细致。

为什么切片:

       为了数据的均匀分布和负载均衡。

为什么在PG → OSD 映射上不采用hash算法而是CRUSH算法?

   CRUSH(pgid) → OSD

      改为   HASH(pgid) % m(osd数量) → OSD   ?

  弊端: 1.如果挂掉一个OSD ,模运算的余数都会发生变化,也就是说PG映射的磁盘发生了变化,更直白的说就是,PG上的数据要从一个磁盘全部迁移到另一个磁盘上去,优秀的架构应该在磁盘损坏时使数据迁移量降到最低,CRUSH可以做到。同样的如果扩容,OSD的数量增加了,也会导致PG 在OSD之前的胡乱迁移,但是CRUSH可以保证数据向新增加的机器均匀扩散。

           2.如果要保存多个副本,希望的结果是得到多个OSD的输出,但是HASH只能获得一个,但是CRUSH可以获得多个。

      1.因为hash算法是一对一映射关系。

      2.PG → OSD 的映射是动态的多对多映射关系。

          因为一个PG会被映射到多个OSD上,而每个OSD都会承载大量的PG,而且由于cehp的高可用性 OSD节点是有副本机制的 , OSD数量可能增加也可能减少,所以是动态的多对多映射关系,所以hash不适用。

 最后了解一个Ceph的精华--------CRUSH算法。

CRUSH算法(Controlled Scalable Decentralized Placement of Replicated Data):可控的、可扩展的、分布式的副本数据放置算法。

简单总结CRUSH算法: 跟据数据唯一标识符pgid、OSD权重以及数据备份策略,完成从多个PG到多个OSD的多对多的数据存储位置定位。

 为什么不细致的讲解CRUSH算法?

答:我也不是很懂😭。

 


http://chatgpt.dhexx.cn/article/OxBlraNV.shtml

相关文章

1.华为分布式存储fusionstorage介绍

引论: 行业分布式解决方案: 1.Ceph 应用最多的开源分布式解决方案 2.Glusterfs 3.VMware VSAN 4.fusionStorage 华为 一、传统企业级别存储和Fsuion storage 对比 1.传统企业级存储控制器扩展有瓶颈,存储例如18000V6扩展到32控制器&#xf…

使用ceph搭建分布式存储系统

实验目的: 掌握ceph的配置和使用方法掌握分布式存储系统架构规划和设计方法理解块存储,文件存储,对象存储的实现方法 实验步骤: 1.规划设计 准备四台虚拟机(有条件部署三台服务器,一台计算机更好&#…

RAID和分布式存储的对比

传统的存储,一般是指用商用硬盘构建稳固的存储系统,通常会用到RAID技术,这是一种被研究的很透彻的存储技术,有大量的相关软硬件,成本已降低到可接受的程度。 分布式存储,一般是指用大量廉价的磁盘&#xf…

软硬件结合,分布式数据库存储架构优化实践

本文将介绍分布式数据库--KaiwuDB 的存储架构,以及 KaiwuDB 技术团队在其 KV 存储引擎基础上所做的优化实践。 KaiwuDB 整体存储架构 KaiwuDB 采用分层架构,分为计算层与存储层,其总体架构如下图所示: 在 OLTP 场景下&#xff0…

分布式存储系统HDFS

3.1 HDFS简介 Hadoop平台解决两大核心问题: 分布式存储分布式处理 HDFS就是解决海量数据分布式存储 背景:大数据时代,对于海量的数据,单个计算机无法处理,只能借助整个集群来处理海量数据。 文件系统结构&#xff0…

分布式MySQL架构

分布式数据库一般是以下的这种结构,计算层获取元数据层信息进行路由。下面说下各个层级的目的: (1)计算层就是单机时的SQL层,用来对数据访问进行权限检查、路由访问,以及对计算结果等操作。 (2…

搭建分布式存储服务minio详细过程

最近项目的存储量比较大,考虑项目后期存储需要拓展,决定使用分布式存储,综合考察后,最终选定使用minio作为存储服务。以下是使用步骤,MARK一下! 1、服务器 192.168.40.124 192.168.40.1282、创建目录 本集…

分布式存储概述

一、数据分类及存储分类 数据分为元数据和数据 分布式数据存储的实现: 元数据即是文件的属性信息(文件名、权限(属主、属组)、大小、更新时间等),元数据就是有一种路由机制,即当客户端或者应用程序产生的客户端数据被写入到分布式存储系统的…

分布式存储 HDFS原理

思维导图: 分布式存储 一、NameNode 1接收客户端的请求 管理元数据(文件上传时间、文件权限、文件属主、大文件的block数及blockId号) 管理集群 二、SecondaryNameNode 持久化内存中的元数据。 因为内存不稳定,可以将数据持…

分布式存储系统Minio简介

Minio 是一个基于Go语言的对象存储服务。它实现了大部分亚马逊S3云存储服务接口,可以看做是是S3的开源版本,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意…

分布式存储技术的对比分析与应用

主流分布式存储技术的对比分析与应用 随着数字化转型的深入,海量数据对存储提出了新的要求。传统存储虽然有技术成熟、性能良好、可用性高等优点,但面对海量数据,其缺点也越来越明显:如扩展性差、成本高等。为了克服上述缺点&…

分布式存储架构一-分布式存储概念

分布式存储系统是由大量廉价普通PC服务器通过Internet互联,对外作为一个整体提供服务的系统。它的规模大且成本低。 分布式存储系统的特性: 可扩展:分布式存储系统能扩展几百到几千台的规模,随着集群数量的提升,它的…

分布式系列之开源分布式存储技术分析

分布式存储在云计算及容器技术中将广泛使用,本文仅简单介绍了下几个主流的开源分布式技术,整个分布式存储系列相当复杂,文中介绍略微粗浅且当引子。 1、集中式存储和分布式存储 1.1 存储类型 常见的存储类型有三种:块存储、文件…

浅谈分布式存储架构: IPFS和HDFS

分布式存储架构是一个复杂的系统工程,针对特定应用的数据存储有不同的系统架构解决方案。不同的存储方法会影响存储性能、存储成本、冗余度、工程复杂性等。 分布式存储的历史 分布式存储最早是由谷歌提出的,其目的是通过廉价的服务器来解决大规模&…

开源分布式存储架构概览

关注「开源Linux」,选择“设为星标” 回复「学习」,有我为您特别筛选的学习资料~ 材料提纲包括三部分内容: 1、基本思想和关注的问题 2、四种开源分布式存储系统概览(HDFS 、GlusterFS 、OpenStack Swift、Ceph) 3、以…

FISCO BCOS 2.0原理解析: 分布式存储架构设计

FISCO BCOS 2.0新增对分布式数据存储的支持,克服了本地化数据存储的诸多限制。 在FISCO BCOS 1.0中,节点采用MPT数据结构,通过LevelDB将数据存储于本地,这种模式受限于本地磁盘大小,当业务量增大时数据会急剧膨胀&…

杉岩PACS影像系统分布式存储架构

该医院创建于1999年,是深圳市政府投资建成的集医疗、教学、科研和预防为一体的现代化三级综合性医院。2017年通过三级甲等医院复审。2018年,医院年门急诊总量约292万人次,年出院病人近7.4万人次,年手术量4.9万台次。 该院在深圳有…

Ceph分布式存储 原理+架构图详解

分布式存储Ceph ceph介绍 ceph是一个统一的、分布式的存储系统,设计初衷式提供较好的性能(io)、可靠性(没有单点故障)和可扩展性(未来可以理论上无限扩展集群规模),这三点也是集群架构所追求的。 统一性 : 意味着我们可以仅凭ceph这一套存储系统&…

几种分布式存储组网架构参考

作 者: NGDCN 原文链接:几种分布式存储组网架构参考 - NGDCN 版 权: 本文由 NGDCN 于2022-11-12原创发布在 NGDCN,未经许可,禁止转载。 1、名词解释 ◼ VBS:云硬盘备份(Volume …

谈谈Java内存模型

谈谈Java内存模型 什么是JMM为什么需要这种规范呢?三大特性在Java中是怎么满足的呢? 什么是JMM Java Memory Model ,Java内存模型,是一种共享内存系统中多线程程序读写操作行为的规范,它是一种屏蔽了各种硬件和操作系…