VMFS Storage Sizing for Maximum Performance
Based on best practices, this post is a “formula” for planning and sizing SAN storage for maximum VMFS performance. This is intended to be for all protocols where VMFS volumes are utilized ( FC, iSCSI ) and conservative enough to allow general sizing estimates while ensuring high performance of the running VMs.
WARNING: The storage design resulting from following these recommendations will not be the most cost effective solution. As storage performance generally requires the most spindles (disks) possible and this formula requires as many dedicated LUNs as possible, the cost for storage will be maximized. More often than not, compromises between performance and cost have to be reached that keep the design within the expected budget.
This post is split into 2 sections. The first section lists the VMFS Maximum Performance Rules while the second section uses a 25 server example to walk through the design rules.
VMFS Maximum Performance Rules
- Use multiple RAID array types to increase VM performance and split VM .vmdks across different RAID types.
- A VM example could be:
- C: on VMFS lun1 RAID 5 array contains operating system
- D: on VMFS lun2 RAID 5 array contains file data and application code
- E: on VMFS lun3 RAID 1+0 array contains transaction logs and database
- Create only 1 VMFS Volume per physical SAN Volume
- Create less than 16 .VMDK files (virtual disks) per VMFS Volume
- Connect less than 16 ESX hosts per SAN Volume / VMFS Volume
- Heavy use VMs should get their own SAN Volume / VMFS Volume or use RDMs to minimize disk contention and locking with other VMs (frequent power cycles, frequent vmotions, constant utilization).
- Examples of heavy use VMs might be:
- Development VMs
- Messaging
- Database
- Heavy use VMs should only be on VMFS volumes accessed by a maximum of 8 ESX hosts.
- If the client wants to be able to create ESX snapshots of VMs double the needed (or useable) storage size of the VMFS volumes.
- Size the disks in each array to maximize the spindal count
Sizing Example: client with 25 physical servers
This is a small and simple sizing example to illustrate the Maximum Performance Rules. Larger environments will be much more complex, but the following server table provides a realistic introduction on applying the rules to help design VMFS storage.
Example Client Physical Server Table

- Split VMs with multiple drives into multiple .vmdks across different RAID arrays
- Create 1 VMFS volume per physical SAN volume
- Volumes Needed
- Create less than 16 .vmdk files per VMFS volume
- Volumes Needed (using 16 VMs or .vmdks max per volume)
- Connect less than 16 ESX hosts per VMFS volume – In this example the customer will use 2 or 3 ESX servers so this rule is not applied
- Heavy use VMs should get their own VMFS volumes
- Messaging VMs – put c:, d:, and e: drives on separate volumes
- File VMs – put d: on separate volumes
- Heavy use VMs on LUNs accessed by less than 8 hosts – does not apply because we only have 3 ESX hosts max in this example.
- If customer wants to make ESX snapshots of .vmdks double the needed minimum VMFS Volume sizes – customer does not want to use snapshots in this example
- Size disks to maximize spindal count of the arrays – TBD by storage team?
The above example would need the following SAN VOLUMES (to be formatted as VMFS):















Pingback: VMware on a CX3-40 « Pushing Virtual Limits
Pingback: Virtualization Short Take #10 - blog.scottlowe.org - The weblog of an IT pro specializing in virtualization, storage, and servers
Pingback: VMFS Performance | VM-Aware
Pingback: SOLORI’s Laws of SMB Virtual Architecture « SolutionOriented Blog
Pingback: Welcome to vSphere-land! » Virtual Disk Links