1

Можно ли определить тип VMWare (ESXi, Workstation, Fusion, ...) из самой виртуальной машины (то есть гостевой ОС), если гостевая виртуальная машина является машиной Linux?

Я пробовал разные вещи, такие как поиск hypervisor в /proc/cpuinfo , использование lscpu и т.д., Но все, что я нашел, это "vmware", никаких подробностей.

У меня нет привилегий root на машине, если это что-то изменит, хотя меня будут интересовать решения, которые возможны только с root, которые будут полезны для некоторых вещей. Также я в основном заинтересован в решениях для Linux, но опять же решения для Windows могут пригодиться.

Причина, по которой я спрашиваю, состоит в том, чтобы иметь возможность выяснить производительность. ESXi: а) обычно разворачивается на "реальном оборудовании" ™ и б) не имеет дополнительных накладных расходов ОС. Посмотрите этот вопрос об ошибке сервера для более подробной информации, особенно этот ответ.

1 ответ1

2

Вы можете определить версию из строк версии BIOS в выводе dmidecode. Один пример того, как это сделать, я нашел на https://fritshoogland.wordpress.com/2013/01/24/determine-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

Это позволит 'username' получить доступ к dmidecode без какой-либо специальной аутентификации, просто запустите "sudo dmidecode", а не "dmidecode".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .