原理
SmartDedupe&SmartCompression特性通过删除重复数据或对业务数据进行压缩,减少数据冗余,节省存储空间。
相关概念
在了解SmartDedupe&SmartCompression特性的原理前,需要先了解相关概念:
- 重删数据块大小:用于指定存储系统进行重删的粒度。重删数据块的大小与thin LUN的分配单元大小一致。根据业务需要,用户可以在CLI(Command Line Interface)下运行create lun命令,通过grain_size参数为thin LUN设置不同的分配单元大小。
关于create lun命令的使用方法,请参见对应产品型号的《命令参考》。
- 压缩数据块大小:用于指定存储系统进行压缩的粒度。存储系统基于新写入LUN的数据块大小进行智能合并压缩。
- 定长重删:重删过程中,存储系统按照相同的重删数据块大小对写入LUN的数据进行重删。
- 哈希算法:校验数据块一致性的方法。通过该方法,可以计算出数据块的指纹信息(指纹信息是一个固定长度的二进制数值,与人的指纹类似,可以看成是每个数据块的唯一标识)。当多个数据块的指纹信息一致时,存储系统会认为这些数据块是重复的。
- 逐字节比较策略:查找重复数据块时,对哈希算法的补充校验方法。当采用逐字节比较策略时,存储系统除了要对比指纹,还需要逐字节比较数据块中的数据。
- 重删元数据:保存重删处理相关信息。例如,数据块的指纹信息,重删后数据的存放位置等。
在线重删
存储系统实现了在线重删,仅对新写入的数据进行重复数据删除处理。对LUN开启重复数据删除功能后,存储系统会将新写入的数据块与该LUN中原有的数据块进行对比,如果识别出重复数据块,存储系统会删除新写入的数据块,并将被删除数据的存储位置修改为存储系统中原有数据块的位置。
如果创建LUN时未选择开启重删或压缩功能,创建LUN后不支持再开启重删或压缩功能。
存储系统进行数据重删处理的流程如图1-1所示。
- 存储系统利用哈希算法计算新写入数据块的指纹信息。数据块的划分粒度与thin LUN的分配单元大小一致,且每次重删处理的数据块大小保持一致,实现定长重删。
- 通过指纹信息对比新写入数据块与原有数据块是否重复。
- 是 => 存储系统认为新写入的数据块与原有数据块重复,删除该数据块,并将该数据块的存储位置指向原有数据块的存储位置。
- 否 => 存储系统认为新写入的数据是一个新数据块,将新数据块写入硬盘。
例如,LUN中原有数据为A和B。应用服务器写入数据块C和数据块D,数据块C和数据块D与原有数据的比较结果如表1-2所示。采用不同的数据重删策略时,数据重删处理结果示意图如图1-2所示。
数据压缩
存储系统实现了在线压缩,仅对新写入的数据进行压缩处理。对LUN开启数据压缩特性后,存储系统会对每次新写入的数据进行智能合并压缩,提升数据压缩效率。
存储系统在进行数据压缩处理时,会根据用户设定的压缩策略进行不同程度的压缩。存储系统支持如下两种压缩策略:
- Fast:Fast策略是系统默认使用的压缩算法。该算法压缩速度快,但与Deep策略相比压缩后空间节省效率低一些。
- Deep:Deep策略可以获得空间节省效率的明显提升,但压缩和解压需要花费更长的时间。
数据压缩处理的示意图如图1-3所示。