QEMU-KVM இன் பொது இயக்கக் கொள்கைகள்

QEMU-KVM இன் பொது இயக்கக் கொள்கைகள்

எனது தற்போதைய புரிதல்:

1) கேவிஎம்

KVM (கர்னல் அடிப்படையிலான மெய்நிகர் இயந்திரம்) என்பது லினக்ஸ் OS இல் ஒரு தொகுதியாக இயங்கும் ஹைப்பர்வைசர் (VMM - மெய்நிகர் இயந்திர மேலாளர்) ஆகும். இல்லாத (மெய்நிகர்) சூழலில் சில மென்பொருட்களை இயக்கவும், அதே நேரத்தில் இந்த மென்பொருள் இயங்கும் உண்மையான இயற்பியல் வன்பொருளை இந்த மென்பொருளிலிருந்து மறைக்கவும் ஹைப்பர்வைசர் தேவை. ஹைப்பர்வைசர் இயற்பியல் வன்பொருள் (புரவலன்) மற்றும் மெய்நிகர் OS (விருந்தினர்) இடையே ஒரு "ஸ்பேசர்" ஆக செயல்படுகிறது.

KVM லினக்ஸ் கர்னலின் நிலையான தொகுதி என்பதால், அது கர்னலில் இருந்து தேவையான அனைத்து நன்மைகளையும் பெறுகிறது (நினைவக மேலாண்மை, திட்டமிடுபவர், முதலியன). அதன்படி, இறுதியில், இந்த நன்மைகள் அனைத்தும் விருந்தினர்களுக்குச் செல்லும் (விருந்தினர்கள் Linux OS கர்னலில்/இயங்கும் ஹைப்பர்வைசரில் பணிபுரிவதால்).

KVM மிகவும் வேகமானது, ஆனால் மெய்நிகர் OS ஐ இயக்க இது போதாது, ஏனெனில்... இதற்கு I/O எமுலேஷன் தேவை. I/O (CPU, டிஸ்க்குகள், நெட்வொர்க், வீடியோ, PCI, USB, சீரியல் போர்ட்கள் போன்றவை) KVM ஆனது QEMU ஐப் பயன்படுத்துகிறது.

2) QEMU

QEMU (விரைவு எமுலேட்டர்) என்பது பல்வேறு சாதனங்களுக்கான முன்மாதிரி ஆகும், இது ஒரு கட்டமைப்பிற்காக வடிவமைக்கப்பட்ட இயக்க முறைமைகளை மற்றொன்றில் இயக்க அனுமதிக்கிறது (எடுத்துக்காட்டாக, ARM -> x86). செயலிக்கு கூடுதலாக, QEMU பல்வேறு புற சாதனங்களை பின்பற்றுகிறது: பிணைய அட்டைகள், HDD, வீடியோ அட்டைகள், PCI, USB போன்றவை.

இது இப்படி வேலை செய்கிறது:

அறிவுறுத்தல்கள்/பைனரி குறியீடு (உதாரணமாக, ARM) TCG (சிறிய குறியீடு ஜெனரேட்டர்) மாற்றியைப் பயன்படுத்தி இடைநிலை இயங்குதள-சுயாதீனக் குறியீடாக மாற்றப்படுகிறது, பின்னர் இந்த இயங்குதள-சுயாதீனமான பைனரி குறியீடு இலக்கு வழிமுறைகள்/குறியீடாக மாற்றப்படுகிறது (எடுத்துக்காட்டாக, x86).

ARM –> intermediate_code –> x86

முக்கியமாக, Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine) ஐ ஆதரிக்காத பழைய செயலி மாதிரிகள் இருந்தாலும், எந்த ஹோஸ்டிலும் QEMU இல் மெய்நிகர் இயந்திரங்களை இயக்கலாம். இருப்பினும், இந்த விஷயத்தில், TCG (TCG என்பது ஜஸ்ட்-இன்-டைம் கம்பைலர்) ஐப் பயன்படுத்தி இயக்கும் பைனரி குறியீட்டை இரண்டு முறை மீண்டும் தொகுக்க வேண்டும் என்ற உண்மையின் காரணமாக இது மிகவும் மெதுவாக வேலை செய்யும்.

அந்த. QEMU மெகா கூல், ஆனால் அது மிக மெதுவாக வேலை செய்கிறது.

3) பாதுகாப்பு வளையங்கள்

QEMU-KVM இன் பொது இயக்கக் கொள்கைகள்

செயலிகளில் பைனரி நிரல் குறியீடு ஒரு காரணத்திற்காக வேலை செய்கிறது, ஆனால் வெவ்வேறு நிலைகளில் (வளையங்கள் / பாதுகாப்பு வளையங்கள்) பல்வேறு நிலைகளில் தரவு அணுகல் உள்ளது, மிகவும் சிறப்புரிமை (ரிங் 0), மிகவும் வரையறுக்கப்பட்ட, ஒழுங்குபடுத்தப்பட்ட மற்றும் "கொட்டைகள் இறுக்கமாக உள்ளது. ” (மோதிரம் 3).

இயக்க முறைமை (OS கர்னல்) ரிங் 0 (கர்னல் பயன்முறை) இல் இயங்குகிறது மற்றும் எந்த தரவு மற்றும் சாதனங்களுடனும் அது விரும்பியதைச் செய்யலாம். பயனர் பயன்பாடுகள் ரிங் 3 மட்டத்தில் (பயனர் பயன்முறையில்) செயல்படுகின்றன, மேலும் அவர்கள் விரும்பியதைச் செய்ய அனுமதிக்கப்படுவதில்லை, மாறாக ஒரு குறிப்பிட்ட செயல்பாட்டைச் செய்ய ஒவ்வொரு முறையும் அணுகலைக் கோர வேண்டும் (இதனால், பயனர் பயன்பாடுகள் அவற்றின் சொந்த தரவை மட்டுமே அணுகும் மற்றும் "பெற முடியாது. வேறொருவரின் சாண்ட்பாக்ஸில்”). ரிங் 1 மற்றும் 2 இயக்கிகள் பயன்படுத்த நோக்கம்.

இன்டெல் VT-x / AMD SVM கண்டுபிடிப்பதற்கு முன், ஹைப்பர்வைசர்கள் ரிங் 0 இல் இயங்கின, விருந்தினர்கள் ரிங் 1 இல் இயங்கினர். ரிங் 1 க்கு OS இன் இயல்பான செயல்பாட்டிற்கு போதுமான உரிமைகள் இல்லாததால், விருந்தினர் அமைப்பிலிருந்து ஒவ்வொரு சலுகை பெற்ற அழைப்பிலும், ஹைப்பர்வைசர் இந்த அழைப்பை பறக்கும்போது மாற்றியமைத்து ரிங் 0 இல் செயல்படுத்த வேண்டும் (QEMU செய்வது போல). அந்த. விருந்தினர் பைனரி НЕ செயலியில் நேரடியாக செயல்படுத்தப்பட்டது, மேலும் ஒவ்வொரு முறையும் பறக்கும்போது பல இடைநிலை மாற்றங்களைச் சந்தித்தது.

மேல்நிலை குறிப்பிடத்தக்கதாக இருந்தது மற்றும் இது ஒரு பெரிய பிரச்சனையாக இருந்தது, பின்னர் செயலி உற்பத்தியாளர்கள் ஒருவருக்கொருவர் சுயாதீனமாக, விருந்தினர் OS குறியீட்டை இயக்க அனுமதிக்கும் நீட்டிக்கப்பட்ட வழிமுறைகளை (Intel VT-x / AMD SVM) வெளியிட்டனர். நேரடியாக ஹோஸ்ட் செயலியில் (எந்தவொரு விலையுயர்ந்த இடைநிலை படிகளையும் கடந்து, முன்பு இருந்தது போல).

இன்டெல் VT-x / AMD SVM இன் வருகையுடன், ஒரு சிறப்பு புதிய ரிங் லெவல் -1 (கழித்தல் ஒன்று) உருவாக்கப்பட்டது. இப்போது ஹைப்பர்வைசர் அதில் இயங்குகிறது, மேலும் விருந்தினர்கள் ரிங் 0 இல் இயங்குகிறார்கள் மற்றும் CPU க்கு சிறப்பு அணுகலைப் பெறுகிறார்கள்.

அந்த. இறுதியில்:

  • ஹோஸ்ட் ரிங் 0 இல் இயங்குகிறது
  • விருந்தினர்கள் ரிங் 0 இல் வேலை செய்கிறார்கள்
  • ஹைப்பர்வைசர் ரிங் -1 இல் இயங்குகிறது

4) QEMU-KVM

KVM விருந்தினர்களுக்கு ரிங் 0க்கான அணுகலை வழங்குகிறது மற்றும் I/O (செயலி, வட்டுகள், நெட்வொர்க், வீடியோ, PCI, USB, சீரியல் போர்ட்கள் போன்றவை விருந்தினர்கள் "பார்த்து" வேலை செய்யும்) QEMU ஐப் பயன்படுத்துகிறது.

எனவே QEMU-KVM (அல்லது KVM-QEMU) :)

வரவுகளை
கவனத்தை ஈர்க்கும் படம்
பாதுகாப்பு வளையங்களின் படம்

PS இந்த கட்டுரையின் உரை முதலில் டெலிகிராம் சேனலில் வெளியிடப்பட்டது @RU_Voip சேனல் பங்கேற்பாளர்களில் ஒருவரின் கேள்விக்கு பதில்.

நான் தலைப்பைச் சரியாகப் புரிந்து கொள்ளாத அல்லது சேர்க்க ஏதேனும் இருந்தால் கருத்துகளில் எழுதவும்.

நன்றி!

ஆதாரம்: www.habr.com

கருத்தைச் சேர்