Sun的Zettabyte File System(ZFS)现在有内置重复数据删除功能了,这样它可能就是目前最节省空间的文件系统了。
Sun的官方博客上有一篇关于ZFS重复数据删除功能的文章指出,大块的数据如字节排列或数据块或文件都是通过一个散列函数来校验的,任何重复的数据块都不会被储存下来,而是以这个主数据块为参考。
Sun表示,备份数据、虚拟桌面镜像和源代码库都包含大量重复数据,重复数据删除功能可以将磁盘空间使用量降低到所需原始空间的一小部分。
文件级重复数据删除对处理能力的要求最低,但是也是效率最低的方法。数据块级重复数据删除要求更多的处理能力,据说这种方法适用于虚拟机镜像。 字节排列重复数据删除使用的处理能力最多,是删除可能重复且在数据块级上不对称的小块数据如电子邮件附件的理想方案。Sun估计这种重复数据删除方案最适用于应用级环境,因为应用软件知道数据的具体情况。
ZFS利用SHA 256hashing提供数据块级重复数据删除功能,它可以自然映射到ZFS的256比特数据块检查和。重复数据删除是在内部进行的,ZFS假定它正在服务器上运行一个多线程操作系统,具有很强的处理能力。 换句话说,就是多核处理器。
要想开启这个功能,你只要对ZFS进行相关设置即可:
Zfs set dedupe = on silo
Zfs set dedupe = on silo /mydataset
Zfs set dedupe = off silo /yourdataset
由于数据集中包含了冗余数据,这样就可以释放一定的磁盘容量,提高磁盘写数据I/O速度,因为冗余数据没有被写入磁盘。
如果你想确保散列重复数据删除的安全性,你可以让ZFS进行全部字节对比,而不是利用散列对比。
Zfs set dedup = verify silo
你也可以用其他方法,利用一个更简单的散列算法来减少所需的处理能力并将它与验证功能结合在一起以提高重复数据删除的整体速度:
Zfs set dedup =fletcher 4,,verify silo
ZFS的重复数据删除功能可根据文件系统的大小进行调整。一旦映射表过大而无法与内存相匹配,重复数据删除的性能就会降低,在这里采用固态盘存储可能要好一些。
ZFS重复数据删除的优势在于你不需要使用特殊的存储阵列来对数据进行重复删除。普通的阵列产品就相当够用,它在数据集级上的适用性表明你只需对包含冗余数据的数据集进行重复删除,而不用牵扯到其他的数据集。
由于它是内部重复数据删除功能(inline deduplication),因此增加处理核心和内存就可以提高重复数据删除的速度。让我们看看GreenBytes是否会从它现在所用的技术转向ZFS重复数据删除技术。 将ZFS重复数据删除产品与专业重复数据删除存储阵列作一个性能对比也将是一件有趣的事情。