Measure the changed data in your VMware environment


Userlevel 3

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.


12 comments

Userlevel 6
Badge +3

Great work Pasqual.

Is your VeeamONE comparison based on VM Change Rate Estimation - Veeam ONE Reporting Guide or another report?

Userlevel 7
Badge +17

Great script, thank you :thumbsup_tone3:

Userlevel 7
Badge +12

Great script Pasqual, really useful as you already know from my feedback ;)

Userlevel 3

Great work Pasqual.

Is your VeeamONE comparison based on VM Change Rate Estimation - Veeam ONE Reporting Guide or another report?

Hi Stefan. Thanks for your feedback… You are right. That is the the report which I am referring to.

Userlevel 7
Badge +20

Great script and thanks for sharing. :thumbsup_tone2:

Userlevel 7
Badge +13

Script corner is becoming full of gems, great work @Pasqual Döhring 

Userlevel 7
Badge +20

Script corner is becoming full of gems, great work @Pasqual Döhring 

Yes it is.  Once place I visit 2-3 times per week to see what is new.  Trying to find some time to post my own liittle things there.  :joy:

Userlevel 7
Badge +4

Good work @Pasqual Döhring 

Userlevel 3
Badge

Very useful for our environment . Thanks for sharing with us!

Userlevel 1

Nice work thanks for sharing with the community Pascal

Userlevel 7
Badge +8

Very handy. Thanks for the share. 

Userlevel 2

Thanks for the script!

Does anyone know how much time (approximately) does it takes to run a script for 1000 VMs in production environment? 

Comment