Միջուկի վրա հիմնված վիրտուալ մեքենա

Սկզբնական ստեղծող(s) Qumranet
Ծրագրավորող(ներ) Linux Kernel-ի համայնք
Շտեմարան
Գրված է C
Օպերացիոն համակարգ Unix-like
Պլատֆորմ ARM, PowerPC, ESA/390, IA-32, x86-64
Տիպ Hypervisor
Լիցենզիա GNU GPL or LGPL
Կայք linux-kvm.org

Կերնելի վրա հիմնված վիրտուալ մեքենա, (ԿՎՄ) (անգլերեն՝ Kernel-based Virtual Machine (KVM)) Linux կերնելում անվճար և բաց կոդով վիրտուալացման մոդուլ, որը թույլ է տալիս կերնելին գործել որպես հիպերվիզոր (hypervisor): Այն միացվել է հիմնական Linux կերնելին 2.6.20 թողարկումով, որը թողարկվել է 2007 թվականի փետրվարի 5-ին[1] KVM-ին անհրաժեշտ է ապարատային վիրտուալացման ընդլայնումներով պրոցեսոր, ինչպիսիք են Intel VT-ն կամ AMD-V-ն :[2] ԿՎՄ-ն նաև տեղափոխվել է այլ օպերացիոն համակարգեր, ինչպիսիք են FreeBSD[3] և illumos[4] ՝ բեռնվող կերնելի մոդուլների տեսքով։

ԿՎՄ-ն ի սկզբանե նախատեսված էր x86 պրոցեսորների համար, սակայն այն ժամանակից ի վեր տարբերակվեց ESA/390, PowerPC,[5] IA-64 և ARM :[6][7] IA-64-ի տարբերակը հեռացվել է թողարկումների ցանկից 2014 թվականին[8]

ԿՎՄ-ն աջակցում է վիրտուալացմանը հյուր օպերացիոն համակարգերի լայն տեսականիով, նեռարում է BSD, Solaris, Windows, Haiku, ReactOS, Plan 9, AROS, macOS և նաև այլ Linux համակարգեր:[9][10] Բացի այդ, հայտնի է, որ Android 2.2, GNU/Hurd[11] ( Debian K16), Minix 3.1.2a, Solaris 10 U3 և Darwin 8.0.1, այլ օպերացիոն համակարգերի և թվարկված որոշ ավելի նոր տարբերակների հետ որոշակի քանակի սահմանափակումներով աշխատում է։[12]

Բացի այդ, ԿՎՄ-ն ապահովում է պարավիրտուալացման աջակցություն Linux, OpenBSD,[13] FreeBSD,[14] NetBSD,[15] Plan 9[16] և Windows հյուր համակարգերի համար՝ օգտագործելով VirtIO API-ն:[17] Սա ներառում է պարավիրտուալ Ethernet քարտ, սկավառակի I/O կարգավորիչ,[18] օդապարիկ դրայվեր (balloon driver) և VGA գրաֆիկական ինտերֆեյս՝ օգտագործելով SPICE կամ VMware դրայվերներ:

Avi Kivity-ը սկսեց KVM-ի զարգացումը 2006 թվականի կեսերից Qumranet- ում՝ տեխնոլոգիական ստարտափ ընկերությունում, որը ձեռք էր բերվել Red Hat-ի կողմից 2008 թվականին։[19]

ԿՎՄ-ը առաջացել է 2006 թվականի հոկտեմբերին[20] և միաձուլվել է Linux կերնելի հիմնական գծի կերնելի 2.6.20 տարբերակում, որը թողարկվել է 2007 թվականի փետրվարի 5-ին[1]

KVM-ն պահպանում է Պաոլո Բոնզինին:[21]

Ներքին սարքերավորումներ

[խմբագրել | խմբագրել կոդը]
ԿՎՄ/QEMU վիրտուալացման միջավայրի բարձր մակարդակի ակնարկ։

KVM-ը ապահովում է սարքերիԿաղապար:ԿՎՄ աբստրակցիա, բայց ոչ պրոցեսորի էմուլյացիա: Այն առաջացնում է է /dev/kvm ինտերֆեյս, որն այնուհետև օգտատիոջ ռեժիմի հոսթորդը կարող է օգտագործել՝

  • Կարգավորեք հյուրի ՎՄ-ի հասցեների տարածքը: Հյուրընկալողը պետք է նաև տրամադրի որոնվածի պատկեր (սովորաբար անհատական BIOS, երբ ԱՀ-ները նմանակում են), որը հյուրը կարող է օգտագործել իր հիմնական ՕՀ-ում բեռնաթափելու համար:
  • Տրամադրեք հյուրին նմանակված I/O:
  • Հյուրի էկրանի ցուցադրումը ավելացրեք համակարգի հոսթի վրա:

Ի սկզբանե, QEMU-ի պատառաքաղված (forked) տարբերակը տրամադրվել էր հյուրերին էմուլացնելու և ապարատային էմուլյացիայի հետ աշխատելու համար, որը չէի կառավարվում կերնելի կողմից: Այդ աջակցությունը, ի վերջո, միաձուլվեց վերին նախագծին: Այժմ կան բազմաթիվ վիրտուալ մեքենաների մոնիտորներ (ՎՄՄ), որոնք կարող են օգտագործել ԿՎՄ ինտերֆեյսը, ներառյալ kvmtool-ը, crosvm-ը և Firecracker-ը և բազմաթիվ մասնագիտացված ՎՄՄ-ներ, որոնք կառուցված են այնպիսի շրջանակներով, ինչպիսիք են rust-վմմ-ն:

Ներքին առումով, ԿՎՄ-ը օգտագործում է SeaBIOS-ը որպես 16-բիթանոց x86 BIOS բաց կոդով իրականացում:[22]

Առանձնահատկություններ

[խմբագրել | խմբագրել կոդը]

ԿՎՄ-ը աջակցում է "տաք" փոխանակվող (hot swappable) vCPU-ներին,[23] դինամիկ հիշողության կառավարմանը,[24] և Live Migration-ին 2007 թվականի փետրվարից[25][26] : Այն նաև նվազեցնում է հիշողության միգրացիաների գործընթացի վրա հիշողությունը գրելու ինտենսիվ աշխատանքային բեռների ազդեցությունը:[27]

Էմուլացված սարքավորում

[խմբագրել | խմբագրել կոդը]

ԿՎՄ-ն ինքն իրեն էմուլացնում է շատ քիչ սարքավորում՝ փոխարենը տեղափոխելով ավելի բարձր մակարդակի հավելված, ինչպիսին է QEMU, crosvm կամ Firecracker սարքի էմուլյացիայի համար:

ԿՎՄ-ը ապահովում է հետևյալ նմանակված սարքերը.

Գրաֆիկական կառավարման գործիքներ

[խմբագրել | խմբագրել կոդը]
libvirt-ն աջակցում է KVM-ին
  • Kimchi – վեբ վրա հիմնված վիրտուալացման կառավարման գործիք KVM-ի համար
  • Virtual Machine Manager – աջակցում է KVM-ի վրա հիմնված վիրտուալ մեքենաների ստեղծմանը, խմբագրմանը, գործարկմանը և դադարեցմանը, ինչպես նաև վիրտուալ մեքենաների կենդանի կամ սառը քաշել և թողնել միգրացիան հոսթերների միջև:
  • Proxmox Virtual Environment – բաց կոդով վիրտուալացման կառավարման փաթեթ, ներառում է KVM և LXC : Այն ունի մերկ ֆիզիկական տեղադրող, վեբ վրա հիմնված հեռակառավարման միջերես, HA կլաստերային կույտ, միասնական պահեստ, ճկուն ցանց և կամընտիր կոմերցիոն աջակցություն:
  • OpenQRM – կառավարման հարթակ տվյալների կենտրոնների տարասեռ ենթակառուցվածքների կառավարման համար
  • GNOME Boxes – Gnome ինտերֆեյս Linux-ում libvirt հյուրերին կառավարելու համար
  • oVirt – բաց կոդով վիրտուալացման կառավարման գործիք KVM-ի համար, որը կառուցված է libvirt-ի վրա

Լիցենզավորում

[խմբագրել | խմբագրել կոդը]

ԿՎՄ-ի կերնելի ռեժիմի բաղադրիչը Linux կերնելի մի մասն է, որը լիցենզավորված է GNU Ընդհանուր հանրային լիցենզիայի 2-րդ տարբերակով :[29]

Մատենագիտություն

[խմբագրել | խմբագրել կոդը]
  • Amit Shah (2016 թ․ նոյեմբերի 2). «Ten years of KVM». lwn.net. Վերցված է 2017 թ․ փետրվարի 10-ին.

Արտաքին հղումներ

[խմբագրել | խմբագրել կոդը]

Ծանոթագրություններ

[խմբագրել | խմբագրել կոդը]
  1. 1,0 1,1 «Linux kernel 2.6.20, Section 2.2. Virtualization support through KVM». kernelnewbies.org. 2007 թ․ փետրվարի 5. Վերցված է 2014 թ․ հունիսի 16-ին.
  2. KVM FAQ: What do I need to use KVM?
  3. «FreeBSD Quarterly Status Report: Porting Linux KVM to FreeBSD».
  4. «KVM on illumos».
  5. Gmane Loom Արխիվացված 2007-09-29 Wayback Machine
  6. «KVM/ARM Open Source Project». Արխիվացված է օրիգինալից 2013 թ․ մարտի 10-ին. Վերցված է 2017 թ․ նոյեմբերի 1-ին.
  7. Christoffer Dall; Jason Nieh (2014). «KVM/ARM: The Design and Implementation of the Linux ARM Hypervisor». ACM International Conference on Architectural Support for Programming Languages and Operating Systems.
  8. «kernel/git/torvalds/linux.git: KVM: ia64: remove».
  9. «KVM wiki: Guest support status». Վերցված է 2007 թ․ մայիսի 27-ին.
  10. «Running Mac OS X as a QEMU/KVM Guest». Վերցված է 2014 թ․ օգոստոսի 20-ին.
  11. «status». Gnu.org. Վերցված է 2014 թ․ փետրվարի 12-ին.
  12. «Guest Support Status - KVM». Linux-kvm.org. Վերցված է 2014 թ․ փետրվարի 12-ին.
  13. «OpenBSD man page virtio(4)». Վերցված է 2018 թ․ փետրվարի 4-ին.
  14. «virtio binary packages for FreeBSD». Վերցված է 2012 թ․ հոկտեմբերի 29-ին.
  15. «NetBSD man page virtio(4)». Արխիվացված է օրիգինալից 2019 թ․ նոյեմբերի 13-ին. Վերցված է 2013 թ․ հուլիսի 15-ին.
  16. «plan9front». Վերցված է 2013 թ․ փետրվարի 11-ին.
  17. «An API for virtual I/O: virtio». LWN.net. 2007 թ․ հուլիսի 11. Վերցված է 2014 թ․ ապրիլի 16-ին.
  18. «SCSI target for KVM wiki». linux-iscsi.org. 2012 թ․ օգոստոսի 7. Արխիվացված է օրիգինալից 2020 թ․ հունիսի 5-ին. Վերցված է 2012 թ․ օգոստոսի 12-ին.
  19. «Red Hat Advances Virtualization Leadership with Qumranet, Inc. Acquisition». Red Hat. 2008 թ․ սեպտեմբերի 4. Վերցված է 2015 թ․ հունիսի 16-ին.
  20. «KVM 15 equipped with live migration | IT World Canada News». 2007 թ․ մարտի 7.
  21. Libby Clark (2015 թ․ ապրիլի 7). «Git Success Stories and Tips from KVM Maintainer Paolo Bonzini». Linux.com. Արխիվացված է օրիգինալից 2016 թ․ մարտի 15-ին. Վերցված է 2015 թ․ հունիսի 17-ին.
  22. «SeaBIOS». seabios.org. 2013 թ․ դեկտեմբերի 21. Վերցված է 2014 թ․ հունիսի 16-ին.
  23. «Hot Plugging Virtual CPUs with Red Hat Enterprise Virtualization Manager».
  24. «Faq - KVM».
  25. «KVM-15 release [LWN.net]».
  26. «Migration - KVM».
  27. «Daniel P. Berrangé » Blog Archive » Analysis of techniques for ensuring migration completion with KVM».
  28. «The Definitive KVM (Kernel-based Virtual Machine) API Documentation — the Linux Kernel documentation».
  29. «Linux kernel licensing rules — The Linux Kernel documentation». www.kernel.org. Արխիվացված օրիգինալից 2020 թ․ մարտի 7-ին. Վերցված է 2020 թ․ հունվարի 6-ին.