Կերնելի վրա հիմնված վիրտուալ մեքենա, (ԿՎՄ) (անգլերեն՝ 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]
ԿՎՄ/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 սարքի էմուլյացիայի համար:
Kimchi – վեբ վրա հիմնված վիրտուալացման կառավարման գործիք KVM-ի համար
Virtual Machine Manager – աջակցում է KVM-ի վրա հիմնված վիրտուալ մեքենաների ստեղծմանը, խմբագրմանը, գործարկմանը և դադարեցմանը, ինչպես նաև վիրտուալ մեքենաների կենդանի կամ սառը քաշել և թողնել միգրացիան հոսթերների միջև:
Proxmox Virtual Environment – բաց կոդով վիրտուալացման կառավարման փաթեթ, ներառում է KVM և LXC : Այն ունի մերկ ֆիզիկական տեղադրող, վեբ վրա հիմնված հեռակառավարման միջերես, HA կլաստերային կույտ, միասնական պահեստ, ճկուն ցանց և կամընտիր կոմերցիոն աջակցություն:
OpenQRM – կառավարման հարթակ տվյալների կենտրոնների տարասեռ ենթակառուցվածքների կառավարման համար
GNOME Boxes – Gnome ինտերֆեյս Linux-ում libvirt հյուրերին կառավարելու համար
oVirt – բաց կոդով վիրտուալացման կառավարման գործիք KVM-ի համար, որը կառուցված է libvirt-ի վրա