Ang proyekto ng NetBSD ay bumubuo ng isang bagong NVMM hypervisor

Mga Developer ng NetBSD Project inihayag tungkol sa paglikha ng bagong hypervisor at ang nauugnay na virtualization stack, na kasama na sa pang-eksperimentong NetBSD-kasalukuyang sangay at iaalok sa stable na release ng NetBSD 9. Ang NVMM ay kasalukuyang limitado sa pagsuporta sa x86_64 architecture at nagbibigay ng dalawang backend para sa pagpapagana ng mga mekanismo ng virtualization ng hardware: x86-SVM na may suporta para sa AMD at x86-VMX CPU virtualization extension para sa mga Intel CPU. Sa kasalukuyang anyo nito, posibleng magpatakbo ng hanggang 128 virtual machine sa isang host, bawat isa ay maaaring ilaan ng hanggang 256 virtual processor core (VCPU) at 128 GB ng RAM.

Kasama sa NVMM ang isang driver na tumatakbo sa antas ng kernel ng system at nag-coordinate ng access sa mga mekanismo ng virtualization ng hardware, at isang Libnvmm stack na tumatakbo sa espasyo ng user. Ang pakikipag-ugnayan sa pagitan ng mga bahagi ng kernel at espasyo ng gumagamit ay isinasagawa sa pamamagitan ng IOCTL. Ang isang tampok ng NVMM na naiiba ito sa mga hypervisors tulad ng KVM ay HAXM at Bhyve, ay na sa antas ng kernel lamang ang pinakamababang kinakailangang hanay ng mga binding sa paligid ng mga mekanismo ng virtualization ng hardware ay ginaganap, at ang lahat ng hardware emulation code ay inilipat sa labas ng kernel patungo sa espasyo ng gumagamit. Binibigyang-daan ka ng diskarteng ito na bawasan ang dami ng code na naisakatuparan nang may mataas na mga pribilehiyo at bawasan ang panganib na makompromiso ang buong system kung sakaling magkaroon ng mga pag-atake sa mga kahinaan sa hypervisor. Bilang karagdagan, ang debugging at fuzzing na pagsubok ng proyekto ay kapansin-pansing pinasimple.

Gayunpaman, ang Libnvmm mismo ay hindi naglalaman ng mga function ng emulator, ngunit nagbibigay lamang ng isang API na nagbibigay-daan sa iyong isama ang suporta ng NVMM sa mga umiiral na emulator, halimbawa, QEMU. Sinasaklaw ng API ang mga function tulad ng paggawa at paglulunsad ng virtual machine, paglalaan ng memory sa guest system, at paglalaan ng mga VCPU. Upang mapabuti ang seguridad at bawasan ang mga posibleng vector ng pag-atake, ang libnvmm ay nagbibigay lamang ng mga function na tahasang hinihilingβ€”bilang default, ang mga kumplikadong humahawak ay hindi awtomatikong tinatawag at maaaring hindi magamit kung maiiwasan ang mga ito. Sinusubukan ng NVMM na panatilihing simple ang mga bagay, nang hindi nagiging masyadong kumplikado, at nagbibigay-daan sa iyong kontrolin ang maraming aspeto ng iyong trabaho hangga't maaari.

Ang proyekto ng NetBSD ay bumubuo ng isang bagong NVMM hypervisor

Ang kernel-level na bahagi ng NVMM ay medyo mahigpit na isinama sa NetBSD kernel, at nagbibigay-daan para sa pinahusay na pagganap sa pamamagitan ng pagbabawas ng bilang ng mga switch ng konteksto sa pagitan ng guest OS at ng host environment. Sa bahagi ng espasyo ng user, sinusubukan ng libnvmm na pagsama-samahin ang mga karaniwang operasyon ng I/O at iwasang gumawa ng mga system call nang hindi kinakailangan. Ang sistema ng paglalaan ng memorya ay batay sa subsystem ng pmap, na nagbibigay-daan sa iyong paalisin ang mga pahina ng memorya ng bisita sa swap partition kung sakaling magkaroon ng kakulangan sa memorya sa system. Ang NVMM ay walang mga pandaigdigang lock at scale, na nagbibigay-daan sa iyong sabay na gumamit ng iba't ibang CPU core para magpatakbo ng iba't ibang guest virtual machine.

Isang QEMU-based na solusyon ang inihanda na gumagamit ng NVMM para paganahin ang mga mekanismo ng virtualization ng hardware. Ang trabaho ay isinasagawa upang isama ang mga inihandang patch sa pangunahing istraktura ng QEMU. Ang kumbinasyon ng QEMU+NVMM ay na ay nagbibigay-daan sa matagumpay na nagpapatakbo ng mga guest system na may FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 at iba pang OS sa mga x86_64 system na may mga AMD at Intel processor (ang NVMM mismo ay hindi nakatali sa isang partikular na arkitektura, halimbawa, kung ang naaangkop na backend ay ginawa , magagawa itong gumana sa mga sistema ng ARM64). Kabilang sa mga lugar ng karagdagang aplikasyon ng NVMM, ang sandbox na paghihiwalay ng mga indibidwal na aplikasyon ay nabanggit din.

Ang proyekto ng NetBSD ay bumubuo ng isang bagong NVMM hypervisor

Pinagmulan: opennet.ru

Magdagdag ng komento