−25%

על Windows בתשלום שנתי, עד 31.10. לחבילות

EQVPS
התחלה

מכונות Firecracker microVM בשפה פשוטה: מכונה וירטואלית אמיתית שעולה בשבריר שנייה

10 באוק׳ 2026 · 4 דק' קריאה · EQVPS Team

אם קראתם משהו על הרצה בטוחה של קוד שנוצר בידי בינה מלאכותית, ראיתם את המילה microVM, בדרך כלל ליד Firecracker. בדרך כלל מסבירים אותה או כ„מכונה וירטואלית קלה“ (נכון, לא מועיל) או בעזרת תרשים של פנים הליבה. זו הגרסה שבאמצע.

שתי אפשרויות ותיקות יותר, ולמה אף אחת לא מתאימה

התחילו משני הדברים ש־microVM יושבת ביניהם.

קונטיינר הוא קבוצה של תהליכים רגילים על המחשב שלכם, שהליבה הסכימה „לשקר“ להם. ‏namespaces מראים להם מערכת קבצים, רשימת תהליכים ורשת משלהם; cgroups מגבילים כמה מעבד וזיכרון הם יכולים לצרוך. הוא עולה באלפיות שנייה כי שום דבר חדש לא מאותחל. אבל כל הקונטיינרים על מארח מדברים עם אותה ליבה. באג בליבה שאפשר להגיע אליו מתוך קונטיינר אחד הוא דרך החוצה מכולם.

מכונה וירטואלית מביאה ליבה משלה. המעבד של המארח, באמצעות וירטואליזציה בחומרה (KVM ב־Linux), מריץ את האורח כאילו היה לו מחשב משלו. הגבול הוא ההיפרווייזר, שחושף הרבה פחות ממאות קריאות המערכת של ליבה. המחיר הוא כובד. מכונה וירטואלית קלאסית מדמה מחשב שלם: קושחה, אפיק PCI, בקרי USB, כרטיס גרפי, לפעמים כרטיס קול. היא עולה דרך כל אלה, לוקחת שניות עד דקות, וכל מופע נושא עשרות או מאות מגה־בייט של תקורה.

אנלוגיה שמחזיקה די טוב: קונטיינרים הם דירות באותו בניין, עם יסודות, צנרת וחיווט משותפים. מכונות וירטואליות הן בתים נפרדים. בתים הם שכנים בטוחים יותר, אבל אף אחד לא בונה בית לביקור של 20 שניות.

מה Firecracker מסיר

‏Firecracker הוא virtual machine monitor (התוכנה שמקימה ומריצה מכונה וירטואלית מעל KVM), שנכתב ב־Rust ושוחרר כקוד פתוח ב־2018. הוא נבנה למשימה אחת: הרצה של מספר עצום של עומסים קצרי חיים, שאינם סומכים זה על זה, על חומרה משותפת. הוא מגיע לשם בעיקר על ידי מחיקת דברים:

  • אין קושחה, אין גילוי חומרה. הליבה נטענת ישירות לזיכרון ומופעלת. שום דבר לא מחפש התקנים שאינם קיימים.
  • מודל התקנים זעיר. כרטיס רשת, התקן בלוקים, קונסולה טורית ועוד כמה, כולם virtio (התקנים שתוכננו למכונות וירטואליות ולא חיקויים של התקנים פיזיים). אין USB, אין גרפיקה, אין PCI.
  • בסיס קוד קטן ובטוח־זיכרון. פחות קוד שמדמה התקנים פירושו פחות מקומות לבאג שמאפשר לאורח להגיע למארח.
  • כלוב סביב ה־VMM עצמו. כל תהליך Firecracker רץ בתוך chroot, עם מסנני seccomp שמגבילים את קריאות המערכת שלו ו־cgroups שמגבילים את המשאבים שלו. גם אם משהו היה פורץ מהאורח, הוא היה נוחת בכלוב ולא על המארח.

המספרים שהפרויקט עצמו מפרסם: מרחב משתמש תוך 125 ms בלבד ופחות מ־5 MiB תקורת זיכרון לכל microVM. אלה נתוני מעבדה במקרה הטוב; ארגז חול אמיתי צריך גם הכנה של דיסק ורשת וסוכן בפנים שמוכן לקבל פקודות, ולכן שלנו מוכן תוך כשנייה. זה עדיין קרוב מספיק למהירות של קונטיינר כדי שתוכלו ליצור אחד לכל משימה ולזרוק אותו אחר כך.

קונטיינר מול microVM, בפועל

קונטיינר‏Firecracker microVM
ליבהמשותפת עם המארחמשלה
הגבול מול המארחקריאות מערכת לליבה משותפתהיפרווייזר + VMM קטן
זמן עלייהאלפיות שנייה~0.1–1 ש׳
תקורה למופעקטנה מאודכמה MiB
התקניםמה שהמארח חושףרשת, דיסק, קונסולה
GPUאפשרילא
מתאים ל־קוד שסומכים עליו, אריזת אפליקציותקוד לא מהימן, עומסים מרובי דיירים

השורה החשובה היא השנייה. עם קונטיינר, השאלה „האם הקוד הזה יכול לברוח?“ הופכת ל„האם יש באג נגיש איפשהו בליבה של המארח?“. עם microVM היא הופכת ל„האם יש באג בהיפרווייזר או בקומץ התקנים וירטואליים?“. המשטח השני קטן בהרבה, והוא בדיוק המשטח שפלטפורמות ענן כבר מגינות עליו באירוח מרובה הדיירים שלהן.

על מה מוותרים

‏microVM היא לא שדרוג חינמי.

  • אין GPU ואין מסכים. היא נועדה להרצת קוד, לא לשולחנות עבודה או לעומסים גרפיים.
  • פחות התקנים, פחות גמישות. כל דבר שמצפה לחומרה אמיתית, או לרשימה ארוכה של מודולי ליבה, לא ירגיש בבית.
  • גבולות עדיין צריכים מדיניות. ‏microVM עם תעבורה יוצאת פתוחה עדיין יכולה לשלוח תעבורה שאינכם רוצים; כזו שמפתחות ה־API שלכם בתוכה עדיין יכולה להדליף אותם. בידוד מגן על המארח מפני האורח, לא על הסודות שלכם מפני הקוד שמסרתם לו אותם.

איך ארגזי החול שלנו משתמשים בזה

כל ארגז חול של EQVPS הוא microVM אחת של Firecracker עם ליבה משלה, מ־0.25 vCPU ו־512 MB ועד 8 vCPU ו־16 GB. הוא מגיע עם Python 3.12, ‏Node.js 22, ‏bash, ‏git ו־curl, יש לו אינטרנט יוצא ואין לו פורטים נכנסים. ארגזי חול זמניים נמחקים כשמסיימים; ארגזי persistent שומרים את הדיסק שלהם, והשהיה כותבת תמונת מצב של ה־microVM לדיסק כך שהיא לא עולה כלום עד שהיא ממשיכה. תמונות מצב מושהות נשמרות 14 יום. אחר כך ארגז החול נמחק והמזהה שלו מחזיר 410 sandbox_deleted.

בחרנו ב־microVM על פני קונטיינרים מסיבה אחת: הקוד שרץ בארגז חול הוא, מעצם התכנון, קוד שאף אחד לא בדק. פלט של סוכן בינה מלאכותית, pull request של זר, מבחן ביצועים של אלף תוכניות שמודל כתב. עבור אלה, ליבה משלה היא הגבול שכדאי לשלם עליו. הפרטים של מה שבנינו סביבה — תעריפים, מכסות, מגבלת 55 השניות לפקודות סינכרוניות — נמצאים בתיעוד ארגזי החול.

אם תרצו להשוות את הגבול הזה לאפשרויות האחרות לעומק, רמות בידוד לקוד לא מהימן מציב תהליכים, קונטיינרים, microVM ומכונות וירטואליות מלאות זה לצד זה. ואם המחיר לפי שנייה הוא שתפס את עינכם, איך חיוב לפי שנייה עובד באמת מציג את החשבון.

שאלות נפוצות

האם microVM היא קונטיינר?

לא. קונטיינר הוא קבוצת תהליכים על הליבה של המארח, שמופרדים באמצעות namespaces ו־cgroups. ‏microVM מריצה ליבה משלה על חומרה וירטואלית, והגבול בינה לבין המארח הוא ההיפרווייזר. היא עולה כמעט מהר כמו קונטיינר רק משום שכמעט כל מה שמכונה וירטואלית מסורתית מדמה הוסר.

למה היא עולה כל כך מהר?

אין BIOS ואין גילוי חומרה. ה־VMM טוען את הליבה ישירות ומציע רק קומץ התקנים וירטואליים: רשת, אחסון בלוקים, קונסולה טורית ועוד כמה. פחות מה לדמות פירושו פחות מה להפעיל.

מה microVM לא יכולה לעשות?

אין העברת GPU, אין תצוגה גרפית, ויש רק סט התקנים מינימלי. היא בנויה להרצת קוד ושירותים, לא לשולחנות עבודה או לעומסים שתלויים בחומרה.

האם היא בטוחה יותר מקונטיינר?

היא מסירה את המשטח המשותף הגדול ביותר: הליבה של המארח. קוד בפנים צריך לעבור דרך ההיפרווייזר וה־VMM, שקטנים בהרבה מממשק קריאות המערכת של ליבה. זה לא קסם: עדיין צריך מגבלות משאבים, כללי רשת, ושום סוד בפנים.

אפשר להריץ Docker בתוך microVM?

מבחינה טכנית microVM יכולה להריץ כל מה שהליבה שלה תומכת בו, אבל ארגזי החול שלנו לא כוללים Docker. אם העומס שלכם צריך קונטיינרים, הריצו אותו על VPS.

תגובות

אין עדיין תגובות. היו הראשונים.

השאירו תגובה

התגובות עוברות מודרציה לפני שהן מופיעות.