Gummi-Hypervisor. Wir verwenden logische Gruppen, um QEMU-KVM unter Linux zu virtualisieren. Was ist KVM-Virtualisierung? Funktionen der Virtualisierung für den Linux-Kernel

💖 Gefällt es dir? Teilen Sie den Link mit Ihren Freunden

Eine Welt ohne computergestützte Geräte ist heute kaum noch vorstellbar. Vor etwa 20 Jahren waren fast alle Haushaltsgeräte elektromechanisch und von der Verwendung von Computerschaltungen war noch nicht überall die Rede. Die allerersten Computer nahmen viel Platz ein und konnten relativ wenig leisten. Computersysteme haben in den letzten Jahren große Fortschritte gemacht. Obwohl sich Computer nicht grundlegend verändert haben, ist die Rechenleistung rasant gestiegen. In einer einfachen Familie einen Computer zu haben, ist nichts Besonderes mehr.

Heutzutage kann die große Anzahl an Computergeräten in den Räumlichkeiten oft zu erheblichen Unannehmlichkeiten führen. Aus diesem Grund entstanden zentralisierte Systeme. Aber zentralisierte Systeme können oft nicht die Probleme lösen, die ein Computernetzwerk löst. Aus diesem Grund wurde das Konzept der Virtualisierung vorgeschlagen, bei dem ein zentraler Computer als Netzwerk von Computern fungiert.

Im Kern sind alle Betriebssysteme im Allgemeinen eine Art virtuelle Umgebung, die dem Softwareentwickler zur Umsetzung endgültiger Aufgaben zur Verfügung gestellt wird. Die Zeiten, in denen Programme mithilfe von Hardwarecodes und Abfragen speziell für Computerhardware geschrieben wurden, sind längst vorbei. Heutzutage ist jede Anwendung in erster Linie eine Anwendung, die auf einer API geschrieben ist und vom Betriebssystem gesteuert wird. Die Aufgabe des Betriebssystems besteht darin, diesen APIs direkten Zugriff auf Hardwareressourcen zu ermöglichen.

Tatsächlich gibt es mehrere Arten der Virtualisierung:

  • Softwarevirtualisierung;
  • Hardware-Virtualisierung;
  • Virtualisierung auf Betriebssystemebene.

Virtualisierung wiederum findet statt voll Und teilweise.

Softwarevirtualisierung– eine Art der Virtualisierung, die verschiedene Betriebssystembibliotheken nutzt und Aufrufe virtueller Maschinen in Betriebssystemaufrufe übersetzt. (DOSBox, Virtualbox, VirtualPC)

Hardware-Virtualisierung– ein Typ, der spezielle Hardwareanweisungen, insbesondere Prozessoranweisungen, bereitstellt. Ermöglicht die Ausführung von Abfragen unter Umgehung des Gastbetriebssystems und deren direkte Ausführung auf der Hardware. (KVM-Virtualisierung, XEN-Virtualisierung, Parallels, VMware, Virtualbox)

Virtualisierung auf Betriebssystemebene– Virtualisierung nur eines Teils der Plattform, ohne vollständige Virtualisierung der Hardware. Impliziert den Betrieb mehrerer Instanzen der Betriebssystemumgebung. (Docker, LXC)

Dieser Artikel wird darüber nachdenken Hardware-Virtualisierung, und insbesondere KVM-Virtualisierung.

Schema 1. – Interaktion von Komponenten virtueller Maschinen mit Hardware

Funktionen der Virtualisierung für den Linux-Kernel

Um direkte Hardware-Anfragen auszuführen, muss das Betriebssystem über eine Bibliothek verfügen, die diese Anfragen direkt an die Hardware sendet. Lange Zeit gab es auf Linux-basierten Plattformen einfach kein integriertes Virtualisierungssystem (eingebauter Hypervisor). Jeder Hersteller von Virtualisierungssoftware, der Hardware-Virtualisierungstechnologie unterstützte, war gezwungen, eigene Module für den Linux-Kernel zu erstellen (vboxdrv in Virtualbox, vmware-service in VMWare usw.). Natürlich konnte dies nicht ewig so bleiben, und Qumranet, Inc. war es auch Dann gründete Radhat die Open Virtualization Alliance, die das Problem des Fehlens eines grundlegenden Hypervisors für den Linux-Kernel lösen sollte. So ist es entstanden Hypervisor KVM oder Kernelbasierte virtuelle Maschine.

Implementierung

Der KVM-Hypervisor ist ein ladbares Linux-Kernelmodul, das für die Virtualisierung auf der Linux x86-Plattform konzipiert ist. Das Modul selbst enthält die Virtualisierungskomponente selbst (kvm.ko) und das prozessorspezifische ladbare Modul kvm-amd.ko oder kvm-intel.ko.

Voraussetzung für die Verwendung von KVM ist die Unterstützung von Virtualisierungsanweisungen – Intel VT oder AMD und Linux-Kernel-Version 2.6.20 und höher. Es gibt auch einen KVM-Port für Free-BSD. QEMU wird traditionell zum Aufrufen von KVM verwendet, es gibt jedoch auch Bestrebungen, Virtualbox um KVM-Unterstützung zu erweitern.

KVM selbst führt keine Emulation durch. Stattdessen verwendet das im Benutzerbereich ausgeführte Programm die Schnittstelle /dev/kvm, um den Adressraum des Gasts der virtuellen Maschine zu konfigurieren, und emuliert über diese E/A-Geräte und den Videoadapter.

Mit KVM können virtuelle Maschinen unveränderte Disk-Images von QEMU, VMware und anderen verwenden, die Betriebssysteme enthalten. Jede virtuelle Maschine verfügt über ihre eigene virtuelle Hardware: Netzwerkkarten, Festplatte, Grafikkarte und andere Geräte.

Verwendung

Es gibt viele Implementierungen für die Verwendung dieses Hypervisors. Bei einigen handelt es sich um komplette Spezialbibliotheken, bei anderen handelt es sich um einfache grafische Anwendungen.

Aus Gründen der Übersichtlichkeit betrachten wir die KVM-Virtualisierung basierend auf der Bibliothek virtueller Manager.

Mit dieser Bibliothek können Sie den Aufruf verschiedener Hypervisoren vereinfachen und eine praktische Schnittstelle zur Automatisierung des Virtualisierungsprozesses bereitstellen. Darüber hinaus verfügt die Bibliothek über die Fähigkeit, mit der Netzwerkinfrastruktur zu arbeiten, was beim Aufbau von Client-Server-Workstations manchmal wichtig ist.

Schema 2. – Interaktion von libvirt-Komponenten

QEMU ermöglicht es Ihnen, einen Rahmen zum Aufrufen des Hypervisors auf dem Client-System zu erstellen. Dieses Programm wird mit Befehlszeilenaufrufargumenten konfiguriert und ist recht leichtgewichtig und einfach.

Es gibt auch mehrere grafische Shells, wie z Gnome-Boxen.

Abschluss

Virtualisierung ist ein integraler Bestandteil moderner Unternehmenssysteme und ermöglicht die Einsparung enormer finanzieller und energetischer Ressourcen. Die Entwicklung von Virtualisierungstechnologien hat für viele Unternehmen Priorität. Technologien wie VGAPassthrough (Technologie zum „Weiterleiten“ der Grafikkarte des Host-Geräts an eine virtuelle Maschine) und PCIPassthrough („Weiterleiten“ eines PCI-Geräts) werden entwickelt.

Bevor wir mit unserer Überprüfung beginnen, lohnt es sich zu verstehen, was ein Hypervisor ist und welche Funktionen er ausführt. Es ist sehr praktisch, wenn Sie eine große Anzahl verschiedener Aufgaben ausführen. Dies liegt daran, dass sie es ermöglichen, mehrere Betriebssysteme auf einem physischen Server zu hosten, die jeweils mit einer eigenen Software zur Lösung verschiedener Aufgaben ausgestattet sind. Um eine einfache Interaktion mit solchen virtuellen Maschinen zu ermöglichen, werden Hypervisoren verwendet. Dabei handelt es sich um Software, mit der Sie virtuelle Maschinen verwalten: installieren, ein- und ausschalten können. Einer der beliebtesten Hypervisoren ist heute KVM.

KVM-Hypervisor

Es ermöglicht die Implementierung der Virtualisierung auf Servern, auf denen das Linux-Betriebssystem ausgeführt wird. Ein klarer Vorteil besteht darin, dass dieser Hypervisor Teil des Linux-Kernels ist und daher ständig verbessert und aktualisiert wird. Es kann nur bei Hardware-Virtualisierung verwendet werden – mit Intel- oder AMD-Prozessoren. Das KVM-Prozessormodul ermöglicht den direkten Zugriff auf den Kernel. Dies ermöglicht Ihnen die direkte Verwaltung von Dateien und Festplattenabbildern virtueller Maschinen. Jede VM verfügt über einen eigenen dedizierten Bereich.

Xen-Hypervisor

Dieses ursprünglich von Cambridge-Studenten entwickelte Projekt wurde aufgrund seines Versprechens schnell kommerziell. Die plattformübergreifende und breite Funktionalität von Xen macht seine Fähigkeiten für den Einsatz in den Büros großer Unternehmen und Konzerne recht umfangreich. Sein Kernel verfügt über einen Paravirtualisierungsmodus, das heißt, er kann so konfiguriert werden, dass er gleichzeitig mit dem Hypervisor interagiert.

Der Code dieses Hypervisors ist nicht mit unnötigen Funktionen überladen. Es ist mit der Möglichkeit ausgestattet, RAM, Prozessorfrequenz zu steuern, mit direktem Speicherzugriff und einem Timer zu arbeiten. Alle anderen Funktionen werden von den aktuell verbundenen VMs ausgeführt. Die aufgeführten Vorteile machen die Arbeit mit Xen auch für Personen, die in diesem Bereich nicht sehr tiefgreifend sind, einfach und bequem.

Studie

Um zwei Hypervisoren zu vergleichen, müssen Sie sie testen. Hierzu wurden zwei Server mit absolut identischer Hard- und Software verwendet, mit Ausnahme natürlich der betreffenden Hypervisoren. Alle Einstellungen für die erstellten virtuellen Maschinen wurden entsprechend den Grundeinstellungen beider Hypervisoren auf Standard gesetzt. Jeder Option wurde die gleiche Menge an Speicher zugewiesen.

Lassen Sie uns klarstellen, dass die Meinung, dass die von uns gewählte Betriebssystemdistribution – Fedora 20 von Red Hat – besser für KVM geeignet ist, nicht ganz richtig ist. Wir berücksichtigen nicht den Kampf von VMs um Prozessorressourcen im gleichzeitigen Betrieb, da Hypervisoren bei unterschiedlichem Wettbewerbsgrad unterschiedliche Leistungen zeigen können. Daher halten wir die Wettbewerbsbedingungen für beide Seiten für fair.

Ergebnisse

Die Tests basierten auf der Messung der Testergebnisse für VMs, die sich ausschließlich auf Hardware befanden, ohne Software. Die Abweichung in der Leistung zweier Server ohne Virtualisierung betrug weniger als ein halbes Prozent.

Der erste Kandidat, KVM, zeigte eine Leistung, die im Durchschnitt eineinhalb Prozent unter der Hardwareleistung lag. Im 7-ZIP-Test erwies sich dieser Hypervisor als knapp 3 Prozent langsamer, im PostMark-Test war er mehr als 4 Prozent schneller als die Hardware. Die Ergebnisse von Xen waren schlechter; es übertraf seinen Konkurrenten in keinem der Tests, fiel in drei Tests um 2,5 Prozent hinter die Hardware zurück und schnitt in den übrigen sogar noch schlechter ab. Die stärkste Abweichung zeigte sich wie bei KVM im PostMark-Test, allerdings überholte Xen die Hardware nicht wie der Konkurrent, sondern blieb um fast 15 Prozent zurück. Wiederholte Testergebnisse wichen von den vorherigen um maximal 2 Prozent ab. Die Testergebnisse können Sie der Tabelle im Detail entnehmen:

Endeffekt

KVM hat sich immer als um etwa 2 Prozent langsamer als Hardware erwiesen, aber nicht mehr. In den meisten Tests war Xen der Hardware um 2,5–7 Prozent unterlegen. Gute KVM-Ergebnisse im PostMark-Test sind aufgrund der unzureichenden Anzahl durchgeführter Tests möglicherweise nicht ganz genau. Um bei der Auswahl eines Hypervisor-Tests die richtige Entscheidung zu treffen, untersuchen Sie die Art der Auslastung Ihrer Site. Führen Sie bei Bedarf weitere Tests durch, um genauere Ergebnisse zu erhalten.

In diesem Einführungsartikel werde ich alle im Serviceentwicklungsprozess verwendeten Softwaretools kurz vorstellen. Sie werden in den folgenden Artikeln ausführlicher besprochen.

Warum ? Dieses Betriebssystem ist für mich nah und verständlich, daher gab es bei der Auswahl einer Distribution keine Qualen, Qualen oder Probleme. Es bietet keine besonderen Vorteile gegenüber Red Hat Enterprise Linux, es wurde jedoch beschlossen, mit einem bekannten System zu arbeiten.

Wenn Sie vorhaben, eine Infrastruktur mit ähnlichen Technologien selbstständig bereitzustellen, würde ich Ihnen zu RHEL raten: Dank guter Dokumentation und gut geschriebenen Anwendungsprogrammen wird es, wenn nicht um eine Größenordnung, so doch auf jeden Fall doppelt so einfach sein Dank des entwickelten Zertifizierungssystems können Sie leicht eine Reihe von Spezialisten finden, die mit diesem Betriebssystem auf dem richtigen Niveau vertraut sind.

Wir haben uns erneut für die Verwendung entschieden Debian-Squeeze mit einer Reihe von Paketen von Sid/Experimentell und einige Pakete wurden mit unseren Patches zurückportiert und kompiliert.
Es gibt Pläne, ein Repository mit Paketen zu veröffentlichen.

Bei der Auswahl der Virtualisierungstechnologie wurden zwei Optionen in Betracht gezogen: Xen und KVM.

Auch die Tatsache, dass es eine große Anzahl an Entwicklern, Hostern und kommerziellen Lösungen auf Xen-Basis gab, wurde berücksichtigt – umso interessanter war es, eine Lösung auf KVM-Basis zu implementieren.

Der Hauptgrund, warum wir uns für den Einsatz von KVM entschieden haben, ist die Notwendigkeit, virtuelle Maschinen unter FreeBSD und in Zukunft unter MS Windows auszuführen.

Zur Verwaltung virtueller Maschinen erwies es sich als äußerst praktisch, Produkte zu verwenden, die deren API nutzen: Virsh, virtueller Manager, virt-install, usw.

Dabei handelt es sich um ein System, das die Einstellungen virtueller Maschinen speichert, sie verwaltet, Statistiken darüber führt, dafür sorgt, dass die Schnittstelle der virtuellen Maschine beim Start hochgefahren wird, Geräte mit der Maschine verbindet – im Allgemeinen leistet es viele nützliche Arbeiten und noch ein bisschen mehr.

Natürlich ist die Lösung nicht perfekt. Zu den Nachteilen zählen:

  • Absolut verrückte Fehlermeldungen.
  • Es ist nicht möglich, einen Teil der Konfiguration der virtuellen Maschine im laufenden Betrieb zu ändern, obwohl QMP (QEMU Monitor Protocol) dies zulässt.
  • Manchmal ist es aus unbekannten Gründen nicht möglich, eine Verbindung zu libvirtd herzustellen – es reagiert nicht mehr auf externe Ereignisse.

Das Hauptproblem bei der Implementierung des Dienstes war gleich zu Beginn die Beschränkung der Ressourcen für virtuelle Maschinen. In Xen wurde dieses Problem mit Hilfe eines internen Schedulers gelöst, der Ressourcen zwischen virtuellen Maschinen verteilt – und das Beste daran ist, dass auch die Möglichkeit implementiert wurde, Festplattenvorgänge zu begrenzen.

Bis zum Aufkommen des Kernel-Ressourcenzuweisungsmechanismus gab es in KVM nichts Vergleichbares. Wie bei Linux üblich, wurde der Zugriff auf diese Funktionen über ein spezielles Dateisystem realisiert cgroup, bei dem man mit den normalen write()-Systemaufrufen einen Prozess zu einer Gruppe hinzufügen, ihm sein Parrot-Gewicht zuweisen, den Kern angeben kann, auf dem er ausgeführt wird, die Festplattenbandbreite angeben, die der Prozess verwenden kann, oder noch einmal , weisen Sie ihm ein Gewicht zu.

Der Vorteil besteht darin, dass all dies im Kernel implementiert ist und nicht nur für den Server, sondern auch für den Desktop verwendet werden kann (was im berühmten „The ~200 Line Linux Kernel Patch That Does Wonders“ verwendet wurde). Und meiner Meinung nach ist dies eine der bedeutendsten Änderungen im 2.6-Zweig, abgesehen von meiner Lieblingsnummer #12309 und der Ablage eines anderen Dateisystems. Na ja, vielleicht, außer POHMELFS (aber nur wegen des Namens).

Meine Einstellung zu dieser Utility-Bibliothek ist sehr zweideutig.

Einerseits sieht es ungefähr so ​​aus:

Und es ist auch verdammt schwierig, dieses Ding aus dem Quellcode zusammenzustellen, geschweige denn in ein Paket zu packen: Manchmal scheint es mir, dass Linux From Scratch etwas einfacher von Grund auf zu erstellen ist.

Andererseits ist es eine sehr leistungsstarke Sache, mit der Sie Images für virtuelle Maschinen erstellen, diese ändern, komprimieren, Grub installieren, die Partitionstabelle ändern, Konfigurationsdateien verwalten, Hardwaremaschinen in eine virtuelle Umgebung übertragen und virtuelle Maschinen übertragen können von einem Image zum anderen, virtuelle Maschinen vom Image auf die Hardware übertragen und, um ehrlich zu sein, hier lässt mich meine Vorstellungskraft ein wenig im Stich. Oh ja: Sie können auch einen Daemon in einer virtuellen Linux-Maschine ausführen und live auf die Daten der virtuellen Maschine zugreifen, und das alles in Shell, Python, Perl, Java, Ocaml. Dies ist eine kurze und keineswegs erschöpfende Liste dessen, was Sie damit machen können.

Interessanterweise wird der Großteil des Codes zum Zeitpunkt der Assemblierung generiert, ebenso wie die Dokumentation für das Projekt. Ocaml und Perl sind weit verbreitet. Der Code selbst wird in C geschrieben, der dann in OCaml verpackt wird, und die wiederholten Codeteile werden selbst generiert. Die Arbeit mit Bildern erfolgt durch Starten eines speziellen Dienst-Images (Supermin-Appliance), an das Befehle über einen Kanal gesendet werden. Dieses Rettungsabbild enthält eine Reihe von Dienstprogrammen wie parted, mkfs und andere, die für einen Systemadministrator nützlich sind.

Vor kurzem habe ich sogar damit begonnen, es zu Hause zu verwenden, als ich die benötigten Daten aus dem Nandroid-Image extrahierte. Dies erfordert jedoch einen Yaffs-fähigen Kernel.

Andere

Nachfolgend finden Sie einige weitere interessante Links zu einer Beschreibung der verwendeten Software – lesen und studieren Sie diese bei Interesse selbst. Zum Beispiel,

Nehmen wir an, Sie sind ein junger, aber noch armer Student, was bedeutet, dass Sie von allen möglichen Plattformen nur einen PC mit Windows und PS4 haben. Eines schönen Tages beschließen Sie, zur Besinnung zu kommen und Programmierer zu werden, aber weise Leute im Internet sagten Ihnen, dass Sie ohne Linux kein normaler Ingenieur werden können. Sie können Fedora nicht als Ihr Haupt- und einziges System installieren, da für Spiele und VKontakte weiterhin Windows benötigt wird und Angst oder mangelnde Erfahrung Sie daran hindern, Linux als Zweitsystem auf Ihrer Festplatte zu installieren.

Oder nehmen wir an, Sie sind bereits erwachsen, jetzt sind Sie Serverleiter in einem großen Unternehmen und eines schönen Tages stellen Sie fest, dass die meisten Server noch nicht einmal zur Hälfte ausgelastet sind. Aus Sicherheitsgründen können Sie nicht mehr Anwendungen und Daten auf Servern platzieren, und die Kosten für die Unterstützung und Wartung einer wachsenden Serverfarm steigen rapide.

Oder nehmen wir an, Sie tragen bereits einen Bart und eine Brille, sind technischer Direktor und sind nicht glücklich darüber, dass es zwei Monate dauert, bis Entwickler einen neuen Server für die Bereitstellung einer neuen Anwendung erhalten. Wie kommt man unter solchen Bedingungen schnell voran?

Oder vielleicht sind Sie ein Architekt, der ein neues komplexes System zur Verarbeitung von Geschäftsanalysen entworfen hat. Ihr System umfasst Dinge wie ElasticSearch, Kafka, Spark und vieles mehr, und jede Komponente muss separat leben, intelligent konfiguriert werden und mit anderen Komponenten kommunizieren. Als guter Ingenieur verstehen Sie, dass es nicht ausreicht, einfach den gesamten Zoo direkt auf Ihrem System zu installieren. Sie müssen versuchen, eine Umgebung bereitzustellen, die der zukünftigen Produktionsumgebung möglichst nahe kommt, und zwar möglichst so, dass Ihre Entwicklungen dann nahtlos auf Produktionsservern funktionieren.

Und was tun in all diesen schwierigen Situationen? Richtig: Virtualisierung nutzen.

Durch die Virtualisierung können Sie viele Betriebssysteme völlig isoliert voneinander installieren und nebeneinander auf derselben Hardware ausführen.

Eine kleine Geschichte. Die ersten Virtualisierungstechnologien tauchten bereits in den 60er Jahren auf, der eigentliche Bedarf dafür entstand jedoch erst in den 90er Jahren, als die Anzahl der Server immer größer wurde. Damals entstand das Problem, die gesamte Hardware effektiv zu recyceln sowie die Prozesse zur Aktualisierung, Bereitstellung von Anwendungen, Gewährleistung der Sicherheit und Wiederherstellung von Systemen im Katastrophenfall zu optimieren.

Lassen wir die lange und schmerzhafte Geschichte der Entwicklung verschiedener Technologien und Methoden der Virtualisierung hinter den Kulissen – für den neugierigen Leser gibt es am Ende des Artikels zusätzliche Materialien zu diesem Thema. Entscheidend ist, woraus am Ende alles herausgekommen ist: drei Hauptansätze zur Virtualisierung.

Ansätze zur Virtualisierung

Unabhängig vom Ansatz und der Technologie ist beim Einsatz der Virtualisierung immer eine Hostmaschine und ein darauf installierter Hypervisor vorhanden, der die Gastmaschinen steuert.

Abhängig von der verwendeten Technologie kann ein Hypervisor entweder eine separate, direkt auf der Hardware installierte Software oder ein Teil des Betriebssystems sein.

Ein aufmerksamer Leser, der Schlagworte liebt, wird in ein paar Absätzen anfangen zu murmeln, dass seine Lieblings-Docker-Container auch als Virtualisierung gelten. Wir werden ein anderes Mal über Container-Technologien sprechen, aber ja, Sie haben Recht, aufmerksamer Leser, Container sind auch eine Art Virtualisierung, nur auf der Ressourcenebene desselben Betriebssystems.

Es gibt drei Möglichkeiten für virtuelle Maschinen, mit Hardware zu interagieren:

Dynamische Übertragung

In diesem Fall haben die virtuellen Maschinen keine Ahnung, dass sie virtuell sind. Der Hypervisor fängt alle Befehle der virtuellen Maschine im laufenden Betrieb ab, verarbeitet sie, ersetzt sie durch sichere und gibt sie dann an die virtuelle Maschine zurück. Dieser Ansatz weist offensichtlich einige Leistungsprobleme auf, ermöglicht jedoch die Virtualisierung jedes Betriebssystems, da das Gastbetriebssystem nicht geändert werden muss. Dynamische Übersetzung wird in VMWare-Produkten verwendet, dem Marktführer für kommerzielle Virtualisierungssoftware.

Paravirtualisierung

Bei der Paravirtualisierung wird der Quellcode des Gastbetriebssystems gezielt so verändert, dass alle Anweisungen möglichst effizient und sicher ausgeführt werden. Gleichzeitig ist sich die virtuelle Frau stets darüber im Klaren, dass sie eine virtuelle Frau ist. Einer der Vorteile ist eine verbesserte Leistung. Der Nachteil ist, dass Sie auf diese Weise beispielsweise MacOS oder Windows oder ein anderes Betriebssystem, auf das Sie keinen Zugriff auf den Quellcode haben, nicht virtualisieren können. Paravirtualisierung wird in der einen oder anderen Form beispielsweise in Xen und KVM verwendet.

Hardware-Virtualisierung

Prozessorentwickler erkannten rechtzeitig, dass die x86-Architektur für die Virtualisierung schlecht geeignet ist, da sie ursprünglich für jeweils ein Betriebssystem konzipiert war. Daher begannen Intel und AMD nach dem Erscheinen der dynamischen Übersetzung von VMWare und der Paravirtualisierung von Xen, Prozessoren mit Hardwareunterstützung für die Virtualisierung auf den Markt zu bringen.

Dies brachte zunächst keinen großen Leistungsschub, da das Hauptaugenmerk der ersten Releases auf der Verbesserung der Prozessorarchitektur lag. Doch jetzt, mehr als 10 Jahre nach dem Aufkommen von Intel VT-x und AMD-V, ist die Hardware-Virtualisierung anderen Lösungen in nichts nachstehen und in mancher Hinsicht sogar überlegen.

Die Hardwarevirtualisierung nutzt und erfordert KVM (Kernel-based Virtual Machine), das wir in Zukunft verwenden werden.

Kernelbasierte virtuelle Maschine

KVM ist eine direkt in den Linux-Kernel integrierte Virtualisierungslösung, die genauso funktional ist wie andere Lösungen und überlegen in der Benutzerfreundlichkeit. Darüber hinaus handelt es sich bei KVM um eine Open-Source-Technologie, die jedoch (sowohl in Bezug auf das Schreiben von Code als auch in Bezug auf das Marketing) auf Hochtouren schreitet und von Red Hat in seinen Produkten implementiert wird.

Dies ist übrigens einer der vielen Gründe, warum wir auf Red Hat-Distributionen bestehen.

Die Erfinder von KVM konzentrierten sich zunächst auf die Unterstützung der Hardware-Virtualisierung und erfanden nicht viele Dinge neu. Ein Hypervisor ist im Wesentlichen ein kleines Betriebssystem, das mit Speicher, Netzwerk usw. arbeiten muss. Linux kann das alles bereits sehr gut, daher ist die Verwendung des Linux-Kernels als Hypervisor eine logische und schöne technische Lösung. Jede virtuelle KVM-Maschine ist nur ein separater Linux-Prozess, die Sicherheit wird über SELinux/sVirt gewährleistet, die Ressourcen werden über CGroups verwaltet.

Wir werden in einem anderen Artikel mehr über SELinux und CGroups sprechen. Seien Sie nicht beunruhigt, wenn Sie diese Wörter nicht kennen.

KVM funktioniert nicht nur als Teil des Linux-Kernels: Seit der Kernel-Version 2.6.20 ist KVM eine Kernkomponente von Linux. Mit anderen Worten: Wenn Sie Linux haben, dann haben Sie bereits KVM. Praktisch, oder?

Es ist erwähnenswert, dass Xen im Bereich der öffentlichen Cloud-Plattformen etwas mehr als vollständig dominiert. Beispielsweise verwenden AWS EC2 und Rackspace Xen. Dies liegt daran, dass Xen früher als alle anderen erschien und als erster ein ausreichendes Leistungsniveau erreichte. Aber es gibt eine gute Nachricht: Im November 2017 wird Xen beim größten Cloud-Anbieter schrittweise abgelöst.

Obwohl KVM Hardwarevirtualisierung verwendet, kann KVM für einige E/A-Gerätetreiber Paravirtualisierung verwenden, was für bestimmte Anwendungsfälle Leistungssteigerungen bietet.

libvirt

Wir haben fast den praktischen Teil des Artikels erreicht, jetzt müssen wir uns nur noch mit einem anderen Open-Source-Tool befassen: libvirt.

libvirt ist eine Reihe von Tools, die eine einzige API für viele verschiedene Virtualisierungstechnologien bereitstellen. Bei der Verwendung von libvirt spielt es im Prinzip keine Rolle, was das „Backend“ ist: Xen, KVM, VirtualBox oder etwas anderes. Darüber hinaus können Sie libvirt in Ruby-Programmen (und auch in Python, C++ und vielen anderen) verwenden. Sie können sich auch über sichere Kanäle remote mit virtuellen Maschinen verbinden.

Libvirt wird übrigens von Red Hat entwickelt. Haben Sie Fedora Workstation bereits als Hauptsystem installiert?

Lassen Sie uns eine virtuelle Maschine erstellen

libvirt ist nur eine API, aber es liegt am Benutzer, wie er damit interagiert. Es gibt viele Möglichkeiten. Wir werden mehrere Standarddienstprogramme verwenden. Wir erinnern Sie daran: Wir bestehen auf der Verwendung von Red Hat-Distributionen (CentOS, Fedora, RHEL) und die folgenden Befehle wurden auf einem dieser Systeme getestet. Bei anderen Linux-Distributionen kann es zu geringfügigen Abweichungen kommen.

Überprüfen wir zunächst, ob Hardwarevirtualisierung unterstützt wird. Tatsächlich wird es ohne seine Unterstützung funktionieren, nur viel langsamer.

egrep --color = auto "vmx|svm|0xc0f" /proc/cpuinfo # wenn nichts angezeigt wird, dann gibt es keine Unterstützung :(

Da es sich bei KVM um ein Linux-Kernelmodul handelt, müssen Sie prüfen, ob es bereits geladen ist. Wenn nicht, laden Sie es.

lsmod | grep kvm # kvm, kvm_intel, kvm_amd. Wenn nichts angezeigt wird, müssen Sie die erforderlichen Module laden # Wenn das Modul nicht geladen ist modprobe kvm modprobe kvm_intel # oder modprobe kvm_amd

Möglicherweise ist die Hardware-Virtualisierung im BIOS deaktiviert. Wenn die Module kvm_intel/kvm_amd nicht geladen sind, überprüfen Sie daher die BIOS-Einstellungen.

Jetzt installieren wir die notwendigen Pakete. Der einfachste Weg, dies zu tun, besteht darin, eine Gruppe von Paketen auf einmal zu installieren:

leckere Gruppenliste „Virtual*“

Die Liste der Gruppen hängt vom verwendeten Betriebssystem ab. Meine Gruppe wurde aufgerufen Virtualisierung. Um virtuelle Maschinen über die Befehlszeile zu verwalten, verwenden Sie das Dienstprogramm virsh. Überprüfen Sie mit dem Befehl virsh list, ob Sie über mindestens eine virtuelle Maschine verfügen. Höchstwahrscheinlich nein.

Wenn Ihnen die Befehlszeile nicht gefällt, gibt es auch virt-manager – eine sehr praktische GUI für virtuelle Maschinen.

virsh kann virtuelle Maschinen nur aus XML-Dateien erstellen, deren Format in der libvirt-Dokumentation nachgelesen werden kann. Glücklicherweise gibt es auch virt-manager und den Befehl virt-install. Sie können die GUI selbst herausfinden, aber hier ist ein Beispiel für die Verwendung von virt-install:

sudo virt-install --name mkdev-vm-0 \ --location ~/Downloads/CentOS-7-x86_64-Minimal-1511.iso \ --memory = 1024 --vcpus = 1 \ --disk size = 8

Anstatt die Festplattengröße anzugeben, können Sie sie im Voraus über virt-manager oder über virsh und eine XML-Datei erstellen. Ich habe das obige Bild von Centos 7 minimal verwendet, das auf der Centos-Website leicht zu finden ist.

Nun bleibt eine wichtige Frage: Wie stellt man eine Verbindung zur erstellten Maschine her? Am einfachsten geht das über virt-manager – doppelklicken Sie einfach auf die erstellte Maschine und es öffnet sich ein Fenster mit einer SPICE-Verbindung. Dort erwartet Sie der OS-Installationsbildschirm.

Übrigens kann KVM Virtualisierung verschachteln: virtuelle Maschinen innerhalb einer virtuellen Maschine. Wir müssen tiefer gehen!

Nachdem Sie das Betriebssystem manuell installiert haben, werden Sie sich sofort fragen, wie dieser Prozess automatisiert werden kann. Dazu benötigen wir ein Dienstprogramm namens Kickstart, das das Betriebssystem zum ersten Mal automatisch konfiguriert. Dabei handelt es sich um eine einfache Textdatei, in der Sie die Betriebssystemkonfiguration bis hin zu verschiedenen Skripten angeben können, die nach der Installation ausgeführt werden.

Aber wo bekomme ich so eine Datei her? Warum nicht von Grund auf neu schreiben? Natürlich nicht: Da wir Centos 7 bereits in unserer virtuellen Maschine installiert haben, müssen wir uns nur mit dieser verbinden und die Datei /root/anaconda-ks.cfg finden – das ist die Kickstart-Konfiguration, um eine Kopie davon zu erstellen erstelltes Betriebssystem. Sie müssen es nur kopieren und den Inhalt bearbeiten.

Aber das bloße Kopieren einer Datei ist langweilig, also fügen wir noch etwas hinzu. Tatsache ist, dass wir standardmäßig keine Verbindung zur Konsole der erstellten virtuellen Maschine über die Befehlszeile der Hostmaschine herstellen können. Dazu müssen Sie die GRUB-Bootloader-Konfiguration bearbeiten. Daher werden wir ganz am Ende der Kickstart-Datei den folgenden Abschnitt hinzufügen:

%post --log = /root/grubby.log /sbin/grubby --update-kernel = ALL --args = "console=ttyS0" %end

%post wird, wie Sie sich vorstellen können, nach der Installation des Betriebssystems ausgeführt. Der Befehl grubby aktualisiert die GRUB-Konfiguration, um die Möglichkeit zur Verbindung mit der Konsole hinzuzufügen.

Übrigens können Sie die Möglichkeit, eine Verbindung über die Konsole herzustellen, auch direkt beim Erstellen der virtuellen Maschine festlegen. Dazu müssen Sie ein weiteres Argument an den Befehl virt-install übergeben: --extra-args="console=ttyS0" . Danach können Sie das Betriebssystem selbst im interaktiven Textmodus vom Terminal Ihrer Hostmaschine aus installieren und sich unmittelbar nach der Erstellung über die Virsh-Konsole mit der virtuellen Maschine verbinden. Dies ist besonders praktisch, wenn Sie virtuelle Maschinen auf einem Remote-Hardwareserver erstellen.

Jetzt können Sie die erstellte Konfiguration anwenden! Mit virt-install können Sie beim Erstellen einer virtuellen Maschine zusätzliche Argumente übergeben, einschließlich des Pfads zur Kickstart-Datei.

sudo virt-install --name mkdev-vm-1 \ --location ~/Downloads/CentOS-7-x86_64-Minimal-1511.iso \ --initrd-inject /path/to/ks.cfg \ --extra- args ks = file:/ks.cfg \ --memory = 1024 --vcpus = 1 --disk size = 8

Nachdem die zweite virtuelle Maschine erstellt wurde (vollautomatisch), können Sie über die Befehlszeile mit dem Befehl vm_id der Virsh-Konsole eine Verbindung zu ihr herstellen. vm_id Mit dem Befehl virsh list können Sie dies aus der Liste aller virtuellen Maschinen herausfinden.

Einer der Vorteile der Verwendung von KVM/libvirt ist die erstaunliche Dokumentation, einschließlich der von Red Hat erstellten. Der liebe Leser ist eingeladen, es mit der gebotenen Neugier zu studieren.

Natürlich ist es nicht der bequemste Vorgang, solche virtuellen Maschinen manuell in der Konsole zu erstellen und sie dann nur über Kickstart einzurichten. In zukünftigen Artikeln werden wir uns viele coole Tools ansehen, die die Systemkonfiguration einfacher und vollständig automatisiert machen.

Was weiter?

Es ist unmöglich, alles Wissenswerte zum Thema Virtualisierung in einem Artikel unterzubringen. Wir haben uns verschiedene Einsatzmöglichkeiten der Virtualisierung und ihre Vorteile angeschaut, uns etwas tiefer in die Details ihrer Funktionsweise vertieft, uns mit der unserer Meinung nach besten Lösung für diese Aufgaben (KVM) vertraut gemacht und sogar eine virtuelle Maschine erstellt und konfiguriert.

Es ist wichtig zu verstehen, dass virtuelle Maschinen die Bausteine ​​moderner Cloud-Architekturen sind. Sie ermöglichen das automatische Anwachsen von Anwendungen auf unbegrenzte Größen, schnellstmöglich und bei maximaler Auslastung aller Ressourcen.

Ganz gleich, wie leistungsstark und umfangreich die Dienste von AWS sind, die Grundlage bilden virtuelle Maschinen auf Basis von Xen. Jedes Mal, wenn Sie auf DigitalOcean ein neues Droplet erstellen, erstellen Sie eine virtuelle Maschine. Fast alle von Ihnen genutzten Websites werden auf virtuellen Maschinen gehostet. Die Einfachheit und Flexibilität virtueller Maschinen ermöglicht nicht nur den Aufbau von Produktionssystemen, sondern erleichtert auch die lokale Entwicklung und das Testen um das Zehnfache, insbesondere wenn das System viele Komponenten umfasst.

Wir haben gelernt, wie man eine einzelne Maschine erstellt – nicht schlecht zum Testen einer Anwendung. Was aber, wenn wir mehrere virtuelle Maschinen gleichzeitig benötigen? Wie werden sie miteinander kommunizieren? Wie werden sie einander finden? Dazu müssen wir verstehen, wie Netzwerke generell funktionieren, wie sie im Kontext der Virtualisierung funktionieren und welche Komponenten daran beteiligt sind und konfiguriert werden müssen – im nächsten Artikel der Serie.

KVM- eine der neuen Virtualisierungstechnologien, die es ermöglicht, mehrere virtuelle dedizierte Server auf einem physischen dedizierten Server zu installieren. Der Hauptvorteil dieses Virtualisierungssystems ist die Erstellung von VPS mit unterschiedlichen Betriebssystemtypen, d. h. Sie können problemlos sowohl Linux-VPS als auch Windows-VPS auf demselben Server installieren. Darüber hinaus verfügt jeder einzelne VPS-Server auf der KVM-Plattform über seine eigenen unabhängigen Ressourcen: seinen eigenen Speicherplatz, seinen eigenen RAM, seine eigene Netzwerkschnittstelle und so weiter.

Vorteile der KVM-Virtualisierung:

  • Möglichkeit zur Installation verschiedener Betriebssysteme: Centos, Debian, Ubuntu, Mint, FreeBSD, Windows 7, Windows 8, Windows 10, Windows XP und so weiter.
  • Garantierte Ressourcen auf dem Server, das heißt, wenn Sie einen VPS-Server mit bestimmten Ressourcen bestellt haben, können Sie sicher sein, dass Ihnen niemand die Ressourcen wegnehmen wird. Mit dieser Virtualisierung können Sie nicht die Ressourcen eines benachbarten VPS nutzen. Es gibt so etwas wie einen Überverkauf. Dabei verkauft ein Hosting-Unternehmen mehr Ressourcen, als tatsächlich auf dem Server vorhanden sind. Dies kann bei KVM nicht passieren; alle Ressourcen werden übersichtlich in Konfigurationsdateien erfasst und auf einmal an einen virtuellen dedizierten Server weitergeleitet.
  • Es ist möglich, Ihr gesamtes Betriebssystem auf dem VPS-Server zu installieren. Wenn Sie beispielsweise ein Betriebssystementwickler sind und über ein eigenes geschriebenes Betriebssystem verfügen, können Sie es auf einem der VPS auf einem Server mit KVM installieren Sie müssen eine Datei mit einem ISO-Image des Betriebssystems auf den Server mit einem speziellen Ordner hochladen.
  • Bequemes Arbeiten mit VNC, was es ermöglicht, Ihren VPS-Server aus der Ferne zu verwalten, als ob Sie an Ihrem persönlichen PC arbeiten würden; mit VNC können Sie BIOS konfigurieren, den VPS neu starten und es ansehen. Wenn Sie einen Windows-Server auf dem VPS installiert haben und diesen aufrufen und im grafischen Modus arbeiten möchten, dann können Sie dies auf zwei Arten tun: über VNC oder direkt über einen vorkonfigurierten Remote-Desktop auf den VPS gelangen.

Einer der Nachteile der KVM-Virtualisierung besteht darin, dass sie schwieriger zu verwenden und zu konfigurieren ist als beispielsweise openVZ-Virtualisierung. Was ist also die Option? Wenn Sie planen, einen VPS-Server mit Linux-Betriebssystemen zu verwenden, empfehlen wir Ihnen, openVZ zu wählen. Wenn Sie planen, Windows auf Ihrem virtuellen dedizierten Server zu verwenden, ist es besser, die KVM-Virtualisierung zu verwenden.

Bitte aktivieren Sie JavaScript, um die von Disqus bereitgestellten Kommentare anzuzeigen.
kürzliche Posts
  • Durch den Einsatz modernster Personen- und Lastenaufzüge schaffen wir optimale Voraussetzungen...

  • Um sicherzustellen, dass Ihre Website immer mit dem harmlosen https://-Protokoll geöffnet wird,...

  • In neuen Versionen des Chrome-Browsers funktioniert das Scrollen der Seite mit dem Rad nicht mehr ...

  • Der Internethandel in der Ukraine nimmt von Jahr zu Jahr zu ...

  • HTP ist eine IT-Abteilung in Weißrussland, die gegründet wurde...

  • In der Ukraine, nämlich in Dnepropetrowsk, der 1....

  • Heute ist eine Welt ohne IT kaum noch vorstellbar, denn...

  • Wir präsentieren Ihnen einen neuen Service auf der Website abcname.com.ua. Außerdem,…

  • Heute informieren wir Sie über die Funktionen bei der Auswahl eines VPS-Servers. Erste…

  • Heute haben wir es eilig, alle mit einer neuen, einzigartigen Gelegenheit zufrieden zu stellen, und...

  • 1) Prüfung des Domainnamens Wir prüfen, ob es sich bei der Zeichenfolge um die richtige Domain handelt...

  • Sie können die IP-Adresse auf dieser Seite überprüfen: http://abcname.com.ua/index.php?c=192 IP-Adresse (im wahrsten Sinne des Wortes...

  • Die Firma ABCname stellt Ihnen das SYNONYMIZER-Programm vor. Link zum Synonymisierer: https://abcname.net/news-new/sinonimizator-ru.html…

  • Sie können den von ABCname entwickelten Besuchszähler herunterladen, indem Sie diesem Link folgen: http://abcname.com.ua/stat/…

  • Im neuesten Update des Betriebssystems iOS 9.0.2 haben die Entwickler sehr...

  • Aktuelle Skype-Neuigkeiten: Für Benutzer dieses Programms unter Windows...

  • Google hat uns erneut mit seiner Erfindung erfreut, kürzlich in der Stadt...

  • Kürzlich wurde bekannt, dass Samsung ein neues Zahlungssystem einführt…

  • Auf den neuen ThinkPad-Laptops von Lenovo ist Folgendes vorinstalliert:

  • Pebble hat kürzlich eine neue Serie von Smartwatches entwickelt…



Freunden erzählen