AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 866747
Accepted
neildeadman
neildeadman
Asked: 2017-08-04 09:37:46 +0800 CST2017-08-04 09:37:46 +0800 CST 2017-08-04 09:37:46 +0800 CST

获取 SAN 上 VMDK 的实际使用情况

  • 772

我有一个脚本可以检索我的 vCenter 集群中所有虚拟机的详细信息。本质上Get-VM | Get-Harddisk。

我也可以获取Provisioned Space和Used Space值,但这些仅适用于整个 VM,我想在实际 SAN 上获取每个 VMDK 文件。

我有一些运气,($vm.extensiondata.layoutex.file|?{$_.name -contains $harddisk.filename.replace(".","-flat.")}).size/1GB但这并没有检索到我所有虚拟机的详细信息,我无法锻炼,为什么?

更新 1: 所以我发现这些信息可以通过$vm.ExtensionData.Storage.PerDatastoreUsage. 这将返回每个数据存储的详细信息数组,并显示使用了多少磁盘。现在的问题是我不知道如何计算哪个条目与哪个磁盘相关(除了手动检查)。如果每个磁盘都在不同的数据存储上,这很好,但是当它们都在相同且大小相同时(即,我们有一个 Windows VM,在同一数据存储上具有 2 个 100GB 精简磁盘),它被证明更具挑战性。

vmware-esxi
  • 1 1 个回答
  • 1914 Views

1 个回答

  • Voted
  1. Best Answer
    neildeadman
    2017-08-09T08:43:05+08:002017-08-09T08:43:05+08:00

    我最终在 VMware 社区网站上找到了这篇文章https://communities.vmware.com/message/1816389#1816389,它提供了以下代码作为我可以调整的解决方案:

    Get-View -ViewType VirtualMachine -Property Name, Config.Hardware.Device, LayoutEx | %{
    $viewVM = $_; $viewVM.Config.Hardware.Device | ?{$_ -is [VMware.Vim.VirtualDisk]} | %{
        ## for each VirtualDisk device, get some info
        $oThisVirtualDisk = $_
        ## get the LayoutEx Disk item that corresponds to this VirtualDisk
        $oLayoutExDisk = $viewVM.LayoutEx.Disk | ?{$_.Key -eq $oThisVirtualDisk.Key}
        ## get the FileKeys that correspond to the LayoutEx -> File items for this VirtualDisk
        $arrLayoutExDiskFileKeys = $oLayoutExDisk.Chain | ?{$_ -is [VMware.Vim.VirtualMachineFileLayoutExDiskUnit]}
        New-Object -TypeName PSObject -Property @{
            ## add the VM name
            VMName = $viewVM.Name
            ## the disk label, like "Hard disk 1"
            DiskLabel = $_.DeviceInfo.Label
            ## the datastore path for the VirtualDisk file
            DatastorePath = $_.Backing.FileName
            ## the provisioned size of the VirtualDisk
            ProvisionedSizeGB = [Math]::Round($_.CapacityInKB / 1MB, 1)
            ## get the LayoutEx File items that correspond to the FileKeys for this LayoutEx Disk, and get the size for the items that are "diskExtents" (retrieved as bytes, so converting to GB)
            SizeOnDatastoreGB = [Math]::Round(($arrLayoutExDiskFileKeys | %{$_.FileKey} | %{$intFileKey = $_; $viewVM.LayoutEx.File | ?{($_.Key -eq $intFileKey) -and ($_.Type -eq "diskExtent")}} | Measure-Object -Sum Size).Sum / 1GB, 1)
        } ## end new-object
    } ## end foreach-object
    } ## end outer foreach-object
    

    我通过社区网站被引导到优秀的博客http://www.lucd.info/2010/03/23/yadr-a-vdisk-reporter/,它的解决方案也包括快照的大小

    • 0

相关问题

  • ESXi NAS 配置

  • 如何将 Acronis 生成的 vmdk 添加到 esxi?

  • 在 VMWare ESX 和 ESXi 之间进行选择 [关闭]

  • 将(大)虚拟机从 ESXi 3.5 转换为 Hyper-V Server 2008 R2

  • VMWare:ESX 还是 3i?我需要COS吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve