擦除技术是Windows Server 2012和Windows Server 2012 R2的自带功能。这种技术在磁盘卷中查找重复的内容,保留一份副本并删除其余重复的部分——而且在数据被移除的位置会插入一个“链接”指向保留的那份数据块上面去。
这是一项很有效的用于回收可用存储空间的技术,前提是磁盘卷很多内容与其他内容没有太大差别。想象一下ISO库,同一个文件多个版本的文件共享(类似修正跟踪);还有你可能不会想到的另一个应用: VDI部署。在VDI部署中的这些虚拟机,即使你使用不一样的磁盘,里面也包含了成千上万相似的操作系统库和可执行文件。在VDI部署环境中启用数据删除功能省下的磁盘空间能够超过90%,其他类型的内容可以压缩50%甚至更多的空间,而且这一切不会对性能产生可感知的影响。所有的这些都包含在你的Windows许可证里面。
Windows Server 2012 R2在数据删除功能上引入了几个改进,包括在扩展文件服务器和集群共享卷上启用这个功能的能力。Windows Server 2012 R2也特别针对VHD和VHDX文件进行了算法的优化,并且增强了Windows写入磁盘的效率和磁盘算法的优化,从性能的角度来说,不会怪罪于为生产部署的虚拟桌面基础架构中活动的VHDX文件。需要注意到的一点是,Hyper-V宿主机和托管存储卷的机器启用的数据删除一定是不一样的,因为使用Hyper-V上有活动的虚拟机负载,数据删除可能会消耗Hyper-V所能承受的系统资源。
数据删除作业
数据删除包含了3种在一定间隔时间重复执行的作业:
优化作业:这个工作执行着核心的分析和从磁盘卷中移除重复内容。它还执行着使用内置算法压缩大块文件的工作,使文件的大小得到平衡,而不会受到解压时对性能的影响。
数据清洗作业:有的时候随着数据删除或者随后的大块文件压缩,数据可能被损坏。这需要使用校验和和对文件元数据的一致性检查来对其进行验证。在这个过程中,数据清洗作业尝试修复损坏的文件,这个过程通过从一个私有备份Windows上频繁访问的非重复内容恢复一份副本来,或者从类似Windows Storage Spaces的容错磁盘卷上恢复文件,或者在文件被写入的时候将损坏的数据块替代为新的,正确的数据块。
垃圾回收作业:这个作业收集那些没有优化或长期不需要的文件碎片,删除它们来增加磁盘可利用的空间。
数据删除启用及配置
开始使用数据删除最简单的方法是使用PowerShell在你想要安装的服务器上添加该特性。你也可以通过GUI使用Server Manager来完成,不过需要执行很多点击和选择。用PowerShell的方法只需要3行cmdlets,所以省了很多工作——有时候我非常赞同这个方法。
在需要安装的机器上,以管理员身份打开PowerShell命令行,输入以下cmdlets:
Import-Module ServerManager
Add-WindowsFeature -name FS-Data-Deduplication
Import-Module Deduplication
一旦正确的组件安装完毕后,还需要一些另外的PowerShell cmdlets让特定的磁盘卷启用数据删除。举个例子,以下cmdlet可以在虚拟桌面部署的H盘启用数据删除 (因此UsageType标记为”HyperV”)
Enable-DedupVolume H: -UsageType HyperV
以下cmdlet在磁盘S上启用了常规的数据删除
Enable-DedupVolume S: -UsageType Default
默认的情况下,一旦你对磁盘运行了这些cmdlets,优化程序就会每个小时运行一次,数据清洗和垃圾回收则每个星期运行一次。你也可以利用以下的PowerShell cmdlet按需手动地启动这些进程。
Start-DedupJob –Volume S: –Type Optimization
你可以使用以下cmdlet来查看Windows设置好自动运行的计划。
Get-DedupSchedule
优化作业默认只能每个星期运行一次,你可以使用Task Scheduler自定义任务来让优化作业运行得更频繁。
我想在这个时代,我们将一整个系统的副本放到了一个巨大的VHDX文件里面,而且我们需要存储的数据容量一直在增加,数据删除对可用存储的管理以及存储数据成本的控制来说将会变成重要的一部分。鉴于数据删除特性是包含在Windows Server许可证里面的,如今没有什么理由不使用这个功能了。