如何在vmware Esx(i)服务器/ Vcenter中检测虚拟机磁盘是否为GPT或MBR

时间:2014-05-16 14:58:31

标签: java c++ vmware esxi mbr

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

先谢谢,

Thiyagarajan A.

1 个答案:

答案 0 :(得分:0)

您需要使用guest虚拟机上安装的VMWare工具并在guest虚拟机中运行 命令。本文说明了如何使用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将接收。< / p>