מכונה וירטואלית (VM) היא חיקוי מבוסס תוכנה של מחשב פיזי. זוהי למעשה מכונה וירטואלית הפועלת בתוך מחשב אחר, אמיתי. "מחשב בתוך מחשב" זה יכול להריץ מערכת הפעלה (OS) משלו, יישומים ותוכניות, והוא מבודד מהמכונה המארחת וממכונות וירטואליות אחרות. חשבו על זה כעל סביבה דיגיטלית עצמאית. המכונה הפיזית שבה פועלות המכונות הווירטואליות נקראת מארח, וכל מכונה וירטואלית מכונה אורחת.
מושג המכונות הווירטואליות הוא יסודי במחשוב המודרני, במיוחד במחשוב ענן ובתשתיות IT ארגוניות. הוא מאפשר שימוש יעיל בחומרה, מכיוון ששרת פיזי יחיד יכול לארח מספר מכונות וירטואליות, שכל אחת מהן משרתת מטרה שונה. יכולת זו, המכונה וירטואליזציה, היא מה שהופך את המכונות הווירטואליות לחזקות ושימושיות כל כך.
איך פועלת מכונה וירטואלית
הקסם שמאחורי מכונה וירטואלית הוא פיסת תוכנה הנקראת היפרוויזור (או Virtual Machine Monitor). ההיפרוויזור הוא המנהל של המשאבים הפיזיים של המכונה המארחת – כמו המעבד, זיכרון ה-RAM, האחסון וממשקי הרשת. הוא מפשט משאבים אלה למאגר ולאחר מכן מקצה אותם באופן דינמי למכונות הווירטואליות האורחות השונות כשהן זקוקות להם.
כאשר מכונה וירטואלית צריכה לבצע פקודה, הבקשה עוברת דרך ההיפרוויזור, שמקצה את הבקשה לחומרה הפיזית. תהליך זה מאפשר למספר מכונות וירטואליות לחלוק את אותם משאבים פיזיים מבלי להפריע אחת לשנייה. בידוד זה הוא תכונה מרכזית, מכיוון שהוא מבטיח שבעיה במכונה וירטואלית אחת (למשל, קריסת תוכנה או תוכנה זדונית) לא תשפיע על המכונה המארחת או על מכונות וירטואליות אחרות.
כדי להבין טוב יותר כיצד פועלת מכונה וירטואלית, נשקול דוגמה פשוטה. דמיינו שיש לכם שרת פיזי חזק המריץ מערכת הפעלה לינוקס. על שרת יחיד זה, אתם רוצים להריץ שלושה יישומים שונים, שאחד מהם דורש גרסה ספציפית של Windows, אחר עובד בצורה הטובה ביותר על הפצת לינוקס שונה, ושלישי צריך להיבדק על מערכת הפעלה מיושנת. במקום לקנות שלושה מחשבים פיזיים נפרדים, אתם יכולים להתקין היפרוויזור על השרת שלכם. היפרוויזור זה יאפשר לכם ליצור שלוש מכונות וירטואליות נפרדות, כל אחת עם חומרה "וירטואלית" משלה, ולהתקין את מערכת ההפעלה הנדרשת על כל אחת מהן. ההיפרוויזור מנהל ומפיץ את המשאבים הפיזיים של השרת היחיד לכל שלוש המכונות הווירטואליות, ומבטיח שהן יכולות לפעול בו זמנית ובעצמאות.
סוגי מכונות וירטואליות
ניתן לסווג מכונות וירטואליות בכמה דרכים שונות, אך שני הסוגים העיקריים מבוססים על מטרתם:
- מכונות וירטואליות של מערכת: אלו הן הסוג הנפוץ ביותר של מכונות וירטואליות ומה שאנשים בדרך כלל מתכוונים אליו כשהם מדברים על מכונות וירטואליות. מכונה וירטואלית של מערכת מספקת חיקוי מלא של מכונה פיזית, כולל החומרה שלה. היא מריצה מערכת הפעלה מלאה ויישומים משלה. הן מנוהלות על ידי היפרוויזור ומשמשות לדברים כמו הרצת מספר סביבות מערכת הפעלה על שרת אחד, איחוד שרתים או בדיקת תוכנות חדשות. דוגמאות כוללות מכונות וירטואליות שנוצרו עם VMware, Microsoft Hyper-V או Oracle VirtualBox.
- מכונות וירטואליות של תהליך: בניגוד למכונות וירטואליות של מערכת, מכונה וירטואלית של תהליך אינה מחקה מכונה שלמה. במקום זאת, היא מספקת סביבת זמן ריצה בלתי תלויה בפלטפורמה עבור יישום או תהליך יחיד. הדוגמה המפורסמת ביותר היא המכונה הווירטואלית של Java (JVM). תוכנית Java מקומפלת לקוד ביניים (bytecode), שמופעל אז על ה-JVM. זה מאפשר לאותה תוכנית Java לפעול על כל מכשיר עם JVM, ללא קשר למערכת ההפעלה הבסיסית, מה שהופך אותה ל-"כתוב פעם אחת, הפעל בכל מקום".
יתרונות של מכונות וירטואליות
- יעילות עלותית: על ידי איחוד מספר שרתים וירטואליים על מכונה פיזית אחת, חברות יכולות להפחית משמעותית עלויות חומרה, כמו גם הוצאות אנרגיה ותחזוקה נלוות.
- אבטחה ובידוד משופרים: מכונות וירטואליות מספקות רמה גבוהה של בידוד. מכיוון שכל מכונה וירטואלית היא סביבה נפרדת ועצמאית, פריצת אבטחה במכונה וירטואלית אחת לא תשפיע על האחרות או על המכונה המארחת. זה הופך אותן לאידיאליות לבדיקת יישומים לא מוכחים או להרצת תהליכים שעלולים להיות מסוכנים.
- גמישות וניידות: מכונות וירטואליות הן קובץ או "תמונה" שניתן להעביר, להעתיק או לגבות בקלות. זה מאפשר העברה מהירה בין שרתים פיזיים שונים או סביבות ענן, ומפשט משימות כמו שחזור מאסון ואיזון עומסים.
- ניצול משאבים יעיל: מכונות וירטואליות מאפשרות לארגון למקסם את השימוש בחומרה הפיזית שלו. במקום שיהיה אוסף של שרתים מנוצלים בחסר, שרת יחיד יכול להיות מחולק להרצת מספר מכונות וירטואליות, כל אחת עם כמות המשאבים המוקצה הנכונה.
- שחזור מאסון: הניידות של מכונות וירטואליות הופכת אותן למצוינות עבור שחזור מאסון. ניתן לגבות במהירות מכונה וירטואלית, ואם המכונה המארחת נכשלת, לשחזר אותה על שרת אחר עם זמן השבתה מינימלי.
- תמיכה ביישומים מיושנים: מכונות וירטואליות יכולות להריץ מערכות הפעלה ישנות יותר שאינן תואמות עוד לחומרה מודרנית, מה שמאפשר לארגונים להמשיך להשתמש ביישומים מיושנים קריטיים ללא העברה יקרה ומסובכת.
חסרונות של מכונות וירטואליות
- תקורה בביצועים: הרצת שכבת תוכנה נוספת (ההיפרוויזור ומערכת ההפעלה האורחת) על גבי החומרה הפיזית יכולה ליצור תקרה מסוימת בביצועים. זה בדרך כלל מינימלי אך יכול להוות בעיה עבור משימות מחשוב בעלות ביצועים גבוהים.
- מורכבות: בעוד שמכונה וירטואלית יחידה היא פשוטה, ניהול מספר גדול של מכונות וירטואליות יכול להפוך למסובך. הוא דורש אנשי מקצוע מיומנים וכלים ניהוליים ספציפיים כדי לטפל בדברים כמו הקצאת משאבים, אבטחה ורשתות.
- נקודת כשל יחידה: אם המכונה המארחת הפיזית נכשלת, כל המכונות הווירטואליות הפועלות עליה יקרסו, אלא אם כן קיימת תוכנית גיבוי יתירות חזקה.
- מגבלות חומרה: הביצועים של כל המכונות הווירטואליות מוגבלים על ידי החומרה הפיזית של המכונה המארחת. אם למארח חסרים מעבד, זיכרון RAM או אחסון מספקים, ביצועי כל המכונות הווירטואליות יסבלו.
- עלויות רישוי: רישיונות תוכנה מסוימים עשויים להיות קשורים לחומרה פיזית, והרצתם על מכונה וירטואלית עשויה לדרוש דמי רישוי נוספים או נפרדים.
