Determine o tipo de VMWare dentro da VM

1

É possível determinar o tipo VMWare (ESXi, Workstation, Fusion, ...) de dentro da VM (ou seja, do sistema operacional convidado), desde que a VM guest seja uma máquina Linux?

Eu tentei várias coisas, como grepping para hypervisor in /proc/cpuinfo , usando lscpu , etc. mas tudo que eu encontrei é "vmware", sem detalhes.

Eu não tenho privilégios de root na máquina, se isso muda as coisas, embora eu esteja interessado em soluções que são possíveis apenas com o root, que será útil para algumas coisas. Também estou interessado principalmente em soluções Linux, mas novamente as soluções somente para Windows podem ser úteis.

A razão pela qual estou pedindo é poder descobrir o desempenho. O ESXi é a) geralmente implantado em "hardware real" ™ eb) não possui sobrecarga adicional de SO. Veja esta pergunta de falha de servidor para mais detalhes, especialmente < a href="https://serverfault.com/a/242163"> esta resposta .

    
por levant pied 16.02.2016 / 20:47

1 resposta

2

Você pode determinar a versão das strings de versão do BIOS na saída dmidecode. Eu encontrei um exemplo de como fazer isso em link , que remonta a 2013, por isso, provavelmente está faltando algumas versões mais recentes:

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

Nossa equipe de ops não poderia me dizer qual versão do ESX estávamos rodando há alguns anos atrás (ugh !!), mas eu precisava saber porque estávamos nos preparando para testar um novo produto que exigia uma versão específica do hipervisor. Isso funcionou como um campeão para mim.

Se você precisar fazer isso como uma conta não-root, use sudo. Use "visudo" para acessar o arquivo sudoers e, em seguida, adicione uma linha semelhante à abaixo do final do arquivo:

nome de usuário ALL = (ALL: ALL) NOPASSWD: / usr / sbin / dmidecode

Isso permitirá que 'username' acesse o dmidecode sem nenhuma autenticação especial, apenas execute "sudo dmidecode" em vez de "dmidecode".

    
por 17.02.2016 / 04:51

Tags