# Proxmox VE

Proxmox VE (Proxmox Virtual Environment; kurz PVE) ist eine auf Debian basierende Open-Source-Virtualisierungsplattform zum Betrieb von virtuellen Maschinen mit einem Webinterface zur Einrichtung und Steuerung von x86-Virtualisierungen. Die Umgebung basiert auf QEMU mit der Kernel-based Virtual Machine (KVM). PVE bietet neben dem Betrieb von klassischen virtuellen Maschinen (Gastsystemen), die auch den Einsatz von Virtual Appliances erlauben, auch Linux Containers (LXC) an.
Durch die Verwendung einer Web-Oberfläche wird ein Großteil der einfachen Arbeiten wie das Einrichten, Starten und Stoppen, Erstellen von Backups und Verwaltung der Netzwerkinfrastruktur und der laufende Betrieb von virtuellen Maschinen und den dazugehörigen Speichersystemen am Hostsystem erleichtert. Darüber hinaus können Cluster von mehreren PVE-Hostsystemen basierend auf der Corosync Cluster Engine gebildet werden, welche gemeinsam verwaltet werden. Zwischen diesen können virtuelle Maschinen und deren virtueller Festplattenspeicher ausgetauscht werden. Dies ermöglicht den Aufbau von Hochverfügbarkeitsclustern.
Eine Besonderheit von PVE ist, dass beliebige Pakete des Debian-Projekts mittels des Debian Package Managers (dpkg) und darauf aufbauend Advanced Packaging Tool (apt) am Hostsystem nachinstalliert werden können. Auch die Verwaltung und Aktualisierung von Proxmox-Paketen erfolgt über eigene Repositories mittels dpkg. Der Veröffentlichungszyklus von PVE liegt dabei meist bei zwei bis vier Monaten, bei größeren Änderungen auch länger. Proxmox VE wird von der Wiener Proxmox Server Solutions GmbH entwickelt und betreut.

## Geschichte

Bis Version 3.4 wurde als Container-Technologie OpenVZ verwendet, mit Version 4.0 wurde dieser durch LXC ersetzt. Die Proxmox-VE-Version 5.1 arbeitet auf Basis von Linux 4.13 und unterstützt im Parallelbetrieb sowohl KVM-basierte Gastsysteme, als auch LXC-basierte Linux-Container.

## Funktionsweise

Im einfachsten Fall wird PVE auf einer kompatiblen x86-64-Plattform wie beispielsweise einem Bladeserver von dem zur Verfügung gestellten ISO-Image aus installiert. Das Installationsprogramm erledigt den gesamten Installationsvorgang in einer Debian-Grundinstallation praktisch automatisch und nutzt dabei die gesamte erste Festplatte des PCs. Weitere Installationsarten sind möglich und werden im PVE-Wiki erklärt. Die Unterschiede zu einer gewöhnlichen Debianinstallation bestehen primär in der Vorauswahl der zu unterstützenden Hardware: So werden beispielsweise eine größere Auswahl der im Serverbereich anzutreffenden PHY-Ethernet-Netzwerkchips von der Firma Intel direkt unterstützt, die Nachinstallation von Treibern entfällt damit. Das Proxmox-Wiki bietet dazu diverse FAQs, Howtos sowie zahlreiche Video-Tutorials.
Proxmox VE unterstützt am Hostsystem jede Hardware, die auch von Debian in der jeweiligen Version unterstützt wird, somit auch uneingeschränkt SMP-Systeme mit mehreren Prozessoren und Prozessorkernen.
Die Administration von PVE erfolgt für einfache Schritte über ein Webinterface. Ergänzend steht ein SSH-Zugang zur Kommandozeile auf root-Ebene zur Verfügung, auf welchem sich mit entsprechenden Scripts und Systemprogrammen auch umfangreichere Arbeiten und spezielle Konfigurationen am Hostsystem erledigen lassen.

## Aufbau
### Virtuelle Maschinen (KVM)

Proxmox VE beinhaltet auf der einen Seite einen Linux-Kernel, der auf KVM-Basis als Hypervisor (auch Virtual Machine Monitor genannt) direkt auf der Hardware läuft. Der Linux-Kernel stellt ab der Version 2.6.21 als Rahmenbedingung für Virtualisierungs-Anwendungen die paravirt ops-Schnittstelle bereit.
Der Vorteil von KVM liegt darin, nahezu beliebige x86-Betriebssysteme ohne zusätzliche Anpassungen unter einer zentralen Verwaltung ausführen zu können. Diese Betriebsart wird als volle Virtualisierung oder Hardware Virtual Machine (HVM) bezeichnet. Für die HVM-Virtualisierungstechniken wird am Hostsystem standardmäßig vorhandene Hardwareunterstützung für Virtualisierung mit AMD-V oder Intel VT benötigt.

### Linux Containers (LXC)

Ab Version 4.0 lösen Linux Containers (LXC) die bisher verwendeten OpenVZ-Container (bis Proxmox VE 3.4) ab. Bei einem Upgrade eines Proxmox-Clusters können die OpenVZ-Container zu LXC konvertiert werden. Im Gegensatz zu virtuellen Maschinen weisen Container einen geringeren Speicherbedarf auf, dafür ist das Gastsystem auf das Betriebssystem Linux limitiert, da bei Containern der Kernel des Hostsystems im Gastsystem verwendet wird.
Mit dem Wechsel auf LXC kann Proxmox die aktuellen Linux-Kernels nutzen. Die komplette Integration von LXC in das Proxmox VE-Framework erlaubt ab Proxmox VE 4.x die Verwendung von LXC mit Storage-Plugins wie Ceph, ZFS (Dateisystem) (lokal oder via iSCSI), NFS (Network File System), GlusterFS, iSCSI, Sheepdog oder lokalem Speicher (Verzeichnisse oder LVM). DRBD9 wird seit Proxmox 4.4 aufgrund von Lizenzproblemen nicht mehr direkt unterstützt und kann nur durch externe Plugins eingebunden werden.

### OpenVZ

Proxmox VE integrierte bis Version 3.4 auch OpenVZ, eine auf Linux aufbauende Servervirtualisierung auf Betriebssystemebene. Hier wird anders als bei KVM ein gemeinsamer Kernel für alle virtuellen Maschinen (Instanzen) verwendet, die in sogenannten Containern voneinander isoliert sind. Der Vorteil ist hier die Schlankheit dieser Technik, d. h. der Speicherverbrauch und die Prozessornutzung ist günstiger als bei KVM.
Jedoch ist es mit OpenVZ nur möglich, Linux-VMs mit auch auf Hostseite angepasstem Kernel zu betreiben; die Gäste können weiterhin auch keine eigenen Änderungen am Kernel vornehmen oder eigene Kernelmodule laden, da der Kernel mit dem Hostsystem geteilt wird. Um diese Technik benutzerfreundlich zu halten, verfügt Proxmox VE/OpenVZ über Templates, die alle notwendigen Änderungen des Gastsystems automatisiert durchführen. Wiederum profitieren von einem Update des zentralen Kernel sofort alle Instanzen; der Verwaltungsaufwand ist also gegebenenfalls geringer.

### Speichersysteme

PVE unterstützt die Aufnahme und Einrichtung der für den Betrieb notwendigen virtuellen Laufwerke der Gastsysteme, Snapshots und Backups. Dabei können sowohl lokale im Hostsystem eingebaute Speichermedien wie Festplatten (HDD) oder Solid-State-Drives (SSD) als auch netzwerkbasierende Speichersysteme, wie Storage Area Networks (SAN) oder Network Attached Storages (NAS), zur Anwendung kommen. Die Anbindung kann dabei dateisystembasierend erfolgen, beispielsweise mittels Network File System (NFS), als auch als Blockgerät über Schnittstellen wie iSCSI.
Zur Verwaltung der lokalen Speichermedien wird generell ein Volume-Management (LVM) eingesetzt, darauf aufbauend erfolgt für die virtuellen Laufwerksabbildungen die Speicherung entweder in eigenen Partitionen in englisch Thinly-Provisioned Logical Volumes, thin-LVM oder in einem Dateisystem, beispielsweise in dem standardmäßig von QEMU verwendeten Dateiformat qcow2. Damit ist auch der Austausch der Laufwerksabbildungen zwischen verschiedenen Virtualisierungsumgebungen auf Dateiebene möglich. Als Dateisystem am Hostsystem wird neben ext4 auch das im Serverbereich anzutreffende und speicherintensive ZFS zur Auswahl angeboten.

### Diverses

PVE bietet sowohl für das Hostsystem als auch darauf aufbauend individuell für jedes Gastsystem einzeln die Möglichkeit einer auf iptables basierenden Firewall an. Die Konfiguration für die Netzwerkregeln kann über das Web-Interface erfolgen.
Die Schnittstelle zur Konsole der Gastsysteme, beispielsweise die Ausgabe einer grafischen Oberfläche und die Eingabe der Tastatur- und Maussteuerungen im Rahmen eines virtuellen KVM-Switchs, erfolgt wahlweise über das Protokoll SPICE oder über eine auf HTML5 basierende Variante von Virtual Network Computing (noVNC). Damit nicht jedes Gastsystem einen eigenen Port für die Konsolenschnittstelle am Hostsystem belegt, erfolgt der verschlüsselte Zugang mit Authentifizierung über einen Proxy.
Ab Version 5.3 besteht über die Weboberfläche die Möglichkeit einzelne Hardwarekomponenten vom Hostsystem, wie beispielsweise Einsteckkarten mit Peripheral Component Interconnect (PCI) oder Grafikkarten (GPU), direkt in bestimmte Gastsysteme für den exklusiven Zugriff durchzureichen. Hierzu ist die Aktivierung von Intel VT-d oder AMD-Vi im BIOS nötig.

## Zusätzliche Software

Proxmox Server Solutions bietet zusätzlich zu der Proxmox VE Software auch weitere teilweise mit der Proxmox VE kompatible Software an.

### Proxmox-Backup-Server

Der Proxmox-Backup-Server (PBS) bietet Nutzern die Möglichkeit Virtuelle Maschinen (VMs) in vorher konfigurierten Intervallen zu sichern. PBS verwendet hierfür inkrementelle Backups, bei welchen nach der ersten Vollsicherung lediglich die Änderungen im Vergleich zum vorherigen Backup mitgespeichert werden. Hierdurch können sehr kurze Backup-Intervalle von bis zu einigen Minuten erreicht werden. Zusätzlich kann ein Intervall für neue Vollbackups konfiguriert werden.
Die Anbindung an einen Proxmox-Backup-Server kann nur direkt über Proxmox VE erfolgen.
Weitere Funktionen sind unter anderem die Verschlüsselung der Backups sowie die Ausführung von Jobs für die Löschung von Backups, die nach der eingestellten Regel nicht mehr gespeichert werden sollen, sowie für die Prüfung von Backups.

### Proxmox-Mail-Gateway

Das Proxmox-Mail-Gateway kann auch ohne Verwendung von Proxmox VE genutzt werden, dieser bietet die Möglichkeit, E-Mail-Verkehr dediziert auf Spam zu überprüfen, E-Mail-Absender zu sperren sowie Statistiken zum E-Mail-Verkehr zu erhalten.