什么是重删?

什么是重删?

重复数据删除(重删)是一种节约存储空间的技术,通常情况下,在数据存储池内是有很多重复的数据,重删则是将这些重复的数据找出并处理的技术。
什么是重删?_第1张图片
简单地说重删,就是将N份重复的数据仅保留1份,并将N-1份数据的地址指针指向唯一的那一份。

举一个例子,我们管理邮件的收发,一般的小体积附件会直接附在这封邮件中并发送给收件人;如果是超大附件发送,会先将你的附件上传到中转站,然后收件人收到一个链接,如果有需要再去下载,否则这个超大附件不会保留在本地而是仅保留一份副本在服务器上。

这种实现过程主要表现为在线重删的过程,目前,在存储主流业界均采用这种形式。

Step1:对传入数据进行扫描分割并计算每个数据块的指纹(哈希值)
在这里插入图片描述
Step2:将新写入的数据的指纹与现有指纹库比对
什么是重删?_第2张图片
Step3:若存在一样的指纹信息,则删除此新数据,若不存在一致的指纹,则写入新数据
什么是重删?_第3张图片

重删的原理-哈希

  • 给每一个数据块分配一个独一无二可识别的标签是重删的核心所在,如果没有这个样一个标签,让CPU在庞大的数据中简单粗暴地去比对数据块是否重复,这毫无意义。而这个标签就是哈希值。

  • 哈希不是人名,哈希算法是指将任意长度的二进制映射成较短的的固定长度的二进制值,这个小的二进制值称为哈希值。

  • 哈希值具有不可逆性,某个数据实例通过某种哈希算法生成其哈希值,仅知道其哈希值的时候,是不能逆向得到这个数据实例的。

什么是重删?_第4张图片
无论哪种哈希算法,都会有理论上的哈希冲突,所谓的哈希冲突就是不同的两份数据计算出来的哈希值是相同的,这就容易造成数据丢失。因此,避免哈希冲突的发生则是重删算法设计的重中之重。

无损重删和有损重删

无损重删:进行哈希计算后,发现“指纹”相同后,再进行数据比较(进行XOR校验),再确认是否为重复数据,这种算法能够完全避免哈希冲突,不会丢失任何数据。

有损重删:进行重删算法后,就确认被计算的数据是否为重复的数据,这种算法不能从根本上避免哈希冲突,是有数据丢失的风险的。只适用于对数据准确性要求不高的情况。

主流厂商选择无损重删的方式居多,能够保证重删数据的安全性。

在线重删和后台重删

什么是重删?_第5张图片

在线重删

优点:

  1. 无额外的存储空间要求;
  2. 可以减少写盘次数,减少对RAID和磁盘资源的占用;
  3. 在全闪存阵列中能有效减少全闪存设备中SSD盘的数据写入量,延长了SSD盘的寿命,从而降低数据失效的风险。
    缺点:
    影响IO的性能,增加了IO的延迟,且对缓存的设计有较高的要求

后端重删

优点:不影响写IO响应时间,对前对业务没有显著影响
缺点:
1.重删过程占用系统资源。
2.数据写入到消除重复数据前,需要确保有足够的存储空间。
3.和在线重删相比,SSD盘的写入次数显著增加,对延长SSD盘的寿命没有帮助。
目前,在线重删是业界主流的重删方式。

定长切割与不定长切割

所谓定长和不定长切割,指是重删的粒度是固定的和不固定的
定长切割
原始文件
什么是重删?_第6张图片
插入 “x” 后,所有文件顺序都改变,该文件被认为是新文件。
什么是重删?_第7张图片
不定长切割
原始文件
什么是重删?_第8张图片
插入“x” 后,只有 “x” 被认为是新元素。
什么是重删?_第9张图片
定长重删是目前重删算法的主流方式,定长重删在效率和性能上取得了平衡,不定长重删的重删效率虽然高,但是对性能的损耗则非常高。
什么是重删?_第10张图片

你可能感兴趣的:(重删,数据保存,存储,数据库,大数据)