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

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

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

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

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

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

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

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

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

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

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

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

== מימושים ==
{| class="wikitable sortable" style="font-size: 85%; text-align: center; width: 100%; margin-bottom: 10px;"
! rowspan="2" | מנגנון
! rowspan="2" | מערכת הפעלה
! rowspan="2" | רישיון
! rowspan="2" |קיים מאז
! colspan="10" |מאפיינים
|-
!מערכת קבצים מבודדת
!Copy on Write
!הגבלת דיסק
!הגבלת קצב קריאה/כתיבה
!הגבלות זיכרון
!הגבלות מעבד
!הפרדת רשת
!וירטואליזציה מקוננת
!Partition checkpointing and live migration
!הפרדת הרשאות מנהל
|-
|chroot
|רוב מערכות ההפעלה דמויות UNIX
| משתנה בין מערכות הפעלה
| 1982
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|-
|Docker
|Linux
|
| 2013
| 
| 
| 
| (מאז 1.10)
| 	
| 	
| 
| 
| 
| (מאז 1.10)
|-
| Linux-VServer<br>
(security context)
| Linux, Windows Server 2016
|
| 2001
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|-
| lmctfy
| Linux
| 
| 2013
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|-
| LXC
| Linux
|
| 2008
| 
| 
| 
| 
| 
| 
| 
| 
| 
| </td>
|-
|LXD
|Linux
|
|2015
|
|
| (ראו LXC)
| (ראו LXC)
|
|
|
|
|
|
|-
|OpenVZ
|Linux
|
| 2005
| 
| (ZFS)
| 
| 
| 
| 
| 
| 
| 
| 
|-
|Virtuozzo
|Linux, Windows
|
| 2000
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|-
|Solaris Containers (Zones)
|illumos (OpenSolaris),<br>
Solaris
|,<br>תוכנה קניינית
| 2004
| 
| (ZFS)
| 
| 
| 
| 
| 
| 
| 
| 
|-
|FreeBSD jail
|FreeBSD
|
| 2000
| 
| (ZFS)
| 
| 
| 
| 
| 
| 
| 
| 
|-
|sysjail
|OpenBSD, NetBSD
|
| 2006&#x2013;2009
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|-
|WPARs
|AIX
|
| 2007
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|-
|[http://www.hp.com/go/containers HP-UX Containers (SRP)]
|HPUX
|
| 2007
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|-
|iCore Virtual Accounts
|Windows XP
|
| 2008
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|-
| Sandboxie	
| Windows
| 
| 2004
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|-
| Spoon
| Windows
|
| 2012
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|-
| VMware ThinApp
| Windows
|
| 2008
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|}

== ראו גם ==

* מחשוב ענן
* Kubernetes

==ביאורים==

==הערות שוליים==

קטגוריה:מערכת הפעלה
קטגוריה:וירטואליזציה