บทความนี้จะแสดง PowerCLI Script เรียบง่ายสำหรับตรวจสอบพื้นที่ว่างบน VMware vSphere Datastores และตรวจจับ Thin Provisioning Datastores ที่ขนาดรวมของ Thin Virtual Disks (Dynamically Expanding) ของ VMs ทั้งหมดเกินขนาดรวมของ Datastore หากมี VMware Datastores หลายตัวใน Infrastructure ง่ายที่จะใช้ PowerShell Script นี้ Monitor พื้นที่ว่าง และ Detect Datastores ที่มี Storage Overcommitment (พื้นที่ที่ Thin Disks ของ VMs ทั้งหมดต้องการ มากกว่าพื้นที่ว่างบน VMFS Datastore) สามารถใช้ Script วิเคราะห์การเติบโตของ Used Space ก่อนสร้าง VM หา Datastores ที่มี Thin Provision Overcommitment ฯลฯ
เพื่อให้ vSphere Infrastructure ทำงานถูกต้อง แนะนำให้มี Free Space อย่างน้อย 5-10% บน VMware VMFS Datastore หากใช้ Snapshots (รวมถึงที่ Backup System สร้าง) ควรมี Free Space อย่างน้อย 10-15%
เพื่อตรวจสอบและแสดงพื้นที่ว่างบน VMware Datastore ใช้ PowerShell Script ด้านล่าง (สมมติว่า VMware vSphere PowerCLI Module ติดตั้งบน Computer แล้ว):
# Import PowerCLI Module เข้า PowerShell Session
Import-Module VMware.VimAutomation.Core -ErrorAction SilentlyContinue
# Connect to vCenter Host
Connect-VIServer mun-vcsa1 -User admin
# Get list of vCenter Datastores
$datastores = Get-Datastore
$ErrorActionPreference = 'SilentlyContinue'
# Loop through all available datastores
ForEach ($datastore in $datastores)
{
# หาขนาด Committed Space ของ Thin Disks ทั้งหมดใน Datastore (พื้นที่ที่ต้องการถ้า VMDK Files ทั้งหมดโตถึงขนาดที่ตั้งใน Settings)
$Provision = ([Math]::Round(($datastore.ExtensionData.Summary.Capacity - $datastore.ExtensionData.Summary.FreeSpace + $datastore.ExtensionData.Summary.Uncommitted)/1GB,0))
# Percentage of free space in the datastore
$PerFree = ([math]::Round(($datastore.FreeSpaceGB)/($datastore.CapacityGB)*100,2))
# Percentage of thin disk overcommitment
$PerOvercommit = ([math]::Round($Provision/($datastore.CapacityGB)*100,2))
# Add extra properties to the datastore object
$datastore | Add-Member -type NoteProperty -name PercentsFree -value $PerFree
$datastore | Add-Member -type NoteProperty -name CapacityGb_r -value ([Math]::Round(($datastore.ExtensionData.Summary.Capacity)/1GB,0))
$datastore | Add-Member -type NoteProperty -name FreeSpaceGb_r -value ([Math]::Round(($datastore.ExtensionData.Summary.FreeSpace)/1GB,0))
$datastore | Add-Member -type NoteProperty -name ProvisionedSpaceGb -value $Provision
$datastore | Add-Member -type NoteProperty -name PercentsOvercommit -value $PerOvercommit
}
# Display resulting data on VMware datastores and export output to CSV file
$datastores|select-object Name, Type, Datacenter,CapacityGb_r,FreeSpaceGb_r,PercentsFree,ProvisionedSpaceGb,PercentsOvercommit|sort PercentsFree| Export-Csv C:\Reports\VMWareVMFSDatastores.csv -NoTypeInformation

หากพยายาม Connect-VIServer และเจอ Error:
Could not resolve the requested VC server. Additional Information: There was no endpoint listening at https://mun-vcsa1/sdk that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details
อาจเป็นเพราะ PowerCLI พยายาม Connect VCSA ผ่าน Proxy รัน PowerCLIConfiguration ดูว่า UseSystemProxy คืนค่าอะไร หากใช่ ให้ Disable System Proxy สำหรับ PowerCLI:
Set-PowerCliConfiguration -proxypolicy noproxy
ในตัวอย่าง Datastore แรก 5 ตัว มี Free Space น้อยกว่า 5% (กล่องสีเขียว) มี Storage Overcommitment บนบาง Datastores (ขนาดรวม Thin Virtual Disks ใน Datastores เกินขนาดของมัน) หาก Virtual VM Disks เริ่มโตถึง Max Size ที่ตั้งใน Settings อาจหมดพื้นที่บน VMFS/NFS/VVOL Storages (VMs ที่รัน Thick Disks จะทำงานปกติ แต่จะไม่ Start VMs ใหม่ได้ เพราะไม่มีพื้นที่สร้าง VSWAP File) Datastores ที่ Committed Space มากกว่า Total LUN Size ไฮไลท์สีเหลือง

PowerShell Script นี้จะช่วยหา VMware Datastores ที่ขาด Free Space เร็วขึ้น (สามารถ Migrate VMs ออกจาก Datastore ด้วย Storage vMotion)