So, you just did a first full backup of your VM. Some time passed, and you want to back it up again. How much data changed in a VHD(x) file? Probably not a lot. Does it make sense to back up everything again? Not really. Why would you want to spend time and resources on copying something you already backed up? Let’s see how this can be achieved.
How it used to be done
A virtual disk consists of blocks. When you do a full backup, all these blocks are copied to a repository. For the next backup, you only want the changes (in our case, the changed blocks). When there is no change tracking involved, the source VM needs to be scanned, a hash calculated for each block, and then you need to verify what has changed between the VM in your backup repository and the original VM.
The fact that you don’t need to copy everything each time provides huge savings on storage. However, there’s a major drawback: The backup solution has to process an entire VM, rescanning each block’s hash. This requires a significant amount of resources and time.
How it can be done
We want to make our backup solution work as efficient as possible. This means we want to use the least amount of resources possible when taking a backup. One of the ways of achieving this is by using change block tracking (CBT). Change block tracking creates a bitmap of all the blocks on a virtual hard drive. Once you’ve changed the data in a certain block, it is marked as changed. At the time of a backup, all that is needed for the backup solution is to check the bitmap for all changed blocks since the last backup, and only copy those changed blocks.
How it will be done in Windows Server 2016
Hyper-V didn’t have any native CBT, so backup vendors had to create a filter driver that would monitor those changes. This isn’t the best solution because adding athird-party filter driver can cause issues to the hypervisor and even BSODs. Some vendors had better drivers than others, but Microsoft implemented CBT to solve potential issues. The new Windows Server 2016 is coming with a built-in system of Resilient Change Tracking (RCT).
Change block tracking today, in Hyper-V, as we know it, has one major issue. All those blocks that are being tracked are kept in a memory bitmap on the host.
If anything happens to the memory (such as a VM migration or power outage), the whole bitmap is lost, you don’t know what changed anymore, and you'll have to spend time and resources on doing a full rescan. RCT solves this problem: It creates three bitmaps: one in memory and two on disk.
The one in memory is the same as you know it today. Nothing changes here, and it is the most granular of the three bitmaps. As long as the VM is running, the backup solution will look at that bitmap and copy the changed blocks only when an incremental backup is being requested.
The difference is when the VM is being migrated or there is a sudden power outage. Now the backup solution has two bitmaps to choose from:
The .mrt file and the .rct file, as you can see in the below image:
The RCT file will be used in normal operation. For example, when the VM is moved to another host and you lose the memory bitmap, this one will be used. The RCT file is more granular then the MCT file (but less than the memory bitmap). It uses normal writes.
However, when there is a sudden power loss or similar event, the MRT file (Modified Region Table) can be used. This is written in write-through mode and uses a coarser tracking granularity. Therefore, in case of a sudden power loss, the MRT file still has a good record of what has changed on the disk.
Even though the two on disk are less granular, it’s still much better than doing a full backup or rescan after power outage. Also, those files are always attached to an associated VHD(x) and travel with it if a machine is moved.
All in all, Resilient Change Tracking is a long-awaited feature of Hyper-V 2016. It is designed to make incremental backups easier and faster, plus backup vendors don’t have to create and support their own file system filters any more.
Click here for more information on Windows Server 2016’s new features.
Dmitry Kniazev is a technical product marketing coordinator for Veeam and is based in Saint Petersburg, Russia. Dmitry specializes in virtualization, Linux and data Availability. Follow Dmitry on Twitter @VMDmitry.