Wie kommt es, dass OS X mehrere Virtualisierungssoftware gleichzeitig zulässt, während andere Systeme dies nicht tun?

551
Tarnay Kálmán

Ich war überrascht zu erfahren, dass HyperBox von VirtualBox und Docker VMs gleichzeitig unter OS X ausführen kann. Die gleichzeitige Verwendung verschiedener Hypervisoren ist unter Windows oder Linux nicht möglich. Wie funktioniert es unter OS X?

0
Sie können Hyper-V- und VirtualBox-32-Bit-VMs (jedoch nicht 64-Bit-VMs) gleichzeitig unter Windows ausführen. Welche Bitness waren deine VMs? lx07 vor 5 Jahren 1
Docker wird eigentlich nicht als Hypervisor betrachtet. Docker erfordert einen Hypervisor zum Ausführen. Unter Windows können Hyper-V oder VirtualBox verwendet werden. Unter Linux oder OSX scheint VirtualBox diese Rolle zu spielen. Ramhound vor 5 Jahren 0
Für Docker unter Linux ist kein Hypervisor erforderlich, da Linux-Namespaces in Linux enthalten sind. Daher ist keine VM erforderlich. Docker für Mac verwendet HyperKit. Tarnay Kálmán vor 5 Jahren 0
@ lx07, beide 64-Bit. VirtualBox zeigte, dass Hardware-Virtualisierung verwendet wurde. Ich kann nicht sagen, ob HyperKit es verwendet hat, aber es sollte laut einem offiziellen Docker-Blogeintrag (https://blog.docker.com/2016/05/docker-unikernels-open-source/) verwendet werden. Tarnay Kálmán vor 5 Jahren 0

1 Antwort auf die Frage

1
harrymc

Lassen Sie mich versuchen, diese nicht ganz einfache Frage zu beantworten.

Es gibt zwei Arten von Hypervisoren, wie von Wikipedia zusammengefasst :

Typ-1, native oder Bare-Metal-Hypervisoren

Diese Hypervisoren laufen direkt auf der Hardware des Hosts, um die Hardware zu steuern und Gastbetriebssysteme zu verwalten. Aus diesem Grund werden sie manchmal als Bare-Metal-Hypervisor bezeichnet.

Typ-2 oder gehostete Hypervisoren

Diese Hypervisoren laufen auf einem herkömmlichen Betriebssystem (OS) wie andere Computerprogramme.

Hyper-V ist Typ 1, dh es wird bei der Installation zum Computer. Durch die effektive Installation der Hyper-V-Funktion wird die installierte Windows-Version lediglich zu einer virtuellen Maschine, der jedoch 100% der Hardwareressourcen zugewiesen sind.

VirtualBox und VMWare für Windows sind Typ 2, was bedeutet, dass sie unter Windows als normale Programme arbeiten, bei denen CPUs als Threads emuliert werden. Theoretisch könnte dies auch unter einem Typ 1-Hypervisor wie Hyper-V ausgeführt werden.

Das Problem tritt auf, wenn die Hardware-Virtualisierungsunterstützung für die Emulation unterschiedlicher CPUs verwendet wird, nämlich Intel VT-x und AMD-V. Eine solche Hardware wird zum Emulieren einer 32-Bit-CPU auf einem 64-Bit-Computer benötigt.

Hardware-Virtualisierung kann nur einen Eigentümer (oder Benutzer) haben. Das bedeutet, dass jeweils nur ein Hypervisor es verwenden kann, und zwei Typ-2-Hypervisoren, die auf demselben Computer ausgeführt werden, können nicht verwendet werden.

Außerdem handelt es sich speziell für den genannten Docker nicht um einen Hypervisor. Wie Wikipedia erklärt:

Docker ist ein Computerprogramm, das eine Virtualisierung auf Betriebssystemebene durchführt, die auch als "Containerisierung" bezeichnet wird.

Docker führt keine CPU- oder Geräte-Emulation aus, liefert jedoch eine dünne Schicht zum Übersetzen von auf Container basierenden Betriebssystemaufrufen in Host-Betriebssystemaufrufe. Die Anzahl der Container ist sehr begrenzt, da sich ihr Betriebssystem vom Hostsystem unterscheiden kann, da es für eine einfache und leichte Übersetzung der Aufrufe ähnlich genug sein muss. Docker steht daher bei der Hardware-Nutzung nicht in Konflikt mit Hypervisoren.

Hallo, danke für die Erklärung von Typ 1 und Typ 2. Ich verstehe, dass Docker kein Hypervisor ist. Der Kernel von OS X ist so verschieden von Linux, dass Docker-Container nicht direkt darauf ausgeführt werden können. Daher verwendet Docker für Mac standardmäßig eine Linux-VM im Hintergrund. Diese VM wird mit HyperKit ausgeführt, das wiederum Hypervisor.framework verwendet, für das VT erforderlich ist -x (also Hardware-Virtualisierungshilfe?). Tarnay Kálmán vor 5 Jahren 0
Darüber hinaus gibt es Aspekte wie Netzwerkintegration, Hardwarebeschleunigung, Speicherverwaltung sowie gemeinsame Nutzung und Freigabe (z. B. freigegebene Ordner, Zwischenablage), die beim gleichzeitigen Betrieb von VMs mit mehreren Hypervisoren gelegentlich behindert werden können, so dass es sogar scheint Arbeit, wahrscheinlich wird es nicht vom Hersteller unterstützt. Cameron Kerr vor 5 Jahren 0