专为存储设计的LRC编码
一个商业存储系统,为了实现故障容错需要有数据冗余技术。当组成存储系统的部件(包括但不限于硬盘)出现故障时,由于存在冗余,仍然可以从其它部件完整读取数据,从而不会因为故障造成数据丢失。
通常衡量数据冗余技术的指标为数据冗余率、检错能力、纠错能力和纠删能力,定义如下:
数据冗余率:冗余后的数据容量/原始数据容量x100%
检错:能识别数据差错
纠错:能纠正数据差错
纠删:能纠错而且能删除超过纠错能力的数据
数据冗余技术分为如下几个级别:
入门级:多副本
一般人对数据冗余技术的理解就是多存几份副本,一份丢了还有其它,副本越多越不容易丢。多副本确实是一种常用的数据冗余技术,最简单但数据冗余率的代价也最高,常见的三副本存储的数据冗余率高达300%,如果要10副本则数据冗余率为1000%。
多副本不仅数据冗余率高,而且但检错纠错能力弱,无纠删能力,还有脑裂(破坏数据一致性)风险。例如,两副本模式下,如果两份数据不一致,能够检错(知道数据有差错),但不能纠错(不知道哪份是对的),这时候就称为脑裂,就相当于一个人闹神经病一样,左脑和右脑打架。在三副本模式下,可以多数判决,具备1位的纠错能力(如果只有1位数据错,可以纠正),但不具备2位的纠错能力。
当采用三副本模式时,数据可靠性大约为11个9(年化99.999999999%)。
常规级:RAID
这是企业级存储最常用的数据冗余技术。RAID是Redundant Arrays of Independent Drives的缩写,有“独立磁盘构成的具有冗余能力的阵列”之意,也称为磁盘阵列,简称盘阵,是用多块磁盘组成一个存储池的技术。
不同的RAID模式采取不同的数据冗余方式,常见的有:
- RAID0:无冗余,只是简单将多块盘绑一起视为一块大硬盘,任何一块盘出现故障都会导致数据丢失。
- RAID1:镜像(Mirror)模式,相当于双副本,每次写数据都将相同数据写到两块硬盘上。
- RAID5:N+1冗余,即每个RAID组冗余一块盘。RAID5允许坏一块盘而不丢数据,即一个RAID组坏一块盘时可以从其它盘完整恢复数据。数据冗余率为(N+1)/Nx100%,有较弱的检错能力,无纠错能力,无纠删能力,数据可靠性大约4个9(99.99%)。
- RAID6: N+2冗余,即每个RAID组冗余2块盘。RAID6允许坏2块盘而不丢数据,即一个RAID组即使同时坏了2块盘也可以从其它盘完整恢复数据。数据冗余率为(N+2)/Nx100%,有较弱的检错能力,较弱的纠错能力,无纠删能力,数据可靠性大约7个9(99.99999%)。
高级:N+M纠删码
纠删码(Erasure Code)是一种前向纠错的分组差错控制编码,例如RS编码、BCH编码、LDPC编码等。纠删码可以用N+M来表示,即将数据用该算法编码成N+M个数据分片(Shard),每个数据分片1/N大小,只需要其中N个数据分片就能用对应的译码算法还原数据。也就是说,最多允许M个数据分片丢失也能保障数据不会丢。
纠删码会带来一定的计算开销和元数据开销,但是数据冗余率低,只有(N+M)/Nx100%,可靠性却接近M副本。例如9+3冗余的数据冗余率只有133%,但可靠性却与3副本相当,而3副本的数据冗余率高达300%,仅仅硬盘的成本就是9+3冗余编码的2倍还要多。
不仅数据冗余率低,纠删码还具备强大的检错、纠错和纠删能力,是各存储系统工程实现的理想目标。
顶级:LRC码
数据冗余编码起源于通信领域,当把一大块数据切成很多数据包来逐次传输时,这些数据包在过程中可能会出现错误或者干脆整个数据包被丢掉。为了解决这一问题,可以将原始数据帧编码成带冗余的新数据帧再进行传输。目的节点接收到足够多的数据帧后,便可解码得到原始的数据帧。比如网络的延时/丢包,就可以通过数据冗余编码得到解决。
长期以来,存储领域一直沿用的是通讯领域的纠删码,直到最近几年,学术界开始认识到存储领域与通讯领域的数据容错的需求有些差异,开始研究存储专用的数学编码。
同样是数据容错需求,在存储领域和在通讯领域有什么差异呢?原来,通讯领域的数据是实时传输的,如果传输的数据出现超出纠错能力的错误,可以丢弃后让源端重发数据包,但在存储领域,就不存在重发的机会了,因为读取数据的时候可能已经是几年以后了,到时万一发现了数据错误,也不能重新存了。为了防止数据在存储过程中逐年累计错误(即Silent Data Corruption)最终超出纠错能力,存储系统需要不断验证数据是否正确(即心跳监测)并且重建(Rebuild)错误的数据。通信是没有重建需求的(可以用重发来代替),所以通信领域使用的纠删码就没有针对重建需求的优化设计,而存储领域需要针对重建需求进行优化,这就诞生了LRC(Locally Repairable Code)编码。
在存储系统的数据重建过程中,痛点在于重建时的系统消耗很大。N+M的纠删码在重建一块盘时需要读取N块盘的数据,不仅带宽流量要有N倍的消耗,重建工程中整个存储系统的性能也将大幅下降。随着单块盘的容量越来越大,重建的时间也越来越长,重建过程对系统性能的影响也越来越大。
LRC编码着重解决存储的数据重建开销,通过适度增加一定的冗余可以大大降低重建时的开销。例如,YTFS采用的YTLRC编码方案中,与RS等传统纠删码编码方案相比,仅仅将数据冗余率从110%提高到128%,不仅检错、纠错和纠删能力有一定提升,而且数据重建的开销有一个数量级的下降。
专为存储设计的LRC编码相关推荐
- 【转载】看懂通信协议:自定义通信协议设计之TLV编码应用
0. TLV 相关资料 最近研究了TLV的相关知识点,收集部分资料如下所示: 学习TLV数据结构 通信协议之序列化 看懂通信协议:自定义通信协议设计之TLV编码应用 TLV编解码Java实现 我的开源 ...
- 专为UI设计而生,上海道宁与Sketch为广大UI设计师带来更好的设计工具
在整个设计领域 PS始终是最主流设计软件 拥有着全面而强大的功能 却也造就了其 复杂而又繁琐的操作 对于深耕UI设计行业的设计师们 上海道宁获得授权的Sketch 无疑是更受欢迎的软件 简洁高效的操作 ...
- 论设计,需求和编码三者的关系
设计本身也要有"源"才行,凭空出现的设计那不过是空想,也是不符合实际需要的.没有一个设计可以满足所有需求,因此设计本身就要根据"需求"源头来做. 第一,先有需求 ...
- 怎么看到方法内引用方法的注释_开门就看到餐厅,玄关怎么设计?试试这3个方法,专为小户型设计...
没有玄关很正常,没有鞋柜却不行.现在有很多小户型的房子,都是进门就见客餐厅,这让很多户主感到了忧愁和烦恼.毕竟既想要出门方便,又不想影响餐厅的氛围,这才是大部分户主的真正诉求.那么鞋柜能够跟餐边柜相搭 ...
- 7张图揭晓RocketMQ存储设计的精髓
简介:RocketMQ 作为一款基于磁盘存储的中间件,具有无限积压能力,并提供高吞吐.低延迟的服务能力,其最核心的部分必然是它优雅的存储设计. RocketMQ 作为一款基于磁盘存储的中间件,具有无限 ...
- 【虚拟化实战】存储设计之七Block Size
作者:范军 (Frank Fan)新浪微博:@frankfan7 微信:GetToCloud 在实战存储设计之六Latnecy我们介绍Latency过高的原因和一些建议.本文重点分析Block S ...
- Kafka#4:存储设计 分布式设计 源码分析
https://sites.google.com/a/mammatustech.com/mammatusmain/kafka-architecture/4-kafka-detailed-archite ...
- Service Team在索引表CRMD_ORDER_INDEX中的存储设计
本文介绍Service Team在索引表CRMD_ORDER_INDEX中的存储设计 要获取更多Jerry的原创文章,请关注公众号"汪子熙":
- EventStore文件存储设计
背景 ENode是一个CQRS+Event Sourcing架构的开发框架,Event Sourcing需要持久化事件,事件可以持久化在DB,但是DB由于面向的是CRUD场景,是针对数据会不断修改或删 ...
- MaxCompute 存储设计
简介: 存储策略该怎么设计 写这篇存储规划的文章主要是想告诉大家该如何给存储做一个规划,在关系数据库的时代存储昂贵且珍惜,掰手指头花钱是存储规划的常态.但是到了大数据时代大家又立即就都变成印美元的美国 ...
最新文章
- Qt Linguist 界面语言翻译
- Java Swing:JPanel添加边框
- Android app按三层架构+MVC整理(重构)代码可行吗
- Scrapy框架的学习(5.scarpy实现翻页爬虫,以及scrapy.Request的相关参数介绍)
- Vue 教程第九篇—— 动画和过度效果
- Mongoose 索引、Mongoose 内置 CURD 方 法、扩展 Mongoose Model 的静态方法和 实例方法
- mysql是小型数据库_mysql小型数据库
- 3-4numpy聚合操作和arg(索引)运算和排序
- thinkphp框架学习笔记(1)
- FFMPEG结构体分析:AVCodec
- thinkphp3.2.3 d方法调用自定义模型_啥?Android 11 不能自定义 Toast 了?
- Unity3D学习1--Unity基础
- 上古八大姓氏,来看看有没有你的姓氏?
- 郑州互联网公司和生活成本
- 一个人最大的本事,是能控制自己的情绪
- Revit初试水之点击按钮打开网页
- RPLIDAR A2 rviz显示雷达数据教程
- 修改Windows Server2003/SQL Server2005的密码后金和C6软件的配置
- ubuntu 内网机器访问外网
- 计算机excel新课导入,Excel导入文本文件的技巧