Virtuelle Maschine (VM)
Kurz: Eine virtuelle Maschine ist ein Computer, der nur als Software existiert. Sie verhält sich wie echte Hardware, läuft aber als Programm auf einem anderen Rechner. Der Begriff hat zwei Bedeutungen: System-VM und Prozess-VM.
Genauer: Eine System-VM (VirtualBox, VMware, KVM, Hyper-V) simuliert einen ganzen PC samt Betriebssystem. Eine Prozess-VM (JVM, .NET CLR) führt dagegen nur ein einzelnes Programm in einer abstrakten Umgebung aus.
Im Detail
| System-VM | Prozess-VM | |
|---|---|---|
| Beispiele | VirtualBox, VMware, KVM, Hyper-V, QEMU | JVM, CLR, BEAM, Dalvik/ART |
| Simuliert | ganzen Computer inkl. Betriebssystem | eine Laufzeitumgebung für ein Programm |
| Lebensdauer | solange die VM läuft | solange das Programm läuft |
| Zweck | mehrere Betriebssysteme, Server teilen, Testumgebungen | Plattformunabhängigkeit, Sicherheit, Speicherverwaltung |
Bei der System-VM übernimmt ein Hypervisor die Verteilung von CPU, Speicher und Geräten:
- Typ 1 („bare metal”): läuft direkt auf der Hardware (KVM, Xen, ESXi, Hyper-V). Üblich in Rechenzentren.
- Typ 2: läuft als Programm im normalen Betriebssystem (VirtualBox, VMware Workstation).
- Hardware-Unterstützung: Intel VT-x / AMD-V machen die Virtualisierung fast so schnell wie echte Hardware.
Vorteile: Isolation (ein Absturz oder Virus bleibt in der VM), Snapshots (Zustand sichern und zurückspielen), einfaches Kopieren und Verschieben, bessere Auslastung der Server, Testen ohne Risiko.
Nachteile: Leistungsverlust (kleiner), Speicherbedarf (jede VM hat ein volles Betriebssystem), Verwaltungsaufwand.
- Abgrenzung zu Containern: Container (Docker) teilen sich den Kernel des Hosts und sind deutlich leichter. VMs trennen stärker.
- Emulation: Wenn die VM eine andere Prozessorarchitektur nachbildet (QEMU ARM auf x86), ist sie deutlich langsamer.
- Cloud: Mietserver bei AWS, Azure oder Hetzner sind in aller Regel virtuelle Maschinen.
- Typische Aufgaben: Linux ausprobieren, alte Software betreiben, Malware sicher analysieren, Entwicklungsumgebung.
Siehe auch: Sandbox, JVM (Java Virtual Machine), Kernel (Betriebssystemkern)