Hyper-V generally supports three types of virtual hard disk files: fixed, dynamic and differential. No type is...
best -- each type is designed to fill a specific role or purpose for the associated VM.
Fixed VHD files
Fixed VHD files are basically static entities that are completely provisioned when the VM is first provisioned. Because all of the disk space is committed to the VM upfront, the storage space is almost always contiguous on the physical disk itself. This helps to prevent fragmentation in the VHD file and keeps storage read/write performance high.
The static nature of a fixed VHD file also mitigates system CPU demands because the system doesn't need to check the underlying mapping of storage blocks.
When administrators employ the traditional VHD file format, fixed file types are almost always recommended. Fixed file types are also preferred when storage capacity isn't monitored regularly. This prevents the possibility of capacity expansions accidentally exhausting the available storage capacity and causing the VHD file to run out of space -- impairing or crashing the associated VM.
Dynamic VHD files
Dynamic VHD files are essentially thin provisioned storage instances where additional storage space is provided to the VHD on demand -- only a small portion of the VHD is actually backed by real storage capacity -- and the blocks involved in the dynamic VHD are typically not initialized. When a block is first written, the hypervisor must prepare the VHD for the block and update the associated VHD metadata.
This block mapping and metadata work demands additional CPU usage, lowering the overall performance of the dynamic VHD file. However, VM files using the current VHDX format often benefit from the built-in resiliency features of dynamic VHD files. And environments that actively monitor storage capacity can mitigate storage use with dynamic -- thin provisioned -- files.
Differential VHD files
Finally, differential or differencing VHD files offer a specialized kind of dynamic VHD file. As with a dynamic VHD, a differential VHD isn't provisioned upfront. Instead, blocks are added and initialized as data is written over time. This increases CPU usage and I/O demands.
However, a differential VHD points to another -- parent -- VHD, and reads are only read from the differential VHD if they have been written; otherwise, those blocks are read from the parent VHD. In this way, the differential VHD is ideal for capturing and managing changes to another VHD file, and differential VHDs are typical for VM snapshots.
Dig Deeper on Microsoft Hyper-V management
Related Q&A from Stephen J. Bigelow
Regression tests and UAT ensure software quality and both require a sizeable investment. Learn when and how to perform each one, and some tips to get... Continue Reading
Learn the meaning of functional vs. nonfunctional requirements in software engineering, with helpful examples. Then, see how to write both and build ... Continue Reading
Just because software passes functional tests doesn't mean it works. Dig into stress, load, endurance and other performance tests, and their ... Continue Reading