Data deduplication(重复数据删除)
控制是否清除数据的重复副本。重复数据删除是基于块的,在池范围内同步进行,并且可以以项目或共享资源为单位启用。通过在项目或共享资源的常规属性屏幕上选中 "Data Deduplication"(重复数据删除)复选框可以启用该功能。重复数据删除率将显示在状态显示板中的使用量区域中。
在启用重复数据删除情况下写入的数据将被输入到以数据校验和为索引的重复数据删除表中。重复数据删除强制使用加密性强的 SHA-256 校验和。随后的写入将识别重复数据,并且只在磁盘上保留现有副本。只能在大小相同的块间对以相同的记录大小写入的数据执行重复数据删除。与往常一样,为获得最佳结果,请将记录大小设置为使用该数据的应用程序的记录大小;对于流化处理工作负荷,请使用较大的记录大小。
如果您的数据未包含任何重复项,则启用 "Data Deduplication"(重复数据删除)将会增加开销(更加密集占用 CPU 的校验和以及磁盘上重复数据删除表条目),不会带来任何益处。如果您的数据确实包含重复项,则无论给定的块出现多少次,启用 "Data Deduplication"(重复数据删除)后都将只存储一个副本,从而可以节省空间。重复数据删除必然会影响性能,以至于校验和的计算更加昂贵,而且必须访问和维护重复数据删除表的元数据。
请注意,重复数据删除对所计算的共享资源大小不会产生任何影响,但会影响用于池的空间量。例如,如果两个共享资源包含相同的 1GB 文件,则每个共享资源的大小将显示为 1GB,但是池的总大小也正好是 1GB,而且重复数据删除率将报告为 2x。
性能警告:重复数据删除要求在写入块或释放块时修改重复数据删除表(由其本质所决定)。如果重复数据删除表无法完全装入 DRAM 中,则写入和释放可能会导致发生先前从未出现过的大量随机读取活动。因此,启用重复数据删除功能会对性能产生严重影响。而且,在某些情况下(特别是在删除共享资源或快照的情况下),在整个池范围内可能都会感觉到启用重复数据删除所导致的性能下降。一般情况下,除非已知某个共享资源的重复数据比率很高而且重复的数据和引用该数据的表可以很合身地装入 DRAM 中,否则不建议启用重复数据删除。要确定重复数据删除是否会对性能造成负面影响,请启用Chapter 8, 设置 ZFSSA 首选项,使用Oracle ZFS Storage Appliance Analytics 指南
中的Analytics来测量 "ZFS DMU operations broken down by DMU object type"(按 DMU 对象类型细分的 ZFS DMU 操作数),然后检查与 ZFS 操作相比是否存在比率较高的持续 DDT(Data Duplication Table,数据重复表)操作。如果出现此情况,则表明更多的是 I/O 而不是文件 I/O 在为重复数据删除表提供服务。