Kama umewahi kusoma lolote kuhusu kuendesha kwa usalama msimbo uliotengenezwa na AI, umeona neno microVM, mara nyingi kando ya Firecracker. Huelezwa ama kama “VM nyepesi” (kweli, lakini haisaidii) au kwa mchoro wa ndani ya kernel. Hili ni toleo la katikati.
Chaguo mbili za zamani, na kwa nini hakuna inayofaa
Anza na vitu viwili ambavyo microVM iko katikati yake.
Kontena ni kundi la michakato ya kawaida kwenye mashine yako ambayo kernel imekubali kuidanganya. Namespaces huionyesha mfumo wake wa faili, orodha yake ya michakato na mtandao wake; cgroups hupunguza kiasi cha CPU na kumbukumbu inachoweza kutumia. Huwaka kwa milisekunde kwa sababu hakuna kitu kipya kinachowashwa. Lakini kila kontena kwenye mwenyeji huzungumza na kernel ileile. Hitilafu ya kernel inayofikika kutoka kontena moja ni njia ya kutoka kwa zote.
Mashine pepe huleta kernel yake. CPU ya mwenyeji, kupitia uboreshaji pepe wa vifaa (KVM kwenye Linux), huendesha mgeni kana kwamba ana kompyuta yake. Mpaka ni hypervisor, ambayo hufichua kidogo sana kuliko miito mamia ya mfumo ya kernel. Gharama ni uzito. VM ya kawaida huiga PC nzima: firmware, basi la PCI, vidhibiti vya USB, kadi ya picha, wakati mwingine kadi ya sauti. Huwaka kupitia yote hayo, huchukua sekunde hadi dakika, na kila nakala hubeba makumi au mamia ya megabaiti za gharama ya ziada.
Mfano unaoshikilia vizuri: kontena ni nyumba za kupanga ndani ya jengo moja, zinazoshiriki msingi, mabomba na nyaya. VM ni nyumba zilizojitenga. Nyumba ni majirani salama zaidi, lakini hakuna anayejenga nyumba kwa ziara ya sekunde 20.
Kile ambacho Firecracker inaondoa
Firecracker ni kifuatiliaji cha mashine pepe (programu inayoandaa na kuendesha VM juu ya KVM) iliyoandikwa kwa Rust na kutolewa kama programu huria mwaka 2018. Ilijengwa kwa kazi moja: kuendesha idadi kubwa mno ya mizigo ya muda mfupi, isiyoaminiana, juu ya vifaa vinavyoshirikiwa. Inafika huko hasa kwa kuondoa vitu:
- Hakuna firmware, hakuna ugunduzi wa vifaa. Kernel hupakiwa moja kwa moja kwenye kumbukumbu na kuwashwa. Hakuna anayetafuta vifaa visivyokuwepo.
- Mfumo mdogo kabisa wa vifaa. Kadi ya mtandao, kifaa cha bloku, console ya mfululizo na vichache zaidi, vyote virtio (vifaa vilivyoundwa kwa ajili ya mashine pepe badala ya kuiga vya kimwili). Hakuna USB, picha wala PCI.
- Msimbo mdogo ulio salama kwa kumbukumbu. Msimbo mdogo unaoiga vifaa unamaanisha sehemu chache za hitilafu inayomruhusu mgeni kumfikia mwenyeji.
- Kizimba kuzunguka VMM yenyewe. Kila mchakato wa Firecracker huendeshwa ndani ya chroot, na vichujio vya seccomp kwenye miito yake ya mfumo na cgroups kwenye rasilimali zake. Kama kitu kingetoroka kutoka kwa mgeni, kingeangukia kwenye kizimba, si kwa mwenyeji.
Takwimu zilizochapishwa na mradi wenyewe ni nafasi ya mtumiaji ndani ya ms 125 tu na gharama ya kumbukumbu ya ziada chini ya MiB 5 kwa kila microVM. Hizo ni thamani bora za maabara; sandbox halisi pia inahitaji diski na mtandao kuandaliwa na wakala ndani aliye tayari kupokea amri, ndiyo sababu yetu iko tayari ndani ya takriban sekunde moja. Hiyo bado iko karibu vya kutosha na kasi ya kontena kuunda moja kwa kila kazi na kuitupa baadaye.
Kontena dhidi ya microVM, kivitendo
| Kontena | MicroVM ya Firecracker | |
|---|---|---|
| Kernel | inashirikiwa na mwenyeji | yake yenyewe |
| Mpaka na mwenyeji | miito ya mfumo kwa kernel inayoshirikiwa | hypervisor + VMM ndogo |
| Muda wa kuwaka | milisekunde | ~0.1–1 sek |
| Gharama ya ziada kwa nakala | ndogo sana | MiB chache |
| Vifaa | chochote mwenyeji anachofichua | mtandao, diski, console |
| GPU | inawezekana | hapana |
| Inafaa kwa | msimbo wako, kufunga programu | msimbo usioaminika, mizigo ya wapangaji wengi |
Safu muhimu ni ya pili. Kwa kontena, swali “je, msimbo huu unaweza kutoroka?” linakuwa “je, kuna hitilafu inayofikika mahali popote kwenye kernel ya mwenyeji?”. Kwa microVM, linakuwa “je, kuna hitilafu kwenye hypervisor au kwenye kiganja cha vifaa pepe?”. Uso wa pili ni mdogo sana, na ndio ambao majukwaa ya wingu tayari yanaulinda kwa ajili ya hosting yao ya wapangaji wengi.
Unachoachia
MicroVM si uboreshaji wa bure.
- Hakuna GPU wala skrini. Ni kwa ajili ya kuendesha msimbo, si kompyuta za mezani wala picha.
- Vifaa vichache, unyumbufu mdogo. Chochote kinachotarajia vifaa halisi au orodha ndefu ya moduli za kernel hakitajisikia nyumbani.
- Mipaka bado inahitaji sera. MicroVM yenye trafiki iliyo wazi ya kutoka bado inaweza kutuma trafiki usiyoitaka; yenye funguo zako za API ndani bado inaweza kuzivujisha. Utengaji unamlinda mwenyeji dhidi ya mgeni, si siri zako dhidi ya msimbo uliompa.
Jinsi sandbox zetu zinavyoitumia
Kila sandbox ya EQVPS ni microVM moja ya Firecracker yenye kernel yake, kuanzia vCPU 0.25 na MB 512 hadi vCPU 8 na GB 16. Inakuja na Python 3.12, Node.js 22, bash, git na curl, ina intaneti ya kutoka na haina porti za kuingia. Sandbox za muda hufutwa unapomaliza; za persistent huhifadhi diski yao, na kusitisha moja huandika picha ya microVM kwenye diski, hivyo haigharimu chochote hadi iendelee. Snapshot zilizositishwa huhifadhiwa siku 14. Baada ya hapo sandbox hufutwa na id yake hujibu 410 sandbox_deleted.
Tulichagua microVM badala ya kontena kwa sababu moja: msimbo unaoendeshwa ndani ya sandbox, kwa maana yake, ni msimbo ambao hakuna aliyeukagua. Matokeo ya wakala wa AI, pull request ya mgeni, kipimo cha programu elfu moja zilizoandikwa na modeli. Kwa hayo, kernel yake yenyewe ndio mpaka unaostahili kulipiwa. Maelezo ya tulichojenga kuizunguka — ushuru, viwango, kikomo cha sekunde 55 kwa amri za sinkroni — yako kwenye nyaraka za sandbox.
Kama ungependa kulinganisha mpaka huu na chaguo nyingine kwa kina zaidi, viwango vya utengaji kwa msimbo usioaminika inaweka michakato, kontena, microVM na VM kamili kando kwa kando. Na kama bei kwa sekunde ndiyo iliyokuvutia, jinsi malipo kwa sekunde yanavyofanya kazi kweli inaonyesha hesabu.
Maoni
Bado hakuna maoni. Kuwa wa kwanza.