QEMU-KVM жұмысының жалпы принциптері

QEMU-KVM жұмысының жалпы принциптері

Менің қазіргі түсінігім:

1) KVM

KVM (ядроға негізделген виртуалды машина) - Linux ОЖ-де модуль ретінде жұмыс істейтін гипервизор (VMM – Virtual Machine Manager). Гипервизор кейбір бағдарламалық жасақтаманы жоқ (виртуалды) ортада іске қосу және сонымен бірге осы бағдарламалық жасақтама жұмыс істейтін нақты физикалық жабдықты осы бағдарламалық жасақтамадан жасыру үшін қажет. Гипервизор физикалық аппараттық құрал (хост) мен виртуалды ОЖ (қонақ) арасындағы «аралық» рөлін атқарады.

KVM Linux ядросының стандартты модулі болғандықтан, ол ядродан барлық қажетті жақсылықтарды алады (жадты басқару, жоспарлаушы және т.б.). Тиісінше, бұл артықшылықтардың барлығы қонақтарға беріледі (өйткені қонақтар Linux ОЖ ядросында/жұмыс істейтін гипервизорда жұмыс істейді).

KVM өте жылдам, бірақ виртуалды ОЖ-ны іске қосу өздігінен жеткіліксіз, өйткені... Бұл енгізу/шығару эмуляциясын қажет етеді. Енгізу/шығару үшін (CPU, дискілер, желі, бейне, PCI, USB, сериялық порттар және т.б.) KVM QEMU пайдаланады.

2) QEMU

QEMU (Жылдам эмулятор) – бір архитектураға арналған операциялық жүйелерді екіншісінде іске қосуға мүмкіндік беретін әртүрлі құрылғыларға арналған эмулятор (мысалы, ARM -> x86). Процессордан басқа, QEMU әртүрлі перифериялық құрылғыларды эмуляциялайды: желілік карталар, HDD, бейне карталар, PCI, USB және т.б.

Ол келесідей жұмыс істейді:

Нұсқаулар/екілік код (мысалы, ARM) TCG (Tiny Code Generator) түрлендіргіші арқылы аралық платформаға тәуелсіз кодқа түрлендіріледі, содан кейін бұл платформаға тәуелсіз екілік код мақсатты нұсқауларға/кодқа түрлендіріледі (мысалы, x86).

ARM –> аралық_код –> x86

Негізінде, QEMU жүйесінде виртуалды машиналарды кез келген хостта, тіпті Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine) қолдамайтын ескі процессор үлгілерімен де іске қосуға болады. Дегенмен, бұл жағдайда ол өте баяу жұмыс істейді, себебі орындалатын екілік кодты TCG (TCG – Just-in-Time компиляторы) көмегімен екі рет жылдам қайта құрастыру қажет.

Анау. QEMU өзі өте керемет, бірақ ол өте баяу жұмыс істейді.

3) Қорғаныс сақиналары

QEMU-KVM жұмысының жалпы принциптері

Процессорлардағы екілік бағдарлама коды белгілі бір себептермен жұмыс істейді, бірақ деректерге қол жеткізудің әртүрлі деңгейлері бар әртүрлі деңгейлерде (сақиналар / қорғаныс сақиналары) орналасқан, ең артықшылықтыдан (Ring 0), ең шектеулі, реттелетін және «жаңғақтары қатайтылғанға дейін. ” (3-ші сақина).

Операциялық жүйе (ОЖ ядросы) Ring 0 (ядро режимі) жұмыс істейді және кез келген деректер мен құрылғылармен қалағанын жасай алады. Пайдаланушы қолданбалары Ring 3 деңгейінде (пайдаланушы режимі) жұмыс істейді және олар қалаған нәрсені істеуге рұқсат етілмейді, бірақ оның орнына белгілі бір әрекетті орындау үшін әр жолы кіру рұқсатын сұрауы керек (осылайша, пайдаланушы қолданбалары тек өз деректеріне қол жеткізе алады және «алу» мүмкін емес. біреудің құм жәшігіне). 1 және 2 сақиналары жүргізушілер пайдалануға арналған.

Intel VT-x / AMD SVM өнертабыстарына дейін гипервизорлар 0 сақинасында, ал қонақтар 1-ші сақинада жұмыс істеді. 1-ші сақинада ОЖ-ның қалыпты жұмыс істеуі үшін жеткілікті құқықтар болмағандықтан, қонақ жүйесінен әрбір артықшылықты қоңыраумен, гипервизорға бұл қоңырауды жылдам өзгертуге және оны 0 сақинасында орындауға тура келді (QEMU сияқты). Анау. қонақ екілік ЕМЕС тікелей процессорда орындалды және әр уақытта бірнеше аралық модификациялардан өтті.

Үстеме шығындар айтарлықтай болды және бұл үлкен мәселе болды, содан кейін процессор өндірушілері бір-бірінен тәуелсіз, қонақ ОЖ кодын орындауға мүмкіндік беретін кеңейтілген нұсқаулар жинағын (Intel VT-x / AMD SVM) шығарды. ТІКЕЛЕЙ хост процессорында (бұрынғы жағдайдағыдай кез келген қымбат аралық қадамдарды айналып өту).

Intel VT-x / AMD SVM пайда болуымен арнайы жаңа Ring деңгейі -1 (минус бір) жасалды. Енді оған гипервизор жұмыс істейді, ал қонақтар Ring 0 жүйесінде жұмыс істейді және орталық процессорға артықшылықты рұқсат алады.

Анау. ақырында:

  • хост 0 сақинасында жұмыс істейді
  • қонақтар 0 сақинасында жұмыс істейді
  • гипервизор Ring -1 жүйесінде жұмыс істейді

4) QEMU-KVM

KVM қонақтарға 0 сақинасына рұқсат береді және енгізу/шығару (қонақтар «көретін» және жұмыс істейтін процессор, дискілер, желі, бейне, PCI, USB, сериялық порттар және т.б.) эмуляциялау үшін QEMU пайдаланады.

Демек, QEMU-KVM (немесе KVM-QEMU) :)

НЕСИЕЛЕР
Назар аудару үшін сурет
Қорғаныс сақиналарының суреті

PS Бұл мақаланың мәтіні бастапқыда Telegram арнасында жарияланған @RU_Voip арна қатысушыларының бірінің сұрағына жауап ретінде.

Тақырыпты дұрыс түсінбеген жерде немесе қосатын нәрсе болса, түсініктемелерде жазыңыз.

рахмет!

Ақпарат көзі: www.habr.com

пікір қалдыру