−25%

за Windows при годишно плащане, до 31.10. Към плановете

EQVPS
Започни

Firecracker microVM на прост език: истинска VM, която стартира за част от секундата

10.10.2026 г. · 5 мин четене · EQVPS Team

Ако сте чели каквото и да е за безопасното изпълнение на код, генериран от AI, сте срещали думата microVM, обикновено до Firecracker. Обяснява се или като „олекотена VM“ (вярно, но безполезно), или с диаграма на вътрешностите на ядрото. Ето версията по средата.

Два по-стари варианта и защо нито един не пасва

Започнете от двете неща, между които стои microVM.

Контейнерът е група обикновени процеси на машината ви, на които ядрото се е съгласило да лъже. Namespaces им показват собствена файлова система, списък с процеси и мрежа; cgroups ограничават колко CPU и памет могат да ползват. Стартира за милисекунди, защото нищо ново не се зарежда. Но всички контейнери на един хост говорят с едно и също ядро. Бъг в ядрото, достъпен от един контейнер, е изход от всички.

Виртуалната машина носи собствено ядро. Процесорът на хоста чрез хардуерна виртуализация (KVM в Linux) изпълнява госта, сякаш той има собствен компютър. Границата е хипервайзорът, който излага много по-малко от стотиците системни извиквания на едно ядро. Цената е тежестта. Класическата VM емулира цял PC: фърмуер, PCI шина, USB контролери, видеокарта, понякога звукова карта. Стартира, минавайки през всичко това, отнема от секунди до минути и всеки екземпляр носи десетки или стотици мегабайта допълнителна памет.

Аналогия, която издържа доста добре: контейнерите са апартаменти в една сграда, със споделени основи, тръби и окабеляване. VM са отделни къщи. Къщите са по-безопасни съседи, но никой не строи къща за посещение от 20 секунди.

Какво премахва Firecracker

Firecracker е virtual machine monitor (програмата, която подготвя и изпълнява VM върху KVM), написан на Rust и с отворен код от 2018 г. Създаден е за една работа: да изпълнява огромен брой краткоживеещи натоварвания, които не си вярват едно на друго, върху споделен хардуер. Постига го главно като маха неща:

  • Без фърмуер, без откриване на хардуер. Ядрото се зарежда директно в паметта и се стартира. Никой не търси устройства, които ги няма.
  • Миниатюрен модел на устройствата. Мрежова карта, блоково устройство, серийна конзола и още няколко, всички virtio (устройства, проектирани за виртуални машини, а не имитации на физически). Без USB, без графика, без PCI.
  • Малка кодова база с безопасна памет. По-малко код, емулиращ устройства, означава по-малко места за бъг, който позволява на госта да стигне до хоста.
  • Клетка около самия VMM. Всеки процес на Firecracker работи в chroot, с филтри seccomp върху собствените си системни извиквания и cgroups върху ресурсите си. Ако нещо все пак избяга от госта, ще попадне в клетка, а не на хоста.

Числата, които публикува самият проект: user space за едва 125 ms и под 5 MiB допълнителна памет на microVM. Това са най-добрите лабораторни стойности; истинският пясъчник има нужда и от подготвени диск и мрежа и от агент вътре, готов да приема команди, затова нашият е готов за около секунда. Това пак е достатъчно близо до скоростта на контейнер, за да създавате по един за всяка задача и да го изхвърляте след това.

Контейнер срещу microVM на практика

КонтейнерFirecracker microVM
Ядросподелено с хостасобствено
Граница с хостасистемни извиквания към споделено ядрохипервайзор + малък VMM
Време за стартмилисекунди~0.1–1 с
Допълнителна памет на екземплярмного малканяколко MiB
Устройствакаквото излага хостътмрежа, диск, конзола
GPUвъзможноне
Подходящ закод, на който вярвате, пакетиране на приложениянедоверен код, натоварвания на много наематели

Редът, който има значение, е вторият. При контейнер въпросът „може ли този код да избяга?“ се превръща в „има ли някъде в ядрото на хоста достъпен бъг?“. При microVM — в „има ли бъг в хипервайзора или в шепа виртуални устройства?“. Втората повърхност е много по-малка и именно нея облачните платформи вече защитават за собствения си хостинг на много наематели.

Какво губите

MicroVM не е безплатен ъпгрейд.

  • Без GPU и без екрани. Тя е за изпълнение на код, не за десктопи или графични натоварвания.
  • По-малко устройства, по-малко гъвкавост. Всичко, което очаква истински хардуер или дълъг списък модули на ядрото, няма да се чувства у дома си.
  • Границите пак искат политика. MicroVM с отворен изходящ трафик пак може да праща трафик, който не искате; такава с вашите API ключове вътре пак може да ги изтече. Изолацията пази хоста от госта, а не тайните ви от кода, на който сте ги дали.

Как я използват нашите пясъчници

Всеки пясъчник на EQVPS е една Firecracker microVM със собствено ядро, от 0.25 vCPU и 512 MB до 8 vCPU и 16 GB. Идва с Python 3.12, Node.js 22, bash, git и curl, има изходящ интернет и няма входящи портове. Временните пясъчници се изтриват, когато приключите; persistent пазят диска си, а паузата записва моментна снимка на microVM на диска, така че не струва нищо, докато не продължи. Снапшотите на пауза се пазят 14 дни. След това пясъчникът се изтрива и неговото id отговаря 410 sandbox_deleted.

Избрахме microVM пред контейнери по една причина: кодът, който работи в пясъчник, по замисъл е код, който никой не е прегледал. Изходът на AI агент, pull request от непознат, бенчмарк от хиляда програми, написани от модел. За това собственото ядро е границата, за която си струва да се плати. Подробностите за това, което сложихме около нея — тарифи, квоти, лимитът от 55 секунди за синхронни команди — са в документацията за пясъчниците.

Ако искате да сравните тази граница с другите варианти по-подробно, нивата на изолация за недоверен код поставят един до друг процеси, контейнери, microVM и пълни VM. А ако вниманието ви е привлякла цената на секунда, как всъщност работи таксуването на секунда показва аритметиката.

Въпроси

MicroVM контейнер ли е?

Не. Контейнерът е група процеси върху ядрото на хоста, разделени с namespaces и cgroups. MicroVM работи със собствено ядро върху виртуален хардуер, а границата с хоста е хипервайзорът. Тя просто стартира почти колкото контейнер, защото почти всичко, което класическата VM емулира, е премахнато.

Защо стартира толкова бързо?

Няма BIOS и няма откриване на хардуер. VMM зарежда ядрото директно и предлага само шепа виртуални устройства: мрежа, блоково хранилище, серийна конзола и още няколко. По-малко за емулиране означава по-малко за стартиране.

Какво не може microVM?

Няма прехвърляне на GPU, няма графичен екран и има само минимален набор устройства. Създадена е за изпълнение на код и услуги, не за десктопи или натоварвания, силно зависими от хардуер.

По-сигурна ли е от контейнер?

Тя премахва най-голямата обща повърхност: ядрото на хоста. Кодът вътре трябва да мине през хипервайзора и VMM, които са много по-малки от интерфейса на системните извиквания на едно ядро. Не е магия: пак са нужни лимити на ресурсите, мрежови правила и никакви тайни вътре.

Мога ли да пусна Docker в microVM?

Технически microVM може да изпълнява всичко, което ядрото ѝ поддържа, но нашите пясъчници не включват Docker. Ако натоварването ви изисква контейнери, пуснете го на VPS.

Коментари

Още няма коментари. Бъди първият.

Остави коментар

Коментарите се модерират преди да се появят.