የ QEMU-KVM አሠራር አጠቃላይ መርሆዎች

የ QEMU-KVM አሠራር አጠቃላይ መርሆዎች

አሁን ያለኝ ግንዛቤ፡-

1) KVM

KVM (ከርነል ላይ የተመሰረተ ቨርቹዋል ማሽን) በሊኑክስ ኦኤስ ላይ እንደ ሞጁል የሚሰራ hypervisor (VMM - Virtual Machine Manager) ነው። አንዳንድ ሶፍትዌሮችን በሌለበት (ምናባዊ) አካባቢ ለማሄድ እና በተመሳሳይ ጊዜ ይህ ሶፍትዌር የሚሰራበትን ትክክለኛ አካላዊ ሃርድዌር ከዚህ ሶፍትዌር ለመደበቅ ሃይፐርቫይዘር ያስፈልጋል። ሃይፐርቫይዘር በአካላዊ ሃርድዌር (አስተናጋጅ) እና በቨርቹዋል ኦኤስ (እንግዳ) መካከል እንደ "spacer" ይሰራል።

KVM የሊኑክስ ከርነል መደበኛ ሞጁል ስለሆነ ሁሉንም አስፈላጊ ነገሮች ከከርነል ይቀበላል (የማስታወሻ አስተዳደር ፣ የጊዜ ሰሌዳ ፣ ወዘተ)። እና በዚህ መሠረት ፣ በመጨረሻ ፣ እነዚህ ሁሉ ጥቅሞች ለእንግዶች ይሄዳሉ (እንግዶች በሊኑክስ ኦኤስ ከርነል ላይ በሚሰራ hypervisor ላይ ስለሚሠሩ)።

KVM በጣም ፈጣን ነው ፣ ግን በራሱ ቨርቹዋል ስርዓተ ክወናን ለማሄድ በቂ አይደለም ፣ ምክንያቱም… ይህ I/O መኮረጅ ያስፈልገዋል። ለአይ/ኦ (ሲፒዩ፣ ዲስኮች፣ ኔትወርክ፣ ቪዲዮ፣ ፒሲ፣ ዩኤስቢ፣ ተከታታይ ወደቦች፣ ወዘተ.) KVM QEMU ይጠቀማል።

2) QEMU

QEMU (ፈጣን ኢሙሌተር) ለአንድ አርክቴክቸር የተነደፉ ኦፕሬቲንግ ሲስተሞችን በሌላ (ለምሳሌ ARM -> x86) እንዲያሄዱ የሚያስችልዎ ለተለያዩ መሳሪያዎች ኢሙሌተር ነው። ከአቀነባባሪው በተጨማሪ QEMU የተለያዩ ተጓዳኝ መሳሪያዎችን ይኮርጃል-የአውታረ መረብ ካርዶች ፣ ኤችዲዲ ፣ የቪዲዮ ካርዶች ፣ PCI ፣ USB ፣ ወዘተ.

እንደሚከተለው ይሰራል።

መመሪያዎች/ሁለትዮሽ ኮድ (ለምሳሌ ARM) TCG (ጥቃቅን ኮድ ጀነሬተር) መቀየሪያን በመጠቀም ወደ መካከለኛ መድረክ-ገለልተኛ ኮድ ይቀየራሉ ከዚያም ይህ ከመድረክ-ነጻ የሆነ የሁለትዮሽ ኮድ ወደ ኢላማ መመሪያዎች/ ኮድ (ለምሳሌ x86) ይቀየራል።

ARM -> መካከለኛ_ኮድ -> x86

በመሠረቱ ኢንቴል VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine) በማይደግፉ የቆዩ ፕሮሰሰር ሞዴሎችም ቢሆን በማንኛውም አስተናጋጅ ላይ በQEMU ላይ ቨርቹዋል ማሽኖችን ማሄድ ይችላሉ። ሆኖም ፣ በዚህ ሁኔታ ፣ በ TCG (TCG Just-in-Time compiler) በመጠቀም የሁለትዮሽ ኮድ ሁለት ጊዜ በራሪ ላይ እንደገና ማጠናቀር ስለሚያስፈልገው በጣም በዝግታ ይሠራል።

እነዚያ። QEMU ራሱ ሜጋ አሪፍ ነው፣ ግን በጣም በዝግታ ይሰራል።

3) የመከላከያ ቀለበቶች

የ QEMU-KVM አሠራር አጠቃላይ መርሆዎች

በአቀነባባሪዎች ላይ ያለው የሁለትዮሽ ፕሮግራም ኮድ በምክንያት ይሰራል ነገር ግን በተለያዩ ደረጃዎች (ቀለበቶች / መከላከያ ቀለበቶች) በተለያዩ የመረጃ ተደራሽነት ደረጃዎች ፣ በጣም ልዩ መብት ካለው (ቀለበት 0) ፣ እስከ በጣም ውስን ፣ ቁጥጥር እና “ለውዝ በማጥበቅ ላይ ይገኛል ” (ቀለበት 3)

ኦፕሬቲንግ ሲስተም (OS kernel) በ Ring 0 (የከርነል ሞድ) ላይ ይሰራል እና በማንኛውም ዳታ እና መሳሪያዎች የፈለገውን ማድረግ ይችላል። የተጠቃሚ አፕሊኬሽኖች የሚሠሩት በሪንግ 3 ደረጃ (የተጠቃሚ ሞድ) ነው እና የፈለጉትን እንዲያደርጉ አይፈቀድላቸውም ፣ ግን ይልቁንስ አንድን የተወሰነ ተግባር ለማከናወን በእያንዳንዱ ጊዜ መዳረሻ መጠየቅ አለባቸው (ስለዚህ የተጠቃሚ አፕሊኬሽኖች የራሳቸው መረጃ ብቻ ናቸው እና ማግኘት አይችሉም) ወደ ሌላ ሰው ማጠሪያ)። ቀለበት 1 እና 2 በአሽከርካሪዎች ለመጠቀም የታሰቡ ናቸው።

ኢንቴል VT-x / AMD SVM መፈልሰፍ በፊት, hypervisors Ring 0 ላይ ሮጡ, እና እንግዶች ቀለበት 1 ላይ ሮጡ. Ring 1 መደበኛ ስርዓተ ክወና የሚሆን በቂ መብቶች ስለሌለው ከእንግዶች ሥርዓት እያንዳንዱ ልዩ ጥሪ ጋር, የ. ሃይፐርቫይዘር ይህን ጥሪ በበረራ ላይ አስተካክሎ Ring 0 ላይ (ልክ QEMU እንደሚያደርገው) ማስፈጸም ነበረበት። እነዚያ። እንግዳ ሁለትዮሽ አይደለም በቀጥታ በማቀነባበሪያው ላይ ተፈጽሟል, እና በእያንዳንዱ ጊዜ በበረራ ላይ ብዙ መካከለኛ ማሻሻያዎችን አልፏል.

ክፍያው በጣም አስፈላጊ ነበር እና ይህ ትልቅ ችግር ነበር ፣ እና የአቀነባባሪዎች አምራቾች ፣ አንዳቸው ከሌላው ተለይተው ፣ የእንግዳ ስርዓተ ክወና ኮድን ለማስፈፀም የሚያስችል የተራዘመ መመሪያዎችን (Intel VT-x / AMD SVM) አውጥተዋል ። በቀጥታ በአስተናጋጁ ፕሮሰሰር ላይ (ከዚህ በፊት እንደነበረው ማንኛውንም ውድ የሆኑ መካከለኛ ደረጃዎችን ማለፍ)።

ኢንቴል VT-x / AMD SVM መምጣት ጋር, ልዩ አዲስ Ring ደረጃ -1 (አንድ ሲቀነስ) ተፈጠረ. እና አሁን ሃይፐርቫይዘር በላዩ ላይ ይሰራል፣ እና እንግዶቹ ቀለበት 0 ላይ ይሮጣሉ እና ወደ ሲፒዩ ልዩ መብት ያገኛሉ።

እነዚያ። በመጨረሻ፡-

  • አስተናጋጁ ቀለበት 0 ላይ ይሰራል
  • እንግዶች ቀለበት 0 ላይ ይሰራሉ
  • hypervisor Ring -1 ላይ ይሰራል

4) QEMU-KVM

KVM ለእንግዶች የቀለበት 0 መዳረሻ ይሰጣል እና I/O (ፕሮሰሰር፣ ዲስኮች፣ አውታረ መረብ፣ ቪዲዮ፣ ፒሲ፣ ዩኤስቢ፣ ተከታታይ ወደቦች፣ ወዘተ. እንግዶች “ያያሉ” እና አብረው የሚሰሩትን) ለመምሰል QEMU ይጠቀማል።

ስለዚህ QEMU-KVM (ወይም KVM-QEMU) :)

ክሬዲት
ትኩረትን ለመሳብ ስዕል
የጥበቃ ቀለበቶች ምስል

PS የዚህ ጽሁፍ ጽሑፍ በመጀመሪያ የታተመው በቴሌግራም ቻናል ነው። @RU_Voip ከሰርጡ ተሳታፊዎች ለአንዱ ጥያቄ እንደ መልስ።

ርዕሱን በትክክል ያልገባኝ ወይም የሚጨምረው ነገር ካለ በአስተያየቶቹ ውስጥ ይፃፉ።

እናመሰግናለን!

ምንጭ: hab.com

አስተያየት ያክሉ