На днях писал о скрипте для Поиска ненужных, осиротевших vmdk.
С мест сообщают:
Миша, привет
Нашел полезный скрипт, который ищет ничейные VMDK-файлы на системе хранения - http://communities.vmware.com/docs/DOC-6960
и немного его доработал, так что он теперь правильно обрабатывает снапшоты и шаблоны,
а также выводит размер отдельных дисков и суммарный размер, занимаемый этими дисками на разных хранилищах.
Скрипт:
============================================
#
# Purpose : List all orphaned vmdk on all datastores in all VC's
# Version: 1.0
# Author : HJA van Bokhoven
#Main
$arrayVC = "virtualcenter.lab.croc.ru"
$OutputFile = "d:\OrphanedVMDK-total.txt"
$totalWaste = 0
Foreach ($strVC in $arrayVC)
{
Connect-VIServer $strVC
$arrUsedDisks = @()
$arrUsedDisksVM = Get-VM | Get-HardDisk | %{$_.filename}
$arrUsedDisksSnapshots = Get-VM | Get-Snapshot | Get-Harddisk | %{$_.filename}
$arrUsedDisksTemplates = Get-Template | Get-HardDisk | %{$_.filename}
$arrUsedDisks = $arrUsedDisksVM + $arrUsedDisksSnapshots + $arrUsedDisksTemplates
$arrDS = Get-Datastore
Foreach ($strDatastore in $arrDS)
{
$datastoreWaste = 0
$strDatastoreName = $strDatastore.name
Write-Host $strDatastoreName
$ds = Get-Datastore -Name $strDatastoreName | %{Get-View $_.Id}
$fileQueryFlags = New-Object VMware.Vim.FileQueryFlags
$fileQueryFlags.FileSize = $true
$fileQueryFlags.FileType = $true
$fileQueryFlags.Modification = $true
$searchSpec = New-Object VMware.Vim.HostDatastoreBrowserSearchSpec
$searchSpec.details = $fileQueryFlags
$searchSpec.sortFoldersFirst = $true
$dsBrowser = Get-View $ds.browser
$rootPath = "["+$ds.summary.Name+"]"
$searchResult = $dsBrowser.SearchDatastoreSubFolders($rootPath, $searchSpec)
$myCol = @()
foreach ($folder in $searchResult)
{
foreach ($fileResult in $folder.File)
{
$file = "" | select Name, FullPath, SizeMB
$file.Name = $fileResult.Path
$file.FullPath = $folder.FolderPath
$file.SizeMB = $fileResult.FileSize / 1048576
$strFilename = $file.Name
IF ($strFilename)
{
IF ($strFilename.Contains(".vmdk"))
{
IF (!$strFilename.Contains("-flat.vmdk"))
{
IF (!$strFilename.Contains("delta.vmdk"))
{
$strCheckfile = "*"+$file.Name+"*"
IF ($arrUsedDisks -Like $strCheckfile){}
ELSE
{
$strOutput = $file.FullPath + $strFilename + " : " + $file.SizeMB + " MB"
# $strOutput
$totalWaste = $totalWaste + $file.SizeMB
$datastoreWaste = $datastoreWaste + $file.SizeMB
$strOutput | Out-File $Outputfile -width 150 -Append
}
}
}
}
}
}
}
$strOutput = "Datastore space loss: " + $datastoreWaste + " MB"
$strOutput | Out-File $Outputfile -width 150 -Append
$strOutput = " "
$strOutput | Out-File $Outputfile -width 150 -Append
}
}
$strOutput = "total orphaned VMDKs size: " + $totalWaste + " MB"
$strOutput | Out-File $Outputfile -width 150 -Append
============================================
big thx, Арсен!
0 коммент.:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.