Ist es möglich, den VMWare-Typ (ESXi, Workstation, Fusion, ...) innerhalb der VM (d. h. des Gastbetriebssystems) selbst zu bestimmen, vorausgesetzt, es handelt sich bei der Gast-VM um eine Linux-Maschine?
Ich habe verschiedene Dinge ausprobiert, z. B. nach „ hypervisor
in “ zu suchen /proc/cpuinfo
, „using“ lscpu
usw., aber ich habe nur „vmware“ gefunden, keine Einzelheiten.
Ich habe keine Root-Rechte auf dem Rechner. Wenn das etwas ändert, wäre ich allerdings an Lösungen interessiert, die nur mit Root möglich sind. Das wäre für manche Dinge praktisch. Außerdem bin ich hauptsächlich an Linux-Lösungen interessiert, aber auch hier könnten reine Windows-Lösungen nützlich sein.
Der Grund für meine Frage ist, dass ich die Leistung ermitteln möchte. ESXi wird a) normalerweise auf „echter Hardware“™ eingesetzt und b) hat keinen zusätzlichen Betriebssystem-Overhead. Siehediese Serverfehlerfragefür weitere Einzelheiten, insbesonderediese Antwort.
Antwort1
Sie können die Version anhand der BIOS-Versionszeichenfolgen in der dmidecode-Ausgabe ermitteln. Ein Beispiel dafür habe ich unter gefunden:https://fritshoogland.wordpress.com/2013/01/24/determine-vmware-esx-version-from-linux-as-guest-os/das aus dem Jahr 2013 stammt, daher fehlen wahrscheinlich einige neuere Versionen:
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
Unser Betriebsteam konnte mir vor ein paar Jahren nicht sagen, welche Version von ESX wir verwendet haben (pfui!!), aber ich musste es wissen, weil wir uns darauf vorbereiteten, ein neues Produkt zu testen, das eine bestimmte Version des Hypervisors erforderte. Für mich hat das super funktioniert.
Wenn Sie dies als Nicht-Root-Konto tun müssen, verwenden Sie sudo. Verwenden Sie „visudo“, um auf die sudoers-Datei zuzugreifen, und fügen Sie dann am Ende der Datei eine Zeile ähnlich der folgenden hinzu:
Benutzername ALL=(ALL:ALL) NOPASSWD:/usr/sbin/dmidecode
Dadurch kann „Benutzername“ ohne spezielle Authentifizierung auf dmidecode zugreifen. Führen Sie einfach „sudo dmidecode“ statt „dmidecode“ aus.