CodePlugin:将Dedup应用到纠删码系统
来源:互联网 发布:ubuntu社区中文版 编辑:程序博客网 时间:2024/06/16 20:52
Debup的纠删码应用
论文名字:CodePlugin: Plugging Deduplication into Erasure Coding for Cloud Storage.
简介
当前云存储系统发展迅速,在一个系统中发生磁盘故障的也不再是例外,因此不少系统采用纠删码保护数据免于丢失;同时数据量的增大导致冗余的数据越来越多,一种常见的减少数据冗余的方式是采用dedup方式。 本文将dedup应用于纠删码的云存储系统中,不仅减少了存储开销(冗余的数据块以及冗余数据块引起的编码块都不需要额外存储),同时还减少了编码的开销(很多冗余的数据块不需要进行编码)。实验结果表明:减少存储开销17%,提升编码吞吐率20%
思想主要分三步走:
1,Dedup重复数据删除
本文采用固定块大小的dedup方案,将整个文件切成固定大小的数据块,然后对每一个数据块计算一个hash值,并将此hash值存入到hash表格中。 它并没有采用全局dedup方案,使用了cache来存储unique的hash指纹。对于新到来的数据块,计算hash值,与cache中的指纹比较,如果相同,则表明此块是重复数据块,否则不是。
举例:
如上图所示,如果文件采用RS(4,2)编码,那么一个文件会被切分为4个子文件(sub-file), 例如上面的fid=0的文件,被切分成4个子文件,每一行代表一个子文件,同时每一个子文件有4(注意,这个是巧合,也许可能有8个,10个,它的大小由块的大小以及子文件的大小来决定)个数据块。 因此对于给定的一个数据块可以使用(fid, sid, cid)来进行唯一标识。 有些块标上灰色背景表明这些块是冗余数据块。
RS(4,2)编码:
具体的编码过程不在本文中论述,简单说来就是4个数据块经过运算可以生成2个校验块,这6个数据块可以保证其中的任意的4个块都可以恢复原来的4个数据块,也就是说具有双容错的特性。对于上面的图,每一列会使用RS(4,2)进行编码生成2个校验块。
疑问:
我们发现上面的文件有5个冗余数据块,如果刚好4个冗余数据块位于一列上,那么其实此列是不需要进行RS编码的。 因为既然是冗余数据块,那么它们肯定已经存储到系统中,并且已经进行编码过了。
2,Pseudo-shuffling伪重新排布
根据上面提出的疑问,既然5个冗余不在一列上,我们可以通过重新散布把他们移动到同一列上就行了。下面伪重新散布就是干这个事情的。
可以看到经过重新散布,就把冗余的数据块都挤到最后一列了。我们发现其实还有一个冗余数据块,但是由于这个冗余数据块所在的列上有非冗余的块,因此它所在的一列也必须计算校验。
优点:
通过这种方式,冗余的数据块的存储只有一份,同时其不需要进行计算校验,而且校验块也就没有了。 减少了存储开销以及编码开销。
3,Sub-files Exchange文件片交换
上面的没有考虑这样的一种情况。有一个文件一行都是冗余块,其他没有冗余块;另一个文件只有一行不是冗余块,其他都是冗余块,这两个文件的每一列肯定都会有非冗余块,因此都需要计算校验。 下面的方式就是进行这样的优化的:
从上图可以看出,文件0的第一行都是非冗余块,其他冗余块很多,但是文件1第一行的冗余块很多,其他基本都是非冗余块。 因此如果进行子文件交换(sub-file exchange),换成after switching这样的图,就会发现需要进行编码的数据就少了。 过去需要进行8次RS编码,现在只需要6次编码了,同时还减少了4个校验块的存储。
- CodePlugin:将Dedup应用到纠删码系统
- Dedup概述
- android 将个人应用改为系统应用
- android 将个人应用改为系统应用
- 将andriod应用安装为系统应用
- android 将个人应用改为系统应用
- 将一个应用安装为系统应用
- 将android应用弄成系统应用
- 如何将APP预置为系统应用
- Android 将自己的应用改为系统应用
- 转载:android 将自己的应用改为系统应用
- 如何将APP应用设置成系统级应用
- 将应用分享到微博(系统方法)+系统API生成二维码
- SourceForge上发布dedup util
- SourceForge上发布dedup util
- 利用Equalizer将Ogre应用扩展到并行渲染系统
- 利用Equalizer将Ogre应用扩展到并行渲染系统
- Android 4.1 - 将系统浏览器编译成独立应用
- 夏天到了,热啊,你需要的
- 开源项目
- LeetCode 58 Length of Last Word
- ZED-Board从入门到精通系列(八)——Vivado HLS实现FIR滤波器
- 8种常用的android设计模式
- CodePlugin:将Dedup应用到纠删码系统
- BestCoder Round #78
- Entity framewk 中 的 关系与导航属性
- java设计模式之装饰模式
- 安卓数据库事务
- Artificial Intelligence?
- 关于Block的使用和5点注意事项
- JVM 配置参数学习与研究
- Android 中如何捕获未捕获的异常