В этой статье мы рассмотрим небольшой PowerCLI скрипт для проверки свободного места на VMWare vSphere датасторах и определения хранилищ с Thin Provisioning, на которых суммарный объем тонких (динамически расширяемых) дисков виртуальных машин превышает общую емкость хранилища. Если у вас в инфраструктуре используется множество датастор VMWare, такой скрипт удобно использовать для мониторинга свободного места, определения хранилищ с овеккомиттом по месту (требования к месту тонких дисков всех ВМ больше, чем доступно места на VMFS хранилище). Скрипт можно использовать, например, при анализе роста занятого места, перед созданием новой виртуальной машины, для поиска хранилищ с чрезмерным использованием Thin Provision, и т.д.
Для проверки и отображения свободного места в VMWare можно использовать такой PowerShell скрипт (предполагается, что вы уже установили на свой компьютер модуль VMWare vSphere PowerCLI ).:
# Импорт модуля PowerCLI
Import-Module VMware.VimAutomation.Core -ErrorAction SilentlyContinue
# подключение к vCenter
connect-viserver msk-vcsa1 -User admin
# получение списка хранилищ в vCenter
$datastores = Get-Datastore
$ErrorActionPreference = 'SilentlyContinue'
# перебор всех доступных хранилищ в цикле
ForEach ($datastore in $datastores)
{
# размер переподписки (commited space) всех tnin дисков на датасторе (сколько места потребуется, если все vmdk файлы вырастут до максимального размера, указанного в их настройках)
$Provision = ([Math]::Round(($datastore.ExtensionData.Summary.Capacity - $datastore.ExtensionData.Summary.FreeSpace + $datastore.ExtensionData.Summary.Uncommitted)/1GB,0))
# процент свободного места на datastore
$PerFree = ([math]::Round(($datastore.FreeSpaceGB)/($datastore.CapacityGB)*100,2))
# процент переподписки тонких дисков
$PerOvercommit = ([math]::Round($Provision/($datastore.CapacityGB)*100,2))
# Добавление дополнительных свойств объекту datastore
$datastore | Add-Member -type NoteProperty -name PercentFree -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 PercentOvercommit -value $PerOvercommit
}
# Вывод итоговых данных по хранилищам VMWare и экспорт результатов в CSV файл
$datastores|select-object Name, Type, Datacenter,CapacityGb_r,FreeSpaceGb_r,PercentFree,ProvisionedSpaceGb,PercentOvercommit|sort PercentFree| Export-Csv C:PSVMWareDatastoreInventory.csv -NoTypeInformation
”Could not resolve the requested VC server.
Additional Information: There was no endpoint listening at https://msk-vcsa1/sdk that could accept them essage. 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
В моем примере видно, что на первых 5 VMFS хранилищах осталось менее 5% свободного пространства (выделены зеленым). А на некоторых хранилищах есть переподписка по используемому месту (суммарный размер всех тонких виртуальных дисков на датасторах превышает их общий размер). Если у вас виртуальные диски ВМ на этом хранилище начнут неожиданно расти до максимального размера, указанного в их настройках, у вас может закончится место на VMFS/NFS/VVOL хранилище (запущенные ВМ с толстыми дисками будут работать нормально, но вы не сможете запустить новые ВМ, т.к. не будет места для создания файла VSWAP). На скриншоте желтым выделены хранилища, на которых committed space больше, чем общий размер LUNов.
Такой PowerShell скрипт поможет вам быстро найти хранилища, на которых осталось мало свободного места (вы можете перенести ВМ с такого датастора с помощью Storage vMotion ).