Allgemeine Prinzipien der QEMU-KVM-Nutzung

Allgemeine Prinzipien der QEMU-KVM-Nutzung

Mein aktuelles VerstÀndnis:

1) KVM

KVM (Kernel-based Virtual Machine) ist ein Hypervisor (VMM – Virtual Machine Manager), der als Modul im Linux-Betriebssystem lĂ€uft. Der Hypervisor ermöglicht es, Software in einer nicht existierenden (virtuellen) Umgebung auszufĂŒhren und gleichzeitig die tatsĂ€chliche physische Hardware, auf der diese Software lĂ€uft, zu verbergen. Der Hypervisor fungiert als „Verbindung“ zwischen der physischen Hardware (Host) und dem virtuellen Betriebssystem (Gast).

Da KVM ein Standardmodul des Linux-Kernels ist, erhÀlt es alle erforderlichen Funktionen vom Kernel (Speicherzugriff, Scheduler usw.). Folglich profitieren auch die GÀste von all diesen Vorteilen, da sie auf einem Hypervisor betrieben werden, der im Kernel des Linux-Betriebssystems lÀuft.

KVM ist sehr schnell, aber alleine reicht es nicht aus, um ein virtuelles Betriebssystem zu starten, da fĂŒr die I/O-Simulation erforderlich ist. FĂŒr die I/O-Verarbeitung (Prozessor, Festplatten, Netzwerk, Video, PCI, USB, serielle Ports usw.) verwendet KVM QEMU.

2) QEMU

QEMU (Quick Emulator) – ein Emulator fĂŒr verschiedene GerĂ€te, der es ermöglicht, Betriebssysteme, die fĂŒr eine Architektur bestimmt sind, auf einer anderen zu starten (zum Beispiel ARM → x86). Neben der CPU emuliert QEMU verschiedene PeripheriegerĂ€te: Netzwerkkarten, HDDs, Grafikkarten, PCI, USB usw.

So funktioniert das:

Anweisungen/BinÀrcode (z.B. ARM) werden mit Hilfe des TCG (Tiny Code Generator) in plattformunabhÀngigen Zwischencode umgewandelt und dieser plattformunabhÀngige BinÀrcode wird dann in Zielanweisungen/-code (z.B. x86) konvertiert.

ARM → Zwischencode → x86

Im Grunde können Sie virtuelle Maschinen auf QEMU auf jedem Host ausfĂŒhren, selbst auf Ă€lteren Prozessoren, die Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine) nicht unterstĂŒtzen. In diesem Fall funktioniert es jedoch sehr langsam, da der ausfĂŒhrbare BinĂ€rcode zur Laufzeit zweimal mithilfe von TCG (TCG ist ein Just-in-Time-Compiler) neu kompiliert werden muss.

Das heißt, QEMU selbst ist mega beeindruckend, aber es lĂ€uft sehr langsam.

3) Schutzringe

Allgemeine Prinzipien der QEMU-KVM-Nutzung

Der BinÀrcode auf Prozessoren funktioniert nicht einfach so; er befindet sich auf verschiedenen Ebenen (Ringen / Schutzringe) mit unterschiedlichen Zugriffsebenen auf Daten, von den privilegiertesten (Ring 0) bis hin zu den am stÀrksten eingeschrÀnkten und regulierten (Ring 3).

Das Betriebssystem (Kern des OS) arbeitet auf Ring 0 (Kernelmodus) und kann alles mit beliebigen Daten und GerĂ€ten tun. Anwendungsprogramme fĂŒr Benutzer laufen im Ring 3 (Benutzermodus) und dĂŒrfen nicht alles nach Belieben machen, sondern mĂŒssen jedes Mal um Erlaubnis bitten, bevor sie eine bestimmte Operation durchfĂŒhren (somit haben Benutzeranwendungen nur Zugriff auf ihre eigenen Daten und können nicht in das „Sandkasten“ anderer eindringen). Ring 1 und 2 sind fĂŒr Treiber vorgesehen.

Vor der Erfindung von Intel VT-x / AMD SVM arbeiteten Hypervisoren im Ring 0, wĂ€hrend die GĂ€ste im Ring 1 liefen. Da Ring 1 nicht ĂŒber genĂŒgend Rechte fĂŒr das ordnungsgemĂ€ĂŸe Funktionieren des Betriebssystems verfĂŒgte, musste der Hypervisor bei jedem privilegierten Aufruf von der Gastsystemseite diesen Aufruf wĂ€hrend der AusfĂŒhrung modifizieren und im Ring 0 ausfĂŒhren (Ă€hnlich wie es QEMU macht). Das bedeutet, dass der Gast-BinĂ€rcode sind direkt auf der CPU ausgefĂŒhrt wurde, wĂ€hrend er jedes Mal mehrere zwischenzeitliche Modifikationen durchlief.

Die Overheadkosten waren erheblich und stellten ein großes Problem dar. Daher fĂŒhrten die Prozessorhersteller unabhĂ€ngig voneinander einen erweiterten Befehlssatz (Intel VT-x / AMD SVM) ein, der es ermöglichte, den Code der Gastbetriebssysteme DIREKT auf der Host-CPU auszufĂŒhren (ohne die damals aufwendigen Zwischenstufen).

Mit der EinfĂŒhrung von Intel VT-x / AMD SVM wurde eine spezielle neue Ebene Ring -1 (minus eins) geschaffen. Nun lĂ€uft der Hypervisor darauf, wĂ€hrend die GĂ€ste im Ring 0 arbeiten und privilegierten Zugriff auf die CPU erhalten.

Das heißt, zusammenfassend:

  • Der Host arbeitet im Ring 0
  • Die GĂ€ste arbeiten im Ring 0
  • Der Hypervisor arbeitet im Ring -1

4) QEMU-KVM

KVM ermöglicht es GĂ€sten, auf Ring 0 zuzugreifen und verwendet QEMU zur Emulation von I/O (Prozessor, Festplatten, Netzwerk, Video, PCI, USB, serielle Ports usw.), die von den GĂ€sten „gesehen“ und mit denen sie arbeiten.

Daher QEMU-KVM (oder KVM-QEMU) 🙂

DANKSAGUNGEN
Aufmerksamkeitsbild
Bild der Schutzringe

P.S. Der Text dieses Artikels wurde ursprĂŒnglich auf dem Telegram-Kanal veröffentlicht @RU_Voip als Antwort auf eine Frage eines Mitglieds des Kanals.

Bitte schreiben Sie in die Kommentare, wo ich das Thema missverstehe oder ob es etwas gibt, das ich ergÀnzen sollte.

Danke!

Quelle: habr.com

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster