LINUXMAKER, OpenSource, Tutorials

Virtualisierung mit KVM, LXC, Docker und OpenStack

Der Bedarf an IT-Lösungen in Unternehmen steigt ständig. Um diese Nachfrage zu erfüllen, sollte man sich Gedanken über Virtualisierung machen.
Für Geschäftsführer, IT-Verantwortliche, Selbständige bieten Virtualisierungen eine Reihe von Vorteilen, die Sie von traditionellen IT-Systemen nicht bekommen. Sie ermöglichen es Ihnen, eine gewisse Struktur aufzubauen und damit zu wachsen.
Viele Kunden denken, die Virtualisierung ist eher für große Unternehmen interessant. Aber das ist nicht so, auch kleinere Unternehmen und mittelständische Unternehmen können sehr gut von der Technik profitieren.

  • Ihre Hardware lässt sich besser auslasten und damit entstehen Kosteneinsparungen.

  • Sie haben ein deutlich besseres Handling bei Ausfällen (Desaster Recovery). Denn virtuelle Server sind schnell wiederhergestellt - auch auf anderer Hardware.

  • Durch die Erhöhung der verfügbaren Systeme wächst auch die Hochverfügbarkeit Ihrer Systeme.

  • Sie sparen Zeit mit Virtualisierung, da mit wenigen Mauskicks sich neue Server oder neue virtuelle Desktops generieren lassen.

  • Sie können Ihre komplettes IT-System zentral verwalten und kontrollieren.

Was wäre die Cloud ohne Virtualisierung? Die Bereitstellung virtueller IT-Ressourcen und die damit einhergehende Abstraktion von der physischen Rechenmaschine haben dem Cloud-Zeitalter den Weg bereitet. Alle Techniken, die im Rahmen des Cloud-Computings zum Einsatz kommen, basieren auf einer Virtualisierung von IT-Ressourcen wie Hardware, Software, Speicher oder Netzwerkkomponenten. Technisch unterscheiden sich diese Formen der Virtualisierung mitunter beträchtlich.
Bei Virtualisierung handelt es sich um eine Abstraktion physischer IT-Ressourcen. Abstrahieren lassen sich Hardware- und Software-Komponenten. Eine im Rahmen der Virtualisierung erstellte IT-Komponente wird als virtuelle oder logische Komponente bezeichnet und kann genauso verwendet werden wie ihr physisches Pendant.
Der zentrale Vorteil der Virtualisierung ist die Abstraktionsschicht zwischen der physischen Ressource und dem virtuellen Abbild. Diese ist Grundlage diverser Cloud-Services, die im Unternehmensalltag zunehmend an Bedeutung gewinnen.

Kernel-based Virtual Machine (KVM)

Eine Kernel-basierte virtuelle Maschine (KVM) ist eine OpenSource-Virtualisierungstechnologie, die in Linux integriet ist. Insbesondere kann man Linux mit KVM in einen Hypervisor umwandeln, der es einem Host-Rechner ermöglicht, mehrere isolierte virtuelle Umgebungen auszuführen, sogenannte Guests oder Virtuelle Maschinen (VM).
KVM ist in Linux integriert. Auf jedem aktuellem Linux ist auch KVM enthalten. Damit ist KVM Teil des bestehenden Linux-Codes und profitiert sofort von jeder neuen Funktion, Fix oder Verbesserung für Linux, ohne dass zusätzlicher technischer Aufwand anfällt.
Ein weiterer Vorteil von KVM ist, dass die Gastsysteme fast mit nativer Geschwindigkeit laufen, d.h. das Gastsystem reagiert nahezu so schnell wie ein natives System.

Wie funktioniert KVM?
KVM konvertiert Linux in einen Typ-1-Hypervisor (Bare-Metal). Alle Hypervisors benötigen die gleichen Komponenten auf Betriebssystemebene – wie zum Beispiel einen Speichermanager, Prozessplaner, Input/Output-Stack (I/O), Gerätetreiber, Sicherheitsmanager, Netzwerk-Stack und mehr – um die VM laufen lassen zu können. KVM verfügt über alle diese Komponenten, weil sie in den Linux-Kernels integriert ist. Somit ist jede VM als regulärer Linux-Prozess implementiert, der vom standardmäßigen Linux-Scheduler geplant wird, mit dedizierter virtueller Hardware wie einer Netzwerkkarte, Grafikkarte, CPU(s), Speicher und Festplatten.

Sicherheit
KVM verwendet eine Kombination von Linux mit erweiterter Sicherheit (SELinux) und sicherer Virtualisierung (sVirt) für verbesserte VM-Sicherheit und -Isolierung. SELinux legt die Sicherheitsgrenzen um VM herum fest. sVirt erweitert die Fähigkeiten von SELinux. sVirt ermöglicht die Anwendung von Mandatory Access Control (MAC) für Gast-VM und verhindert manuelle Kennzeichnungsfehler.

Speicherverwaltung
Speicherverwaltungsfunktionen von Linux werden von KVM übernommen, einschließlich des Non-Uniform Memory Access (NUMA) und Kernel Same-Page Merging. Der Speicher einer VM kann getauscht, durch große Volumina für eine bessere Leistung verstärkt und durch eine Festplattendatei geteilt oder unterstützt werden.

Live-Migration
Die Live-Migration findet bei KVM ebenso Unterstützung. Damit ist die Fähigkeit gemeint, eine laufende VM zwischen physischen Hosts zu verschieben, ohne dass der Service unterbrochen wird. Die VM bleibt dabei in Betrieb, Netzwerkverbindungen bleiben aktiv und die Anwendungen laufen weiter, während die VM verschoben wird. KVM sichert auch den aktuellen Zustand einer VM, sodass diese gespeichert und später fortgesetzt werden kann.

Performance und Skalierbarkeit
KVM übernimmt die Leistung von Linux und skaliert für eine Anpassung an den Lastbedarf, wenn die Anzahl der Gastmaschinen und der Anfragen steigt. Mit KVM können große Anwendungs-Workloads virtualisiert werden. Außerdem bildet KVM die Grundlage für viele Setups der Unternehmensvirtualisierung, beispielsweise für Rechenzentren und Private Clouds (über OpenStack®).

Planung und Ressourcensteuerung
Im KVM-Modell ist eine VM ein Linux-Prozess, der vom Kernel geplant und verwaltet wird. Der Linux-Scheduler ermöglicht eine Feinsteuerung der Ressourcen die einem Linux-Prozess zugewiesen werden und garantiert die Qualität eines Services für einen bestimmten Prozess. In KVM beinhaltet dies den Completely Fair Scheduler (CFS), Control Groups, Network Namespaces und Echtzeit-Erweiterungen.

Geringere Latenz und höhere Priorisierung
Der Linux-Kernel enthält Echtzeit-Erweiterungen, die ermöglichen, dass VM-basierte Apps mit niedrigerer Latenz und besserer Priorisierung (im Vergleich zu Bare-Metal) ausgeführt werden können. Der Kernel teilt auch Prozesse, die lange Rechenzeiten erfordern, in kleinere Komponenten auf, die dann entsprechend eingeplant und verarbeitet werden.


Linux Containers (LXC)

Die Linux Containers (LXC) gleichen dabei in etwa den sogenannten Jails unter BSD oder den Containern unter Solaris. Im laufenden System, dem Host, wird damit für den Gast ein abgeschotteter und gesicherter Bereich eingerichtet, innerhalb dessen einzelne Dienste oder ganze Systeme virtualisiert werden. Im LXC-Jargon heißt diese Umgebung wie bei Solaris Container. Im Vergleich zu vielen anderen Lösungen arbeitet LXC dabei direkt auf der Ebene des Betriebssystems. Während VMware oder Virtualbox einen vollständigen PC samt BIOS und Hardware emulieren und sich daher ideal zum Installieren von anderen Betriebssystemen eignen, nutzt LXC die bereits vorhandene Hardware und den bestehenden Kernel, um entsprechende Container bereitzustellen.
LXC eignet sich sowohl für Umgebungen, die aus Sicherheitsgründen getrennte Instanzen mit eigenen Ressourcen erfordern, als auch für Bereiche, in denen es eine gewisse Flexibilität zu gewährleisten gilt. Bei Bedarf ziehen Sie einen Container mit wenigen Handgriffen auf einen anderen Host um. Der Ansatz eignet sich unter anderem für den Einsatz bei Providern, die kostengünstig virtuelle Server bereitstellen wollen, sowie für Software-Entwickler, die in definierten Umgebungen arbeiten müssen.


Docker

Mit der Software „Docker“ existiert eine Containerisierungstechnologie, die die Erstellung und den Betrieb von Linux®-Containern ermöglicht.
Mit Docker können Container wie extrem leichtgewichtige, modulare virtuelle Maschinen behandelt werden. Und mit diesen Containern wird eine Flexibilität generiert – man kann Container erstellen, einsetzen, kopieren und zwischen Umgebungen bewegen, was wiederum die Optimierung der Apps für die Cloud unterstützt.

Funktionsweise:
Die Docker-Technologie verwendet den Linux Kernel und seine Funktionen wie Cgroups und namespaces, um Prozesse zu isolieren, damit diese unabhängig voneinander ausgeführt werden können. Diese Unabhängigkeit ist der Zweck der Container – die Fähigkeit, mehrere Prozesse und Apps getrennt voneinander betreiben zu können. So wird Ihre Infrastruktur besser genutzt und gleichzeitig die Sicherheit bewahrt, die sich aus der Arbeit mit getrennten Systemen ergibt.
Containertools, inklusive Docker, agieren mit einem Image-basierten Bereitstellungsmodell. Das macht es einfacher, eine Anwendung oder ein Paket von Services mit all deren Abhängigkeiten in mehreren Umgebungen gemeinsam zu nutzen. Docker automatisiert außerdem die Bereitstellung der Anwendung (respektive die Kombinationen von Prozessen, die eine Anwendung darstellen) innerhalb dieser Container-Umgebung.
Dabei bauen die Tools auf LXC auf und geben den Nutzern so nie dagewesenen Zugriff auf Anwendungen. Sie ermöglichen eine deutlich schnellere Bereitstellung und Kontrolle von Versionen sowie deren Verbreitung. Das ist, was Docker benutzerfreundlich und einzigartig macht.

Obwohl die Docker-Technologie ursprünglich auf die LXC-Technologie aufgesetzt wurde – was meistens mit „traditionellen“ Linux-Containern assoziiert wird, ist Docker nicht das Gleiche wie Linux-Container. Sie hat sich seitdem von dieser Abhängigkeit befreit. LXC war als leichtgewichtige Virtualisierung von Nutzen, bot aber keine gute Entwickler- oder Nutzererfahrung. Die Docker-Technologie bietet mehr als die Fähigkeit, Container auszuführen – sie vereinfacht auch den Prozess der Erstellung und des Aufbaus von Containern sowie den Versand von Images und unter anderem auch der Versionierung von Images.

Docker für sich allein ist für die Verwaltung einzelner Container bestens geeignet. Wenn man allerdings beginnt, mehr und mehr Container und containerisierte Apps zu verwenden, die in Hunderte von Bestandteilen zerlegt sind, können die Verwaltung und Orchestrierung sehr schwierig werden. Irgendwann muss man einen Schritt zurückgehen und Container gruppieren, um Dienste wie Vernetzung, Sicherheit, Telemetrie etc. in all den Containern bereitzustellen. An dieser Stelle kommt Kubernetes ins Spiel.


Wann lohnen sich Container-Lösungen und wann macht KVM Sinn?

Der wohl größte Unterschied ist, dass sich bei LXC, Docker alle Container den gleichen Kernel teilen. Das heißt, man kann auf einem Linux Host auch nur Linux Container benutzen. Dagegen wird bei KVM eine komplette virtueller Maschine "emuliert". Damit kann man unter KVM auch Windows-Systeme auf Linux-Hosts laufen lassen.
Allerdings sind für die meisten Aufgaben Container ausreichend. Denn um einfach nur ein paar Programme oder Nutzer vom Hostsystem zu isolieren oder einfach eine kleine weitere Linux-VM zu betreiben, sind Container die bessere Wahl, da sie Ressourcen sparen. Ist jedoch das Ziel, ein Linux-System mit einer anderen Kernel-Version oder sogar Windows laufen zu lassen, dann benötigt man eine KVM.


Proxmox VE

Proxmox VE (Proxmox Virtual Environment oder PVE) ist eine auf Debian basierende Open-Source-Virtualisierungsplattform zum Betrieb von virtuellen Maschinen mit einer Web-Oberfläche 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, 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 und zwischen welchen virtuelle Maschinen und deren virtuelle Festplattenspeicher ausgetauscht werden können. Dies ermöglicht auch den Aufbau von Hochverfügbarkeitsclustern.


OpenStack® - Cloud-Lösung

Mit OpenStack® können eigene Cloud-Architekturen auf Standardhardware realisiert werden. Das Softwareprojekt ist zwar nicht neu, wird aber in Unternehmen bislang noch sehr verhalten eingesetzt. OpenStack® ist ein Open-Source-Projekt, das aus einer Reihe von Softwareelementen für die Erstellung von Cloud-Plattformen besteht. Im Prinzip sollen die OpenStack-Softwarekomponenten Unternehmen den Aufbau eigener Clouds erleichtern. Man könnte auch sagen, es handelt sich um ein offenes „Cloud-Betriebssystem“, das eine Vielzahl von vorinitialisierten Ressourcen innerhalb eines Rechenzentrums bereithält.
So kann beispielsweise die IT-Abteilung eines Unternehmens als interner Cloud-Service-Provider fungieren. Die Administratoren stellen alle OpenStack-Cloud-Ressourcen zur Verfügung und kontrollieren sie über ein Dashboard. Gleichzeitig können die einzelnen Abteilungen diese Ressourcen individuell je nach Bedarf über ein Web-Interface für ihre Projekte provisionieren. Hat also eine bestimmte Abteilung Bedarf an Cloud-Infrastruktur-Ressourcen für ein spezielles Projekt, stellt sie sich diese individuell aus dem OpenStack-Pool zusammen.


IT-Service und IT-Beratung

Die Digitalisierung des Geschäftslebens, wesentlicher Produktionsprozesse und des Privatlebens ist in vollem Gange. Gleichzeitig nehmen die Bedrohungen durch Serverausfälle, Viren und Cyberkriminalität zu. Verstärkt wird das Ganze durch die Vernachlässigung der IT-Security sowohl im privaten Umfeld als auch in der Geschäftswelt. Wirklich notwendige Schutzmechanismen werden meistens erst dann in Erwägung gezogen, wenn bereits der Schaden entstanden ist und die Wiederherstellung der IT-Infrastruktur Unsummen an Kosten verursacht hat.
Linux bietet Ihnen bereits von Grund auf die sichere Basis in Ihrer IT-Infrastruktur. Einerseits, weil es schon immer als ein auf den Netzwerkbetrieb ausgerichtetes Betriebssystem konzeptioniert wurde. Andererseits, weil die freie Verfügbarkeit des Source-Code die Möglichkeit von schadhaft oder zweckentfremdet programmierter Funktionen nahezu unmöglich macht. Zusätzlich bedeutet „Open Source“ seit eh her eine permanente Verbesserung durch innovative Spezialisten aus aller Welt. Inzwischen vertrauen immer mehr Anwender Linux, das unter Anderem den Kernel für die zahlreichen Android-Installationen liefert, so auch Unternehmen respektive Instutionen wie Siemens, BMW, Lufthansa, Deutsche Post AG, Greenpeace und staatliche Institutionen inklusive des Bundesbeauftragten für Datenschutz.
Sie sind ein Unternehmen, ein mittelständisches Unternehmen, ein Handwerksbetrieb, ein Einzelunternehmer mit der entsprechenden IT-Infrastruktur und Sie möchten Ihre Kunden mit Ihren Produkten umfassend zufriedenstellen. Oder Sie sind eine Privatperson mit entsprechenden Supportwünschen. Ihre IT-Infrastruktur soll zuverlässig rund um die Uhr funktionieren. IT-LINUXMAKER kann als Experte auf diesem Gebiet Ihre Informationen effektiv und schnell schützen. Mit den Services von IT-LINUXMAKER sichern Sie sich Ihren Wettbewerbsvorteil durch die Stabilität Ihrer IT-Infrastruktur und Ihrer Daten.

Die Supportverträge von IT-LINUXMAKER sind das optimale Plus Ihrer IT- oder Entwicklungs-Abteilung. IT-LINUXMAKER unterstützt Sie in allen Situationen im Themenumfeld von Linux bei der Aministration, dem Monitoring, der Konfiguration, Fehlerbehebung und bei der Script-Programmierung. Wo Ihre IT-Infrastruktur steht, wie groß sie ist oder wie viele Anwender in ihr arbeiten spielt für IT-LINUXMAKER keine Rolle.

Linux-Experte, Linux-Spezialist, Linux-Support, Linux-Consultant, IT-Security-Experte, IT-Experte, Senior Consultant, MAC-Experte, IT-Security, IT-Sicherheit, IT-Konzepte, Stuttgart

Checklisten - Sicheres digitales Arbeiten

Viele Betriebe organisieren ihre Arbeit seit Beginn der Corona-Pandemie auch über Home-Office-Regelungen. Die Tipps von IT-LINUXMAKER im praktischen Checklisten-Format zeigen, was es dabei zu beachten gilt.

Alle Checklisten für sicheres digitales Arbeiten finden Sie hier:

Sichere Passwörter mit der Passwortkarte

Generien Sie sichere und beliebig lange Passwörter mit der Passwortkarte. Überprüfen können Sie es hier.

Honorar

Unsere Honorare sind abhängig von Dienstleistung/Produkt und dem Umfang. Von daher können wir erst in einem Angebot unsere Honorare nennen, wenn wir Ihr Anliegen bereits kennen.

Beratungsanfrage