במסמך הזה מפורטות שיטות מומלצות ואסטרטגיות לשדרוג מערכות הפעלה במכונות של Compute Engine. איך משדרגים גרסאות עיקריות של מערכות הפעלה באמצעות תשתית בלתי משתנה, יצירה מחדש של מופעים או תהליכי עבודה במקום, ואיך הופכים את תיקוני האבטחה השגרתיים לאוטומטיים.
כשגרסה של מערכת הפעלה מתקרבת לסוף תקופת התמיכה (EOS) או לסוף חיי המוצר (EOL), צריך לשדרג לגרסה נתמכת של מערכת ההפעלה כדי להמשיך לקבל עדכוני אבטחה, תאימות תוכנה ושילוב עם פלטפורמת Cloud de Confiance by S3NS . מידע נוסף על שלבי התמיכה מפורט במאמר בנושא מחזור החיים של מערכות הפעלה.
הסיכונים בשדרוגים משמעותיים של גרסת מערכת ההפעלה במקום
אם מבצעים שדרוג משמעותי במקום של מערכת ההפעלה – למשל, שדרוג של Debian 12 ל-13, של RHEL 9 ל-10 או של Ubuntu 24.04 ל-26.04 במופע פעיל של מחשוב – נוצרים סיכונים תפעוליים משמעותיים בסביבות ענן. בניגוד לשרתים פיזיים מקומיים, מופעי החישוב שלכם תלויים בחבילות מיוחדות של סביבת האורח כדי לתקשר עם ההיפר-ויז'ור ועם שרת המטא-נתונים של Compute Engine.
כשמשדרגים מערכת הפעלה במקום, יש סיכון למצבי הכשל הבאים:
- אובדן קישוריות SSH ו-RDP: פורמטים של הגדרות לשירותי רשת, כללי חומת אש ברמת האורח, כמו ufw או firewalld, או הגדרות של דימון SSH יכולים להשתנות בין גרסאות של מערכת הפעלה, ולנתק את הגישה הניהולית מרחוק.
- שיבוש בסביבת האורח: חבילות
google-guest-agentו-google-osloginמנהלות מפתחות SSH, חשבונות משתמשים, ממשקי רשת וסנכרון עם מטא-נתונים. אם מאגרי חבילות או תלויות נשברים במהלך שדרוג הפצה, יכול להיות שהסוכן של האורח יפסיק לפעול, וכך יימנעו כניסות נוספות או הגדרות רשת. - בעיות תאימות עם אחסון ועם מנהלי התקנים של ליבת מערכת ההפעלה: שינויים בליבה, ב-
initramfsאו במנהלי התקנים של בקרי דיסק (כמו virtio-scsi או NVMe) עלולים לגרום לכשלים בהפעלה או למנוע ממופע המחשוב לזהות נפחי דיסק קשיח מצורפים. - הגדרות לא עקביות למאגרי מידע: ספקי מערכות הפעלה מוציאים לעיתים קרובות משימוש מאגרי חבילות מדור קודם ומפתחות חתימה, או מחליפים אותם. מצב כזה עלול לגרום לכך שמנהלי חבילות ייכשלו באמצע השדרוג, ומערכת ההפעלה תישאר במצב לא ניתן לשחזור, עם התקנה חלקית.
כדי להימנע מהסיכונים האלה, מומלץ להשתמש במודל של תשתית בלתי משתנה במקום לשדרג גרסאות ראשיות של מערכת ההפעלה במקום במופעי מחשוב של הייצור.
בחירה באסטרטגיית השדרוג המתאימה
בהתאם לעומסי העבודה שלכם, אם הם בלי שמירת מצב או עם שמירת מצב, בוחרים באחת מהאסטרטגיות הבאות:
| האסטרטגיה | מומלץ ל | סיכון לזמן השבתה | מנגנון רולבק |
|---|---|---|---|
| תשתית שלא ניתן לשנות | עומסי עבודה בלי שמירת מצב, קבוצות מופעי מכונה מנוהלים (MIG), מיקרו-שירותים (microservices), מארחי קונטיינרים | אפס זמן השבתה עם החלפה הדרגתית | חזרה לתמונה קודמת בתבנית של הגדרות מכונה |
| יצירה מחדש של מכונות Compute עם Persistent Disk | מכונות וירטואליות עצמאיות עם מצב, מסדי נתונים עם אחסון משני מצורף, מארחי אפליקציות מדור קודם | מינימלי עם חלון זמן מתוכנן לתחזוקה | צירוף מחדש של דיסקים למופע המקורי של Compute או שחזור תמונות מצב |
| שדרוג במקום של מערכת ההפעלה | מקרים שבהם יש מכונות וירטואליות עצמאיות שלא ניתן להגדיר בהן אוטומציה או לחלץ מהן הגדרות מקומיות | גבוהה, נדרש זמן השבתה ותכנון ידני של תהליך השחזור | שחזור מתמונת מצב של Persistent Disk |
תשתית בלתי ניתנת לשינוי
הדרך הבטוחה והאמינה ביותר לשדרג את מערכות ההפעלה היא באמצעות מודל התשתית הבלתי משתנה. במקום לשנות מכונות וירטואליות פעילות של Compute, אתם יוצרים מכונות וירטואליות חדשות מאימג'ים מעודכנים של מערכות הפעלה ציבוריות או מותאמות אישית, ומחליפים את המכונות הקיימות.
אם עומסי העבודה שלכם פועלים בקבוצות של מכונות וירטואליות מנוהלות (MIG), אתם יכולים להפוך את ההשקה הזו לאוטומטית בלי להשבית את השירות.
יצירת תמונה מעודכנת
- בוחרים את תמונת מערכת ההפעלה הציבורית העדכנית מהרשימה של פרטי מערכת ההפעלה הנתמכות, או יוצרים תמונת בסיס מותאמת אישית באמצעות Image Builder או כלים אוטומטיים כמו Packer או Ansible.
- מוודאים שהאפליקציה והתלות שלה מותקנות ופועלות בהצלחה בגרסת מערכת ההפעלה החדשה בסביבת בדיקה שאינה סביבת ייצור.
- ליצור תמונת מערכת הפעלה בהתאמה אישית או להפנות למשפחת התמונות הציבוריות החדשה. מידע נוסף זמין במאמר בנושא שיטות מומלצות לשימוש במשפחות של תמונות.
יצירת תבנית של הגדרות מכונה מעודכנת
יוצרים תבנית של הגדרות מכונה חדשה שמפנה לתמונת מערכת ההפעלה המעודכנת:
gcloud compute instance-templates create NEW_TEMPLATE_NAME \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT \
--machine-type=MACHINE_TYPE \
--region=REGION
מחליפים את מה שכתוב בשדות הבאים:
-
NEW_TEMPLATE_NAME: השם של תבנית הגדרות המכונה החדשה. -
IMAGE_FAMILY: משפחת האימג' של מערכת ההפעלה של היעד, למשלdebian-12אוubuntu-2404-lts. -
IMAGE_PROJECT: הפרויקט שמארח את התמונה, כמוdebian-cloudאוubuntu-os-cloud. -
MACHINE_TYPE: סוג המכונה של המופעים. -
REGION: האזור ב-Compute Engine שבו יוצרים את התבנית.
ביצוע החלפה מתגלגלת ב-MIG
מחילים את התבנית המעודכנת על קבוצת המופעים המנוהלת ומפעילים החלפה הדרגתית:
gcloud compute instance-groups managed rolling-action replace MIG_NAME \
--max-surge=20% \
--max-unavailable=0 \
--region=REGION
מחליפים את מה שכתוב בשדות הבאים:
-
MIG_NAME: השם של קבוצת המופעים המנוהלת. -
REGION: האזור שבו נמצאת קבוצת ה-MIG. ב-MIG אזורי, מחליפים את--region=REGIONב---zone=ZONE.
יצירה מחדש של מכונות וירטואליות עם דיסק אחסון מתמיד (persistent disk)
אם אתם מפעילים מכונות וירטואליות עצמאיות עם שמירת מצב, שבהן אפליקציות מאחסנות הגדרות ונתונים בכרכים של Persistent Disk, אתם יכולים לשדרג את מערכת ההפעלה על ידי יצירה מחדש של המכונה הווירטואלית עם דיסק אתחול חדש, תוך שמירה על דיסקי הנתונים.
גיבוי כל הדיסקים
לפני שמשנים את התשתית, יוצרים קובצי snapshot רגילים או אזוריים של דיסק האתחול ושל כל אמצעי האחסון המתמידים שמצורפים:
gcloud compute disks snapshot BOOT_DISK_NAME \
--snapshot-names=SNAPSHOT_NAME \
--zone=ZONE
מחליפים את מה שכתוב בשדות הבאים:
-
BOOT_DISK_NAME: השם של דיסק האתחול שרוצים לגבות. -
SNAPSHOT_NAME: השם של קובץ ה-snapshot החדש של ה-Persistent Disk. -
ZONE: האזור שבו נמצא הדיסק.
מידע נוסף זמין במאמר בנושא יצירה וניהול של תמונות מצב.
הפרדה בין נתוני האפליקציה לבין דיסק האתחול
חשוב לוודא שנתוני האפליקציה, קבצי מסד הנתונים ויומני העסקאות נמצאים בכרכים משניים של Persistent Disk או בשירותים חיצוניים, כמו Cloud Storage או Cloud SQL, ולא בדיסק האתחול.
יצירת מכונת מחשוב חלופית
כדי לוודא שהנתונים יישארו עקביים, צריך להפסיק את מופע המחשוב מדור קודם:
gcloud compute instances stop LEGACY_INSTANCE_NAME --zone=ZONE
מנתקים את דיסקי הנתונים המשניים ממופע Compute מדור קודם:
gcloud compute instances detach-disk LEGACY_INSTANCE_NAME \ --disk=DATA_DISK_NAME \ --zone=ZONEיוצרים מכונת חישוב חדשה עם גרסת מערכת ההפעלה הרצויה:
gcloud compute instances create NEW_INSTANCE_NAME \ --image-family=IMAGE_FAMILY \ --image-project=IMAGE_PROJECT \ --zone=ZONE \ --machine-type=MACHINE_TYPEמצרפים את דיסקי הנתונים המשניים הקיימים למכונת החישוב החדשה:
gcloud compute instances attach-disk NEW_INSTANCE_NAME \ --disk=DATA_DISK_NAME \ --zone=ZONEמתחברים למכונה החדשה לחישוב, מתקינים את מערכות הקבצים בדיסקים של הנתונים ומפעילים את שירותי האפליקציה.
אם צריך, מקצים מחדש כתובות IP חיצוניות סטטיות או רשומות DNS כך שיפנו למופע החדש של Compute.
מחליפים את מה שכתוב בשדות הבאים:
-
LEGACY_INSTANCE_NAME: השם של מכונת ה-Compute הקיימת שאתם משדרגים. -
DATA_DISK_NAME: השם של נפח האחסון המשני של Persistent Disk לניתוק ולחיבור מחדש. -
NEW_INSTANCE_NAME: השם של מכונת החישוב החדשה שתחליף את הקיימת. -
IMAGE_FAMILY: משפחת התמונות של גרסת מערכת ההפעלה של היעד, למשלdebian-13אוubuntu-2604-lts. -
IMAGE_PROJECT: הפרויקט שמספק את התמונה, למשלdebian-cloudאוubuntu-os-cloud. -
MACHINE_TYPE: סוג המכונה של מופע ה-Compute החדש. -
ZONE: האזור שבו נמצאים מופעי החישוב.
שדרוגי מערכת הפעלה במקום
אם אתם לא יכולים ליצור מחדש את מכונת החישוב בגלל הגדרות ידניות מורכבות, ואתם חייבים לבצע שדרוג במקום, עליכם להשלים את הבדיקות שלפני השדרוג ולפעול בקפידה לפי ההוראות הספציפיות להפצה.
רשימת דרישות מוקדמות לשדרוג
לפני שמתחילים בשדרוג במקום, צריך להשלים כל שלב ברשימת המשימות הבאה:
- לפני שמריצים פקודות שדרוג, יוצרים תמונת מצב של דיסק האתחול. זהו מנגנון השחזור העיקרי שלכם אם השדרוג ייכשל.
עדכון כל החבילות הנוכחיות וסביבת האורח עבור Cloud de Confiance לגרסאות האחרונות שזמינות לגרסת מערכת ההפעלה הנוכחית:
- ב-Debian וב-Ubuntu:
sudo apt update && sudo apt dist-upgrade -y - ב-RHEL, CentOS ו-Rocky Linux:
sudo dnf upgrade -y - ב-SLES:
sudo zypper update
מוודאים שהחבילות
google-guest-agentו-google-osloginפעילות:sudo systemctl status google-guest-agent
- ב-Debian וב-Ubuntu:
מפעילים את הקונסולה הטורית האינטראקטיבית במכונת החישוב כדי שתוכלו לפתור בעיות ולהיכנס אם SSH או הרשת מפסיקים לפעול במהלך השדרוג:
gcloud compute instances add-metadata INSTANCE_NAME \ --metadata=serial-port-enable=TRUE \ --zone=ZONEמחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_NAME: השם של מכונת ה-Compute. -
ZONE: האזור שבו נמצאת מכונת ה-Compute.
מידע נוסף מופיע במאמר בנושא אינטראקציה עם קונסולה טורית.
-
אם אתם משתמשים ב-OS Login או במפתחות SSH שמנוהלים על ידי סוכן האורח, אז הגדירו סיסמה לחשבון משתמש מקומי עם הרשאות אדמין, למשל באמצעות
sudo passwd USERNAME, כדי שתוכלו להיכנס דרך הקונסולה הטורית אם OS Login לא יהיה זמין באופן זמני במהלך השדרוג. מחליפים אתUSERNAMEבשם של חשבון המשתמש המקומי.צריך לוודא שלמחיצת הבסיס
/ולמחיצת האתחול/bootיש מספיק שטח פנוי, מומלץ לפחות 5 GB, כדי להוריד ולפתוח חבילות חדשות:df -h / /boot
מוודאים שסוכני צד שלישי לאבטחה, לגיבוי או לניטור (כולל Google Cloud Ops Agent) תומכים בגרסת היעד של מערכת ההפעלה.
תהליכי שדרוג במקום
בקטעים הבאים מפורטים תהליכי עבודה כלליים למערכות הפעלה נפוצות. לפני שמשדרגים, תמיד כדאי לעיין במסמכי השדרוג הרשמיים של מערכת ההפעלה.
Debian
אפשר לשדרג את Debian בין גרסאות ראשיות עוקבות. אל תדלגו על גרסאות עיקריות – לדוגמה, שדרגו קודם את Debian 11 ל-12, ואז שדרגו את Debian 12 ל-13.
מעדכנים את מאגרי חבילות ה-Debian הקיימים:
sudo apt update && sudo apt upgrade -y && sudo apt dist-upgrade -y
מעדכנים את מקורות החבילות ב-
/etc/apt/sources.listוב-/etc/apt/sources.list.d/. לשם כך, מחליפים את שם הקוד הנוכחי של הגרסה, כמוbullseye, בשם הקוד של גרסת היעד, כמוbookworm. מוודאים ש Cloud de Confiance כתובות ה-URL של מאגר החבילות תואמות לגרסה החדשה.ביצוע שדרוג מינימלי כדי לעדכן את כלי האריזה העיקריים:
sudo apt update sudo apt upgrade --without-new-pkgs -y
מריצים את השדרוג של ההפצה המלאה:
sudo apt full-upgrade -y
מוודאים ש-
google-guest-agentפעיל ומופעל:sudo systemctl enable --now google-guest-agent
מפעילים מחדש את מכונת החישוב:
sudo systemctl reboot
Ubuntu
כדי לנהל שדרוגים מגרסת LTS לגרסת LTS ב-Ubuntu, משתמשים בכלי do-release-upgrade.
עדכון כל החבילות הנוכחיות:
sudo apt update && sudo apt dist-upgrade -y
מתקינים את חבילת הליבה של כלי ניהול העדכונים:
sudo apt install update-manager-core -y
מפעילים את הכלי לשדרוג הגרסה:
sudo do-release-upgrade
פועלים לפי ההנחיות האינטראקטיביות כדי לאשר עדכונים במאגר והחלפות של חבילות. אם מוצגת בקשה לגבי קובצי תצורה ששונו, צריך לבדוק את ההבדלים בקפידה לפני שמבצעים החלפה.
מפעילים מחדש את מופע המחשוב כשמוצגת בקשה לעשות זאת.
RHEL
כדי לשדרג בין גרסאות RHEL ראשיות, משתמשים בכלי Red Hat leappהנתמך.
- בודקים את סטטוס המינוי ל-Red Hat ומוודאים שמופע המחשוב מתחבר ל-Red Hat Update Infrastructure (RHUI) של Compute Engine.
- מתקינים את כלי השירות Leapp ואת החבילות שמכילות נתוני העברה.
מריצים את הבדיקה לפני השדרוג:
sudo leapp preupgrade
בודקים את הדוח ב-
/var/log/leapp/leapp-report.txtופותרים את כל הבעיות שמונעות את השדרוג שזוהו על ידי Leapp.מריצים את השדרוג:
sudo leapp upgrade
מפעילים מחדש את המופע כדי לאפשר ל-Leapp לבצע את שדרוג מערכת ההפעלה בסביבה מבודדת:
sudo reboot
SLES
כדי לבצע העברות של חבילות שירותים מגרסה ראשית ושדרוגים של הפצה ב-SLES, משתמשים ב-zypper:
מעדכנים את המערכת הקיימת:
sudo zypper patch
מריצים את הפקודה
zypper migrationכדי לבצע העברה אונליין, או פועלים לפי תהליך העבודה לשדרוג ההפצה באמצעותzypper dup, כפי שמפורט במסמכי התיעוד לשדרוג SLES.
Windows
במקרים של מופעי מחשוב של Windows Server, אפשר להשתמש במדיה להתקנה עם רישוי נפח של Compute Engine ובסקריפטים של PowerShell כדי לבצע שדרוגים באופן אוטומטי בלי התערבות ידנית.
כדי לבצע שדרוג במקום ב-Windows Server, פועלים לפי ההדרכה בנושא ביצוע שדרוג במקום של Windows Server.
אוטומציה של ניהול תיקונים לעדכונים משניים
הבחנה בין שדרוגים של גרסאות ראשיות של מערכת ההפעלה לבין עדכונים שוטפים של גרסאות משניות ותיקוני אבטחה. כדי לבצע תחזוקה שוטפת של תוכנה, עדכוני חבילות ותיקון של CVE, אפשר להשתמש ב-VM Manager Patch כדי להפוך את הפריסה של תיקוני אבטחה לאוטומטית בכל צי מכונות החישוב.
כדי לנהל תיקונים באופן אוטומטי, כדאי לפעול לפי השיטות המומלצות הבאות:
- ארגון מופעים באמצעות תוויות: הקצאת תוויות עם מטא-נתונים, כמו
env:dev,env:prodו-tier:frontend, כדי לטרגט קבוצות ספציפיות של מופעי Compute לצורך תיקון. - פריסה מאזור לאזור: אפשר לפרוס את עבודות הטלאים באזורים שונים. לעולם אל תפעילו עבודות תיקון על כל האזורים בו-זמנית בסביבות ייצור.
- שימוש בסקריפטים לפני ואחרי תיקון: מגדירים סקריפטים לפני תיקון כדי לנתק בבטחה חיבורים או להשהות שירותים, ומגדירים סקריפטים אחרי תיקון כדי להריץ בדיקות תקינות לפני החזרת מופעים לשירות.
- מעקב אחרי התאימות לתיקוני אבטחה: אפשר להשתמש בלוח הבקרה של VM Manager במסוףCloud de Confiance כדי לעקוב אחרי התאימות לתיקוני אבטחה ואחרי סטטוס הפגיעויות בכלל מכונות ה-VM.
מידע נוסף מופיע במאמר יצירת משימות להחלת תיקונים.
אימות ופתרון בעיות אחרי השדרוג
אחרי שמשלימים את השדרוג, מבצעים את שלבי האימות הבאים:
- מוודאים שחיבור ה-SSH או ה-RDP תקין.
מוודאים שהסוכן לאורחים והשירות של OS Login פעילים ומדווחים על סטטוס תקין:
sudo systemctl status google-guest-agent sudo systemctl status google-oslogin-cache
מוודאים שמופע המחשוב יכול לשלוח שאילתות לשרת המטא-נתונים של המופע:
curl -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/id
מוודאים ששירותי האפליקציה הופעלו ושבדיקות התקינות ממאזני העומסים מדווחות על מקרים תקינים.
פתרון בעיות של ניתוק
אם איבדתם את הגישה ל-SSH או ל-RDP למופע של Compute אחרי שדרוג במקום, צריך לבצע את השלבים הבאים לפתרון בעיות:
בודקים ביומן המסוף אם יש קריסות של ליבת המערכת, שגיאות במהלך הפעלת השירות או כשלים במהלך אתחול הרשת:
gcloud compute instances tail-serial-port-output INSTANCE_NAME \ --zone=ZONEאם הפעלתם את הקונסולה הטורית האינטראקטיבית לפני השדרוג, אתם יכולים להתחבר ישירות לטרמינל:
gcloud compute connect-to-serial-port INSTANCE_NAME \ --zone=ZONEנכנסים באמצעות פרטי הכניסה של המשתמש המקומי, בודקים את יומני המערכת באמצעות
journalctl -xeומפעילים מחדש את הרשת או את השירותgoogle-guest-agent.מחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_NAME: השם של מכונת ה-Compute שאתם מנסים לפתור בה בעיות. -
ZONE: האזור שבו נמצאת מכונת ה-Compute.
-
אם אי אפשר לאתחל את מערכת ההפעלה או לשחזר אותה, צריך ליצור נפח חדש של דיסק מתמשך מהתמונה שצילמתם לפני השדרוג ולצרף אותו כדיסק האתחול של מופע Compute. שלבים מפורטים לשחזור מופיעים במאמר בנושא שחזור תמונת מצב לדיסק חדש.