VM File Format: VHD or VHDX?

Many people out there, including myself, were excited about the new innovations a few years back with ReFS, the "Resilient File System" introduced with Windows Server 2012, and the VHDX file format for VM disks. See my previous post about these two things here: http://blogs.technet.com/b/notesfromthefield/archive/2012/08/03/new-windows-server-2012-storage-spaces.aspx

Now that I've been using these formats for a few years, there are some things that I've learned that you may find helpful.

First, one of the main reasons I've wanted to use VHDX files is due to their ability to handle the various power outages which seem to be prevalent in my area. I'm going to have to say that having experienced a few power outages since implementing this format change, I've not seen any VHDX file corruption. That's great as far as I'm concerned.

Second, though, is a disadvantage. Running VHDX files on top of ReFS poses some problems. Each system has and maintains its own integrity bit. So in order to use the VHDX format, I had to disable the integrity check on the ReFS structure which housed the VHDX file. Not only that, but also the snapshot location as well as the replica location on the replica server and its corresponding snapshot directory. I want to keep using ReFS since it can do quite a number of things as well as dealing with file integrity as well as being able to repair data corruption.

Third, the ability to upload a VHD file directly into Azure to create a VM based on a legacy application server or even domain controller requires that the file be in VHD format instead of VHDX.

All of these being the case, the reasons for using the VHDX files in my particular case are gone - I do not need the extra size of VHDX files, and the integrity bits of the ReFS serve my reliability function. True, I don't quite get the power failure protection of the VHDX file on ReFS, but with host replication to another server, that works just as well in my opinion in case of power outage corruption. Plus, the ability to upload the VHD files directly into Azure for hosting was a big plus.

Thus, I have taken steps in my home lab to convert all of my VMs to VHD format - or "back" in this case so that if need be, I can move the VHD file up into Azure and create a new VM from the file. I have done this for a few test VMs and it works quite well, both in the classic portal and the new Resource Manager model.

This might be a good decision point criteria for you use:

  • Do I need ReFS?
    • Managing VHDX files on ReFS requires advanced configuration of the directories housing the VHDX files.
    • Using VHD format on ReFS provides an easier to manage solution.
  • Do I need power outage protection?
    • This is a great point in the favor of VHDX files - especially when used on an NTFS partition instead of ReFS.
  • Do I intend to use Hyper-V replication?
    • Using replication might eliminate the need for the power outage protection afforded by VHDX files.
  • Do I foresee a need to ever move the VM up into Azure?
    • Moving the disk file to Azure requires it be converted back to a VHD file. Moving VHDX files is therefore a two step process - convert then upload, which takes quite a bit of time.

Now there are some changes coming with Server 2016, but that has not yet been released so I won't comment on them at this time. Plus I haven't had the chance to work with that yet.