ในบทความนี้ เราจะแสดงสคริปต์ PowerCLI แบบง่ายๆ เพื่อตรวจสอบจำนวนพื้นที่ว่างบนพื้นที่เก็บข้อมูล VMWare vSphere และตรวจหาที่เก็บข้อมูล Thin Provisioning ที่มีขนาดรวมของธินดิสก์เสมือนของเครื่องเสมือน (การขยายแบบไดนามิก) เกินขนาดรวมของที่เก็บข้อมูล หากคุณมีที่เก็บข้อมูล VMWare หลายแห่งในโครงสร้างพื้นฐานของคุณ คุณสามารถใช้สคริปต์ PowerShell นี้เพื่อตรวจสอบจำนวนพื้นที่ว่างและตรวจจับพื้นที่เก็บข้อมูลที่มีการใช้พื้นที่จัดเก็บมากเกินไป (ข้อกำหนดด้านพื้นที่สำหรับธินดิสก์ของ VM ทั้งหมดจะมากกว่าพื้นที่ว่างบนที่เก็บข้อมูล VMFS ). คุณสามารถใช้สคริปต์นี้เพื่อวิเคราะห์การเติบโตของพื้นที่ที่ใช้ ก่อนที่จะสร้าง VM เพื่อค้นหาที่เก็บข้อมูลที่มีการคอมมิต Thin Provision ฯลฯ
เพื่อให้โครงสร้างพื้นฐาน vSphere ของคุณทำงานได้อย่างถูกต้อง ขอแนะนำให้มีพื้นที่ว่างอย่างน้อย 5-10% บน VMWare VMFS datastore ของคุณ หากคุณใช้สแน็ปช็อต (รวมถึงสแน็ปช็อตที่สร้างโดยระบบสำรองข้อมูล) จำเป็นต้องมีพื้นที่ว่างอย่างน้อย 10-15%
ในการตรวจสอบและแสดงจำนวนพื้นที่ว่างบน VMWare datastore คุณสามารถใช้สคริปต์ PowerShell ด้านล่าง (ซึ่งควรจะติดตั้งโมดูล VMWare vSphere PowerCLI บนคอมพิวเตอร์ของคุณแล้ว):
# Import the PowerCLI module into your PowerShell session
Import-Module VMware.VimAutomation.Core -ErrorAction SilentlyContinue
# Connect to vCenter host
Connect-VIServer mun-vcsa1 -User admin
# Get the list of vCenter darastores
$datastores = Get-Datastore
$ErrorActionPreference = 'SilentlyContinue'
# loop through all available datastores
ForEach ($datastore in $datastores)
{
# Find the size of the committed space of all thin disks in a datastore (how much space it is required if all vmdk files will grow to the sizes specified in their 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 the resulting data on VMWare datastores and export the output to a CSV file
$datastores|select-object Name, Type, Datacenter,CapacityGb_r,FreeSpaceGb_r,PercentsFree,ProvisionedSpaceGb,PercentsOvercommit|sort PercentsFree| Export-Csv C:\Reports\VMWareVMFSDatastores.csv -NoTypeInformation
หากคุณพยายามเชื่อมต่อกับ vCenter โดยใช้ Connect-VIServer และพบข้อผิดพลาด:
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 จะพยายามเชื่อมต่อกับ VCSA ผ่านพรอกซี เรียกใช้ PowerCLIConfiguration
และตรวจสอบว่า UseSystemProxy
ผลตอบแทน หากใช่ ให้ปิดการใช้งานพรอกซีระบบสำหรับ PowerCLI โดยใช้คำสั่งนี้:
Set-PowerCliConfiguration -proxypolicy noproxy
ในตัวอย่างของฉัน คุณจะเห็นว่าพื้นที่เก็บข้อมูล VMFS 5 แห่งแรกมีพื้นที่ว่างเหลือน้อยกว่า 5% (กล่องสีเขียว) มีภาระผูกพันในการจัดเก็บข้อมูลมากเกินไปในบางพื้นที่เก็บข้อมูล (ขนาดรวมของดิสก์เสมือนแบบบางทั้งหมดในที่เก็บข้อมูลเกินขนาด) หากดิสก์ VM เสมือนของคุณเริ่มขยายขนาดสูงสุดตามที่ระบุไว้ในการตั้งค่า คุณอาจใช้พื้นที่ในการจัดเก็บ VMFS/NFS/VVOL เต็มได้ (การรัน VM ที่มีดิสก์หนาจะทำงานตามปกติ แต่คุณจะไม่สามารถเริ่ม VM ใหม่ได้ เนื่องจากจะไม่มีที่ว่างสำหรับสร้างไฟล์ VSWAP) ที่เก็บข้อมูลที่มีพื้นที่การคอมมิตที่ใหญ่กว่าขนาด LUN ทั้งหมดคือ เน้นสีเหลือง
สคริปต์ PowerShell นี้จะช่วยให้คุณค้นหา VMWare datastores ได้อย่างรวดเร็วโดยที่พื้นที่ว่างไม่เพียงพอ (คุณสามารถย้าย VM จาก datastore ได้โดยใช้ Storage vMotion)