{"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\/nl\/blog\/administrirovanie\/obshhie-printsipy-raboty-qemu-kvm","title":{"rendered":"Algemene principes van QEMU-KVM","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Algemene principes van QEMU-KVM\" src=\"\/wp-content\/uploads\/2019\/09\/6619dbfb022d3fdb87159a33d4d27466.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMijn huidige begrip:<\/p>\n<h2>1) KVM<\/h2>\n<p>\nKVM (Kernel-based Virtual Machine) \u2013 hypervisor (VMM \u2013 Virtual Machine Manager), die functioneert als een module binnen het Linux-besturingssysteem. De hypervisor is nodig om software uit te voeren in een niet-bestaande (virtuele) omgeving en tegelijkertijd de echte fysieke hardware waar deze software op draait, voor deze software te verbergen. De hypervisor fungeert als een 'tussenlaag' tussen de fysieke hardware (de host) en het virtuele besturingssysteem (de gast).<\/p>\n<p>Aangezien KVM een standaardmodule van de Linux-kernel is, krijgt het alle voordelen van de kernel (zoals geheugenbeheer, scheduler, enz.). Uiteindelijk profiteren ook de gasten van al deze voordelen (omdat gasten draaien op de hypervisor, die op\/in de kernel van het Linux-besturingssysteem draait).<\/p>\n<p>KVM is erg snel, maar op zichzelf is het niet voldoende om een virtueel besturingssysteem uit te voeren, omdat hiervoor I\/O-emulatie nodig is. Voor I\/O (processor, schijven, netwerk, video, PCI, USB, seri\u00eble poorten, enz.) gebruikt KVM QEMU.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>2) QEMU<\/h2>\n<p>\nQEMU (Quick Emulator) \u2013 een emulator van verschillende apparaten, die het mogelijk maakt om besturingssystemen die voor \u00e9\u00e9n architectuur zijn ontworpen, op een andere uit te voeren (bijvoorbeeld, ARM -&gt; x86). Naast de processor emuleert QEMU verschillende randapparaten: netwerkkaarten, HDD's, videokaarten, PCI, USB, enz.<\/p>\n<p>Dit werkt zo:<\/p>\n<p>Instructies\/binaire code (bijvoorbeeld, ARM) worden omgezet in tussentijdse platformonafhankelijke code met behulp van de TCG (Tiny Code Generator) en vervolgens wordt deze platformonafhankelijke binaire code omgezet in de doelinstructies\/code (bijvoorbeeld, x86).<\/p>\n<p>ARM -&gt; tussentijdse_code -&gt; x86<\/p>\n<p>In wezen kun je virtuele machines op QEMU draaien op elke host, zelfs met oudere processor-modellen die geen Intel VT-x (Intel Virtualization Technology) of AMD SVM (AMD Secure Virtual Machine) ondersteunen. In dat geval zal dit echter erg traag zijn, omdat de uitvoerbare binaire code 'on the fly' twee keer moet worden hercompileren met TCG (TCG is een Just-in-Time compiler).<\/p>\n<p>Met andere woorden, QEMU op zichzelf is geweldig, maar werkt erg traag.<\/p>\n<h2>3) Protection rings<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Algemene principes van QEMU-KVM\" src=\"\/wp-content\/uploads\/2019\/09\/01df130d94b54251f517f776c99009f6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBinaire softwarecode op processoren functioneert niet zomaar; het bevindt zich op verschillende niveaus (ringen \/ Protection rings) met verschillende toegangslevels tot gegevens, van het meest bevoorrechte (Ring 0) tot het meest beperkte, gereguleerde en 'strikt gecontroleerde' (Ring 3).<\/p>\n<p>Het besturingssysteem (kernel) draait op Ring 0 (kernel mode) en kan met alle gegevens en apparaten doen wat het wilt. Gebruikersapplicaties draaien op Ring 3 (user mode) en hebben niet de vrijheid om alles te doen wat ze willen; in plaats daarvan moeten ze telkens toestemming vragen om bepaalde operaties uit te voeren (op deze manier hebben gebruikersapplicaties alleen toegang tot hun eigen gegevens en kunnen ze niet 'in de zandbak van anderen' komen). Ring 1 en 2 zijn bedoeld voor gebruik door stuurprogramma's.<\/p>\n<p>Voor de uitvinding van Intel VT-x \/ AMD SVM, werkten hypervisors op Ring 0 en gasten op Ring 1. Omdat Ring 1 niet genoeg rechten heeft voor de normale werking van het besturingssysteem, moest de hypervisor bij elke geprivilegieerde aanroep van het gastensysteem dit aanroep wijzigen en deze uitvoeren op Ring 0 (zo ongeveer zoals QEMU het doet). Dat wil zeggen, de binaire code van de gast <b><i>NIE<\/i><\/b> werd rechtstreeks op de processor uitgevoerd, maar moest bij elke keer verschillende tussentijdse wijzigingen ondergaan.<\/p>\n<p>De overhead was aanzienlijk en dit was een groot probleem. Toen hebben verschillende procesorfabrikanten onafhankelijk van elkaar een uitgebreide instructieset ontwikkeld (Intel VT-x \/ AMD SVM) die het mogelijk maakt om de code van de gastbesturingssystemen <b><i>DIRECT<\/i><\/b> op de hostprocessor uit te voeren (waardoor alle dure tussenstappen, zoals eerder, werden omzeild).<\/p>\n<p>Met de komst van Intel VT-x \/ AMD SVM, werd er een speciale nieuwe laag Ring -1 (min \u00e9\u00e9n) gecre\u00eberd. En nu draait de hypervisor daarop en de gasten draaien op Ring 0 en krijgen geprivilegieerde toegang tot de CPU.<\/p>\n<p>Dat wil zeggen, uiteindelijk:<\/p>\n<ul>\n<li>de host draait op Ring 0<\/li>\n<li>de gasten draaien op Ring 0<\/li>\n<li>de hypervisor draait op Ring -1<\/li>\n<\/ul>\n<p><\/p>\n<h2>4) QEMU-KVM<\/h2>\n<p>\nKVM biedt toegang aan gasten tot Ring 0 en gebruikt QEMU voor I\/O-emulatie (processor, schijven, netwerk, video, PCI, USB, seri\u00eble poorten, enz., die de gasten 'zien' en waarmee ze werken).<\/p>\n<p>Daarom QEMU-KVM (of KVM-QEMU) \ud83d\ude42<\/p>\n<p><i>CREDITS<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.ionos.com\">Afbeelding voor aandacht<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.researchgate.net\/profile\/Roberto_Pietro\">Afbeelding Protection rings<\/a><\/noindex><\/i><\/p>\n<p><i>P.S. De tekst van dit artikel werd oorspronkelijk gepubliceerd op het Telegram-kanaal <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/ru_voip\">@RU_Voip<\/a><\/noindex> als antwoord op een vraag van een van de leden van het kanaal.<\/p>\n<p>Laat in de reacties weten waar ik de materie niet goed begrijp of als er iets is om aan toe te voegen.<\/p>\n<p>Bedankt!<\/i><br \/>\n<br \/>Bron: <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.3 - 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\/nl\/blog\/administrirovanie\/obshhie-printsipy-raboty-qemu-kvm\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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\/nl\/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\udd47Algemene principes voor de werking van QEMU-KVM | ProHoster","description":"Mijn huidige begrip: 1) KVM KVM.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/obshhie-printsipy-raboty-qemu-kvm","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/37939","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=37939"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/37939\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/28470"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=37939"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=37939"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=37939"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}