OpenVZ

OpenVZ (קיצור של: Open Virtuozzo) היא טכנולוגיית וירטואליזציה ברמת מערכת הפעלה עבור לינוקס. היא מאפשרת לשרת פיזי להריץ מספר מופעי מערכת הפעלה מבודדים, הנקראים קונטיינרים, שרתים וירטואליים פרטיים (VPS) או סביבות וירטואליות (VEs). טכנולוגיית OpenVZ דומה ל- Solaris Containers ול- LXC.

 OpenVZ בהשוואה לטכנולוגיות וירטואליזציה אחרות 
בעוד שטכנולוגיות וירטואליזציה כגון VMware, Xen ו- KVM מספקות וירטואליזציה מלאה ויכולות להריץ מספר מערכות הפעלה וגרסאות ליבה שונות, OpenVZ משתמשת בליבת לינוקס אחת ולכן יכולה להריץ רק לינוקס. כל מכלי OpenVZ חולקים את אותה ארכיטקטורה וגרסת ליבה. זה יכול להיות חיסרון במצבים שבהם נדרשות גרסאות קרנל שונות מזו של המארח. עם זאת, מכיוון שאין לו תקורה של Hypervisor אמיתי, הוא מהיר ויעיל ביותר.http://www.hpl.hp.com/techreports/2007/HPL-2007-59R1.html?jumpid=reg_R1002_USEN

הקצאת זיכרון עם OpenVZ היא "רכה" בכך שזיכרון שאינו בשימוש בסביבה וירטואלית אחת יכול לשמש אחרים או לאחסון מטמון בדיסק. בעוד שגרסאות ישנות של OpenVZ השתמשו במערכת קבצים נפוצה (כאשר כל סביבה וירטואלית היא רק ספריית קבצים המבודדת באמצעות chroot), הגרסאות המאוחרות יותר של OpenVZ מאפשרות לכל מכל מערכת קבצים משלו.http://wiki.openvz.org/Ploop

 ליבה 
ליבת OpenVZ היא ליבת לינוקס, ששונתה כדי להוסיף תמיכה בקונטיינרים של OpenVZ. הליבה שהשתנה מספקת וירטואליזציה, בידוד, ניהול משאבים ונקודות ביקורת. החל מ-vzctl 4.0, ליבת OpenVZ יכולה לעבוד עם ליבות Linux 3.x לא משודרגות (unpatched), עם מערך תכונות מופחת.

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

 קבצים
 ספריות מערכת, יישומים, וירטואליזציה /proc ו- /sys, מנעולים וירטואליים וכו'

 משתמשים וקבוצות
 לכל קונטיינר יש משתמש שורש משלו, כמו גם משתמשים וקבוצות אחרות .

 עץ תהליכים
 קונטיינר רואה רק את התהליכים שלו (החל מ-init). PIDs הם וירטואליזציה, כך PID init הוא 1 כפי שהוא צריך להיות.

 רשת
 התקן רשת וירטואלי, המאפשר למכל לקבל כתובות IP משלו, כמו גם קבוצה של netfilter (iptables) וכללי ניתוב

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

 אובייקטי IPC
 זיכרון משותף, סמפורים, הודעות.

 ניהול משאבים 
ניהול משאבי OpenVZ מורכב מארבעה רכיבים: מכסת דיסק דו-מפלסית, מתזמן CPU "הוגן", מתזמן קלט/פלט של דיסקים. ניתן לשנות משאבים אלו במהלך זמן הריצה של קונטיינר, ולבטל את הצורך באתחול מחדש.

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

 מתזמן CPU 
מתזמן ה-CPU ב-OpenVZ הוא יישום דו-שלבי של אסטרטגיית תזמון שיתוף הוגן.

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

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

בנוסף לאמור לעיל, OpenVZ מספק vzctl(8) man page, CPU fair scheduler parameters section, http://openvz.org/Man/vzctl.8#CPU_fair_scheduler_parameters דרכים:
 להגדר מגבלות מעבד קפדניות, כגון 10% מזמן המעבד הכולל ( --cpulimit )
 הגבלת מספר ליבות המעבד הזמינות למכל ( --cpus )
 לאגד מכל לקבוצה מסוימת של מעבדים ( --cpumask )

 מתזמן I/O 
בדומה מתזמן מעבד שתוארו לעיל, I / O מתזמן ב OpenVZ הוא גם דו-מפלסי, ניצול Jens Axboe של CFQ I / O מתזמן על הרמה השנייה שלו.

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

 משתמשי Beancounters 
User Beancounters הוא קבוצה של מונים, הגבלות וערבויות לכל קונטיינר, שנועדו למנוע מקונטיינר בודד למנף את משאבי המערכת. בקרנלים הנוכחיים של OpenVZ (מבוסס RHEL6 042stab*) ישנם שני פרמטרים עיקריים ( RAM ו- swap, או physpages ו- swapages ), ואחרים הם אופציונליים. http://openvz.org/VSwap

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

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

 מגבלות 
כברירת מחדל, OpenVZ מגביל גישה לקונטיינר להתקנים פיזיים אמיתיים (ובכך הופכת קונטיינר לבלתי תלוי בחומרה). מנהל OpenVZ יכול לאפשר גישת קונטיינר להתקנים אמיתיים שונים, כגון כונני דיסקים, יציאות USB,vzctl(8) man page, Device access management subsection, http://wiki.openvz.org/Man/vzctl.8#Device_access_management התקני PCIvzctl(8) man page, PCI device management section, http://wiki.openvz.org/Man/vzctl.8#PCI_device_management או כרטיסי רשת פיזיים.vzctl(8) man page, Network devices section, http://wiki.openvz.org/Man/vzctl.8#Network_devices_control_parameters

/dev/loopN מוגבל לעיתים קרובות בפריסות (כיוון שהתקני לולאה משתמשים בשרשורי ליבה שעלולים להיות בעיית אבטחה), מה שמגביל את היכולת לטעון תמונות דיסק. דרך לעקוף היא להשתמש ב- FUSE .

OpenVZ מוגבל לספק רק חלק מטכנולוגיות VPN המבוססות על PPP (כגון PPTP/L2TP) ו-TUN/TAP. כאשר IPsec נתמך בתוך קונטיינרים מאז הקרנל 2.6.32.

ממשק משתמש גרפי בשם EasyVZ נוסה בשנת 2007,EasyVZ: Grafische Verwaltung für OpenVZ. Frontend für freie Linux-Virtualisierung אך הוא לא התקדם מעבר לגרסה 0.1. עד גרסה 3.4, Proxmox VE יכול לשמש כסביבת וירטואליזציה של שרת מבוססת OpenVZ עם ממשק משתמש ממשק, אם כי גרסאות מאוחרות יותר עברו ל-LXC .

 קישורים חיצוניים 



 הערות שוליים 

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