מיגרציית Proxmox: היכן נשברת העברת מכונות בין צמתים
בעת העברת מכונות וירטואליות בין צמתי Proxmox המשימה נראית לינארית: להעתיק את הזיכרון, להעביר את הבעלות, לכבות את המקור. בפועל מיגרציה חיה מתבצעת במספר מעברים — תחילה מועבר הנפח העיקרי, ואחר כך מושלמות דפי הזיכרון שהשתנו.
אם האורח כותב באופן פעיל לזיכרון (מסד נתונים, מטמון, תור), ההשלמה אינה מתכנסת: ההעברה נמשכת עשרות דקות ומסתיימת באותה עצירה שאף אחד לא תכנן.
כשלים אופייניים מתחילים לפני שההעתקה מסתיימת. ניתוק הקשר בין הצמתים באמצע התהליך משאיר במקור רשומת נעילה ומשימה שלא הושלמה: המכונה אינה עולה לא על הצומת הישן ולא על החדש, עד שהנעילה מוסרת ידנית.
אי-התאמה של מאגרי האחסון מביאה לכשל כבר לאחר העברת הזיכרון — בצומת היעד אין אותו מאגר או כרך, והעבודה מתגלגלת אחורה לנקודת ההתחלה.
הרשת היא מקור כשלים נפרד. בצומת היעד יש גשר אחר, תגיות VLAN אחרות, כתובת האורח נודדת לסגמנט זר, והשירות הופך ללא זמין, אף שההעברה עברה מבחינה פורמלית. אשכול הווירטואליזציה מוסיף שכבה משלו: הצומת יוצא לזמן מה מההצבעה, וכאשר מספר המשתתפים קטן ההעברה חוסמת פעולות סמוכות.
השבתת השירות כאן היא בעצם מחיר הטעות. בהעברה במצב לא מקוון חלון אי-הזמינות שווה לזמן העתקת הדיסק, ובמעברים ידניים מנהל המערכת מעלה את השירות לפני שהאורח באמת עלה. בהמשך נבחן כיצד זה נסגר.
מה נותנת העברה מתוכננת: השבתה, שלמות נתונים, גלגול אחורה
העברה מתוכננת היא פעולה עם תקציב השבתה מדיד, ולא «נאתחל ונראה». במיגרציה חיה ההיפרוויזר משיג את זיכרון האורח במעברים איטרטיביים עד שהפער הופך למינימלי, ואז עוצר את המכונה לשבריר שנייה, מעביר את המצב האחרון ומעלה אותה בצומת היעד — וחיבור היישום אינו נקטע.
העברה במצב לא מקוון עושה את ההיפך: האורח נעצר, הדיסקים מועתקים, המכונה עולה מחדש. ההשבתה כאן שווה לזמן ההעברה, אך נשללים כל פערים במצב.
שלמות הנתונים נשענת על שלוש בדיקות: תמונת מצב של הדיסק בצומת המקור, בקרת מילוי מאגר האחסון ביעד, והשוואת הגודל וסכומי הביקורת לאחר ההעברה. עבור מסדי נתונים ואשכולות עם קוורום הצמתים עוברים אחד-אחד, ו-Proxmox VE מאפשר לקבוע את הסדר ולוודא שהקוורום לא אבד באף שלב.
נקודת גלגול אחורה אינה גיבוי, אלא תצורת המכונה השמורה והדיסקים שלה בצומת המקור: הם אינם נמחקים עד שהיעד יאשר את הקליטה וההפעלה. אם הבדיקות לא עברו, המכונה מוחזרת בהעברה הפוכה לפי אותה סכמה, וזהו תרחיש שתורגל מראש, ולא אלתור באמצע הלילה.
יכולת החיזוי של המעבר מורכבת משלושה מספרים שאנו מציינים לפני תחילת העבודה: חלון ההשבתה הצפוי, משך העברת הדיסקים ומספר המכונות המועברות בחלון אחד. מכאן זה הופך לתוכנית לפי צמתים עם נקודות ביקורת — בכל שלב ברור מה כבר עבר, מה נבדק ולאן לגלגל אחורה.
מיגרציית Live ו-offline ב-Proxmox: השוואת מצבי ההעברה
שני המצבים פותרים משימה אחת — להעביר מכונה וירטואלית פועלת לצומת אחרת, אך מתמודדים עם מצבה בדרכים שונות. בהעברת live הזיכרון מועתק באופן איטרטיבי: תחילה כל הנפח, אחר כך רק הדפים שהשתנו, ולבסוף המכונה נעצרת לזמן קצר לסנכרון סופי ועולה כבר במקום החדש.
העברת offline פועלת בפשטות: המכונה מכובה, הדיסק והתצורה מועברים כקבצים, ולאחר מכן היא מופעלת בצומת החדש.
בחירת המצב נקבעת לא לפי נוחות, אלא לפי סוג מאגר האחסון ולזמן אי-הזמינות המותר של השירות. אם הדיסקים נמצאים על מאגר אחסון רשתי משותף הנגיש לשתי הצמתים, יש להעביר רק את מצב הזיכרון.
עם דיסקים מקומיים מתווספים למצב גם בלוקי הדיסק עצמו, ואז המצב נתקע מול עומס הכתיבה: כל עוד ההשלמה נמשכת, המכונה ממשיכה לכתוב, ובקלט-פלט אינטנסיבי ההעברה אינה מתכנסת — יש לעצור אותה ולעבור לתרחיש offline.
| אפשרות | מתי מתאימה | מגבלות המצב |
|---|---|---|
| Live, מאגר אחסון משותף | דיסקים על מאגר אחסון רשתי משותף, שתי הצמתים רואות אותו | השבתה רק בסנכרון הזיכרון הסופי; בעומס גבוה הכתיבה מקדימה את ההשלמה, וההעברה אינה מסתיימת |
| Live, דיסקים מקומיים | יש לשמור על השירות, הדיסקים פיזית על הצומת | מועתק כל נפח הדיסק יחד עם מקום פנוי; כתיבה פעילה מעבירה את ההעברה למצב עם עצירה; העברת התקנים פיזיים לא תמיד מועברת |
| Offline | מכונות עתירות משאבים ועמוסות בכתיבה, חלון התחזוקה מתואם | המכונה אינה זמינה במשך כל ההעברה; מועברים הדיסק והתצורה במלואם, הזמן תלוי בנפח הנתונים |
| ייצוא וייבוא | העברה בין אשכולות לא-מקושרים או ענפים שונים של הפלטפורמה | שלבים ידניים בשני הצדדים, השבתה עד להעברה מלאה ולבדיקת ההפעלה |
בפועל הגבולות בין המצבים מיטשטשים: חלק מהמגבלות מוסרות על ידי הכנה — העברת הדיסקים למאגר משותף מראש, הגדרת נתיבים ובדיקת הנגישות של מאגר האחסון מהצומת ביעד. זאת נבחן בשלב התכנון, לפני המעבר עצמו.
שלבי ההטמעה: מהמלאי ועד למסירה לתפעול
סדר העבודה זהה הן להעברה תוך כדי תנועה והן להעברה עם עצירה קצרה של המכונה — שונים רק הרכב חלון העבודה ומוכנות השירות להפסקה. להלן הרצף שלפיו אנו מובילים פרויקט ב-Proxmox: כל שלב נסגר בתוצאה ניתנת לבדיקה, ולא בדוח ביצוע.
-
ביקורת האשכול. מתעדים מלאי: מכונות, שיוך למאגרי אחסון, מצב הקוורום, גשרי רשת, הרשאות, תוספי אורח. בנפרד מסמנים תלויות שבגללן העברה ללא עצירה אינה אפשרית.
-
תוכנית ההעברה. סכמת צמתי היעד, סוג ההעברה לכל מכונה, קבוצות וסדר, נקודות חזרה. מתאמים חלון עבודה — רק מה שבאמת דורש הפסקה נכנס אליו.
-
הגדרה. מאגר אחסון משותף או שכפול בין צמתים, רשת וכתובות, מגבלות עומס, גיבויים לפני הקבוצה. הצמתים עוברים בדיקות מצב שגרתיות.
-
הרצת מבחן. קבוצת מכונות משנית: מודדים את זמן המעבר, שלמות הנתונים, זמינות השירותים, פעולת הגלגול אחורה. לפי התוצאות מתקנים את הרכב הקבוצות ואת גבולות החלון.
-
עבודה בחלון. מעבירים בקבוצות, עוקבים אחרי העומס על הצמתים ומאגרי האחסון, שירותים קריטיים עוברים ראשונים. המהנדס הזמין אחראי על המעבר והגלגול אחורה.
-
קבלה ומסירה. בדיקת שירותים לפי רשימה, השוואת נתונים ויומנים, תיעוד התוצאה עם האחראים על המערכות. מוסרים את נוהל ההעברה, סכמת האשכול והוראות למשמרת התורנית.
מה נשאר אצלכם: מפת האשכול, תצורות, נהלים
לאחר ההעברה נשאר אצלכם לא דוח עבודה, אלא ערכה עובדת שלפיה ניתן לתחזק ולפתח את האשכול בלי השתתפותנו. כל התוצרים נמצאים במאגר שלכם ונקראים באמצעים הסטנדרטיים של Proxmox ובמעבד טקסט רגיל.
- מפת פריסת המכונות — טבלה «מכונה → צומת → מאגר אחסון» עם הצריכה הנוכחית והרזרבה הפנויה בכל צומת. ממנה רואים מיד לאן ניתן להוסיף עומס, והיכן ההעברה הבאה תיתקל במגבלה.
- תצורות הצמתים — גשרי רשת, כללי סינון תעבורה, פרמטרים של מאגרי האחסון ומשימות גיבוי, מיוצאים בצורה המתאימה להשוואה ולשחזור.
- נוהל המעבר — סדר שלב-אחר-שלב של העברה חיה וקרה: מה בודקים לפני ההתחלה, אילו פקודות מריצים, באיזה רגע מעבירים את העומס וכיצד מתעדים את התוצאה.
- תוכנית גלגול אחורה — נקודות חזרה שנקבעו מראש (תמונת מצב, העתקת תצורה, צומת ישן ברזרבה), תנאי ההפעלה של הגלגול אחורה ומי שמקבל את ההחלטה הזו.
- תיעוד ויומן שינויים — סכמת הרשת ומאגרי האחסון, תפקידי הצמתים, היסטוריית עריכות התצורה. מהנדס חדש נכנס לקונטור תוך שעות, ולא תוך שבועות.
- תרחישי בדיקה — סט קצר של בדיקות לאחר כל העברה: זמינות השירות, זמן תגובה, מצב השכפול, שלמות הגיבויים.
הערכה חיה יחד עם האשכול: אנו מעדכנים אותה תוך כדי העבודה, כדי שבהרחבה הבאה או במעבר מתוכנן תישענו על המסמכים שלכם, ולא תשחזרו את התמונה מהזיכרון.
מקרה בוחן: אשכול של מספר צמתים הועבר ללא השבתה ממושכת
אשכול Proxmox של שישה צמתים שירת קונטור פרודקשן וקונטור בדיקות. דיסקי המכונות נמצאו מקומית על הצמתים, ולכן העברה ללא עצירה הייתה בלתי אפשרית באופן עקרוני: כל מכונה כובו, חיכו לשחרור הנעילות, העלו אותה בצומת היעד ובדקו ידנית את זמינות השירותים. תחזוקה מתוכננת אחת — 9 פעולות ידניות לכל מכונה וחלון של 30–40 דקות, שתמיד נקבעו לשעות הלילה.
תחילה מיפינו את המצאי: מה דורש זיכרון חי והשבתה מינימלית, מה מועבר באופן קבוצתי, והיכן הדיסק המקומי הכרחי. עבור מכונות מהסוג הראשון הובא מאגר אחסון משותף עם שכפול לצומת השני — לכל אחת היה עותק מעודכן לפני תחילת ההעברה, ולכן המצב מועבר ללא אתחול.
עבור מכונות גדולות עם דיסקים מקומיים השארנו העברת offline מנוהלת עם המרה מוקדמת ובדיקת מוכנות דרך סוכן בתוך מערכת האורח.
לאחר השינויים ההשבתה של מכונות על מאגר האחסון המשותף הצטמצמה ל-1–2 שניות — החיבור הרשתי עובר יחד עם הכתובת, והלקוחות רואים לכל היותר קטיעה קצרה. העברה קבוצתית של מכונה גדולה אורכת 6–8 דקות במקום 40, ומופעלת בפקודה אחת במקום תשע פעולות ידניות.
בנפרד נעלם סוג שלם של כשלים: אי-סנכרון הדיסק בין הצמתים ונעילות תקועות בעת סיום ההעברה באופן חירום אינם צצים יותר.
העבודה הפסיקה להיות כבולה לחלונות לילה — התחזוקה מתבצעת בשעות העבודה, והגלגול אחורה לצומת המקור נשאר זמין עד לאישור מוכנות השירות ביעד.
במה נבדלת העברת live מ-offline ומתי נדרש כל מצב?
ההבדל אינו במהירות, אלא במה שקורה למכונה הפועלת. במצב live הזיכרון מועתק במחזורים, בעוד האורח ממשיך לשרת בקשות, והמכונה הווירטואלית נעצרת רק במעבר הסופי. במצב offline המכונה מכובה, הדיסק מועבר במלואו, וההשבתה שווה לזמן ההעתקה.
את בחירת המצב קובע סוג הדיסק. אם הכרך נמצא על מאגר אחסון משותף, צומת היעד רואה אותו מיד, והמעבר מצטמצם להעברת מצב הזיכרון. כרכים מקומיים יש להעתיק דרך הרשת: העברת live של דיסק גדול נמשכת שעות ומסתיימת רק כאשר קצב הכתיבה של האורח יורד.
ב-Proxmox VE שתי הפעולות סטנדרטיות, ולכן מכריעים החלון המותר ומצב המכונה. לשירותים ללא מצב משלהם מספיק מעבר offline בחלון תחזוקה, ואילו מערכות ניהול מסדי נתונים דורשות סדר עצירה מתואם — מטמון לא-כתוב בזיכרון הולך לאיבוד בכיבוי קשיח.
| מצב | מתי מתאים | מגבלות |
|---|---|---|
| Live (online) | הפסקה אינה מותרת, הדיסק על מאגר אחסון משותף | נדרשים מעבדים תואמים ומלאי משאבים בצומת היעד; בכתיבה פעילה ההעברה מתארכת |
| Offline (stop) | קיים חלון מתואם, הכרכים מקומיים או גדולים | ההשבתה שווה לזמן ההעתקה; נדרש סדר עצירה של השירותים |
קריטריון מעשי: יש מאגר אחסון משותף והפסקה אסורה — live; הכרכים מקומיים או החלון מתואם — offline. לפני המעבר בודקים את קוורום האשכול, תאימות הוראות המעבד של הצמתים ומלאי המשאבים בצד היעד — זה מה שהופך את ההעברה לפעולה מתוכננת עם חלון צפוי.
ספקות טכניים נפוצים: תאימות, חלונות עבודה, גלגול אחורה
ספקות הנדסיים לפני מיגרציה מצטמצמים בדרך כלל לארבע שאלות: האם תצורת מערכת האורח תועבר ללא עריכה ידנית, כמה יימשך חלון העבודה, מה לעשות בעת כשל וכיצד ההעברה תשפיע על המכונות הווירטואליות הסמוכות. להלן תשובות קצרות למה שמועלה לרוב לפני ההתחלה.
תצורת מערכת האורח שונה מצומת היעד — האם ההעברה אפשרית?
כן, אם ההבדלים אינם נוגעים לארכיטקטורת המעבד ולמערך ההוראות הנתמך. את סוג בקר הדיסק, דגם מתאם הרשת והשיוך לגשרים אנו משווים מראש ומביאים למכנה משותף על עמדת בדיקה, ולא ברגע המעבר.
אם צומת היעד נופל ביכולותיו, חלק מהפרמטרים מועברים לפרופיל תצורה נפרד, כדי שמערכת האורח תעלה ללא עריכות מבפנים.
כמה זמן נדרש לחלון העבודה והאם ניתן להסתדר ללא השבתה?
העברה חיה שומרת על השירות זמין: דפי הזיכרון מועברים לצומת היעד, והמעבר הסופי אורך שברירי שנייה ומתכנס להפסקה בלתי-מורגשת למשתמשים. העברה קרה דורשת עצירה של מערכת האורח, אך מסירה מגבלות של עומס ונפח דיסקים. את החלון מתכננים כך שנעביר קבוצות מכונות ברצף ולא נוציא מכלל פעולה שירותים מקושרים בו-זמנית.
מה קורה בעת כשל ומהו סדר הגלגול אחורה?
עד המעבר המכונה המקורית נשארת עותק עובד, ולכן הגלגול אחורה הוא החזרת השליטה אליה, ולא שחזור מגיבוי. את התצורה ותמונות המצב אנו שומרים לפני ההעברה, ולאחר המעבר בודקים את זמינות השירותים ואת שלמות הנתונים בצומת היעד. אם הבדיקות אינן עוברות, החזרה אורכת דקות: מערכת האורח עולה בצומת המקור בצורתה הקודמת.
כיצד ההעברה מעמיסה על הצמתים הסמוכים?
במהלך העברה חיה צומת היעד מקבל זרם כתיבה נוסף לדיסק ותעבורה ברשת, והמקור — עומס על ערוץ ההעברה. לכן ההעברה מתוכננת מחוץ לשעות השיא ובקבוצות של מכונה-שתיים בכל פעם, ולא כמקבץ.
לפני ההתחלה אנו בודקים את מלאי קלט-הפלט של הדיסק והזיכרון בשני הצמתים, ומפזרים את גלי המיגרציה כך שהמלאי יישמר.
נדון במשימה שלכם: נתאים מצב ונחזור עם תוכנית
כדי שהערכת העבודה תישען על עובדות ולא על הנחות, יש צורך בחתך של הקונטור הנוכחי: מספר הצמתים באשכול Proxmox, סוגי מאגרי האחסון המעורבים, סכמת הרשת ואילו שירותים קריטיים לעצירה. זה כבר מספיק כדי לחלק את מצאי המכונות לאלה המועברות חיות ולאלה שיהיה צריך לכבות בחלון מתואם.
עם השלמת התיאור אנו חוזרים עם ערכה עובדת, ולא עם מילים כלליות:
- תוכנית העברה לפי גלים — ממכונות בסיכון נמוך ועד למכונות הפרודקשן, עם חלונות וסדר פעולות;
- מפת מכונות וירטואליות עם מצב לכל אחת: העברה חיה, העברה עם עצירה או בנייה מחדש;
- הרכב הצוות לתקופת העבודה ואזורי האחריות — מי מוביל את מאגרי האחסון, מי את הרשת, מי מקבל את השירותים לאחר המעבר;
- רשימת בדיקות לפני ואחרי: זמינות, שלמות הנתונים, זמן תגובת היישומים, התנהגות תחת עומס;
- סכמת גלגול אחורה ונקודות חזרה למקרה שהמכונה אינה עולה בצומת החדש;
- נוהל קשר ומשטר דיווח לזמן המיגרציה.
אם חלק מהנתונים עדיין לא נאסף — זו אינה סיבה לדחות: נדון במשימה בהיקף הקיים, ואת החסר נבהיר תוך כדי. תארו את הקונטור ואת ההשבתה המותרת — ובהמשך נחזור עם הערכה ותוכנית העברה.







