從 VM 內確定 VMWare 類型

從 VM 內確定 VMWare 類型

如果來賓 VM 是 Linux 計算機,是否可以從 VM(即來賓作業系統)本身決定 VMWare 類型(ESXi、Workstation、Fusion...)?

我嘗試過各種方法,例如 grep for hypervisorin /proc/cpuinfo、 usinglscpu等,但我發現它是“vmware”,沒有具體說明。

我在機器上沒有 root 權限,如果這會改變事情,儘管我對僅使用 root 可能的解決方案感興趣,但這對某些事情來說會很方便。另外,我對 Linux 解決方案最感興趣,但同樣,僅限 Windows 的解決方案可能會派上用場。

我問的原因是為了能夠弄清楚效能。 ESXi a) 通常部署在「真實硬體」™ 上,b) 沒有額外的作業系統開銷。看這個伺服器故障問題欲了解更多詳細信息,特別是這個答案

答案1

您可以根據 dmidecode 輸出中的 BIOS 版本字串來確定版本。我找到了一個如何執行此操作的範例https://fritshoogland.wordpress.com/2013/01/24/define-vmware-esx-version-from-linux-as-guest-os/它可以追溯到 2013 年,所以它可能缺少一些較新的版本:

case $( dmidecode | grep -A4 "BIOS Information" | grep Address | awk '{ print $2 }' ) in
"0xE8480" ) echo "ESX 2.5" ;;
"0xE7C70" ) echo "ESX 3.0" ;;
"0xE7910" ) echo "ESX 3.5" ;;
"0xE7910" ) echo "ESX 4"   ;;
"0xEA550" ) echo "ESX 4U1" ;;
"0xEA2E0" ) echo "ESX 4.1" ;;
"0xE72C0" ) echo "ESXi 5"   ;;
"0xEA0C0" ) echo "ESXi 5.1" ;;
"0xEA050" ) echo "ESXi 5.5" ;;
* ) echo "Unknown version: "
dmidecode | grep -A4 "BIOS Information" 
;;
esac

我們的營運團隊無法告訴我幾年前我們運行的是哪個版本的 ESX(呃!!),但我需要知道,因為我們正在準備測試需要特定版本的虛擬機器管理程式的新產品。這對我來說就像冠軍一樣。

如果您需要以非 root 帳戶執行此操作,請使用 sudo。使用“visudo”存取 sudoers 文件,然後在文件末尾附近添加類似於以下內容的行:

使用者名稱 ALL=(ALL:ALL) NOPASSWD:/usr/sbin/dmidecode

這將允許「使用者名稱」存取 dmidecode,無需任何特殊身份驗證,只需執行「sudo dmidecode」而不是「dmidecode」。

相關內容