QEMU-KVM جا جنرل آپريٽنگ اصول

QEMU-KVM جا جنرل آپريٽنگ اصول

منهنجي موجوده سمجھ:

1) ڪي وي ايم

KVM (Kernel-based Virtual Machine) هڪ هائپر وائزر آهي (VMM - ورچوئل مشين مئنيجر) لينڪس او ايس تي ماڊل جي طور تي هلندڙ آهي. ڪنهن سافٽ ويئر کي غير موجود (مجازي) ماحول ۾ هلائڻ لاءِ هڪ هائپر وائزر جي ضرورت آهي ۽ ساڳئي وقت هن سافٽ ويئر کان حقيقي جسماني هارڊويئر کي لڪائڻ لاءِ جنهن تي هي سافٽ ويئر هلندو آهي. هائپرائزر جسماني هارڊويئر (ميزبان) ۽ ورچوئل او ايس (مهمان) جي وچ ۾ ”اسپيسر“ طور ڪم ڪري ٿو.

جيئن ته KVM لينڪس ڪنيل جو هڪ معياري ماڊل آهي، اهو سڀ گهربل شيون حاصل ڪري ٿو ڪرنل (ميموري مئنيجمينٽ، شيڊولر، وغيره). ۽ انهي جي مطابق، آخر ۾، اهي سڀئي فائدا مهمانن ڏانهن ويندا آهن (جيئن ته مهمان هڪ هائپر وائيزر تي ڪم ڪن ٿا جيڪو لينڪس او ايس ڪنييل تي هلندو آهي).

KVM تمام تيز آهي، پر پاڻ طرفان اهو هڪ مجازي OS هلائڻ لاء ڪافي ناهي، ڇاڪاڻ ته ... ان لاءِ I/O ايموليشن جي ضرورت آهي. I/O لاءِ (سي پي يو، ڊسڪ، نيٽ ورڪ، وڊيو، پي سي آءِ، يو ايس بي، سيريل پورٽس وغيره) KVM استعمال ڪري ٿو QEMU.

2) QEMU

QEMU (Quick Emulator) مختلف ڊوائيسز لاءِ هڪ ايموليٽر آهي جيڪو توهان کي آپريٽنگ سسٽم هلائڻ جي اجازت ڏئي ٿو جيڪو هڪ فن تعمير لاءِ ٺهيل آهي ٻئي تي (مثال طور، ARM -> x86). پروسيسر کان علاوه، QEMU مختلف پردي ڊوائيسز کي نقل ڪري ٿو: نيٽ ورڪ ڪارڊ، HDD، وڊيو ڪارڊ، PCI، USB، وغيره.

اهو هن طرح ڪم ڪري ٿو:

ھدايتون/بائنري ڪوڊ (مثال طور، ARM) TCG (Tiny Code Generator) ڪنورٽر استعمال ڪندي وچولي پليٽ فارم-آزاد ڪوڊ ۾ تبديل ڪيا ويندا آھن ۽ پوءِ ھي پليٽ فارم-آزاد بائنري ڪوڊ ھدف جي ھدايتن/ڪوڊ ۾ تبديل ڪيو ويندو آھي (مثال طور، x86).

ARM -> intermediate_code -> x86

لازمي طور تي، توهان ڪنهن به ميزبان تي QEMU تي ورچوئل مشينون هلائي سگهو ٿا، جيتوڻيڪ پراڻن پروسيسر ماڊلن سان جيڪي سپورٽ نٿا ڪن Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). بهرحال، هن معاملي ۾، اهو تمام سست ڪم ڪندو، حقيقت اها آهي ته عمل ڪرڻ واري بائنري ڪوڊ کي فلائي تي ٻه ڀيرا ٻيهر ٺاهڻ جي ضرورت آهي، TCG استعمال ڪندي (TCG هڪ Just-in-time compiler آهي).

اهي. QEMU پاڻ ميگا ٿڌو آهي، پر اهو تمام سست ڪم ڪري ٿو.

3) حفاظتي انگ اکر

QEMU-KVM جا جنرل آپريٽنگ اصول

پروسيسرز تي بائنري پروگرام ڪوڊ هڪ سبب لاء ڪم ڪري ٿو، پر مختلف سطحن تي واقع آهي (رنگز / پروٽيڪشن رِنگز) ڊيٽا جي رسائي جي مختلف سطحن سان، سڀ کان وڌيڪ مراعات يافته (رنگ 0) کان وٺي، سڀ کان وڌيڪ محدود، ضابطي ۽ ”نٽ سختي سان. " (انگو 3).

آپريٽنگ سسٽم (OS kernel) Ring 0 (kernel mode) تي هلندو آهي ۽ اهو ڪري سگهي ٿو جيڪو چاهي اهو ڪنهن به ڊيٽا ۽ ڊوائيسز سان. استعمال ڪندڙ ايپليڪيشنون Ring 3 سطح (يوزر موڊ) تي ڪم ڪن ٿيون ۽ انهن کي جيڪو ڪجهه ڪرڻ جي اجازت ناهي، پر ان جي بدران هر دفعي رسائي جي درخواست ڪرڻ گهرجي هڪ خاص آپريشن کي انجام ڏيڻ لاءِ (اهڙيءَ طرح، صارف ايپليڪيشنن کي صرف پنهنجي ڊيٽا تائين رسائي هوندي آهي ۽ حاصل نه ٿي سگهنديون آهن. ڪنهن ٻئي جي سينڊ باڪس ۾). انگ 1 ۽ 2 ڊرائيورن جي استعمال لاءِ آهن.

Intel VT-x/AMD SVM جي ايجاد کان اڳ، هائپر وائزر Ring 0 تي هلندا هئا ۽ مهمان Ring 1 تي هلندا هئا. ڇاڪاڻ ته Ring 1 وٽ OS جي عام آپريشن لاءِ ڪافي حق نه آهن، ان ڪري مهمان سسٽم مان هر مراعات يافته ڪال سان، hypervisor کي هن ڪال کي اڏامڻ تي تبديل ڪرڻو پوندو هو ۽ ان کي رنگ 0 تي عمل ڪرڻو پوندو هو (گهڻو ڪري QEMU ڪندو آهي). اهي. مهمان بائنري نه سڌو سنئون پروسيسر تي عمل ڪيو ويو، ۽ هر ڀيري پرواز تي ڪيترن ئي وچولي تبديلين جي ذريعي گذريو.

اوور هيڊ اهم هو ۽ اهو هڪ وڏو مسئلو هو، ۽ پوءِ پروسيسر ٺاهيندڙن، هڪ ٻئي کان آزاديءَ سان، هدايتن جو هڪ وڌايل سيٽ جاري ڪيو (Intel VT-x / AMD SVM) جنهن کي مهمان OS ڪوڊ تي عمل ڪرڻ جي اجازت ڏني وئي. سڌو سنئون ميزبان پروسيسر تي (ڪنهن به قيمتي وچولي قدمن کي نظرانداز ڪندي، جيئن اڳ ۾ ڪيس هو).

Intel VT-x / AMD SVM جي آمد سان، ھڪڙو خاص نئون رنگ ليول -1 (مائنس ون) ٺاھيو ويو. ۽ ھاڻي ھائيپروائزر ان تي ھلندو آھي، ۽ مھمان رِنگ 0 تي ھلندا آھن ۽ سي پي يو تائين خصوصي رسائي حاصل ڪندا آھن.

اهي. آخرڪار:

  • ميزبان رنگ 0 تي هلندو آهي
  • مهمان Ring 0 تي ڪم ڪن ٿا
  • hypervisor Ring-1 تي هلندو آهي

4) QEMU-KVM

KVM مهمانن کي رنگ 0 تائين رسائي ڏئي ٿو ۽ QEMU استعمال ڪري ٿو I/O (پروسيسر، ڊسڪ، نيٽ ورڪ، وڊيو، PCI، USB، سيريل بندرگاهن، وغيره. جيڪي مهمان ”ڏس“ ۽ ڪم ڪن ٿا).

ان ڪري QEMU-KVM (يا KVM-QEMU) :)

CREDITS
ڌيان ڇڪائڻ لاء تصوير
حفاظتي رنگ جي تصوير

P.S. هن مضمون جو متن اصل ۾ ٽيليگرام چينل ۾ شايع ڪيو ويو @RU_Voip چينل جي شرڪت ڪندڙن مان هڪ سوال جي جواب جي طور تي.

تبصرن ۾ لکو جتي مون کي موضوع صحيح طور تي سمجھ ۾ نه اچي يا جيڪڏهن ڪجهه شامل ڪرڻ لاء آهي.

مهرباني

جو ذريعو: www.habr.com

تبصرو شامل ڪريو