מה זה Hypervisor ואיך הוא מריץ כמה מערכות הפעלה על אותה חומרה¶
תפתחו כל שירות ענן שאתם מכירים - AWS, Azure, Google Cloud - ובכולם קורה אותו קסם: אלפי לקוחות שונים מריצים מערכות הפעלה שונות לגמרי, על אותם שרתים פיזיים, בלי שאף אחד "יראה" את השני. הטכנולוגיה שעושה את זה אפשרית נקראת Hypervisor, והיא אחד הרעיונות הבסיסיים ביותר מאחורי כל עולם התשתיות המודרני.
מה זה בעצם Hypervisor¶
ה-Hypervisor היא תוכנה (או שילוב של תוכנה וחומרה) שתפקידה לנהל ולהריץ כמה מערכות הפעלה "אורחות" - Guest OS - על אותה חומרה פיזית אחת, בו זמנית. כל מערכת הפעלה אורחת חושבת שיש לה מעבד, זיכרון ודיסק משלה, אבל בפועל היא מקבלת גרסה וירטואלית של המשאבים האלה, שה-Hypervisor מנהל ומחלק בין כל האורחים.
המחשב הפיזי שמריץ את ה-Hypervisor נקרא Host, ומערכות ההפעלה שרצות בתוכו נקראות Guests. זה בדיוק מה שקורה כשאתם פותחים VirtualBox על המחשב שלכם ומתקינים בתוכו לינוקס - יש לכם עכשיו host שמריץ Windows או macOS, ו-guest שמריץ לינוקס, בלי שהם "יודעים" הרבה זה על זה.
הסוג הראשון - וירטואליזציה שרצה ישירות על החומרה¶
היפרוויזורים מסוג Type 1, שנקראים גם Bare-Metal, רצים ישירות על החומרה הפיזית, בלי מערכת הפעלה "רגילה" שיושבת מתחתיהם. ה-Hypervisor עצמו הוא בעצם השכבה הכי נמוכה שרצה על השרת, ומעליו רצות כל המערכות האורחות. זה המודל שבו משתמשים בשרתי ענן ציבורי, כי הוא נותן ביצועים גבוהים וניהול יעיל של הרבה מאוד מכונות וירטואליות במקביל. דוגמאות מוכרות הן VMware ESXi ו-Microsoft Hyper-V כשהוא מותקן ישירות על שרת.
הסוג השני - וירטואליזציה שרצה בתוך מערכת הפעלה קיימת¶
היפרוויזורים מסוג Type 2 רצים כתוכנה רגילה בתוך מערכת הפעלה קיימת, בדיוק כמו כל אפליקציה אחרת. VirtualBox או VMware Workstation שמותקנים על לפטופ הם דוגמה קלאסית - יש לכם מערכת הפעלה "רגילה" שרצה על החומרה, ובתוכה אתם פותחים תוכנה שיוצרת ומריצה מכונות וירטואליות נוספות. זה נוח מאוד לפיתוח, בדיקות ולמידה, אבל פחות יעיל מבחינת ביצועים כי יש שכבה נוספת - מערכת ההפעלה המארחת - בין החומרה לבין המכונה הווירטואלית.
איך זה עובד ברמה מושגית¶
השאלה המעניינת היא איך בכלל מערכת הפעלה אורחת "מסתדרת" עם זה שאין לה גישה ישירה לחומרה האמיתית. ברמה מושגית, ה-Hypervisor מיירט פקודות רגישות שמערכת ההפעלה האורחת מנסה להריץ - למשל פקודות שנוגעות ישירות בחומרה, בזיכרון פיזי או בהתקני קלט-פלט - ובמקום לתת לה לגעת בחומרה האמיתית, הוא מתרגם את הפקודות האלה לפעולות על משאבים וירטואליים שהוא עצמו מנהל.
כך, כשמערכת הפעלה אורחת "חושבת" שהיא כותבת לכתובת זיכרון פיזית מסוימת, בפועל היא כותבת לכתובת וירטואלית שה-Hypervisor ממפה למקום אמיתי כלשהו בזיכרון הפיזי, בלי שהאורח בכלל מודע לכך. אותו עיקרון חל גם על גישה לדיסק, לכרטיס רשת ולמשאבים אחרים - הכל עובר דרך שכבת התיווך של ה-Hypervisor.
תמיכת חומרה שהופכת את זה למהיר ומעשי¶
בשנים הראשונות של וירטואליזציה, כל היירוט והתרגום הזה נעשה בתוכנה בלבד, וזה היה כבד יחסית מבחינת ביצועים. יצרני המעבדים הבינו את הצורך, והוסיפו הרחבות וירטואליזציה ברמת החומרה - Intel VT-x אצל אינטל ו-AMD-V אצל AMD. ברמה מושגית, ההרחבות האלה מאפשרות למעבד עצמו לזהות שהוא מריץ קוד בתוך סביבה וירטואלית, ולתת ל-Hypervisor דרך מהירה ובטוחה יותר לנהל את המעבר בין המערכות האורחות, בלי לתרגם כל פקודה ופקודה בתוכנה. התוצאה היא וירטואליזציה שרצה כמעט באותה מהירות כמו הרצה ישירה על החומרה.
למה זה הבסיס לכל ענן ציבורי היום¶
כל ספק ענן גדול מוכר בעצם משאבי חישוב, ולא באמת "מקצה" לכם שרת שלם לבד. כשאתם פותחים מכונה וירטואלית ב-AWS, בפועל אתם מקבלים פרוסה של שרת פיזי ענק, שמנוהל על ידי Hypervisor שרץ ברקע ומחלק את אותו שרת בין הרבה מאוד לקוחות שונים, כשכל אחד מהם מבודד לגמרי מהשאר. בלי היכולת הזאת להריץ כמה מערכות הפעלה אורחות בבטחה ובמידה שווה של יעילות, כל מודל הענן הציבורי כפי שאנחנו מכירים אותו פשוט לא היה קיים.
זה חלק מהותי מהבנת איך מחשבים באמת עובדים מתחת למכסה המנוע, ואם הנושא הזה מעניין אתכם, בקורס ליבת המחשב אנחנו יורדים בדיוק לרמות האלה - מהמעבד והזיכרון ועד למערכת ההפעלה עצמה, כדי שתבינו לא רק "מה" קורה אלא גם "איך".
לסיכום¶
ה-Hypervisor הוא השכבה שמאפשרת להריץ כמה מערכות הפעלה נפרדות על אותה חומרה פיזית, בין אם ישירות על השרת (Type 1) או בתוך מערכת הפעלה קיימת (Type 2). הוא עושה זאת על ידי יירוט ותרגום של פעולות רגישות, בעזרת תמיכה ייעודית שמעבדים מודרניים מספקים. וכל פעם שאתם פותחים שרת ענן, יש סיכוי טוב שבשקט, מתחת לכל זה, יושב Hypervisor שעושה את כל העבודה.
אם משהו כאן נשאר לא ברור, זה בדיוק המקום לשאול - יש בקהילה שלנו הרבה אנשים שאוהבים לרדת לפרטים הטכניים האלה.