Ceph----纠删码

Ceph----纠删码

3.1 RAID

RAID 0

条带化存储数据,将一个文件分块存储到多个磁盘中,理论上能够提供n倍的读取速度,但是没有容错。

RAID 1

使用两块(多块)磁盘,镜像存储,能够在一块磁盘上数据失效的情况下,从另一块磁盘中读取数据。

RAID 5

使用k块磁盘存储数据,1块磁盘存储校验码,使得能提供更快的读取速度时还能够提供一定的容错性。为了防止校验码出错,一般使用数据库存储保证其不会出错。

3.2 高阶RAID

使用Jerasure或者其他算法,使用k个数据盘,m个校验盘,能够提供在m个盘数据失效的情况下还能够读取正确数据。

3.3 纠删码应用

在Ceph中也有两种方式实现数据的容错,一种是采用多副本,另外一种就是纠删码,虽然纠删码能够提供并发读,但是因为需要将对象数据组合以及校验导致其实际的读写处理时间慢于多副本方式。

3.3.1 新写

纠删码:编码后,将数据和校验码一起写入。

3.3.2 读

Primary Shard 收到客户端的读请求,首先将请求的逻辑地址范围进行条带对齐,据此计算得到每个 PG 实例需要读取的数据范围然后分别读取 ,最后再由 Primary Shard 统一汇总后向客户端应答 。

  • 需要条带对齐,便于数据修复
  • 不需要对校验块位置进行调整,因为CRUSH算法本身带有一定的随机性

3.3.3 覆盖写

基于上述基本读写流程,我们可以着手来分析一种更复杂的情形一一覆盖写( overwri能) 。顾名思义,覆盖写是针对对象的已有内容进行改写 。 对多副本而言, PG 处理新写和覆盖写并无区别,然而纠删码则不然,纠删码通过引人条带的概念,将条带变成了更新对象数据的最小单位(这里指逻辑 PG 以条带为单位更新对象内的数据,对应到每个 PG 实例,则是以块为单位更新 。 纠删码的实现要求数据更新必须以条带为单位进行,即更新条带中任意数据块的同时必须同步更新校验块,否则后续无法进行数据恢复,或者说恢复的是错误的数据),因此如果覆盖写的起始或者结束地址没有进行条带对齐,那么对于不足一个完整条带的部分,其写人只能通过“读取完整条带→修改数据→基于条带重新计算校验数据→写人(被修改部分和校验和)”这样的步骤来进行,这个过程被称为RMW ( Read Modify Write ) 。

为了处理多个写操作造成多次RMW的情况,引入了写缓存操作,将多个写操作合并之后一起写入,能够减少RMW的次数,但是这会明显降低写操作的响应速度。

3.3.4 日志

对于纠删码而言,新写和覆盖写都是分布式写,需要使用日志,保证PG之间数据一致性,掉电后能够恢复写之前状态。多副本只需要一个副本更新成功,就可以同步其他副本数据,但纠删码则需要等待真正完成所有的写操作后才算写操作完成。

3.4 总结

纠删码优点:

  • 磁盘的空间利用率高

缺点(相较于多副本):

  • 实现更复杂
  • 性能更差
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ceph是一种开源的分布式存储系统,它支持使用删码进行数据保护。在Ceph中,删码被用来替代传统的多副本技术,以降低存储开销。引用提到,删码技术因其低存储开销的特点受到越来越多的关注。Ceph使用的删码方案是RS编码(Reed-Solomon code)。RS编码是一种被广泛使用的删码方案,它将k个数据块按照一定的编码规则生成m个校验块,通过任意的k个编码块都能重建出所有数据。以RS(4, 2)编码为例,它只需要占用1.5倍的存储空间,就可以提供与三副本技术相同的容错能力。因此,Ceph使用删码来实现数据的冗余和容错,以提供高可用性和数据保护。引用中提到,Ceph删码实现是基于C语言接口的范德蒙行列式编码。具体来说,在Ceph中,使用jerasure_encode函数调用jerasure库中的jerasure_matrix_encode函数进行编码处理。jerasure_matrix_encode函数是ErasureCodeJerasureReedSolomonVandermonde类中的一个方法,它实现了删码的编码过程。通过使用删码Ceph可以降低存储开销,并提供数据的高可用性和可靠性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [删码项目总结](https://blog.csdn.net/tianyi520jx/article/details/126965871)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [Ceph删码编码源码分析](https://blog.csdn.net/wqxl01/article/details/131045453)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值