This is a follow-up to my previous post on VVols commenting on The Register’s VVol article. I’ve seen this question come up often so I wanted to provide some detailed information on the minimum, average and maximum amount of VVols a VM can have. This has a direct impact on the scalability of VVols as the number of VVols that can be supported on a storage array varies by vendor, I’ve seen some as low as 1,000 and other over 100,000. Let’s first start with the number of VVols that can be bound to a single host, right now that number is 64,000, although I’m pretty sure that number was 4,096 initially and has been subsequently increased in vSphere 6.0 updates. VMware doesn’t version control or have update dates on their vSphere 6 max config guide so you can’t see what has changed in vSphere point releases.
Minimum # of VVols per VM:
The minimum number VVols a powered-off VM with one virtual disk will have is 2 (config, data), once a VM is powered on a swap (vswp) VVol is created which increased that number to 3, the swap VVol is then deleted when a VM is powered off. For any additional virtual disks that a VM has there will be another VVol created. So a powered on VM with 3 virtual disks will have a minimum of 5 VVols associated with it (1-config, 3-data, 1-swap). For any VM snapshot that is created it will add at least one additional VVol per virtual disk (plus an additional if memory state is selected).
Average number of VVols per VM:
This one is a hard one to calculate as every environment varies, the big influencer here is the amount of VM snapshots that you normally maintain. You’ll typically have at least one per VM a night when your backup jobs are running, but that is removed after the backup completes. If you’re one that takes a lot of VM snapshots, calculate the average number per VM that are running concurrently then add 3 (min) to approximate your average number. Based on what I’ve seen and heard so far from customers I’d put the average number of VVols per VM at around 7-10. If you multiply that times that number of VMs that you plan to run on an array, this number should be well under the max VVols supported by the array.
Maximum # of VVols per VM.
This one is easy to calculate by simply doing the math. The maximum number of VVols a powered-on VM could have is around 2,000:
- 1 – config
- 1 – swap (one memory file per VM)
- 60 – data (max # of virtual disks per VM)
- 1,920 – snapshots (60×32 – max # of snapshots a VM can have is 32 times max # of virtual disks)
- 32 – snapshot memory state (based on max # of snapshots a VM can have, one for each)
Now this is the theoretical maximum, I don’t think you’ll see anyone running VMs with 60 virtual disks and 32 active snapshots.
Again the maximum number of VVols supported by a storage array is up to each vendor to decide what they want to support. The maximum number of VVols that vSphere can support is a pretty high number, the only maximum that VMware has published is the amount of VVols that can be bound to a single host which is 64,000. Hosts can see more than 64,000 VVols on a storage array but they can only bind (powered on VM) to a max of 64,000 of them at any one time. Given that a host has a max limit of 1,024 VMs, 64,000 VVols per host is a pretty high limit.
We can calculate the theoretical maximum of VVols in a vCenter cluster by doing the math:
- 60 – max # of virtual disks per VM
- 32 – max number of snapshots per virtual disk
- 10,000 – max number of VMs per vCenter cluster
This make the theoretical maximum in a vCenter cluster around 19 million total VVols, again I don’t think you will see any environments this size but you can see that very large environments will require an array that can support a large number of VVols. If we used 8 VVols per VM which is in my range of averages above, the numbers would come out to for different size environments around:
- 250 VMs – 2,000 VVols
- 500 VMs – 4,000 VVols
- 1,200 VMs – 9,600 VVols
- 3,000 VMs – 24,000 VVols
- 4,800 VMs – 38,400 VVols
- 6,000 VMs – 48,000 VVols
So when planning your migration to VVols keep these numbers in mind, do the math based on your own requirements and make sure your results are in line with your array vendors supported VVol limits.