介绍
数据重复删除技术是指删除数据存储或副本发送的多种方法,它可以减少存储数据空间和降低成本,在使用昂贵的网络链接时,降低传输成本。如果合理使用的话,数据重复删除技术可以通过删除I/O来改善性能。
数据重复删除技术会作用于相同数据块的数据集。譬如,不同虚拟机图像虚拟化环境可共享客户操作系统副本,另外其他模块则独立于虚拟机。利用数据重复删除技术,仅独立于每个存储虚拟机的数据才需要进行存储操作。邮件服务器是另一个例子,它涉及到多用户接受相同文档或附件。其他情况下,数据重复删除技术还可用于多开发者共享同一代码集合的资源代码库,以及备份存储库。
许多方法都可以用于检测重复数据。一方面涉及到如何检测重复数据的问题,其方法包括基于字节、文件和数据块的方式。基于字节是最常用的方法,可用于CPU密集型,该方法不限制整个文件或固定数据块边界的比较。基于文件是最简单的方法,仅用于检测完全相匹配的文件;大文件和单个字节区别在于模块中无法享受到数据重复删除技术的优势。基于模块数据重复删除技术用于比较个人物理模块。开始创建文件时,如果复制大文件和添加字节,即使两个文件基本相同,也无法搜索到复制数据。
据写入存储系统时,可同步执行数据重复删除技术或进行后期处理操作。如果执行同步操作的话,则可能带来潜在性能影响。如果执行异步的话,数据被写入后,在释放空间之前,您必须有足够的空间存储复制数据。另外,您也可以进行在当前存储系统中写入额外I/O数据。
NexentaStor数据重复删除技术
NexentaStor公布了数据重复删除技术3.0.0发行本,该版本基于块执行操作(注意NexentaStor支持可变大小的块)。数据重复删除技术是产品可配置选项。产品有两种不同的执行操作。数据写入存储系统时,可执行同步、嵌入式数据重复删除技术。NexentaStor基于256位校验,并进行复制块检测。数据复制到其他存储系统时,也可执行数据重复删除技术。复制流中的重复块无法发送到远程系统中。
NexentaStor是一个统一的存储设备。数据可以被当作是文件或者模拟成块设备。重复数据删除可以在这两种数据集中执行。重复数据删除虽然有一个大型池的范围,但它能在每个数据集基础上进行配置,所以你可以在需要的时候使用它。
工作原理
为了保证端对端数据完整性,对于每个数据块,NexentaStor均使用基于256位的校验和。返回存储数据之前,可使用校验和可以防止无记载的数据损坏,并进行自行修复。校验和也适用于数据重复删除技术。
在数据被写入时,每个数据块将计算校验和。写入数据之前,通过数据重复删除表(DDT)功能查看数据复件是否存在。这样,校验和作为逻辑密钥进行数据查找。如果数据已经存在,数据就无法写入存储。另外,元数据更新则表示其他数据集引用了该数据块。
因为复制模块检查可同步进行,I/O模块减少并存放到磁盘中。NexentaStor现代多线程架构设计处理能力显著增加,和关键系统资源无关。另外,I/O带宽可能造成瓶颈问题。因此,权衡CPU周期可潜在地节约I/O。类似情况下,NexentaStor通过另外的方法使用处理能力进行压缩处理,以节约空间和I/O带宽。
NexentaStor支持不同的复制格式。自动同步服务用于将数据和元数据复制到另外系统中。复制可配置选项指网络数据重复删除技术或复制数据流重复删除操作。将数据复制到目标系统时,NexentaStor可跟踪转移的模板。同一复制流中不会重复发送相同的模板。如果复制数据流已存在,NexentaStor可节约WAN带宽但却无法节约存储空间。节约存储空间时,模板系统则需配置嵌入式数据重复删除。
限制条件
数据写入或复制时,可采用NexentaStor数据重复删除技术。数据写入内存和缓存时,就可进行重新组合。如果您的相同数据有多份副本的话,数据重复删除技术可降低磁盘存储空间,但无法节省内存空间。
由于NexentaStor基于模块数据重复删除技术,因此NexentaStor也会受到该方法典型限制条件的约束。将附件放入文件或字节添加到front中,文件中所有的共同数据就会出现不一致的情况,且无法保存重复删除的数据。
配置灵活性
数据重复删除技术是产品可配置选项。如果您不想存放太多的复制数据,您就无须勾选此项,因为该操作只会添加不必要的系统负载。许多情况下,空间节约更好的选择是压缩处理。注意,您可以在同一数据集中同时进行压缩处理和数据重复删除。
NexentaStor数据重复删除是基于256位校验和。默认情况下,系统会采用SHA-256校验和。事实上,如果采用相同的校验和的话,两个模块则不可能重复。然而,两个模块完全匹配的情况下,可配置“验证”选项进行数据检查。
进行配置时,数据重复删除规定在池范围内。然而,池中个人数据集数据重复删除可被打开或关闭。任何时间,数据重复删除技术都可被打开。然后,即使该功能也可以随时被关闭,因为NexentaStor需要维护数据重复删除表和引用之前数据重复删除模板的次数,因此执行结果可能较慢。
系统要求
数据重复删除技术涉及到许多随机读取和元数据更新,因此安装最好的系统性能,数据重复删除表应符合适应缓存替换(ARC)。当然,并不是所有的ARC都用于DDT。默认情况下,系统将为DDT安排大约25%的内存。修正ZFS arc_meta_limit可调整具体使用大小(元数据)。如果您希望选择功能DDT和RAM相适应,但如果不匹配的话,则需要符合L2ARC空间。如果将其放置到RAM中,性能变慢;但如果表不匹配ARC 或L2ARC,性能则大大降低。
如果您没有使用数据重复删除技术,您就无须安装DDT。如果您使用了数据重复删除技术,表中必要记录了池中每个模块的目录。表目录大约占350字节。通过查看池大小和划分平均模块大小就可以分配表目录的数量。
举个简单的例子:假设使用8K模块大小10T池数据重复删除技术。这意味着您需要500GB RAM 和L2ARC。您可以将ZFS arc_meta_limit调整到80-90% RAM。根据特别步骤,使用vim编辑/etc/system,在栏内输入400GB。
set zfs:zfs_arc_meta_limit=400000000000
性能影响
NexentaStor 对数据重复删除实施极其灵活。另外,用户可以首先尝试重复删除当前数据,以此来了解是否可能带来任何好处。
如果您系统没有足够的系统资源或者数据重复删除用于几乎独立的数据集,数据重复删除技术就会对性能产生负面影响。您也可以使用模仿功能并在测试环境中进行检验,这样可避免在使用过程中出现性能问题。
如果您的系统设计合理,有适当的系统资源,数据重复删除仅用于所需的数据集,数据重复删除技术就可通过删除存储系统写入改善性能和整体空间利用率。
总结
作为强大的存储设备,NexentaStor可以重复删除文件和模块存储,操作灵活,可配置所需的数据集。正确使用的话,NexentaStor不仅可以节省存储空间,也可以改善性能和降低数据传送成本。