{"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\/sv\/blog\/administrirovanie\/obshhie-printsipy-raboty-qemu-kvm","title":{"rendered":"Allm\u00e4nna principer f\u00f6r QEMU-KVM","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Allm\u00e4nna principer f\u00f6r QEMU-KVM\" src=\"\/wp-content\/uploads\/2019\/09\/6619dbfb022d3fdb87159a33d4d27466.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMin nuvarande f\u00f6rst\u00e5else:<\/p>\n<h2>1) KVM<\/h2>\n<p>\nKVM (Kernel-based Virtual Machine) \u2013 en hypervisor (VMM \u2013 Virtual Machine Manager) som fungerar som en modul i Linux-operativsystemet. Hypervisorn beh\u00f6vs f\u00f6r att k\u00f6ra programvara i en icke-existerande (virtuell) milj\u00f6 och samtidigt d\u00f6lja den fysiska h\u00e5rdvaran som programvaran k\u00f6rs p\u00e5. Hypervisorn fungerar som en 'bro' mellan den fysiska h\u00e5rdvaran (v\u00e4rden) och det virtuella operativsystemet (g\u00e4sten).<\/p>\n<p>Eftersom KVM \u00e4r en standardmodul i Linux-k\u00e4rnan f\u00e5r den alla n\u00f6dv\u00e4ndiga f\u00f6rdelar fr\u00e5n k\u00e4rnan (minneshantering, schemal\u00e4ggare etc.). D\u00e4rmed f\u00e5r \u00e4ven g\u00e4sterna alla dessa f\u00f6rdelar (d\u00e5 g\u00e4sterna arbetar p\u00e5 hypervisorn som k\u00f6r i\/eller p\u00e5 Linux-operativsystemets k\u00e4rna).<\/p>\n<p>KVM \u00e4r v\u00e4ldigt snabb, men den ensam r\u00e4cker inte f\u00f6r att k\u00f6ra ett virtuellt operativsystem, eftersom I\/O-emulering ocks\u00e5 kr\u00e4vs. F\u00f6r I\/O (processor, diskar, n\u00e4tverk, video, PCI, USB, seriekablar, etc.) anv\u00e4nder KVM QEMU.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>2) QEMU<\/h2>\n<p>\nQEMU (Quick Emulator) \u2013 en emulator f\u00f6r olika enheter som g\u00f6r det m\u00f6jligt att k\u00f6ra operativsystem som \u00e4r avsedda f\u00f6r en arkitektur p\u00e5 en annan (till exempel, ARM \u2013&gt; x86). F\u00f6rutom processorn emulerar QEMU olika perifera enheter: n\u00e4tverkskort, HDD, grafikkort, PCI, USB, etc.<\/p>\n<p>Det fungerar s\u00e5 h\u00e4r:<\/p>\n<p>Instruktioner\/binar kod (exempelvis ARM) konverteras till en mellanliggande plattformsoberoende kod med hj\u00e4lp av TCG (Tiny Code Generator), och sedan konverteras den plattformsoberoende bin\u00e4ra koden till m\u00e5linstruktioner\/kod (till exempel x86).<\/p>\n<p>ARM \u2013&gt; mellanliggande_kod \u2013&gt; x86<\/p>\n<p>I grund och botten kan du k\u00f6ra virtuella maskiner p\u00e5 QEMU p\u00e5 vilken v\u00e4rd som helst, \u00e4ven med gamla processor-modeller som inte st\u00f6djer Intel VT-x (Intel Virtualization Technology) \/ AMD SVM (AMD Secure Virtual Machine). Men i s\u00e5 fall kommer det att fungera ganska l\u00e5ngsamt, eftersom den exekverbara bin\u00e4ra koden m\u00e5ste omkompileras i realtid tv\u00e5 g\u00e5nger med hj\u00e4lp av TCG (TCG \u00e4r en Just-in-Time-compiler).<\/p>\n<p>Det vill s\u00e4ga, QEMU i sig \u00e4r verkligen imponerande, men det fungerar mycket l\u00e5ngsamt.<\/p>\n<h2>3) Skyddskringar<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Allm\u00e4nna principer f\u00f6r QEMU-KVM\" src=\"\/wp-content\/uploads\/2019\/09\/01df130d94b54251f517f776c99009f6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDen bin\u00e4ra programkoden p\u00e5 processorer fungerar inte bara s\u00e5, utan \u00e4r placerad p\u00e5 olika niv\u00e5er (ringar \/ Protection rings) med olika \u00e5tkomstr\u00e4ttigheter, fr\u00e5n den mest privilegierade (Ring 0) till den mest begr\u00e4nsade och \u201ds\u00e4kra\u201d (Ring 3).<\/p>\n<p>Operativsystemet (k\u00e4rna OS) arbetar p\u00e5 Ring 0 (kernel mode) och kan g\u00f6ra vad som helst med alla data och enheter. Anv\u00e4ndarappar arbetar p\u00e5 niv\u00e5 Ring 3 (user mode) och f\u00e5r inte g\u00f6ra vad de vill, utan m\u00e5ste varje g\u00e5ng beg\u00e4ra \u00e5tkomst f\u00f6r att utf\u00f6ra en viss \u00e5tg\u00e4rd (s\u00e5ledes har anv\u00e4ndarappar endast tillg\u00e5ng till sina egna data och kan inte \"blanda sig i\" andras \"sandbox\"). Ring 1 och 2 \u00e4r avsedda f\u00f6r anv\u00e4ndning av drivrutiner.<\/p>\n<p>Innan uppfinningen av Intel VT-x \/ AMD SVM, arbetade hypervisorer p\u00e5 Ring 0 och g\u00e4sterna arbetade p\u00e5 Ring 1. Eftersom Ring 1 inte hade tillr\u00e4ckliga r\u00e4ttigheter f\u00f6r att operativsystemet skulle fungera normalt, var hypervisorn tvungen att under varje privilegierad anrop fr\u00e5n g\u00e4stsistemet modifiera den anropet i realtid och utf\u00f6ra den p\u00e5 Ring 0 (ungef\u00e4r som QEMU g\u00f6r). Det vill s\u00e4ga, g\u00e4sternas bin\u00e4rkod <b><i>INTE<\/i><\/b> utf\u00f6rdes direkt p\u00e5 processorn, utan passerade varje g\u00e5ng flera mellansteg av modifieringar i realtid.<\/p>\n<p>\u00d6verheaden var betydande och det var ett stort problem och d\u00e5 sl\u00e4ppte processortillverkarna, oberoende av varandra, ett ut\u00f6kat instruktionsset (Intel VT-x \/ AMD SVM) som m\u00f6jliggjorde k\u00f6rning av g\u00e4st-OS-kod <b><i>DIRECT<\/i><\/b> p\u00e5 v\u00e4rdprocessorn (utan n\u00e5gra kostsamma mellanliggande steg, som det var tidigare).<\/p>\n<p>Med introduktionen av Intel VT-x \/ AMD SVM skapades en speciell ny niv\u00e5 Ring -1 (minus ett). Och nu arbetar hypervisorn p\u00e5 den, medan g\u00e4sterna arbetar p\u00e5 Ring 0 och f\u00e5r privilegierad \u00e5tkomst till CPU.<\/p>\n<p>Det vill s\u00e4ga, slutligen:<\/p>\n<ul>\n<li>v\u00e4rden arbetar p\u00e5 Ring 0<\/li>\n<li>g\u00e4ster arbetar p\u00e5 Ring 0<\/li>\n<li>hypervisorn arbetar p\u00e5 Ring -1<\/li>\n<\/ul>\n<p><\/p>\n<h2>4) QEMU-KVM<\/h2>\n<p>\nKVM ger g\u00e4sterna \u00e5tkomst till Ring 0 och anv\u00e4nder QEMU f\u00f6r att emulera I\/O (processor, diskar, n\u00e4tverk, video, PCI, USB, seriella portar osv. som g\u00e4sterna \"ser\" och arbetar med).<\/p>\n<p>H\u00e4rifr\u00e5n kommer QEMU-KVM (eller KVM-QEMU) \ud83d\ude42<\/p>\n<p><i>CREDITS<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.ionos.com\">Bild f\u00f6r att f\u00e5nga uppm\u00e4rksamhet<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.researchgate.net\/profile\/Roberto_Pietro\">Bild av skyddsringar<\/a><\/noindex><\/i><\/p>\n<p><i>P.S. Texten i denna artikel publicerades ursprungligen p\u00e5 Telegramkanalen <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/ru_voip\">@RU_Voip<\/a><\/noindex> som ett svar p\u00e5 en fr\u00e5ga fr\u00e5n en av kanalens deltagare.<\/p>\n<p>Skriv i kommentarerna var jag har missf\u00f6rst\u00e5tt \u00e4mnet eller om det finns n\u00e5got att till\u00e4gga.<\/p>\n<p>Tack!<\/i><br \/>\n<br \/>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/obshhie-printsipy-raboty-qemu-kvm\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47Allm\u00e4nna principer f\u00f6r QEMU-KVM | ProHoster","description":"Min nuvarande f\u00f6rst\u00e5else: 1) KVM KVM.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/obshhie-printsipy-raboty-qemu-kvm","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/37939","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=37939"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/37939\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/28470"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=37939"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=37939"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=37939"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}