וירטואליזציה ברמת מערכת ההפעלה

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה לניווט קפיצה לחיפוש

וירטואליזציה ברמת מערכת ההפעלה הוא שיטת וירטואליזציה בשרתים שבה הליבה של מערכת ההפעלה מאפשרת את קיומם של מספר מרחבי משתמש מבודדים, במקום רק אחד. מופעים כאלה, אשר נקראים לפעמים קונטיינר (Container) או קונטיינר תוכנה (Software container), מנועי וירטואליזציה (VEs) או jails (כדוגמת FreeBSD jail(אנ') או chrooot jail), עשויים להיראות כמו שרת ממשי מנקודת מבט של בעליו ומשתמשים.

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

שימושים[עריכת קוד מקור | עריכה]

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

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

תקורה[עריכת קוד מקור | עריכה]

וירטואליזציה ברמת מערכת ההפעלה כרוכה בדרך כלל בתקורה מועטה אם בכלל, כי תוכניות במחיצות וירטואליות משתמשות בממשק הרגיל של קריאות מערכת של מערכת ההפעלה ואינן נתונות לתקורה הנובעת מאמולציה או מריצה במכונה וירטואלית, כמו במקרים עם כל וירטואליזציה של מערכת מלאה (כגון VMware ESXi, QEMU או Hyper-V) או פארא-וירטואליזציה (כגון Xen או UML). צורה זו של וירטואליזציה גם אינה דורשת תמיכה של החומרה כדי להתבצע ביעילות.

גמישות[עריכת קוד מקור | עריכה]

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

מערכת ההפעלה "סולריס" מתגברת חלקית על מגבלה זו באמצעות יכולת ל"אזורים ממותגים" (branded zones), אשר מספקת את היכולת להריץ סביבה בקונטיינר אשר מדמה גרסאות ישנות של Solaris 8 או 9 ב-Solaris 10 המארח. אזורים ממותגים בלינוקס (מכונה אזורי "lx") זמינים גם על מערכות x86 מבוססות סולריס, ומספקים מרחב המשתמש לינוקסי ותמיכה בהרצת יישומי לינוקס; בנוסף, Solaris מספקת את כלים הדרושים כדי להתקין הפצות לינוקס Red Hat Enterprise Linux 3.x או CentOS 3.x בתוך אזורי "lx". עם זאת, ב-2010 בוטלה בסולריס התמיכה באזורי לינוקס ממותגים; ב-2014 הם הוחזרו ב-Illumos, גרסת עותק הקוד הפתוח של סולריס, שמאפשרת תמיכה בליבות לינוקס 32 ביט.

אחסון[עריכת קוד מקור | עריכה]

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

מימושים[עריכת קוד מקור | עריכה]

מנגנון מערכת הפעלה רישיון קיים מאז מאפיינים
מערכת קבצים מבודדת Copy on Write הגבלת דיסק הגבלת קצב קריאה/כתיבה הגבלות זיכרון הגבלות מעבד הפרדת רשת וירטואליזציה מקוננת Partition checkpointing and live migration הפרדת הרשאות מנהל
chroot רוב מערכות ההפעלה דמויות UNIX משתנה בין מערכות הפעלה 1982 חלקי[א] לא לא לא לא לא לא כן לא לא
Docker Linux רישיון אפאצ'י 2.0 2013 כן כן לא בצורה ישירה כן (מאז 1.10) כן כן כן כן לא כן (מאז 1.10)
Linux-VServer

(security context)

Linux, Windows Server 2016 GNU GPLv2 2001 כן כן כן כן[ב] כן כן כן ? לא חלקי[ג]
lmctfy Linux רישיון אפאצ'י 2.0 2013 כן כן כן כן[ב] כן כן חלקי[ד] ? לא חלקי[ג]
LXC Linux GNU GPLv2 2008 כן[3] כן חלקי[ה] חלקי[ו] כן כן כן כן לא כן[3]
LXD Linux רישיון אפאצ'י 2.0 2015 כן כן חלקי (ראו LXC) חלקי (ראו LXC) כן כן כן כן חלקי[ז] כן
OpenVZ Linux GNU GPLv2 2005 כן כן (ZFS) כן כן[ח] כן כן כן[ט] חלקי[י] כן כן[י"א]
Virtuozzo Linux, Windows קנייני 2000 כן כן כן כן[י"ב] כן כן כן[ט] חלקי[י"ג] כן כן
Solaris Containers (Zones) illumos (OpenSolaris),

Solaris

CDDL,
תוכנה קניינית
2004 כן כן (ZFS) כן חלקי[י"ד] כן כן כן[10][11] חלקי[ט"ו] חלקי[ט"ז][י"ז] כן[י"ח]
FreeBSD jail FreeBSD רישיון BSD 2000 כן כן (ZFS) כן[י"ט] כן כן[13] כן כן[14] כן חלקי[15][16] כן[17]
sysjail OpenBSD, NetBSD רישיון BSD 2006–2009 כן לא לא לא לא לא כן לא לא ?
WPARs AIX קנייני 2007 כן לא כן כן כן כן כן[כ] לא כן[19] ?
HP-UX Containers (SRP)(הקישור אינו פעיל, 30.04.2018) HPUX קנייני 2007 כן לא חלקי[כ"א] כן כן כן כן ? כן ?
iCore Virtual Accounts Windows XP תוכנה חינמית 2008 כן לא כן לא לא לא לא ? לא ?
Sandboxie Windows תוכנה שיתופית 2004 כן כן חלקי לא לא לא חלקי לא לא כן
Spoon Windows קנייני 2012 כן כן לא לא לא לא כן לא לא כן
VMware ThinApp Windows קנייני 2008 כן כן לא לא לא לא כן לא לא כן

ביאורים[עריכת קוד מקור | עריכה]

  1. ^ מנהלי מערכת (root) יכולים לעקוף את chroot, שלא מתוכנן להיות מנגנון אבטחה.[1]
  2. ^ 2.0 2.1 תוך שימוש במנגנון תזמון הוגן בהחלט (CFQ), יש תור נפרד לכל אורח.
  3. ^ 3.0 3.1 14 יכולות משתמש נחשבות בטוחות בתוך קונטיינר. עבור היתר לא מובטח שיוכלו להתבצע בקונטיינר מבלי לאפשר לתהליך להתערב בצורה פונטנציאלית בדברים מחוץ לקונטיינר.[2]
  4. ^ יכולות הרשת מופרודת, ללא וירטואליזציה.
  5. ^ הגבלות על הדיסק לכל קונטיינר אפשריות כאשר משתמשים במחיצות נפרדות לכל קונטיננר בעזרת LVM, או כאשר מערכת הקבצים היא btrfs, שבה תת-כוננים של btrfs משתמשים בצורה אוטומטית.
  6. ^ הגבלת קצב קריאה/כתיבה נתמכת בעזרת Btrfs.
  7. ^ ראו[4]
  8. ^ נתמך החל מליבת לינוקס בגרסה 2.6.18-028stable021. המימוש מבוסס על תור הוגן בהחלט (CFQ), אך הוא רב שכבתי, כך שתעדוף פעולות קריאה/כתיבה אינו נפרד לכל תהליך, אלא לכל קונטיינר.[5]
  9. ^ 9.0 9.1 לכל קונטיינר יכולות להיות כתובות IP משלו, חוקי חומת אש, טבלאות ניתוב וכו'. מספר הגדרות רשת נתמכות: מבוסס ניתוב, מבוסס גשר ושיוך כרטיס רשת אמיתי לקונטיינר.
  10. ^ קונטיינרים של Docker יכולים לרוץ בתוך קונטיינרים של OpenVZ.[6]
  11. ^ כל קונטיינר יכול להיות בעל הרשאות מנהל מערכת מבלי להשפיע על קונטיינרים אחרים.[7]
  12. ^ נתמך מאז גרסה 4.0, ינואר 2008.
  13. ^ קונטיינרים של Docker יכולים לרוץ בתוך קונטיינרים של Virtuozzo.[8]
  14. ^ עם illumos[9]
  15. ^ כאשר השכבה העליונה היא KVM zone (illumos) או kz zone (Oracle).
  16. ^ החל מ Solaris 11.3 בטא, Solaris Kernel Zones יכולים להשתמש בנדידה חיה.
  17. ^ יש מימוש של נדידה קרה (כיבוי-נדידה-הפעלה מחדש).
  18. ^ מתחמים לא גלובליים מוגבלים כך שלא ישפיעו על מתחמים אחרים באמצעות הגבלות.[12]
  19. ^ ראו אפשרות "allow.quotas" ופסקה "Jails and File Systems" בתיעוד FreeBSD jail for details.
  20. ^ נתמך החל מ TL 02.[18]
  21. ^ כן עם כוננים לוגיים.

הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ "3.5. Limiting your program's environment". freebsd.org. 
  2. ^ Linux-VServer Paper, Secure Capabilities
  3. ^ 3.0 3.1 Graber, Stéphane (1 בינואר 2014). "LXC 1.0: Security features [6/10]". בדיקה אחרונה ב-12 בפברואר 2014. LXC now has support for user namespaces. [...] LXC is no longer running as root so even if an attacker manages to escape the container, he’d find himself having the privileges of a regular user on the host 
  4. ^ "Live Migration in LXD". Ubuntu Insights Web site. 
  5. ^ "I/O priorities for containers". OpenVZ Virtuozzo Containers Wiki. 
  6. ^ "Docker inside CT". 
  7. ^ "Container". OpenVZ Virtuozzo Containers Wiki. 
  8. ^ "Parallels Virtuozzo Now Provides Native Support for Docker". 
  9. ^ Pijewski, Bill. "Our ZFS I/O Throttle". 
  10. ^ Network Virtualization and Resource Control (Crossbow) FAQ
  11. ^ "Managing Network Virtualization and Network Resources in Oracle® Solaris 11.2". 
  12. ^ Oracle Solaris 11.1 Administration, Oracle Solaris Zones, Oracle Solaris 10 Zones and Resource Management E29024.pdf, pp. 356–360. Available within an archive.
  13. ^ "Hierarchical_Resource_Limits - FreeBSD Wiki". Wiki.freebsd.org. 27 באוקטובר 2012. בדיקה אחרונה ב-15 בינואר 2014. 
  14. ^ "Implementing a Clonable Network Stack in the FreeBSD Kernel". usenix.org. 13 ביוני 2003. 
  15. ^ "VPS for FreeBSD". בדיקה אחרונה ב-20 בפברואר 2016. 
  16. ^ "[Announcement] VPS // OS Virtualization // alpha release". בדיקה אחרונה ב-20 בפברואר 2016. 
  17. ^ "3.5. Limiting your program's environment". Freebsd.org. בדיקה אחרונה ב-15 בינואר 2014. 
  18. ^ "IBM Fix pack information for: WPAR Network Isolation - United States". ibm.com. 
  19. ^ Live Application Mobility in AIX 6.1