The problem
Have you ever needed to know how much data you need to backup incrementally from your VMware environment? Because you need to design a new backup storage? Because you need to know, if your WAN is capable of transferring everything into the cloud or from your branch office? Because you need to know the change rates of your VMs?
The solution
Now you can track these data changes with a simple script! Let me introduce you to GetChangedBlocksV2!
It is a PowerShell script which uses the VMware PowerCLI to read the changes from your VMware disks each time it is run and saves it as CSV. It keeps track of the changes between each run, between each day and between each week. In order to get good results, you need to run this tool on a regular basis, e.g., with the Task Scheduler.
There is even a basic Excel file included to analyze the results for you. But if you have better tools feel free to utilize them.
Where to get it?
https://github.com/turboPasqual/GetChangedBlocksV2
Other stuff
Why just VMware? Because VMware offers a good API to get everything that is needed. Many environments consist of mainly VMware VMs and therefore the majority of the data gets tracked. Also, everything else (like Hyper-V, physical machines, NAS filers) is either very difficult to track or at least too much work for me at the moment.
You can do the same with Veeam One… No, you cannot! Veeam One has a very similar approach to track changes but it tracks every single change and not just changes between snapshots. Let’s make an example: You have a disk with 1 GB of unique data. You take a backup as a baseline. Now you change every single byte 5 times and make an incremental backup. Since every block has changed, you will get an incremental backup size of 1 GB and that is exactly what the script would report. Veeam One on the other side would tell you that there is 5 GB of changed data, which is not wrong but often not what you want to know.
Excerpt from the official script description
PowerShell script to measure the amount of disk changes on VMware VMs each time it is run.
This scripts measures the amount of disk changes on VMware VMs each time it is run.
The main/original purpose is to get real data of the daily and weekly incremental changes of your
VMs in order to size your data protection / backup solution properly.
It measures all VM virtual disks for which Change Block Tracking (CBT) has been enabled.
The first time it is run, it creates a file containing baseline data (CBT change IDs and times).
Each subsequent run measures changes since the last run.
Additionally once a day/week (first run) it measures changes since the last day/week.
Note that every run creates a short-lived snapshot on every VM that has CBT enabled.