Virtualisierung Archives - credativ®

Mit LXC (Abkürzung für Linux Containers) können mehrere unabhängige Linux-Systeme auf einem Host laufen. Dabei erzeugt LXC keine virtuellen Maschinen, sondern Umgebungen, die zwar Ihre eigenen Prozesse besitzen, aber gemeinschaftlich den Kernel des Hosts nutzen.

 

Xen ist eine Virtualisierungssoftware, welche den parallelen Betrieb mehrerer virtueller Maschinen auf einem physikalischen Computer ermöglicht. Die Software entstammt einem Forschungsprojekt der Universität von Cambridge.

Xen kann sowohl zur Paravirtualisierung, als auch im Bereich der echten Virtualisierung eingesetzt werden.

Auf Systemen, welche keine hardwarebasierte Virtualisierung bieten, ist eine Modifikation der Gastsysteme erforderlich, damit diese unter Xen ablaufen können. Diese Anpassungen ermöglichen die Kooperation der Gastbetriebssysteme mit Xen, wodurch paravirtualisierte Systeme nahezu ohne Geschwindigkeitseinbußen arbeiten. Entsprechende Patches sind für eine Reihe gängiger Betriebssysteme, wie Linux, OpenSolaris und die BSD-Derivate, verfügbar.

Mit Aufkommen der hardwarebasierten Virtualisierungsfunktionen, wie sie in modernen Prozessoren zu finden sind, erlaubt Xen auch echte Virtualisierung. Dies hat den Vorteil, dass keine Modifikationen an den Gastsystemen vorgenommen werden müssen.

Funktionsweise

Auf unterster Ebene läuft der Xen Hypervisor. Er übernimmt die Unterteilung in virtuelle Maschinen, die als Domains bezeichnet werden. Außerdem ist er für die Verwaltung von Prozessen, Resourcen und Interrupts zuständig. Die Verwaltung der Gastsysteme, sowie die Nutzung der Hardware ist Aufgabe des Gastgebersystems, der sogenannten Domain-0. Die hervorragende Hardwareunterstützung des Linux-Kernels, welcher in der Domain-0 lauffähig ist, kommt so auch allen Gastsystemen zu Gute. Die Gastbetriebssysteme schließlich laufen als User Domains (kurz DomUs).

Alternativ besteht auch die Möglichkeit NetBSD oder OpenSolaris in der Domain-0 zu betreiben.

Xen ist Freie Software, der Quellcode ist von der Projektseite frei verfügbar.

Die Virtualisierungssoftware VirtualBox wurde von der Firma InnoTek entwickelt, welche 2008 durch Sun Microsystems übernommen wurde.

Sie dient dazu, verschiedene Betriebssysteme zu virtualisieren.

Die Software erlaubt den Betrieb von unangepassten Gastsystemen und stellt diesen Rechnerhardware (Laufwerke, Grafik-, Sound-, Netzwerkkarte, …) in emulierter Form zur Verfügung. Prozessor und Arbeitsspeicher werden nicht emuliert. Teile des Arbeitsspeichers werden dem Gastsystem fest zugewiesen und es wird versucht, möglichst alle Befehle des Gastbetriebssystems direkt auf dem Prozessor des Gastgebers auszuführen. Privilegierte Prozessorbefehle werden, nachdem sie vom Code Scan- und Analyse-Manager (CSAM) abgefangen und durch den Patchmanager (PATM) angepasst wurden, dem Gastgeberprozessor zur Ausführung übergeben. Bei Bedarf kann VirtualBox auch Gebrauch von den Hardware-Virtualisierungstechniken moderner Prozessoren machen.

VirtualBox ist auf Linux, Windows, macOS, sowie auf Solaris und OpenSolaris lauffähig und es werden sowohl 32-Bit, als auch 64-Bit x86-Systeme als Gastsysteme unterstützt.

Die Virtualbox ist in einer Closed Source Variante und als Open Source Edition (OSE) verfügbar. Der Quelltext der Open Source Edition kann von der Projektseite heruntergeladen werden.

Vagrant ist ein Werkzeug, um virtualisierte Entwicklungsumgebungen zu verwalten.

Mit wenigen Handgriffen lassen sich virtuelle Maschinen mit allen zur Entwicklung benötigten Komponenten erstellen.
Somit können alle Entwickler im Team in einer einheitlichen Umgebung arbeiten.

Vagrant greift auf vorhandene Virtualisierungs-Software wie VirtualBox zurück.
Zur Provisionierung der virtuellen Maschinen können verschiedene Tools wie Puppet und Ansible genutzt werden.

Proxmox Virtual Environment (oder auch Proxmox VE) ist eine umfassende Open-Source-Virtualisierungsplattform für Qemu KVM und LXC. Proxmox als Virtualisierungslösung basiert auf der Linux Distribution Debian und ermöglicht ein unkompliziertes, effizientes Deployment von virtuellen Maschinen und Containern. Die Administration und Konfiguration geschieht wahlweise über eine anwenderfreundliche Weboberfläche, einer API oder über die reguläre Command-Line, welches auch die gesamte Verwaltung über klassische Konfigurations-Management-Tools wie Ansible oder Puppet ermöglicht.

Proxmox VE kann sowohl als alleinstehende Maschine, als auch im Cluster, bestehend aus mehreren Maschinen, betrieben werden, wodurch sich weitere Vorteile hinsichtlich der Verfügbarkeit ergeben. Im Clusterbetrieb wird CoroSync für die Verteilung der Konfiguration benutzt.

Mit Software-Defined Networking (SDN) ermöglicht Proxmox VE die Erstellung und Verwaltung komplexer Netzwerk-Konfigurationen. So können Virtuelle Netzwerke (VNets) eingerichtet und der Netzwerkverkehr effizient über mehrere Knoten und Cluster hinweggesteuert werden.

Mit seinen vielen Optionen zur Einbindung von Festplattenspeichern lässt Proxmox VE kaum Wünsche offen. So sind verteilte Speicherlösungen wie Ceph, zentrale NFS oder iSCSI Lösungen oder lokale Datenspeicher mit ZFS und Snapshots nur einige der möglichen mannigfaltigen Optionen. Die Nutzung von NVMe-oF in Verbindung mit Proxmox ermöglicht eine erhebliche Steigerung der Performance in virtualisierten Umgebungen, indem sie den schnellen und latenzarmen Zugriff auf NVMe-Speicher über Netzwerke ermöglicht, was die Effizienz von datenintensiven Anwendungen verbessert und eine optimierte Ressourcennutzung ermöglicht.

Proxmox VE wird kontinuierlich weiterentwickelt. So existiert mit dem Proxmox Backup Server eine Backup-Lösung, welche die Sicherung und Wiederherstellung von VMs und Containern ermöglicht, sowohl als eigenständige Software als auch mit voller Einbindung in Proxmox VE. Auch das Ökosystem um Proxmox VE wird ständig größer. So lässt sich Proxmox wunderbar mit Ansible oder Terraform verwalten.

Zum aktuellen Stand bei Proxmox der Entwicklung bieten wir auch eine Reihe aktueller Artikel in unserem Blog.

oVirt ist eine vollständige Open Source Virtualisierungsmanagement-Plattform. oVirt baut auf dem kernelbasierten Linux-Hypervisor KVM und dem RHEV-M Management Server auf, der von Red Hat für die Open Source Community freigegeben wurde.

Hierzu gehört  eine umfangreiche, webbasierte Benutzeroberflächen für Administratoren und Anwender. oVirt unterstützt die Live-Migration von virtuellen Maschinen und Festplatten zwischen Hosts und Storagesystemen. Über die Benutzeroberfläche können Hosts, Storage und Netzwerkkonfigurationen verwaltet und gepflegt werden.

OpenStack ist ein linuxbasiertes Cloud-Betriebssystem, das große Pools von Rechen-, Speicher- und Netzwerkressourcen in einem Hostcluster oder Rechenzentrum steuert, die alle über ein gemeinsames Dashboard verwaltet werden. Dies ermöglicht den Administratoren die vollständige Kontrolle über diese Cloud.

Benutzer haben ebenfalls die Möglichkeit, Ressourcen, beispielsweise virtuelle Maschinen etc., zu erzeugen und zu pflegen. OpenStack bedient die Bereiche Compute, Storage und Networking.

Openshift ist eine Open Source Cloud-Plattform für automatisierte, einfach skalierbare Anwendungen. Mithilfe von Containern können auch komplexe Anwendungen mit verschiedenen Anforderungen schnell und sicher virtualisiert werden.

Die Kernel-based Virtual Machine ist die Virtualisierungslösung des Linux Kernels, welche von der Firma Qumranet entwickelt wird.

Sie basiert auf Hardware-Virtualisierungstechniken der Prozessoren von Intel (VT) oder AMD (AMD-V), was im Vergleich zur Paravirtualisierung einen deutlichen Performancegewinn mit sich bringt.

Es sind keine Anpassungen seitens der Gastsysteme erforderlich.

KVM ist seit der Version 2.6.20 fester Bestandteil des Linux-Kernels, der auch für die gesamte Kontrolle und Steuerung, sowie für das Ressourcenmanagement zuständig ist. Somit profitiert das Projekt direkt von Weiterentwicklungen des Linux Kernels.

Neben den Funktionen, die Prozessorzugriffe betreffen, benutzt KVM eine angepasste Version von Qemu, die die übrige Hardware, wie beispielsweise BIOS, Laufwerke oder Grafikkarte, emuliert.

KVM zeichnet sich durch eine einfache Installation und Administration aus. Sogar Systemmigrationen im laufenden Betrieb sind mit KVM möglich.

KVM ist Freie Software und bei Qumranet im Quellcode verfügbar.

Kubernetes ist ein ursprünglich von Google entwickeltes Open Source System, um Containeranwendungen in einem Cluster bereitzustellen, zu betreuen und zu skalieren. Mittlerweile stellt es neben z.B. Docker Swarm-Mode den Quasi-Standard für verteilte Container-Anwendungen dar und wird auch von großen Cloud-Anbietern wie Azure, Google oder AWS unterstützt. Es unterstützt dabei eine Reihe von Container-Tools inkl. Docker als wohl bekanntestem Vertreter, aber auch andere Containertypen wie z.B. Rocket.

Auch gibt es diverse erweiterte Systeme, wie z.B. Red Hats Openshift, welches Kubernetes um zusätzliche Funktionen erweitern.

Mittlerweile ist Kubernetes von Google an die Cloud Native Computing Foundation (CNCF) übergeben worden, welche die Entwicklung von verschiedenen Containertechnologien fördert und mittlerweile auch einen Kubernetes Certified-Administrator anbietet. Es bietet hier u.a. folgende Funktionen:

Mit Kubernetes ist es möglich, seine Containeranwendungen sowohl auf virtualisierter, wie auch auf dedizierter Hardware in beinahe beliebiger Skalierung zu betreiben und zu erweitern. Durch die Master-Slave Architektur kann jedes System, auf dem Docker bzw. der Kubernetes-Client (Kubelets) aktiviert und erreichbar ist, dem Cluster hinzugefügt und auch wieder entfernt werden.

Ganeti ist eine Virtualisierungs-Management-Lösung, welche von Google entwickelt wurde und unter der BSD2-Lizenz steht.

Docker ist eine Open Source Virtualisierungs-Software. Das Hauptmerkmal ist, dass die Virtualisierung nicht wie üblich über eine Virtuelle Maschine abläuft, sondern über sogenannte Container. Docker wurde im März 2013 als Open Source Software veröffentlicht, nachdem es als ein internes Projekt unter dotCloud, einem „platform-as-a-service“ Anbieter entwickelt wurde.

Integration ist ein wichtiger Punkt für Docker, weshalb es problemlos in verschiedenste Infrastruktur-Tools integriert werden kann. AWS, Ansible, CFEngine, Chef und Google Cloud Platform sind nur ein paar dieser Beispiele. Dockers bei weitem wichtigste Komponente ist die Anwendung von Containern. Anstatt Applikationen, wie klassische Virtualisierungssoftware, auf einer voll eingerichteten, eigenständigen Virtuellen Maschine einzusetzen, verpackt Docker die Applikation zusammen mit allen relevanten systembezogenen Daten des jeweiligen Betriebssystems in einem Container. Dies ermöglicht der Applikation, alle benötigten System-, Konfigurations-, und andere Dateien zu beziehen, ohne auf eine eigene, aktive Virtuelle Maschine zurückzugreifen. Neben einem massgeblichen Beitrag zur Hochverfügbarkeit unterstützt dieses Verfahren das Host-System direkt, da im Vergleich zu konventioneller Virtualisierung ein Minimum an Ressourcen verbraucht wird.

Ähnlich wie Vagrant unterstützt Docker Automatisierte Virtualisierung, Ansible, Puppet etc.