I recently decided to reload my computer, moving from Windows 8.1 Enterprise Edition to Windows 10 Enterprise Edition. I had previously enabled the data deduplication feature on my Windows 8.1 installation with an unsupported hack by using the source files from Server 2012 R2. Deduplication was enabled on my SSD drive for the VHDX files that I use for my test and demonstration environment that runs via Hyper-V VM’s.
In my opinion, Microsoft should support data deduplication on enterprise edition desktop operating systems since it can save an enormous amount of space. Notice the size versus the size on disk in the following example:
Deduplication has worked flawlessly on my computer while running Windows 8.1, but this is a perfect example of why you shouldn’t do things that are unsupported even if they seem to work great in the short term. You’re ultimately painting yourself into a corner and digging yourself a deeper hole because you’ll experience a problem sooner or later.
There were some hacks to use dedup with some of the preview versions of Windows 10 because the necessary files were able to be used from the Windows Server Technical Preview, but those hacks don’t seem to work with Windows 10 RTM because the Server files aren’t the correct build version and the right ones don’t seem to be available yet:
The problem is the data can be seen on the drive, but it’s inaccessible since Windows 10 doesn’t have the necessary duplication feature installed. Here’s the error when trying to connect a VHDX file in Windows 10 Hyper-V that exists on a dedup enabled volume:
“The Virtual Machine Management service encounter an error while configuring the hard disk on virtual machine PC08.
‘PC08’ failed to add device ‘Virtual Hard Disk’. (Virtual machine ID 421205ED-E92F-446-984B-12EBC9819296)
Failed to open attachment ‘D:\Hyper-V\Virtual Hard Disks\pc08.vhdx’. Error: ‘The file connect be accessed by the system.’.
Luckily, I had a Windows Server 2012 R2 machine that I was able to enable the deduplication feature on, move my SSD to, and copy the data off of it, then delete the partition and recreate it. This is the only way I’ve found to completely remove deduplication from a volume it has been enabled on since the Disable-DedupVolume cmdlet only disables deduplication from that point forward but doesn’t undo data deduplication from existing data.
I did however run into one issue where one of my parent VHDX files was corrupted during the copy process. Notice the 1980 date on the file:
This affected multiple VM’s since I use differencing disks. Luckily I had a backup so I was able to restore that file and all seems to be well at this point except without deduplication.
The moral of the story is don’t do things that aren’t supported even if you can and they work great in the short term since that’s not a good long term plan and you’ll only be creating major headaches for yourself in the long term if you do so.
Fellow PowerShell MVP Stephen Owen posted a blog article about this same issue along with a couple of possible solutions without having to physically move the drive to another machine. I would be curious to know what would happen if the unoptimization command was run and there was more data than would physically fit on the drive as was the case in my scenario.