ceph存储架构(ceph存储架构图)

ceph存储架构(ceph存储架构图)svg xmlns http www w3 org 2000 svg style display none svg

大家好,我是讯享网,很高兴认识大家。



 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> 

讯享网

1.集群简介

ceph是分布式集群:

1&gt;软件定义存储(sds)

sds是减少存储基础设施的tcd(总体成本)所需要的。除了降低成本外,sds还提供灵活性,可伸缩性和可靠性,ceph是一种真正的sds,它可以运行在没有厂商锁定的普通硬件上,与传统的存储系统(软硬件结合不同),在sds中,你可以从任何制造商中自由选择硬件,也可以根据自己的需要自由的设计异构硬件解决方案,ceph在此硬件上的软件定义存储提供了你需要的所有,并将负责所有事情,从软件层提供所有的企业存储特性。

2&gt;云存储

ceph已经和openstack结合起来,成为openstack后端存储的标配,同时又支持所有kubernets动态存储。

3&gt;统一存储体系架构

统一存储指单个系统提供文件和块存储。真正的存储就像ceph,支持单个系统的块,文件和对象存储。ceph的核心思想是提供分布式存储,该系统具有大规模的可伸缩性和高性能性,并且没有单点故障,从根本上说,它被设计成硬件上运行具有高度的可伸缩性(可达eb)级别甚至更高。

4&gt;分布式的核心掌握

基本上把握存储的IO流程架构,

包含:HDD(机械盘)、SSD、RAID 、DAS、NAS、SAN、CIFS、NFS、对象存储、容灾备份 。

掌握分布式存储的核心:分布式琐、分布式事务、一致性、选举机制、数据分布机制。

在这里插入图片描述
讯享网
)]

2.ceph与传统存储的区别

DAS(Direct-attached Storage):服务器本地存储;开发机的直连模式。

SAN(Storage Area Network):基于块的存储;服务器主机通过光纤交换机连接存储阵列,建立专用于数据存储的区域网络;SAN使用高端RAID阵列;SAN协议主要分为FCSAN(利用光纤协议转发SCSI协议)和IPSAN(利用tcp/ip协议转发SCSI协议);SAN主要用于存储量大的地方,但是成本高,扩展性较差,标准尚未确定。

在这里插入图片描述

NAS(Network Attached Storage) : 网络存储器,它以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而释放带宽、提高性能、降低总拥有成本、保护投资。其成本远远低于使用服务器存储,而效率却远远高于后者, 有点类似于文件共享。

在这里插入图片描述

ceph:带宽使用万M和十万M,使用tcp/ip协议,适用于云环境。

在这里插入图片描述

3.块存储

1.块设备的解释

物理层对外提供服务,使用它的系统,有用自己的文件系统格式化。这样一旦被一个系统使用,就独占了。块存储,主要操作对象是磁盘。常用的块存储协议有:FC(光纤),iSCSI(tcp/ip)。和文件存储相比,没有文件和目录树的概念,一般协议也不会定义磁盘的创建和删除操作。协议更注重传输控制。DAS和SAN都是块存储系统。

2.块存储的特点:

讯享网

3.扩展知识点

 

4.文件存储

1.文件存储的解释

讯享网

2.文件系统的详细解释

 

5. 对象存储

1.对象存储的解释

讯享网

2.特点

 

3.详细的对象存储解释

讯享网

1.ceph架构图

在这里插入图片描述

2.ceph的组件架构图

在这里插入图片描述

3.Monitor

1.简介

monitors(MON):ceph监视器通过保存集群状态的映射来跟踪整个集群的监控状况,一般监控数为奇数,方便仲裁, 防止脑裂;一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据。mon之间的关系:一个多Monitor的Ceph的架构通过法定人数来选择leader, 并在提供一致分布式决策时使用Paxos算法集群, mons必须保证百分之51的mon是可被访问的,当出现多monitors时,使用paxos算法来选择leader,避免单点故障。

落盘数据格式: rocksdb

2.功能
  • auth认证

    在这里插入图片描述

    流程讲解:
    ①客户端携带 /etc/ceph/ceph.client.admin.keyring 的 key 信息向 MON 节点请求认证,申请session key
    ②MON 节点生成 session key,并通过客户端提供的 key 加密 session key 发送给客户端
    ③客户端用 key 来解密获取 session key
    ④利用session key向MON节点申请tiket,MON 节点验证session key是否准确性,并且发放tiket。
    ⑤使用tiket访问OSD
    ⑥OSD验证tiket有效性,并发送数据

    ceph创建认证命令:
    ceph auth ls
    ceph auth get-or-create client.zc mon “allow *” osd “allow rwx”
    ceph auth get client.zc -o /root/ceph.client.zc.keyring
    ceph auth del client.zc

  • 管理和维护cluster map
     
3.paxos算法
讯享网

4.osd

1.osd简介

​ ceph对象存储设备(OSD:object storage device): 负责响应客户端请求返回具体数据的进程

2.osd的四种状态
 
3.功能
讯享网

5.Pg

1.Pg介绍

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

2.Pg功能
 
3.Pg数计算
讯享网
4.Pg状态解释
 
5.常用Pg处理方法

1.硬盘坏了的osd:

讯享网

2.报Unfound objects

 

3.报inconsistent objects

讯享网

4.出现stale pg

 

6.object

1.简介

Ceph最底层的存储单元是Object对象,每个Object包含元数据(描述数据的数据)和原始数据。每个object都有全局唯一的id,不同于文件存储,object的大小可以突破文件级的限制,并且还有丰富的元数据;整个object索引是一个扁平结构里面实现的。

在这里插入图片描述

7.Pool

1.简介

存储对象的逻辑分区;可以设置所有权和访问对象,设置对象副本的数目以及pg的数目

2.pool和pg的映射

pool是逻辑单位,包含多个pg。

3.命令
讯享网

8.解释

1.mds

ceph metadata server(MDS): mds跟踪文件层次结构,仅为ceph fs文件系统存储元数据;MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。

2.mgr

ceph manager:ceph manager守护进程(ceph-mgr)是在kraken版本中引入的,它与monitor守护进程一起运行,为外部监视和管理系统提供额外的监视和接口。

3.rados

1.ceph的管理结构是RADOS, RADOS全称Reliable Autonomic Distributed Object Store(可靠自治分布式对象存储)

2.功能是: 存储数据,维护数据的一致性和可靠性;RADOS存储负责这些对象,而不管他们的数据类型如何,RADOS层确保数据始终保持一致,为此,它执行数据复制,故障检测和恢复,以及跨集群节点的数据迁移和再平衡,用户可使用它来实现数据分配、Failover(容错机制:实效转移)等集群操作。

4.librados

Librados是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持。

5.crush

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

6.rbd

RBD全称RADOS block device,是Ceph对外提供的块设备服务。

7.rgw

RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。

8.cephfs

CephFS全称Ceph File System,是Ceph对外提供的文件系统服务。

1.ceph 写io流程

1.写数据的流程图

在这里插入图片描述

在这里插入图片描述

2.写数据的流程分析:

 

2.ceph 读io流程

1.读io的流程图

在这里插入图片描述

2.读io的流程分析

讯享网

在这里插入图片描述

3.ceph io算法流程

1.流程图:

在这里插入图片描述

2.流程分析:

 

3.ceph伪代码实现流程:

讯享网

4.ceph rbd io流程

在这里插入图片描述

在这里插入图片描述

 

5.ceph pool和pg的分布

在这里插入图片描述

6.Ceph 数据扩容PG分布

1.ceph数据扩容

讯享网

在这里插入图片描述

1 数据分布算法

1.ceph cursh的要求
  • 数据分布和负载均衡:
    • a. 数据分布,使数据能均匀的分布到各个节点上。
    • b. 负载均衡,使数据访问读写操作的负载在各个节点和磁盘的负载均衡。
  • 灵活应对集群伸缩:
    • a. 系统可以方便的增加或者删除节点设备,并且对节点失效进行处理。
    • b. 增加或者删除节点设备后,能自动实现数据的均衡,并且尽可能少的迁移数据。
  • 支持大规模集群:
    • a. 要求数据分布算法维护的元数据相对较小,并且计算量不能太大。随着集群规模的增加,数据分布算法开销相对比较小。
2.一致性hash算法
  • 一致性hash算法的引入:
     
  • 一致性hash算法简介:

在这里插入图片描述

在这里插入图片描述

​ 分区和分区位置:当节点加入或者离开时,分区会相应地进行分裂或合并。这不对新写入的数据构成影响,但对已经写入到磁盘的数据需要重新计算Hash值以确定它是否需要迁移到其它节点。因为需要遍历磁盘中的所有数据,这个计算过程非常耗时。

在这里插入图片描述

  • 数据分布式算法至少考虑一下三点内容:
讯享网
  • 意义:应用于分布式集群中,高效应对节点的添加、删除以及故障后自动脱离集群等分布式集群管理的基本操作,保证了集群Balance、Monitonicity、Spread、Lod。一致性hash算法的核心:pg和crushmap(这两个最重要)

2.ceph crush算法

1.crush算法简介

  • CRUSH算法的全称为:Controlled Scalable Decentralized Placement of Replicated Data,可控的、可扩展的、分布式的副本数据放置算法。
  • PG到OSD的映射的过程算法叫做CRUSH 算法。(一个Object需要保存三个副本,也就是需要保存在三个osd上)。
  • CRUSH算法是一个伪随机的过程,他可以从所有的OSD中,随机性选择一个OSD集合,但是同一个PG每次随机选择的结果是不变的,也就是映射的OSD集合是固定的。

2.crush算法和一致性hash算法的区别:

在这里插入图片描述

  • 作用
    功能一:PG管理的数据区间相同,因而数据能够均匀地分布到PG上;
    功能二:决定整个存储集群中的“管辖区域”(如图所示:每个pg都有一小段)。需要注意的是,这个“管辖区域”是逻辑上放划分;
  • 问题点:

    在多副本(假设副本数目为N)的情况下,分区的数据会存储到连续的N个物理节点中。但这会引入一个新问题:因为副本必须保持在不同的物理节点,但是如果这组pg中存在两个或多个pg对应到同个物理存储节点,那么就必须要跳过这样的节点。crush采用Preference列表来记录每个分区对应的物理节点。

在这里插入图片描述

  • 分布算法
    CRUSH算法根据种每个设备的权重尽可能概率平均地分配数据。分布算法是由集群可用存储资源以及其逻辑单元的map控制的。这个map的描述类似于一个大型服务器的描述:服务器由一系列的机柜组成,机柜装满服务器,服务器装满磁盘。数据分配的策略是由定位规则来定义的,定位规则指定了集群中将保存多少个副本,以及数据副本的放置有什么限制。
    例如,可以指定数据有三个副本,这三个副本必须放置在不同的机柜中,使得三个数据副本不公用一个物理电路。
    例如,一个机架上有20个服务器,每个服务器有2个disk,一排有8个机架,有10排;担心其中一个服务器宕机;可以设定crush map,确保这个服务器上的数据至少复制到其他两个服务器上;担心其中一个机架上断电,确保副本存储在其他机架上,独立于主本。

在这里插入图片描述

3.ceph crush分布算法

1.CRUSH算法因子
  • Cluster Map

    反映了存储系统层级的物理拓扑结构。定义了OSD集群具有层级关系的静态拓扑结构。OSD层级使得 CRUSH算法在选择OSD时实现了机架感知能力,也就是通过规则定义, 使得副本可以分布在不同的机架、不同的机房中、提供数据的安全性 。

  • Placement Rules

    决定了一个PG的对象副本如何选择的规则,通过这些可以自己设定规则,用户可以自定义设置副本在集群中的分布。data distribution policy由 placement rules组成。crush rules决定了每个数据对象有多少个副本,这些副本存储的限制条件(比如3个副本放在不同的机架中)。

    在这里插入图片描述

2. Cluster Map

在这里插入图片描述

cluster map : monitor map, osd map,crush map,mds map(只针对文件系统);
cluster map:包含当前磁盘,服务器,机架的层级结构.详细的说描述了可用存储资源和层级结构(比如有多少个机架,每个机架上有多少个服务器,每个服务器上有多少个磁盘),CRUSH Map是一个树形结构。OSD Map更多记录的是OSD Map的属性(epoch/fsid/pool信息以及osd的ip等等)。叶子节点是device(也就是osd),其他的节点称为bucket节点,这些bucket都是虚构的节点,可以根据物理结构进行抽象,当然树形结构只有一个最终的根节点称之为root节点,中间虚拟的bucket节点可以是数据中心抽象、机房抽象、机架抽象、主机抽象等。
修改crush map 的命令:

 
3 Placement Rules

数据分布策略Placement Rules主要特点:

  • a. 从CRUSH Map中的哪个节点开始查找
  • b. 使用那个节点作为故障隔离域
  • c. 定位副本的搜索模式(广度优先 or 深度优先)
讯享网
4 Bucket随机算法类型

在这里插入图片描述

  • 一般的buckets:适合所有子节点权重相同,而且很少添加删除item。
  • list buckets:适用于集群扩展类型。增加item,产生最优的数据移动,查找item,时间复杂度O(n)。
  • tree buckets:查找负责度是O (log n), 添加删除叶子节点时,其他节点node_id不变。
  • straw buckets:允许所有项通过类似抽签的方式来与其他项公平“竞争”。定位副本时,bucket中的每一项都对应一个随机长度的straw,且拥有最长长度的straw会获得胜利(被选中),添加或者重新计算,子树之间的数据移动提供最优的解决方案。
 
4. CRUSH算法案例

说明:集群中有部分sas和ssd磁盘,现在有个业务线性能及可用性优先级高于其他业务线,能否让这个高优业务线的数据都存放在ssd磁盘上。

普通用户:
在这里插入图片描述

高优用户:
在这里插入图片描述

配置规则:
在这里插入图片描述

1.心跳介绍

心跳是用于节点间检测对方是否故障的,以便及时发现故障节点进入相应的故障处理流程。

问题:
故障检测时间和心跳报文带来的负载之间做权衡。
心跳频率太高则过多的心跳报文会影响系统性能。
心跳频率过低则会延长发现故障节点的时间,从而影响系统的可用性。

故障检测策略应该能够做到:
及时:节点发生异常如宕机或网络中断时,集群可以在可接受的时间范围内感知。
适当的压力:包括对节点的压力和对网络的压力。
容忍网络抖动:网络偶尔延迟。
扩散机制:节点存活状态改变导致的元信息变化需要通过某种机制扩散到整个集群。

ceph心跳检测:

在这里插入图片描述

讯享网

2.Ceph OSD心跳检测

在这里插入图片描述

步骤:

  • 同一个PG内OSD互相心跳,他们互相发送PING/PONG信息。
  • 每隔6s检测一次(实际会在这个基础上加一个随机时间来避免峰值)。
  • 20s没有检测到心跳回复,加入failure队列。

3. Ceph OSD与Mon心跳检测

在这里插入图片描述

OSD报告给Monitor:

  • OSD有事件发生时(比如故障、PG变更)。
  • 自身启动5秒内。
  • OSD周期性的上报给Monitor。
    • OSD检查failure_queue中的伙伴OSD失败信息。
    • 向Monitor发送失效报告,并将失败信息加入failure_pending队列,同时添加到failure_queue中。
    • 收到来自failure_queue或者failure_pending中的OSD的心跳时,将其从两个队列中移除,并告知Monitor取消之前的失效报告。
    • 当发生与Monitor网络重连时,会将failure_pending中的错误报告加回到failure_queue中,并再次发送给Monitor。
  • Monitor统计下线OSD
    • Monitor收集来自OSD的伙伴失效报告。
    • 当错误报告指向的OSD失效超过一定阈值,且有足够多的OSD报告其失效时,将该OSD下线。

4. Ceph心跳检测总结

Ceph通过伙伴OSD汇报失效节点和Monitor统计来自OSD的心跳两种方式判定OSD节点失效。

  • 及时:伙伴OSD可以在秒级发现节点失效并汇报Monitor,并在几分钟内由Monitor将失效OSD下线。
  • 适当的压力:由于有伙伴OSD汇报机制,Monitor与OSD之间的心跳统计更像是一种保险措施,因此OSD向Monitor发送心跳的间隔可以长达600秒,Monitor的检测阈值也可以长达900秒。Ceph实际上是将故障检测过程中中心节点的压力分散到所有的OSD上,以此提高中心节点Monitor的可靠性,进而提高整个集群的可扩展性。
  • 容忍网络抖动:Monitor收到OSD对其伙伴OSD的汇报后,并没有马上将目标OSD下线,而是周期性的等待几个条件:
    • 目标OSD的失效时间大于通过固定量osd_heartbeat_grace和历史网络条件动态确定的阈值。
    • 来自不同主机的汇报达到mon_osd_min_down_reporters。
    • 满足前两个条件前失效汇报没有被源OSD取消。
  • 扩散:作为中心节点的Monitor并没有在更新OSDMap后尝试广播通知所有的OSD和Client,而是惰性的等待OSD和Client来获取。以此来减少Monitor压力并简化交互逻辑。
  • 自我修复:
    a.primary从其他osd收集pg log,获得一份完整、全序的操作表,并让其他osd认同这份操作表,该过程叫peering;在该过程中,primary osd负责协调peering过程,若primary out或down,则second osd来充当primary osd。
    b.peering之后进入active+recovering状态;迁移以及同步object到所有副本上,确保objects副本为N。

1 ceph通信框架种类介绍

对于一个网络通信系统:

网络通信模块的实现源码是:src/msg的目录下,其首先定义一个网络通信的框架,分别对应三个子目录: simple,async,xio三种不同的实现方式

网络通信框架三种不同的实现方式:

  • Simple线程模式
    • 特点:每一个网络链接,都会创建两个线程,一个用于接收,一个用于发送。
    • 缺点:大量的链接会产生大量的线程,会消耗CPU资源,影响性能。
  • Async事件的I/O多路复用模式
    • 特点:这种是目前网络通信中广泛采用的方式。k版默认已经使用Asnyc了。
  • XIO方式使用了开源的网络通信库accelio来实现,支持infiniband网络
    • 特点:这种方式需要依赖第三方的库accelio稳定性,目前处于试验阶段。

2 Ceph通信框架设计模式

设计模式(Subscribe/Publish):订阅发布模式又名观察者模式,它意图是“定义对象间的一种一对多的依赖关系, 当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新”。

3 Ceph通信框架流程图

在这里插入图片描述

步骤:

  • Accepter监听peer的请求, 调用 SimpleMessenger::add_accept_pipe() 创建新的 Pipe 到 SimpleMessenger::pipes 来处理该请求。
  • Pipe用于消息的读取和发送。该类主要有两个组件,Pipe::Reader,Pipe::Writer用来处理消息读取和发送。
  • Messenger作为消息的发布者, 各个 Dispatcher 子类作为消息的订阅者, Messenger 收到消息之后, 通过 Pipe 读取消息,然后转给 Dispatcher 处理。
  • Dispatcher是订阅者的基类,具体的订阅后端继承该类,初始化的时候通过 Messenger::add_dispatcher_tail/head 注册到 Messenger::dispatchers. 收到消息后,通知该类处理。
  • DispatchQueue该类用来缓存收到的消息, 然后唤醒 DispatchQueue::dispatch_thread 线程找到后端的 Dispatch 处理消息。

在这里插入图片描述

4. Ceph通信框架类图

在这里插入图片描述

5 Ceph通信数据格式

通信协议格式需要双方约定数据格式。消息的内容主要分为三部分:

  • header //消息头类型消息的信封
  • user data //需要发送的实际数据
    • payload //操作保存元数据
    • middle //预留字段
    • data //读写数据
  • footer //消息的结束标记
 

1 QOS介绍

QoS (Quality of Service,服务质量)起源于网络技术,它用来解决网络延迟和阻塞等问题,能够为指定的网络通信提供更好的服务能力。问题:我们总的Ceph集群的IO能力是有限的,比如带宽,IOPS。如何避免用户争取资源,如果保证集群所有用户资源的高可用性,以及如何保证高优用户资源的可用性。所以我们需要把有限的IO能力合理分配。

2 Ceph IO操作类型

  • ClientOp:来自客户端的读写I/O请求。
  • SubOp:osd之间的I/O请求。主要包括由客户端I/O产生的副本间数据读写请求,以及由数据同步、数据扫描、负载均衡等引起的I/O请求。
  • SnapTrim:快照数据删除。从客户端发送快照删除命令后,删除相关元数据便直接返回,之后由后台线程删除真实的快照数据。通过控制snaptrim的速率间接控制删除速率。
  • Scrub:用于发现对象的静默数据错误,扫描元数据的Scrub和对象整体扫描的deep Scrub。
  • Recovery:数据恢复和迁移。集群扩/缩容、osd失效/从新加入等过程。

3 Ceph 官方QOS原理

在这里插入图片描述

dmClock是一种基于时间标签的I/O调度算法,最先被Vmware提出来的用于集中式管理的存储系统。(目前官方QOS模块属于半成品)。

基本思想:

  • reservation 预留,表示客户端获得的最低I/O资源。
  • weight 权重,表示客户端所占共享I/O资源的比重。
  • limit 上限,表示客户端可获得的最高I/O资源。

4 定制化QOS原理

4.1 令牌桶算法介绍

在这里插入图片描述

基于令牌桶算法(TokenBucket)实现了一套简单有效的qos功能,满足了云平台用户的核心需求。基本思想:

  • 按特定的速率向令牌桶投放令牌。
  • 根据预设的匹配规则先对报文进行分类,不符合匹配规则的报文不需要经过令牌桶的处理,直接发送。
  • 符合匹配规则的报文,则需要令牌桶进行处理。当桶中有足够的令牌则报文可以被继续发送下去,同时令牌桶中的令牌量按报文的长度做相应的减少。
  • 当令牌桶中的令牌不足时,报文将不能被发送,只有等到桶中生成了新的令牌,报文才可以发送。这就可以限制报文的流量只能是小于等于令牌生成的速度,达到限制流量的目的。
4.2 RBD令牌桶算法流程

在这里插入图片描述

步骤:

  • 用户发起请求异步IO到达Image中。
  • 请求到达ImageRequestWQ队列中。
  • 在ImageRequestWQ出队列的时候加入令牌桶算法TokenBucket。
  • 通过令牌桶算法进行限速,然后发送给ImageRequest进行处理。
4.3 RBD令牌桶算法框架图

现有框架图:

在这里插入图片描述

在这里插入图片描述

1.提供数据均衡功能和恢复功能

​ 当集群中添加一个osd存储设备,整个集群发生数据迁移,发生数据迁移的单位是pg,即数据迁移是将Pg中的所有对象作为一个整体来进行迁移。通过peering完成一个pg内的所有副本通pg日志达到数据一致性的过程,系统优先恢复该对象后,才能完成写操作。提供数据的自动恢复功能;ceph的recovery是根据在peering过程中产生,依据pg日志推算出的不一致对象列表来修复其他副本上的数据.当某个osd长时间实效后重新加入集群,无法通过pg日志来修复,就需要进行backfill(回填)过程,backfill是通过逐一对比两个pg对象列表来修复,当重新加入一个osd产生数据迁移,也需要通过backfill过程来完成。

2.提供克隆和快照功能

​ 快照是某一个存储设备在某一时刻的全部只读镜像, 克隆是某一个时刻的全部可写镜像,区别是: 快照是只能读,克隆可写,rbd的克隆基于rbd的快照基础上,在客户端librbd上实现了copy-on-write克隆机制

3.实现对象分层存储的功能。

rados是实现以pool为基础的自动分层机制,
第一层 cache pool: 高速存储设备(ssd)
第二层 data pool: 大容量低速设备(hdd设备),可以用ec模式来降低存储空间
通过cache tier来提高关键数据和热点数据的性能,同时降低存储开销

在这里插入图片描述

4.实现

通过在后台定期(默认每天一次)扫描,比较一个pg内的对象在其他的osd上的各个副本的元数据和数据检查是否一致,根据扫描的内容分两种:
1&gt; 比较对象各个副本的元数据,代码比较小,扫描比较高效,对系统影响比较小
2&gt; deep scrub需要进一步的比较副本的数据内容检查数据是否一致

5.纠删码

通过将写入的数据分成n份,并通过n份原始数据块计算出m份效验数据块,n+m存储在不同的设备或者节点中,可以允许m个数据块失效,通过n+m份的任意n份数据,还原出其他的数据块。

对象的元数据:对象的元数据是用于对象描述信息的数据,以简单的key-value形式存在,在rados存储系统中有两种实现:xattrs和omap;xattrs保存在对象对应文件的扩展属性中,这就要求对象存储的本地文件系统支持扩展属性(场景:保存一些较小而经常访问的信息);omap:就是object map的简称,就是一些键值对,保存在文件系统之外的独立的key-value存储系统中(保存一些大但不是经常访问的数据)。

小讯
上一篇 2025-05-27 14:32
下一篇 2025-04-23 16:04

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/138871.html