My customer faced several of the issues describe in VMware KB 1004420 when their ESXi hosts addressed more than 8 TB of open VMDKs. See the maximum TB amount of open VMDKs per ESXi in the above mentioned KB.
The blow scripts are tested and verified on the following platform:
- Windows Server 2008 R2
- vCenter Server 5.5
- ESXi 5.5
- PowerCLI version 5.5
- PowerShell version 2.0
You can easily verify the ESXi host VMFS3.MaxHeapSizeMB configuration by running the following one-liner.
Change the get-cluster and – value parameters to match your environment and needed configuration.
foreach ($esxi in (get-cluster VCDX56-01 | get-vmhost)) {Get -VMHostAdvancedConfiguration -vmhost $esxi -name VMFS3.MaxHeapSizeMB}
The below command can be used if you are running PowerShell 3.0.
foreach ($esxi in (get-cluster VCDX56-01 | get-vmhost)) {Get -AdvancedSetting -entity $esxi -name VMFS3.MaxHeapSizeMB}
You can use the following one-liner to change the VMFS3.MaxHeapSizeMB for the ESXi hosts to the value you prefer.
foreach ($esxi in (get-cluster VCDX56-01 | get-vmhost)) {Set -VMHostAdvancedConfiguration -vmhost $esxi -name VMFS3.MaxHeapSizeMB -value 640}
The below command can be used if you are running PowerShell 3.0.
foreach ($esxi in (get-cluster VCDX56-01 | get-vmhost)) {get -AdvancedSetting -entity $esxi -name VMFS3.MaxHeapSizeMB | Set-AdvancedSetting - Value 640 -confirm:$false}
Keep in mind that the above one-liner will set the VMFS3.MaxHeapSizeMB to 640 configuration even if it is already set to 640.
But for those of you who know me i must also provide a script that will only change the value if needed and also send a email report of what has been done:)
Below you’ll find the PowerCLI script i used in my customers environment.
Change the following parameters in the below script to match your environment:
- $vcenter = “vc-demo01“
- $vcenteruser = “vcdx56\magnus“
- $vcenterpw = “not secret“
- $cluster = “VCDX56-01”
- $sendTo = “magnus@vcdx56.com“
- $sendFrom = “vc-demo01@vcdx56.com“
- $smtpserver = “smtp.vcdx56.local“
- $VHSMB = “640”
# ESXi Host VMFS Heap size configuration
# Version 1.0 Magnus Andersson
#————————————————
# Start of script parameters section
#
# Specify vCenter Server and its credentials
$vcenter = “vc-demo01“
$vcenteruser = "vcdx56\magnus“
$vcenterpw = “notsecret“
#
# Specify vSphere cluster
$cluster = "VCDX56-01"
#
$sendTo = “magnus@vcdx56.com“
$sendFrom = “vc-demo01@vcdx56.com“
$smtpserver = “smtp.vcdx56.local“
#
# Specify the new VMFS3.MaxHeapSizeMB configuration
$VHSMB = "640"
#
# End of script parameter section
#——————————————
#
# Connect to vcenter Server
connect-viserver $vcenter -User $vcenteruser -Password $vcenterpw
#
# Verify if configuration changes are needed and if so, change the configuration to the value 1
$Body = @()
get-cluster $cluster | Get-VMHost | sort | Foreach {
if (($_ | Get-VMHostAdvancedConfiguration -name VMFS3.MaxHeapSizeMB)["VMFS3.MaxHeapSizeMB"] -ne 640) {
$Body = $Body + “VMFS3.MaxHeapSizeMB value for $($_) is not 640 and will be changed. New Configuration for $_ is” | out-string
$newBody = (set-VMHostAdvancedConfiguration -vmhost $_ -name VMFS3.MaxHeapSizeMB -value $VHSMB)
$Body += $newBody | out-string
} else {
$Body = $Body + “VMFS3.MaxHeapSizeMB value for $($_) is correct and does not need to be changed” | out-string
}
}
#
# Send e-mail report
send-mailmessage -to $sendTo -from $sendFrom -Subject “ESXi host VMFS3.MaxHeapSizeMB configuration report” -smtpserver $smtpserver -Body $Body
Here is the email report you’ll receive when running the script:


3 pings