{"id":37939,"date":"2019-10-31T22:20:41","date_gmt":"2019-10-31T19:20:41","guid":{"rendered":"https:\/\/prohoster.info\/blog\/obshhie-printsipy-raboty-qemu-kvm\/"},"modified":"2019-10-31T22:20:41","modified_gmt":"2019-10-31T19:20:41","slug":"obshhie-printsipy-raboty-qemu-kvm","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/obshhie-printsipy-raboty-qemu-kvm","title":{"rendered":"Allgemeine Prinzipien der Arbeit mit QEMU-KVM","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Allgemeine Prinzipien der Arbeit mit QEMU-KVM\" src=\"\/wp-content\/uploads\/2019\/09\/6619dbfb022d3fdb87159a33d4d27466.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMein aktuelles Verst\u00e4ndnis:<\/p>\n<h2>1) KVM<\/h2>\n<p>\nKVM (Kernel-based Virtual Machine) \u2013 ein Hypervisor (VMM \u2013 Virtual Machine Manager), der als Modul im Linux-Betriebssystem arbeitet. Der Hypervisor wird ben\u00f6tigt, um Software in einer nicht existierenden (virtuellen) Umgebung auszuf\u00fchren und dabei die reale physische Hardware, auf der diese Software l\u00e4uft, vor dieser Software zu verbergen. Der Hypervisor fungiert als \"Vermittler\" zwischen der physischen Hardware (Host) und dem virtuellen Betriebssystem (Gast).<\/p>\n<p>Da KVM ein Standardmodul des Linux-Kernels ist, erh\u00e4lt es alle n\u00f6tigen Funktionen (Speicherverwaltung, Scheduler usw.) vom Kernel. Folglich kommen all diese Vorteile letztendlich auch den G\u00e4sten zugute (da die G\u00e4ste auf einem Hypervisor arbeiten, der im Kernel des Betriebssystems l\u00e4uft).<\/p>\n<p>KVM ist sehr schnell, aber allein gen\u00fcgt es nicht, um ein virtuelles Betriebssystem zu starten, da hierf\u00fcr eine I\/O-Emulation erforderlich ist. F\u00fcr I\/O (Prozessor, Festplatten, Netzwerk, Video, PCI, USB, serielle Schnittstellen usw.) verwendet KVM QEMU.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>2) QEMU<\/h2>\n<p>\nQEMU (Quick Emulator) \u2013 ein Emulator f\u00fcr verschiedene Ger\u00e4te, der es erm\u00f6glicht, Betriebssysteme, die f\u00fcr eine Architektur vorgesehen sind, auf einer anderen zu starten (zum Beispiel ARM \u2192 x86). Neben dem Prozessor emuliert QEMU verschiedene Peripherieger\u00e4te: Netzwerkkarten, HDDs, Grafikkarten, PCI, USB usw.<\/p>\n<p>So funktioniert es:<\/p>\n<p>Anweisungen\/bin\u00e4rer Code (zum Beispiel ARM) werden mittels des TCG (Tiny Code Generator) in eine zwischenplattformunabh\u00e4ngige Code umgewandelt, und dieser plattformunabh\u00e4ngige Bin\u00e4rcode wird dann in die Zielanweisungen\/code (zum Beispiel x86) umgewandelt.<\/p>\n<p>ARM \u2192 Zwischenkodierung \u2192 x86<\/p>\n<p>Im Grunde genommen k\u00f6nnen Sie virtuelle Maschinen auf QEMU auf jedem Host betreiben, selbst auf \u00e4lteren Prozessoren, die Intel VT-x (Intel Virtualization Technology) \/ AMD SVM (AMD Secure Virtual Machine) nicht unterst\u00fctzen. Allerdings wird es in diesem Fall sehr langsam funktionieren, da der auszuf\u00fchrende Bin\u00e4rcode zur Laufzeit zweimal mit TCG (TCG ist ein Just-in-Time-Compiler) neu kompiliert werden muss.<\/p>\n<p>Das hei\u00dft, QEMU an sich ist extrem cool, funktioniert aber sehr langsam.<\/p>\n<h2>3) Schutzringe<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Allgemeine Prinzipien der Arbeit mit QEMU-KVM\" src=\"\/wp-content\/uploads\/2019\/09\/01df130d94b54251f517f776c99009f6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer bin\u00e4re Programmcode auf Prozessoren wird nicht einfach so ausgef\u00fchrt, sondern befindet sich auf verschiedenen Ebenen (Ringen \/ Schutzringen) mit unterschiedlichen Zugriffsebenen auf die Daten, vom privilegiertesten (Ring 0) bis zum am st\u00e4rksten regulierten und \"eingeschr\u00e4nkten\" (Ring 3).<\/p>\n<p>Das Betriebssystem (OS-Kernel) l\u00e4uft im Ring 0 (Kernelmodus) und kann mit beliebigen Daten und Ger\u00e4ten alles tun, was es m\u00f6chte. Benutzeranwendungen laufen im Ring 3 (Benutzermodus) und d\u00fcrfen nicht tun, was sie wollen, sondern m\u00fcssen jedes Mal um Erlaubnis bitten, um eine bestimmte Operation durchzuf\u00fchren (so haben Benutzeranwendungen nur Zugang zu ihren eigenen Daten und k\u00f6nnen nicht in die \"Sandbox\" anderer eindringen). Die Ringe 1 und 2 sind f\u00fcr Treiber vorgesehen.<\/p>\n<p>Vor der Erfindung von Intel VT-x \/ AMD SVM arbeiteten Hypervisoren im Ring 0, w\u00e4hrend G\u00e4ste im Ring 1 t\u00e4tig waren. Da Ring 1 nicht \u00fcber ausreichende Berechtigungen f\u00fcr den normalen Betrieb eines OS verf\u00fcgt, musste der Hypervisor bei jedem privilegierten Aufruf vom Gastbetriebssystem diesen Aufruf in Echtzeit modifizieren und im Ring 0 ausf\u00fchren (\u00e4hnlich wie es QEMU tut). Das bedeutet, dass der Gast-bin\u00e4re Code <b><i>NEIN<\/i><\/b> direkt auf der CPU ausgef\u00fchrt wurde und bei jedem Aufruf mehrere Zwischenmodifikationen in Echtzeit durchlief.<\/p>\n<p>Die Overhead-Kosten waren erheblich und dies war ein gro\u00dfes Problem, sodass die Prozessorhersteller unabh\u00e4ngig voneinander eine erweiterte Befehlssatzarchitektur (Intel VT-x \/ AMD SVM) ver\u00f6ffentlichten, die es erm\u00f6glichte, den Code der Gastbetriebssysteme <b><i>DIREKT<\/i><\/b> auf der Host-CPU auszuf\u00fchren (unter Umgehung aller kostspieligen Zwischenstufen, wie es zuvor der Fall war).<\/p>\n<p>Mit Intel VT-x \/ AMD SVM wurde ein spezieller neuer Ring -1 (minus eins) geschaffen. Jetzt l\u00e4uft der Hypervisor darauf und die G\u00e4ste arbeiten im Ring 0 und erhalten privilegierten Zugriff auf die CPU.<\/p>\n<p>Das bedeutet letztendlich:<\/p>\n<ul>\n<li>der Host arbeitet im Ring 0<\/li>\n<li>die G\u00e4ste arbeiten im Ring 0<\/li>\n<li>der Hypervisor arbeitet im Ring -1<\/li>\n<\/ul>\n<p><\/p>\n<h2>4) QEMU-KVM<\/h2>\n<p>\nKVM gibt den G\u00e4sten Zugang zu Ring 0 und verwendet QEMU zur Emulation von I\/O (Prozessor, Festplatten, Netzwerk, Video, PCI, USB, serielle Anschl\u00fcsse usw., die die G\u00e4ste \"sehen\" und mit denen sie arbeiten).<\/p>\n<p>Daher QEMU-KVM (oder KVM-QEMU) \ud83d\ude42<\/p>\n<p><i>CREDITS<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.ionos.com\">Bild zur Aufmerksamkeitsgewinnung<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.researchgate.net\/profile\/Roberto_Pietro\">Bild der Schutzringe<\/a><\/noindex><\/i><\/p>\n<p><i>P.S. Der Text dieses Artikels wurde urspr\u00fcnglich im Telegram-Kanal ver\u00f6ffentlicht <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/ru_voip\">@RU_Voip<\/a><\/noindex> als Antwort auf die Frage eines Kanalteilnehmers.<\/p>\n<p>Bitte schreiben Sie in die Kommentare, an welchen Stellen ich das Thema m\u00f6glicherweise missverstehe oder wenn es Erg\u00e4nzungen gibt.<\/p>\n<p>Danke!<\/i><br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/466549\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u043e\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435: 1) KVM KVM (Kernel-based Virtual Machine) \u2013 \u0433\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440 (VMM \u2013 Virtual Machine Manager), \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0432 \u0432\u0438\u0434\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u043d\u0430 \u041e\u0421 Linux. \u0413\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440 \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0435\u043a\u0438\u0439 \u0441\u043e\u0444\u0442 \u0432 \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 (\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439) \u0441\u0440\u0435\u0434\u0435 \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0441\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0444\u0442\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0436\u0435\u043b\u0435\u0437\u043e, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u044d\u0442\u043e\u0442 \u0441\u043e\u0444\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0413\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0440\u043e\u043b\u0438 \u00ab\u043f\u0440\u043e\u043a\u043b\u0430\u0434\u043a\u0438\u00bb [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28470,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37939","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u043e\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435: 1) KVM KVM.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/obshhie-printsipy-raboty-qemu-kvm\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041e\u0431\u0449\u0438\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0440\u0430\u0431\u043e\u0442\u044b QEMU-KVM | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u043e\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435: 1) KVM KVM.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/obshhie-printsipy-raboty-qemu-kvm\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:20:41+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:20:41+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Allgemeine Funktionsprinzipien von QEMU-KVM | ProHoster","description":"Mein aktuelles Verst\u00e4ndnis: 1) KVM KVM.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/obshhie-printsipy-raboty-qemu-kvm","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041e\u0431\u0449\u0438\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0440\u0430\u0431\u043e\u0442\u044b QEMU-KVM | ProHoster","og:description":"\u041c\u043e\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435: 1) KVM KVM.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/obshhie-printsipy-raboty-qemu-kvm","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:20:41+00:00","article:modified_time":"2019-10-31T19:20:41+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37939","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 19:51:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:18:22","updated":"2026-01-23 19:51:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/37939","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=37939"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/37939\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/28470"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=37939"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=37939"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=37939"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}