重复数据删除的基本方式

  基于散列(hash

采用SHA-1, MD-5 等类似的算法将这些进行备份的数据流断成块并且为每个数据块生成一个散列(hash)。如果新数据块的散列(hash)与备份设备上散列索引中的一个散列匹配,表明该数据已经被备份,设备只更新它的表,以说明在这个新位置上也存在该数据。

  基于内容识别

它采用内嵌在备份数据中的文件系统的元数据识别文件;然后与其数据存储库中的其它版本进行逐字节地比较,找到该版本与第一个已存储的版本的不同之处并为这些不同的数据创建一个增量文件。这种方法可以避免散列(hash)冲突(请参阅下面的“不要惧怕冲突”),但是需要使用支持的备份应用设备以便设备可以提取元数据。

Vdo是什么

  整体了解

VDO是一个内核模块,目的是通过重删减少磁盘的空间占用,以及减少复制带宽,从以下结构图中可以看出VDO是基于块设备层(例如本地磁盘、RAID设备、加密设备)之上的,也就是在原设备基础上映射出mapper虚拟设备,然后直接使用即可

  与LVM的区别

可以动态分配磁盘分区,并且可以让多个分区或者物理硬盘作为一个逻辑卷(相当于一个逻辑硬盘)

  Vdo原理

1.零区块的排除:在初始化阶段,整块为0的会被元数据记录下来,这个可以用水杯里面的水和沙子混合的例子来解释,使用滤纸(零块排除),把沙子(非零空间)给过滤出来,然后就是下一个阶段的处理。

2.重复数据删除:在第二阶段,对于输入的数据会判断是不是冗余数据(在写入之前就判断),这个部分的数据通过UDS(UniversalDeduplication Service)内核模块来判断,被判断为重复数据的部分不会被写入,然后对元数据进行更新,直接指向原始已经存储的数据块即可

3.压缩:一点消零和重删完成,LZ4压缩会对每个单独的数据块进行处理,然后压缩好的数据块会以固定大小4kb的数据块存储在介质上,由于一个物理块可以包含很多的压缩块,这个也可以加速读取的性能。

VDO部署方案

  基于KVM部署

可以在配置了Direct Attached Storage的KVM服务器上部署VDO。

       

     VDO学习小结_数据块

 

基于文件系统部署

可以在VDO之上创建文件系统,并使用NFS服务器或Samba将它们公开给NFS或CIFS用户。

 

   VDO学习小结_重复数据_02

 

基于iSCSI目标部署

可以将整个VDO存储目标作为iSCSI目标导出到远程iSCSI启动器。

 

   VDO学习小结_重复数据_03

基于LVM部署

在功能更丰富的系统上,可以使用LVM提供多个逻辑单元号(LUN),这些逻辑单元号均由相同的重复数据删除存储池支持。

在下图中,VDO目标已注册为物理卷,以便可以由LVM管理。从已删除重复数据的存储池中创建多个逻辑卷(LV1至LV4)。这样,VDO可以支持对底层重复数据删除存储池的多协议统一块或文件访问。

重复数据删除统一存储设计使多个文件系统可以通过LVM工具共同使用同一重复数据删除域。此外,文件系统可以利用LVM快照,写时复制以及缩小或增长功能,而这一切都是在VDO之上。

 

 

   VDO学习小结_VDO_04

 

Vdo部署效果

  部署测试

步骤1:安装虚拟数据优化器(VDO) 

        对于RHEL和CentOS Linux发行版,您可以通过运行下面的命令轻松安装VDO Linux设备映射器。

        VDO学习小结_VDO_05

        等待安装完成

步骤2:创建VDO卷 

        若不清楚命名,可使用帮助手册

        图片包含 图形用户界面

描述已自动生成

        输入/EXAMPLES,查看示例

        文本

描述已自动生成

 

        VDO卷是使用VDO创建的逻辑设备。 它们被当作磁盘分区来处理。您只需使用文件系统对它们进行格式化,然后就可以像挂载普通文件系统一样挂载VDO卷。 如果您更喜欢LVM,您可以使用VDO卷作为LVM物理卷。

1.添加硬盘 

                我额外添置了一块虚拟硬盘进行测试,我使用的是vm虚拟化平台,在虚拟机设置中便可完成虚拟硬盘的添加

 

               图形用户界面

描述已自动生成

               sdb为额外添置的硬盘

               日历

低可信度描述已自动生成

          2.使用命令Vdo create创建VDO卷

              文本

描述已自动生成

    •myvdo是VDO呈现给用户的逻辑设备的名称。 

    •/dev/sdb是VDO卷使用的块设备 

    •25G是VDO卷的逻辑大小。 这是可选的,它可以大于实际块设备的物理大小。 

          3.使用命令vdo list --all显示已启动和未启动卷的列表。

             VDO学习小结_元数据_06

          4.运行vdo status命令分析该卷。 

             文本

描述已自动生成

          5.应该启用压缩和重复数据删除功能

             VDO学习小结_数据块_07

          6.可以使用vdo growLogical命令扩展现有卷。 我将把容量增加到30GB。

             VDO学习小结_元数据_08

          7.查看状态

             文本

描述已自动生成

步骤3:使用文件系统格式化VDO卷

          1.您可以使用自己选择的文件系统类型格式化VDO卷。 

            添加-K,-E参数,实现快速格式化

            文本

描述已自动生成

         2.您现在可以注册新设备并挂载它

            VDO学习小结_数据块_09

         3.对于持久挂载,配置/etc/fstab文件。

            电脑萤幕画面

描述已自动生成

            使用UUID挂载可以防止因设备顺序的改变导致挂载失败,在/etc/fstab中添加以下参数,否侧可能会导致重启后vdo卷挂载不上

           文本

描述已自动生成

           使用blkid命令可以查看对应设备的UUID

           VDO学习小结_元数据_10

        4.你还可以以可读的形式显示数据

          手机屏幕截图

中度可信度描述已自动生成

步骤4:测试重复数据删除

        1.选择一个文件测试重复数据的删除效果

         VDO学习小结_元数据_11

        2.检查存储数据。

           --- Before copy ---

         手机屏幕截图

中度可信度描述已自动生成

          --- After copy ---

         手机屏幕截图

描述已自动生成

          您可以注意到Used字段的值从4.0G增加到了4.9G,因为我们将一个文件复制到占用了一些空间的卷中。 

       3.让我们再做一个相同文件的副本。 

         VDO学习小结_重复数据_12

      4.再次查看存储数据

         VDO学习小结_数据块_13

写在最后

  通过使用VDO可以减少磁盘的空间占用,比如现在存在一个20G的文件,它被复制了3份,都存在了一个30G的VDO中,由于VDO的文件存储机制,实际在VDO中只存在了一份20G的文件。

  但从用户角度,会发现这个磁盘已经存了80G的文件,相当于我们就用了一个30G硬盘虚拟出了一个80G硬盘,当然这只是在特殊情况下可以做到(存储的都是同一个文件),并不是真的能存80G。