Erasure code 原理

Erasure-Code(纠删码) 最佳实践 该过程可行的核心保障就是需要确保矩阵A的任意5*5的子矩阵的可逆矩阵都是存在的,这样才能确保丢失8块数据中的任意3块数据都可以进行数据还原。一般情况下可以认为上层业务的大块连续IO读取都是满条带的读取,在Stripe Placement 情况下,满条带的读取在正常情况下和异常情况下从底层读取的数据量可以认为是一致的(如下图左侧图所示),而且当前一般来说EC 解码有硬件加速,即计算层面不太容易成为瓶颈,所以Stripe Placement 在正常度和异常情况下的开销基本可以认为差不多。详见对象存储架构设计。 阅读详情
1. 什么是erasure code?

erasure code可以认为是RAID的通式,任何RAID都可以转换为特定的erasure code。在传统的RAID中,仅支持少量的磁盘分布,当系统中存在多个分发点和多节点时,RAID将无法满足需求。比如RAID5只支持一个盘失效,即使是RAID6也仅支持两个盘失效,所以支持多个盘失效的算法也就是erasure code是解决这一问题的办法。

定义:erasure code是一种技术,它可以将n份原始数据,增加m份数据,并能通过n+m份中的任意n份数据,还原为原始数据。定义中包含了encode和decode两个过程,将原始的n份数据变为n+m份是encode,之后这n+m份数据可存放在不同的device上,如果有任意小于m份的数据失效,仍然能通过剩下的数据还原出来。

Erasure code 原理 - yandong_8212 - UltraDream
2. 使用场景
凡是需要通过冗余来进行高可用的场景。但总体来说,主要运用于存储和数字编码领域。
1) 阵列
如果磁盘阵列需要使用高级特性,比如需要能够容错两个磁盘失效(RAID6),那么可以用n+2的模式;如果想容错4个磁盘失效,则可使用n+4的模式。
2) 云存储
erasure code是云存储的核心技术,最初诸如hadoop, GFS,CEPH等都采用的是n-way replication来做冗余,但是这样会带来极大的成本开销,因此几乎各大公司都在用erasure code替代n-way replication,之后我还会简要介绍一下具体他们使用的模式。
3) P2P领域
erasure code 的理论起码也有20年的历史了,但真正实践可能也就最近几年的时间,在P2P领域,动态的分布和智能的容错,特别是对短暂失效是非常关键的。以往的算法或多或少都有点山寨的感觉,而借助erasure code之后,将会使P2P的算法更具有数学的严谨性。
4) 数字编码
erasure code本身就是出自编码理论,所以在这一块具有先天的优势。
 3. Reed-Solomon Codes
erasure code是所有基于之前定义的统称,但具体下来有很多种,其中RS code是最基本的一种。RS codes是基于有限域的一种编码算法,有限域又称为Galois Field,是以法国著名数学家Galois命名的,在RS codes中使用GF(2^w),其中2^w >= n + m. 
RS codes定义了一个(n + m) * n的分发矩阵(Distribution Matrix) 
Erasure code 原理 - yandong_8212 - UltraDream
因此,对每一段的n份数据,我们都可以通过B * D 得到:
Erasure code 原理 - yandong_8212 - UltraDream
加入D1, D4, C2 失效,那么我们可以同时从矩阵B和B*D中,去掉响应的行,得到下面的等式:
 Erasure code 原理 - yandong_8212 - UltraDream
接下来就是算法的核心部分,如果想要从survivors 求得D,我们只需简单的做矩阵乘法:
Erasure code 原理 - yandong_8212 - UltraDream
因为(B')^-1 * B' = I 单位矩阵,所以我们就秋得了原始矩阵D:
Erasure code 原理 - yandong_8212 - UltraDream
但是上面的推导并不严谨,存在一些问题:
1) B'是否一定存在可逆矩阵?
2) Distribution Matrix - B如何求得?
3) 每次都用乘法,CPU的开销会很大。
针对上面问题,有如下解决方案:
在线性代数中有一种矩阵称为Vandermonde矩阵,这种举证的特点是,任意的子方阵均为可逆方阵。其定义如下:
Erasure code 原理 - yandong_8212 - UltraDream
其中a(i) 均不相同,且不为0. 之后,再利用vandermonde矩阵特性,在GF(2^w)上进行矩阵变换,最终得到Distribution Matrix - B. 具体可参考[Plank,Ding:2005]
在GF域上的加法是异或操作,乘法可以采用乘法表来进行。
 
 4. 其他
实际还有其他的code,在这儿就不累述了。关于erasure code,有一个开源的实现Jerasure,有兴趣可以自己去研究一下。本原理主要是参考James S. Plank教授的论文写成,且Jerasure也是由其开发,不足之处请指正。

参考文献:
Erasure Codes for Storage Application - James S. Plank 
Plant Simulation 实战指南:从二次分配问题到优化布局设计 本文是一份Plant Simulation实战指南,详细讲解了如何利用该仿真软件解决工厂布局中的二次分配问题。通过从数据准备、模型搭建到集成遗传算法进行自动化优化的完整流程,帮助工程师在数字孪生环境中高效寻找最优设备布局方案,从而显著降低物流成本,提升生产效率。 阅读详情

相关推荐

GraphRAG 踩坑记录

GraphRAG踩坑记录

yufanwenshu的博客 4350

什么是erasure code

1. 什么是erasure code? erasure code可以认为是RAID的通式,任何RAID都可以转换为特定的erasure code。在传统的RAID中,仅支持少量的磁盘分布,当系统中存在多个分发点和多节点时,RAID将无法满足需求。比如RAID5只支持一个盘失效,即使是RAID6也仅支持两个盘失效,所以支持多个盘失效的算法也就是erasure code是解决这一问题的办

小飞鱼的专栏 1025

正确使用 SGLang 和 vLLM 中为 Qwen3 开启工具调用能力的完整指南

本文介绍了在vLLM和SGLang框架中部署Qwen3大模型并启用工具调用功能的方法。主要内容包括:vLLM中需配置--tool-call-parser hermes和--enable-auto-tool-choice参数,SGLang中使用--tool-call-parser qwen25参数;提供了完整的部署命令示例和测试工具调用的curl请求模板;对比了两个框架的关键参数差异;总结了常见问题解决方案和性能优化建议。正确配置后,Qwen3能够充分发挥其外部工具调用能力,为AI应用开发提供支持。

Ven%的博客 4447

RS纠删码原理

Erasure Code - EC纠删码原理 一、什么是Erasure Code         Erasure Code(EC),即纠删码,是一种前向错误纠正技术(Forward Error Correction,FEC,说明见后附录),主要应用在网络传输中避免包的丢失, 存储系统利用它来提高 存储 可靠性。相比多副本复制而言, 纠删码能够以更小的数据冗余度获得更高数据可靠性, 但编码方式较复...

折纸鹤 2万+

手把手教你理解ARM SoC中的PPU:电源管理IP的配置与实战避坑指南

本文深入解析ARM SoC中的PPU(Power Policy Unit)电源管理IP,提供详细的配置指南与实战避坑技巧。从PPU基础架构、寄存器配置到与PCSM的协同工作,全面介绍如何优化电源管理策略,解决常见配置误区,并分享高级调试与性能优化方法,助力工程师提升低功耗SoC设计效率。

weixin_28693447的博客 479

告别CPU空转!用STC8的SPI+DMA高效驱动上百颗WS2812B灯珠

本文详细解析了如何利用STC8单片机的SPI+DMA外设高效驱动WS2812B全彩灯珠,解决传统软件延时驱动方式在长灯带应用中的性能瓶颈。通过硬件方案设计、数据格式转换和DMA传输配置,实现高达400Hz的刷新率和低于5%的CPU占用率,适用于大规模灯光项目。

weixin_30847939的博客 394

纠删码(Erasure Code)的数学原理竟然这么简单

超级计算机的一个必要组件是存储系统。小型超算用到的数据较少,磁盘阵列就够了,而大中型超算就要配备容量巨大的分布式存储系统。 分布式存储中经常遇到纠删码的概念:当冗余级别为...

架构师技术联盟 1万+

ubuntu打实时内核补丁教程以及安装后显卡驱动问题解决方法

在ubuntu20.04上安装成功,亲测有效 目录ubuntu打实时内核补丁教程1、下载实时内核2、解压和打补丁(patch)3、安装依赖和编译安装4、修改一些文件,便于之后切换内核5、重启电脑实时内核版本下安装nvidia显卡驱动的问题1、先切换回之前的内核(非实时)版本2、重装之前内核(非实时)版本下的显卡驱动3、切换回实时内核(按照上面的步骤)4、在实时内核下安装显卡驱动 ubuntu打实时内核补丁教程 安装目标系统:ubuntu20.04 电脑配置:i9,2080ti 1、下载实时内核 打开终端,输

weixin_39275295的博客 7995

简述 Erasure Code,EC 纠删码原理

你知道的越多,不知道的就越多,业余的像一棵小草!你来,我们一起精进!你不来,我和你的竞争对手一起精进!编辑:业余草blog.youkuaiyun.com/shelldon推荐:https://www....

xmt1139057136的专栏 4766

ROS2机械臂实战:从基础控制到视觉抓取

本文详细介绍了ROS2机械臂从仿真环境搭建到视觉抓取的全流程实战指南。内容涵盖使用Gazebo搭建仿真环境、编写基础控制节点、集成视觉感知进行目标检测与坐标变换,并设计状态机逻辑实现自动化抓取。通过系统集成与联调,帮助开发者掌握ROS2机械臂开发的核心技能。

weixin_29197699的博客 447

PCL 将对象模板与点云对齐【2025最新版】

PCL模版匹配算法的使用案例,博客长期更新,本文最近更新时间为:2025年1月18日。

点云侠的博客 5378

Erasure-Code:工作原理及数学解释篇

weixin_33912453的博客 192

【论文精读】Graph WaveNet-深度时空图模型

Graph WaveNet构建了一个自适应邻接矩阵,它能保留隐藏的空间依赖关系,能够自动从数据中发现未见的图结构。提出了一个有效且高效的框架,可同时捕捉空间和时间依赖关系。其核心思想是将其提出的图卷积与扩张因果卷积相结合,使每个图卷积层都能处理空间依赖关系。在交通数据集上评估了提出的模型,并以较低的计算成本获得了最先进的结果。

打酱油的葫芦娃 1007

Erasure Code原理

1.什么是erasure code?     erasure code可以认为是RAID的通式,任何RAID都可以转换为特定的erasure code。在传统的RAID中,仅支持少量的磁盘分布,当系统中存在多个分发点和多节点时,RAID将无法满足需求。比如RAID5只支持一个盘失效,即使是RAID6也仅支持两个盘失效,所以支持多个盘失效的算法也就是erasure code是解决这一问题的办法

云存储积累池 2万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Erasure Code - EC纠删码原理

本文介绍了EC纠删码的原理,介绍了RS纠删码中的范德蒙德矩阵和柯西矩阵的区别,比较了两种矩阵的性能差异。

shelldon的专栏 3万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Erasure-Code-擦除码-1-原理篇

做分布式存储的同学, 一定都知道一个了不地的冗余算法叫作擦除码(Erasure-Code), 它让存储以多副本几分之一的成本来达到同样高的可靠性. 虽然web上有很多介绍EC的文字, 但几乎所有这些文字都为了严(bi)谨(ge)而搞的像牛津词典一样难读, 懂的人不需要看, 不懂的人看不懂. 能把事情给人讲明白, 文字才有用. 于是准备了这3篇介绍EC的文字, 我敢肯定, 你没看过这样通(di)俗(diao)易(she)懂(hua)的EC教程. 看完这3篇文字! 保你可以徒手写出一个EC存储系统, 本文是

sinat_22510827的博客 1130

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C语言链表从入门到精通:增删改查、内存管理与常见Bug全解析

在C语言编程中,数据结构的掌握是进阶的关键,而链表正是其中最基础也最核心的组成部分。与数组必须预先分配连续内存的固定模式不同,链表通过节点与指针的灵活组合,实现了动态的内存管理与高效的数据插入删除操作,是理解更复杂数据结构如栈、队列和图的前提。链表的核心价值在于其增删改查操作仅需调整指针指向,无需移动大量元素,这使其在处理频繁增删数据的场景中具备天然优势,广泛应用于系统底层、嵌入式开发和算法设计。然而,节点创建、指针连接、内存分配与释放的顺序,以及边界条件的处理,往往是初学者的难点。本文围绕结构体定义、头插

weixin_34050519的博客 231

分布式系统下的纠删码技术之Erasure Code

Erasure Code(简称EC,也称擦除码或纠删码)是1组数据冗余和恢复算法的统称。本教程以Vandermonde矩阵的Reed-Solomon来解释EC原理。术语定义: dj-数据块; yi-通过数据块计算得来,作为数据冗余的校验块; uj-丢失的、需要恢复的数据块; k-数据块数量; m-校验块数量。 本教程包括: 分布式系统的可靠性问题: 冗余与多副本——提出EC需要解决的问题; EC的...

博客 3716
上一篇: java 面试题基础
下一篇: java stack 和 queue的区别和联系
touch_future
博客等级 码龄10年 3粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值