【问题标题】:How to detect if a virtual machine disk is a GPT or MBR in vmware Esx(i) server /Vcenter如何在 vmware Esx(i) server /Vcenter 中检测虚拟机磁盘是 GPT 还是 MBR
【发布时间】:2014-07-05 02:17:26
【问题描述】:

我需要找到一种方法来以编程方式确定来宾虚拟机磁盘是 GPT 还是 MBR 分区。我无法使用 vijava 或 Vddk api 来实现这一点。是否有任何其他 c++ 或 java 库可以帮助我实现这一目标。或者手动解析 MBR 是唯一可用的解决方案。

提前致谢,

Thiyagarajan A.

【问题讨论】:

  • 我还没有真正验证过,但 API 似乎不太可能提供此信息,因为 VMware 不需要知道磁盘上的数据类型。 VMware 需要做的就是将块设备呈现给虚拟机并开始执行 BIOS 或 UEFI 代码。它不需要知道磁盘上有什么(如果有的话)来做到这一点。我希望您必须自己检查磁盘。

标签: java c++ vmware esxi mbr


【解决方案1】:

您需要使用安装在客人上的 VMWare 工具并在客人内部运行命令。本文说明了如何使用 vijava:http://www.doublecloud.org/2012/02/run-program-in-guest-operating-system-on-vmware/

如果你使用 windows 我推荐 PowerCLI + Invoke-VmScript cmdlet(https://www.vmware.com/support/developer/PowerCLI/PowerCLI501/html/Invoke-VMScript.html)

它将允许您运行 powershell 命令(对于 windows 框)来确定分区布局。如果检测到 GPT 分区,以下行将返回 $True

$disks = gwmi -query "Select * from Win32_DiskPartition" 
foreach($disk in $disks) { 
    if ($disk.Type.StartsWith("GPT")){ 
        return $true
    }
}

类似地,在 linux 客户机上,这样的东西会达到预期的效果:

fdisk -l | grep -i gpt > /dev/null ; echo $?

如果 GPT 分区退出,上述命令将返回 0,因为您应该收到警告 “警告:GPT(GUID 分区表)在..上检测到”grep -i gpt 将接收该警告。

【讨论】:

    猜你喜欢
    • 2014-08-23
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 2018-03-08
    • 2019-03-05
    • 2017-09-30
    • 1970-01-01
    • 2019-07-13
    相关资源
    最近更新 更多