2014-05-16 244 views
0

我需要找到一種以編程方式確定來賓虛擬機磁盤是GPT還是MBR分區的方法。用vijava或Vddk api無法實現這一點。有沒有其他的C++或java庫可以幫助我實現這一點。或者手動解析MBR是唯一可用的解決方案。如何檢測虛擬機磁盤是否爲vmware中的GPT或MBR Esx(i)服務器/ Vcenter

由於事先

Thiyagarajan A.

+1

我還沒有實際驗證,但API似乎不太可能提供此信息,因爲VMware無需知道磁盤上的數據類型。所有VMware需要做的是將塊設備提供給虛擬機並開始執行BIOS或UEFI代碼。它不需要知道磁盤上有什麼(如果有的話)來做到這一點。我希望你將不得不自己檢查磁盤。 –

回答

0

您需要使用安裝在你的客人和運行VMware工具命令客人。本文介紹瞭如何這樣做使用vijava:http://www.doublecloud.org/2012/02/run-program-in-guest-operating-system-on-vmware/

如果你使用Windows,我建議的PowerCLI + Invoke-VmScript小命令(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 $? 

上面的命令將返回0,如果GPT分區退出,因爲你應該得到一個警告「警告:GPT(GUID分區表)檢測到..「其中grep -i gpt會接。

相關問題