{"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\/da\/blog\/administrirovanie\/obshhie-printsipy-raboty-qemu-kvm","title":{"rendered":"Generelle principper for QEMU-KVM","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Generelle principper for QEMU-KVM\" src=\"\/wp-content\/uploads\/2019\/09\/6619dbfb022d3fdb87159a33d4d27466.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMin nuv\u00e6rende forst\u00e5else:<\/p>\n<h2>1) KVM<\/h2>\n<p>\nKVM (Kernel-baseret Virtual Machine) \u2013 en hypervisor (VMM \u2013 Virtual Machine Manager), der fungerer som et modul p\u00e5 Linux OS. Hypervisoren er n\u00f8dvendig for at k\u00f8re software i en ikke-eksisterende (virtuel) milj\u00f8 og samtidig skjule det fysiske hardware, som softwaren k\u00f8rer p\u00e5. Hypervisoren fungerer som en \"mellemvare\" mellem det fysiske hardware (v\u00e6rten) og det virtuelle OS (g\u00e6sten).<\/p>\n<p>Da KVM er et standardmodul i Linux-kernen, modtager det alle de gl\u00e6der fra kernen (hukommelsesstyring, planl\u00e6gger mv.). Og derfor f\u00e5r g\u00e6sterne ogs\u00e5 alle disse fordele (da g\u00e6sterne k\u00f8rer p\u00e5 hypervisoren, som k\u00f8rer p\u00e5\/ i kernen af Linux OS).<\/p>\n<p>KVM er meget hurtig, men i sig selv er den ikke nok til at k\u00f8re et virtuelt OS, da I\/O-emulering er n\u00f8dvendig for dette. For I\/O (processor, disk, netv\u00e6rk, video, PCI, USB, serielle porte mv.) bruger 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 af forskellige enheder, der g\u00f8r det muligt at k\u00f8re operativsystemer designet til en arkitektur p\u00e5 en anden (fx ARM \u2013&gt; x86). Udover processoren emulerer QEMU forskellige perifere enheder: netv\u00e6rkskort, HDD, grafikkort, PCI, USB mv.<\/p>\n<p>S\u00e5dan fungerer det:<\/p>\n<p>Instruktioner\/binary kode (fx ARM) konverteres til mellemplatforms uafh\u00e6ngig kode ved hj\u00e6lp af TCG (Tiny Code Generator), og derefter konverteres denne platformuafh\u00e6ngige binary kode til m\u00e5lrettede instruktioner\/kode (fx x86).<\/p>\n<p>ARM \u2013&gt; mellem_code \u2013&gt; x86<\/p>\n<p>I princippet kan du k\u00f8re virtuelle maskiner p\u00e5 QEMU p\u00e5 enhver v\u00e6rt, selv med gamle processor modeller, der ikke underst\u00f8tter Intel VT-x (Intel Virtualization Technology) \/ AMD SVM (AMD Secure Virtual Machine). Men i s\u00e5 fald vil det fungere meget langsomt, da den resulterende binary kode skal omkompileres i realtid to gange med TCG (TCG er en Just-in-Time compiler).<\/p>\n<p>Det vil sige, QEMU i sig selv er mega fed, men det fungerer meget langsomt.<\/p>\n<h2>3) Beskyttelseskredse<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Generelle principper for QEMU-KVM\" src=\"\/wp-content\/uploads\/2019\/09\/01df130d94b54251f517f776c99009f6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBinary programmeringskode p\u00e5 processorer arbejder ikke bare s\u00e5ledes, men er placeret p\u00e5 forskellige niveauer (ringe \/ Protection rings) med forskellige adgangsniveauer til data, fra det mest privilegerede (Ring 0) til det mest begr\u00e6nsede, regulerede og \"skruede\" (Ring 3).<\/p>\n<p>Operativsystemet (OS-kernen) arbejder i Ring 0 (kernel mode) og kan g\u00f8re hvad som helst med data og enheder. Brugerapplikationer arbejder p\u00e5 niveauet Ring 3 (user mode) og har ikke ret til at g\u00f8re hvad de vil; i stedet skal de hver gang anmode om adgang f\u00f8r de kan udf\u00f8re en bestemt operation (dette betyder, at brugerapplikationer kun har adgang til deres egne data og ikke kan \"blande sig\" i \"andres sandkasse\"). Ring 1 og 2 er beregnet til brug af drivere.<\/p>\n<p>F\u00f8r opfindelsen af Intel VT-x \/ AMD SVM, arbejdede hypervisorer i Ring 0, mens g\u00e6sterne arbejdede i Ring 1. Da Ring 1 ikke havde tilstr\u00e6kkelige rettigheder til korrekt at fungere med OS, m\u00e5tte hypervisoren ved hvert privilegeret kald fra g\u00e6stesystemet dynamisk \u00e6ndre denne kald og udf\u00f8re den i Ring 0 (n\u00f8jagtig som QEMU g\u00f8r). Det vil sige, g\u00e6stekoden <b><i>IKKE<\/i><\/b> blev udf\u00f8rt direkte p\u00e5 processoren, mens den hver gang gennemgik adskillige mellemtrin.<\/p>\n<p>Omkostningerne var betydelige, og det var et stort problem, s\u00e5 producenterne af processorerne, uafh\u00e6ngigt af hinanden, frigav et udvidet instruktionss\u00e6t (Intel VT-x \/ AMD SVM), der tillod at k\u00f8re koden for g\u00e6ste-OS <b><i>DIREKTE<\/i><\/b> p\u00e5 v\u00e6rtsprocessoren (uden at passere omkostningstunge mellemtrin, som det tidligere var).<\/p>\n<p>Med Intel VT-x \/ AMD SVM kom der et nyt specielt niveau, Ring -1 (minus \u00e9n). Og nu arbejder hypervisoren p\u00e5 dette niveau, mens g\u00e6sterne arbejder p\u00e5 Ring 0 og f\u00e5r privilegeret adgang til CPU'en.<\/p>\n<p>Det vil sige, i sidste ende:<\/p>\n<ul>\n<li>v\u00e6rten arbejder p\u00e5 Ring 0<\/li>\n<li>g\u00e6sterne arbejder p\u00e5 Ring 0<\/li>\n<li>hypervisoren arbejder p\u00e5 Ring -1<\/li>\n<\/ul>\n<p><\/p>\n<h2>4) QEMU-KVM<\/h2>\n<p>\nKVM giver g\u00e6sterne adgang til Ring 0 og bruger QEMU til at emulere I\/O (processor, disks, netv\u00e6rk, video, PCI, USB, serielle porte mv., som g\u00e6sterne \"ser\" og arbejder med).<\/p>\n<p>Deraf QEMU-KVM (eller KVM-QEMU) \ud83d\ude42<\/p>\n<p><i>KREDITER<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.ionos.com\">Billede til opm\u00e6rksomhed<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.researchgate.net\/profile\/Roberto_Pietro\">Billede af beskyttelsesringene<\/a><\/noindex><\/i><\/p>\n<p><i>P.S. Teksten i denne artikel blev oprindeligt offentliggjort i Telegram-kanalen <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/ru_voip\">@RU_Voip<\/a><\/noindex> som svar p\u00e5 et sp\u00f8rgsm\u00e5l fra \u00e9t af kanalens medlemmer.<\/p>\n<p>Skriv i kommentarerne, hvor jeg ikke forst\u00e5r emnet korrekt, eller hvis der er noget at tilf\u00f8je.<\/p>\n<p>Tak!<\/i><br \/>\n<br \/>Kilde: <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\/da\/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=\"da_DK\" \/>\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\/da\/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\udd47Generelle principper for QEMU-KVM | ProHoster","description":"Min nuv\u00e6rende forst\u00e5else: 1) KVM KVM.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/obshhie-printsipy-raboty-qemu-kvm","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/37939","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=37939"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/37939\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/28470"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=37939"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=37939"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=37939"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}