null

Получение информации о дисках в ESXi, используя PowerCLi

Периодически возникает необходимость получить информацию о дисках, существующих в инфраструктуре под управлением гипервизора ESXi, определения тонких и толстых дисков и тп.

 

Для выполнения этой задачи можно воспользоваться командами интерфейса PowerCLi.

 

Например, для получения списка всех дисков, выполняем команду

 

Get-Vm VMname | Get-Harddisk | Format-List

 

где VMname — имя виртуальной машины.

 

Разультат возвращает следующие параметры:

 

  • StorageFormat
  • Persistence
  • DiskType
  • Filename
  • CapacityKB
  • CapacityGB
  • ParentId
  • Parent
  • Uid
  • ConnectionState
  • ExtensionData
  • Id
  • Name
  • Client

 

Для выгрузки в csv-файл данных о диске конкретной VM выполняем:

 

Get-vm VMname | get-harddisk | select Parent,StorageFormat,Filename | Export-Csv c:\disks.csv –NoTypeInformation 

 

Параметр –NoTypeInformation в данном примере используется, чтобы в начале csv-файла не было строки вида

 

#TYPE Selected.Vmware.VimAutomation.ViCore.Impl.V1.Inventory.VirtualMachineImpl 

 

Выгрузка данных о всех дисках в csv-файл:

 

get-vm | get-harddisk | Export-Csv c:\disks.csv –NoTypeInformation 

 

Выгрузка данных о всех дисках в csv-файл с выбранными параметрами(Parent,StorageFormat,Filename) :

 

get-vm | get-harddisk | select Parent,StorageFormat,Filename | Export-Csv c:\disks.csv –NoTypeInformation

 

Несколько сложнее команды для получения списка толстых и тонких дисков.

 

Получение списка толстых дисков:

 

get-vm | get-view | %{
$name = $_.name
$_.Config.Hardware.Device | where {$_.GetType().Name -eq "VirtualDisk"} | %{
if(!$_.Backing.ThinProvisioned){
"$name has a thick provisioned disk"
}
}
}

Получение списка тонких дисков:

 

get-vm | get-view | %{
$name = $_.name
$_.Config.Hardware.Device | where {$_.GetType().Name -eq "VirtualDisk"} | %{
if(!$_.Backing.ThickProvisioned){
"$name has a thin provisioned disk"
}
}
} 

 

Еще более полезным может оказаться следующий скрипт, приводимый на http://vstrong.info(автор - Mark Strong) :

​​​​​​​

$report = @()
foreach ($vm in Get-VM){
$view = Get-View $vm
if ($view.config.hardware.Device.Backing.ThinProvisioned -eq $true){
$row = '' | select Name, Provisioned, Total, Used, VMDKs, VMDKsize, DiskUsed, Thin
$row.Name = $vm.Name
$row.Provisioned = [math]::round($vm.ProvisionedSpaceGB , 2)
$row.Total = [math]::round(($view.config.hardware.Device | Measure-Object CapacityInKB -Sum).sum/1048576 , 2)
$row.Used = [math]::round($vm.UsedSpaceGB , 2)
$row.VMDKs = $view.config.hardware.Device.Backing.Filename | Out-String
$row.VMDKsize = $view.config.hardware.Device | where {$_.GetType().name -eq 'VirtualDisk'} | ForEach-Object {($_.capacityinKB)/1048576} | Out-String
$row.DiskUsed = $vm.Extensiondata.Guest.Disk | ForEach-Object {[math]::round( ($_.Capacity - $_.FreeSpace)/1048576/1024, 2 )} | Out-String
$row.Thin = $view.config.hardware.Device.Backing.ThinProvisioned | Out-String
$report += $row
}}
$report | Sort Name | Export-Csv -Path "D:Thin_Disks.csv"

 

Результатом выполнения будет информация о всех VM, содержащих хотя бы один тонкий диск, с параметрами:

 

  • Name(имя VM)
  • Provisioned
  • Total
  • Used
  • VMDKs (имя файла VMDK)
  • VMDKsize
  • DiskUsed
  • Thin (True\False).

 

 

Источники:

 

http://vstrong.info

https://communities.vmware.com

 

Коротко о себе:

Работаю инженером в компании Tune IT.

Ничего не найдено. n is 0