Q. What are Production Checkpoints in 2016 Hyper-V?
A. Hyper-V has had checkpoints (previously known as snapshots) since the initial version which represents a point-in-time view of the virtual machine. For an offline VM (not turned on) a checkpoint preserves the state of its storage by creating a differencing disk which will store future changes to the disk thus preserving that point-in-time view of the VM. For an online VM (turned on) in addition to the differencing disk to preserve storage state the contents of the memory, processor and other devices is saved to disk as all are required to revert a VM back to that point-in-time. Note that this type of checkpoint is independent from the OS running inside the VM which knows nothing about the checkpoints creation. Because of this lack of integration with the guest OS these types of checkpoints are discouraged from use in production as the data in the disk is not in a consistent state with data flushed to disk.
Windows Server 2016 introduces a new type of checkpoint; production checkpoints. The checkpoints integrate with the guest OS via the backup integration service which for Windows guest VMs enable the VSS infrastructure to be utilized and ensure data on disk is in an application consistent state via a VSS snapshot, the same state as if a backup had been taken. For Linux VMs a file freeze operation is performed. Because data is flushed out to disk via VSS and changes quesed while the checkpoint is creation there is no need to save the memory, processor and device state. Only the state of storage needs to be saved which is done via a differencing disk for post-checkpoint changes to disk. In the event of a checkpoint application the VM just reboots to the checkpoint storage state.
The choice to use production checkpoints versus standard checkpoints is configured on a per-VM basis and additionally the option to use standard checkpoints in the event a production checkpoint cannot be taken. This is shown below.
This can also be configured via PowerShell with Set-VM and the -CheckpointType parameter.