Linux Administration

Virtuelle Maschinen mit Incus – Windows und Linux professionell virtualisieren

Incus ist weit mehr als eine Container-Plattform. Neben Linux-Containern lassen sich auch vollständige virtuelle Maschinen verwalten. Dadurch eignet sich Incus hervorragend für gemischte Umgebungen, in denen sowohl Container als auch klassische Virtualisierung benötigt werden. In diesem Teil der Serie lernst du, wie virtuelle Maschinen mit Incus funktionieren, wie du sie erstellst und wann sie gegenüber Containern die bessere Wahl sind.

5 min Lesezeit
Grafik: Virtuelle Maschinen mit Incus einfach verwalten

Container sind schnell, ressourcenschonend und für viele Linux-Dienste die ideale Lösung. Dennoch gibt es Anwendungen, die einen eigenen Kernel oder sogar ein anderes Betriebssystem benötigen. Genau hier kommen virtuelle Maschinen ins Spiel.

Incus unterstützt beide Technologien unter einer gemeinsamen Verwaltungsoberfläche. Ob Linux-Server, Windows-Testsystem oder virtuelle Firewall – alles lässt sich mit denselben Werkzeugen verwalten.

In diesem Beitrag lernst du die Unterschiede zwischen Containern und virtuellen Maschinen kennen und erfährst, wie du deine erste VM mit Incus erstellst.


Container oder virtuelle Maschine?

Beide Technologien verfolgen das Ziel, Anwendungen voneinander zu isolieren. Der technische Aufbau unterscheidet sich jedoch grundlegend.

Linux-Container

Container teilen sich den Kernel des Hostsystems.

Dadurch ergeben sich zahlreiche Vorteile:

  • extrem schnelle Startzeiten
  • geringer Speicherverbrauch
  • hohe Containerdichte
  • nahezu native Performance
  • ideal für Linux-Dienste

Typische Einsatzgebiete:

  • Webserver
  • Datenbanken
  • Reverse Proxys
  • Docker-Hosts
  • Monitoring
  • Entwicklungsumgebungen

Virtuelle Maschinen

Virtuelle Maschinen verfügen dagegen über:

  • eigenen Kernel
  • eigenes BIOS bzw. UEFI
  • virtuelle Hardware
  • vollständiges Betriebssystem

Dadurch können neben Linux auch andere Betriebssysteme betrieben werden.

Zum Beispiel:

  • Windows 10
  • Windows 11
  • Windows Server
  • FreeBSD
  • OpenBSD
  • andere Linux-Distributionen

Der Preis dafür ist ein höherer Ressourcenbedarf.


Wann sollte man virtuelle Maschinen verwenden?

Virtuelle Maschinen eignen sich insbesondere dann, wenn:

  • ein eigener Kernel erforderlich ist
  • Windows genutzt werden soll
  • spezielle Treiber benötigt werden
  • Hardware virtualisiert werden muss
  • maximale Isolation gewünscht ist

Container sind dagegen meist die bessere Wahl für klassische Linux-Server.


Voraussetzungen

Für virtuelle Maschinen benötigt Incus die Hardwarevirtualisierung des Prozessors.

Prüfen:

Intel:

egrep -c '(vmx)' /proc/cpuinfo

AMD:

egrep -c '(svm)' /proc/cpuinfo

Ein Wert größer als 0 bedeutet, dass Virtualisierung grundsätzlich unterstützt wird.

Zusätzlich sollte KVM verfügbar sein.

ls -l /dev/kvm

Virtuelle Maschinen erstellen

Der Unterschied zum Erstellen eines Containers ist denkbar klein.

Container:

incus launch images:debian/13 mein-container

Virtuelle Maschine:

incus launch images:debian/13 meine-vm --vm

Die Option

--vm

weist Incus an, statt eines Containers eine virtuelle Maschine zu erzeugen.


Status anzeigen

Alle Systeme anzeigen:

incus list

Beispiel:

+----------------+---------+--------------+-----------+
| NAME           | STATE   | IPV4         | TYPE      |
+----------------+---------+--------------+-----------+
| webserver      | RUNNING | 10.0.0.10    | CONTAINER |
| windows-test   | RUNNING | 10.0.0.20    | VIRTUAL-MACHINE |
+----------------+---------+--------------+-----------+

So erkennt man sofort, ob es sich um einen Container oder eine virtuelle Maschine handelt.


Eine Shell öffnen

Bei Linux-VMs kann direkt eine Konsole geöffnet werden.

incus console meine-vm

Alternativ kann bei installierten SSH-Diensten eine Verbindung per SSH erfolgen.


ISO-Dateien verwenden

Nicht jedes Betriebssystem steht als Cloud-Image zur Verfügung.

Für klassische Installationen kann eine ISO-Datei verwendet werden.

Zunächst wird ein Storage-Volume angelegt.

Anschließend wird das ISO-Abbild eingebunden.

Ein vereinfachtes Beispiel:

incus storage volume import default windows.iso windows-installer

Danach kann die ISO einer virtuellen Maschine als virtuelles CD/DVD-Laufwerk zugewiesen werden.

Dies eignet sich unter anderem für:

  • Windows Server
  • Windows 11
  • Debian Installer
  • Ubuntu Desktop
  • Rescue-Systeme

Cloud Images

Für Linux empfiehlt sich die Nutzung sogenannter Cloud Images.

Diese besitzen zahlreiche Vorteile:

  • sehr klein
  • schnell erstellt
  • automatische Konfiguration
  • Cloud-Init-Unterstützung
  • keine klassische Installation erforderlich

Beispiel:

incus launch images:ubuntu/24.04 meine-ubuntu-vm --vm

Bereits nach kurzer Zeit steht eine vollständig eingerichtete virtuelle Maschine bereit.


UEFI-Unterstützung

Moderne virtuelle Maschinen verwenden UEFI statt eines klassischen BIOS.

Incus unterstützt UEFI standardmäßig.

Vorteile:

  • Secure Boot (je nach Gastbetriebssystem)
  • GPT-Unterstützung
  • moderne Bootverfahren
  • bessere Kompatibilität

Dadurch lassen sich aktuelle Betriebssysteme problemlos installieren.


VirtIO – Höhere Performance

Incus verwendet VirtIO für viele virtuelle Geräte.

VirtIO ist eine speziell für Virtualisierung entwickelte Treiberschnittstelle.

Sie ermöglicht nahezu native Geschwindigkeiten.

VirtIO wird unter anderem verwendet für:

  • Netzwerkkarten
  • Festplatten
  • Speichercontroller
  • Dateisysteme

Dadurch erreichen virtuelle Maschinen eine deutlich höhere Performance als mit emulierter Hardware.

Für Windows sollten bei Bedarf die passenden VirtIO-Treiber während der Installation eingebunden werden.


Ressourcen konfigurieren

Auch virtuelle Maschinen lassen sich begrenzen.

CPU:

incus config set meine-vm limits.cpu=4

RAM:

incus config set meine-vm limits.memory=8GiB

Autostart:

incus config set meine-vm boot.autostart=true

Diese Einstellungen entsprechen denen von Containern.


Virtuelle Maschinen verwalten

Starten:

incus start meine-vm

Stoppen:

incus stop meine-vm

Neustarten:

incus restart meine-vm

Informationen:

incus info meine-vm

Löschen:

incus delete meine-vm

Typische Einsatzgebiete

Virtuelle Maschinen eignen sich hervorragend für:

Windows-Testsysteme

  • Windows 11
  • Windows Server
  • Active Directory

Firewall-Systeme

  • pfSense
  • OPNsense

Legacy-Anwendungen

Ältere Software benötigt häufig bestimmte Betriebssystemversionen oder Kernel.


Entwicklungsumgebungen

Mehrere Betriebssysteme können parallel getestet werden.


Sicherheitsanalysen

Virtuelle Maschinen bieten eine besonders starke Isolation.

Sie eignen sich ideal für:

  • Malware-Analysen
  • Penetrationstests
  • Softwaretests

Für einen WYSIWYG-Editor eignet sich dieser Abschnitt deutlich besser:


Container oder VM – Welche Lösung ist die richtige?

Ob ein Linux-Container oder eine virtuelle Maschine die bessere Wahl ist, hängt vom jeweiligen Einsatzzweck ab.

Container

Container teilen sich den Kernel des Hostsystems und sind dadurch besonders ressourcenschonend. Sie starten innerhalb weniger Sekunden und erreichen nahezu native Performance. Eine Hardwarevirtualisierung ist nicht erforderlich. Container eignen sich hervorragend für klassische Linux-Dienste wie Webserver, Datenbanken, Reverse Proxys oder Monitoring-Systeme.

Virtuelle Maschinen

Virtuelle Maschinen verfügen über einen eigenen Kernel und können deshalb neben Linux auch Windows oder andere Betriebssysteme ausführen. Sie benötigen mehr Arbeitsspeicher und Rechenleistung als Container und starten entsprechend langsamer. Für ihren Betrieb ist eine Hardwarevirtualisierung (Intel VT-x bzw. AMD-V) erforderlich. Virtuelle Maschinen sind die richtige Wahl, wenn vollständige Betriebssysteme oder Anwendungen mit speziellen Hardware- oder Kernelanforderungen benötigt werden.

Zusammenfassung

  • Eigener Kernel
  • Container: Nein
  • Virtuelle Maschine: Ja
  • Windows möglich
  • Container: Nein
  • Virtuelle Maschine: Ja
  • Speicherbedarf
  • Container: Sehr gering
  • Virtuelle Maschine: Höher
  • Startzeit
  • Container: Wenige Sekunden
  • Virtuelle Maschine: Deutlich länger
  • Performance
  • Container: Sehr hoch (nahezu nativ)
  • Virtuelle Maschine: Hoch
  • Hardwarevirtualisierung erforderlich
  • Container: Nein
  • Virtuelle Maschine: Ja
  • Ideal für
  • Container: Linux-Dienste, Webserver, Datenbanken, Entwicklungsumgebungen
  • Virtuelle Maschine: Windows, vollständige Betriebssysteme, Legacy-Anwendungen und Testumgebungen

Faustregel:

Nutze Container, wann immer ausschließlich Linux-Anwendungen betrieben werden sollen. Greife zu virtuellen Maschinen, wenn ein eigenes Betriebssystem, ein eigener Kernel oder maximale Isolation erforderlich sind.

Für den produktiven Betrieb haben sich folgende Empfehlungen bewährt:

  • Container für Linux-Dienste einsetzen.
  • Virtuelle Maschinen nur verwenden, wenn ein eigener Kernel oder ein anderes Betriebssystem erforderlich ist.
  • Ressourcen mit CPU- und RAM-Limits begrenzen.
  • Cloud Images für Linux bevorzugen.
  • VirtIO-Treiber für Windows nutzen.
  • Regelmäßig Snapshots und Backups erstellen.
  • UEFI für moderne Betriebssysteme verwenden.


Mit der Unterstützung für virtuelle Maschinen erweitert Incus seinen Einsatzbereich deutlich. Neben schnellen und ressourcenschonenden Linux-Containern können auch vollständige Betriebssysteme wie Windows oder FreeBSD betrieben werden. Dank der einheitlichen Verwaltung lassen sich Container und virtuelle Maschinen gemeinsam betreiben und mit denselben Werkzeugen konfigurieren.

Im nächsten Teil der Serie beschäftigen wir uns mit den verschiedenen Storage Pools in Incus. Du lernst die Unterschiede zwischen dir, ZFS, Btrfs, LVM und Ceph kennen und erfährst, welches Storage-Backend sich für welchen Einsatzzweck am besten eignet.