Միջուկի վրա հիմնված վիրտուալ մեքենա
![]() | |
![]() | |
Սկզբնական ստեղծող(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]
Ներքին սարքերավորումներ
[խմբագրել | խմբագրել կոդը]
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 սարքի էմուլյացիայի համար:
ԿՎՄ-ը ապահովում է հետևյալ նմանակված սարքերը.
Գրաֆիկական կառավարման գործիքներ
[խմբագրել | խմբագրել կոդը]
- 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-ին.
Արտաքին հղումներ
[խմբագրել | խմբագրել կոդը]- Լավագույն փորձը միջուկի վրա հիմնված վիրտուալ մեքենայի համար, Արխիվացված 2019-11-06 Wayback Machine ում</link>, IBM, երկրորդ հրատարակություն, ապրիլ 2012 թ
- Virtio-blk Performance Improvement, KVM Forum 2012, Նոյեմբեր 8, 2012, Ասիա Հի կողմից
- Wikibook QEMU & KVM
- crosvm - Chrome OS վիրտուալ մեքենայի մոնիտոր
- Firecracker VMM KVM-ի համար
Ծանոթագրություններ
[խմբագրել | խմբագրել կոդը]- ↑ 1,0 1,1 «Linux kernel 2.6.20, Section 2.2. Virtualization support through KVM». kernelnewbies.org. 2007 թ․ փետրվարի 5. Վերցված է 2014 թ․ հունիսի 16-ին.
- ↑ KVM FAQ: What do I need to use KVM?
- ↑ «FreeBSD Quarterly Status Report: Porting Linux KVM to FreeBSD».
- ↑ «KVM on illumos».
- ↑ Gmane Loom Արխիվացված 2007-09-29 Wayback Machine
- ↑ «KVM/ARM Open Source Project». Արխիվացված է օրիգինալից 2013 թ․ մարտի 10-ին. Վերցված է 2017 թ․ նոյեմբերի 1-ին.
- ↑ 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.
- ↑ «kernel/git/torvalds/linux.git: KVM: ia64: remove».
- ↑ «KVM wiki: Guest support status». Վերցված է 2007 թ․ մայիսի 27-ին.
- ↑ «Running Mac OS X as a QEMU/KVM Guest». Վերցված է 2014 թ․ օգոստոսի 20-ին.
- ↑ «status». Gnu.org. Վերցված է 2014 թ․ փետրվարի 12-ին.
- ↑ «Guest Support Status - KVM». Linux-kvm.org. Վերցված է 2014 թ․ փետրվարի 12-ին.
- ↑ «OpenBSD man page virtio(4)». Վերցված է 2018 թ․ փետրվարի 4-ին.
- ↑ «virtio binary packages for FreeBSD». Վերցված է 2012 թ․ հոկտեմբերի 29-ին.
- ↑ «NetBSD man page virtio(4)». Արխիվացված է օրիգինալից 2019 թ․ նոյեմբերի 13-ին. Վերցված է 2013 թ․ հուլիսի 15-ին.
- ↑ «plan9front». Վերցված է 2013 թ․ փետրվարի 11-ին.
- ↑ «An API for virtual I/O: virtio». LWN.net. 2007 թ․ հուլիսի 11. Վերցված է 2014 թ․ ապրիլի 16-ին.
- ↑ «SCSI target for KVM wiki». linux-iscsi.org. 2012 թ․ օգոստոսի 7. Արխիվացված է օրիգինալից 2020 թ․ հունիսի 5-ին. Վերցված է 2012 թ․ օգոստոսի 12-ին.
- ↑ «Red Hat Advances Virtualization Leadership with Qumranet, Inc. Acquisition». Red Hat. 2008 թ․ սեպտեմբերի 4. Վերցված է 2015 թ․ հունիսի 16-ին.
- ↑ «KVM 15 equipped with live migration | IT World Canada News». 2007 թ․ մարտի 7.
- ↑ Libby Clark (2015 թ․ ապրիլի 7). «Git Success Stories and Tips from KVM Maintainer Paolo Bonzini». Linux.com. Արխիվացված է օրիգինալից 2016 թ․ մարտի 15-ին. Վերցված է 2015 թ․ հունիսի 17-ին.
- ↑ «SeaBIOS». seabios.org. 2013 թ․ դեկտեմբերի 21. Վերցված է 2014 թ․ հունիսի 16-ին.
- ↑ «Hot Plugging Virtual CPUs with Red Hat Enterprise Virtualization Manager».
- ↑ «Faq - KVM».
- ↑ «KVM-15 release [LWN.net]».
- ↑ «Migration - KVM».
- ↑ «Daniel P. Berrangé » Blog Archive » Analysis of techniques for ensuring migration completion with KVM».
- ↑ «The Definitive KVM (Kernel-based Virtual Machine) API Documentation — the Linux Kernel documentation».
- ↑ «Linux kernel licensing rules — The Linux Kernel documentation». www.kernel.org. Արխիվացված օրիգինալից 2020 թ․ մարտի 7-ին. Վերցված է 2020 թ․ հունվարի 6-ին.