Vertical scalability enables the addition of resources to a VM, but different hypervisors impose different limits...
on the amount of resources that you can allocate.
Vertical scalability, also known as scaling up, refers to assigning additional resources to a VM to make that VM bigger. It's the virtualization equivalent of adding processor sockets and dual in-line memory modules to an existing server. You can create vertical scalability quickly and easily using the hypervisor's management GUI or command-line console, but vertical scalability is finite. Hypervisors impose specific limitations on the resources that you can allocate to each VM.
Consider the limits for a popular hypervisor such as VMware ESXi 6.7. Each VM can support up to 128 virtual CPUs, 6.1 TB of memory, VM disk file sizes up to 62 TB and up to 10 virtual network interface controllers (NICs).
Recent vSphere releases vastly expanded storage support. VMware vSphere still supports up to four virtual SCSI adapters per VM, but each VM can handle up to 64 virtual SCSI targets per adapter. This brings it up to 256 virtual SCSI targets in total.
More recent versions of vSphere added support for virtual nonvolatile memory (NVMe), which supports up to four virtual NVMe adapters and up to 15 virtual NVMe targets per adapter. This brings it up to 60 virtual NVMe adapters in total.
These are absolute vertical scalability limits for each VM running under a particular hypervisor, and different hypervisors impose different limits for the VMs. For example, the vertical scalability limits are slightly different for a generation two VM using Hyper-V under Windows Server 2016. Each VM can support up to 240 virtual CPUs, 12 TB of memory, VM disk file sizes up to 64 TB, and up to 12 virtual NICs, including both legacy and Hyper-V-specific network adapters. Hyper-V VMs can also support up to four virtual SCSI controllers with a total of 256 virtual SCSI disks.
Get up to speed on scalability
Your storage technology might be limiting your ability to scale. Examine your hardware's limitations before attempting vertical or horizontal scaling. It might be necessary to upgrade your hardware or reorganize disk groups.
Scaling can be a costly process. Analyze costs and benefits in the context of your workloads' needs to determine how much scaling will suit your environment. Retrospective evaluation can then help you make future decisions.
A cost-benefit analysis might point you in a direction between scale out and scale up, but further analysis is necessary. Monitoring tools make this much easier. Take advantage of the objective data they provide to make an informed decision about scaling strategy.
In practical terms, however, it's rare to scale a VM anywhere near its absolute limits. Most enterprise workloads don't require -- or cannot practically use -- such extensive resources.
Even when the workload could use such extensive resources, it's often better practice to scale out rather than up. Horizontal scaling spreads out the workload to multiple VMs -- preferably on different physical servers -- to meet the workload's performance demands. This strategy also improves the workload's availability and resilience by eliminating the single point of failure from having one huge vertically-scaled VM.
Dig Deeper on Capacity planning for virtualization
Related Q&A from Stephen J. Bigelow
Regression tests and UAT ensure software quality and both require a sizeable investment. Learn when and how to perform each one, and some tips to get... Continue Reading
Learn the meaning of functional vs. nonfunctional requirements in software engineering, with helpful examples. Then, see how to write both and build ... Continue Reading
Just because software passes functional tests doesn't mean it works. Dig into stress, load, endurance and other performance tests, and their ... Continue Reading