אם אין לכם גישה למכונת ה-VM של Linux מסיבה כלשהי, אתם יכולים לנסות לשחזר את מכונת ה-VM באמצעות השלבים הבאים.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לתיקון של מכונה וירטואלית, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
-
אדמין במכונות של Compute (גרסה 1) (
roles/compute.instanceAdmin.v1) -
מכונות וירטואליות שמשתמשות בחשבון שירות:
משתמש בחשבון שירות (
roles/iam.serviceAccountUser)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות כדי לשחזר מכונה וירטואלית. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי לשחזר מכונה וירטואלית, נדרשות ההרשאות הבאות:
-
compute.instances.createבפרויקט -
compute.disks.createבפרויקט -
compute.instances.getבפרויקט -
compute.disks.createSnapshotבדיסקים -
compute.instances.attachDiskבמכונה וירטואלית חדשה -
compute.disks.useבדיסק -
compute.instances.startבמכונה וירטואלית חדשה או במכונה וירטואלית שלא ניתן לגשת אליה -
compute.instances.stopבמכונה וירטואלית חדשה או במכונה וירטואלית שלא ניתן לגשת אליה
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
שחזור של מכונה וירטואלית
אם אתם לא מצליחים להתחבר למכונה הווירטואלית או שדיסק האתחול שלה מלא, אתם צריכים ליצור מכונה וירטואלית זמנית כדי לשחזר את המכונה הווירטואלית שלא ניתן לגשת אליה.
- (אופציונלי) מפסיקים את ה-VM שלא ניתן לגשת אליו.
- יוצרים קובץ snapshot מדיסק האתחול של המכונה הווירטואלית שלא ניתן לגשת אליה. אם מערכת הקבצים הבסיסית מפוצלת בין כמה דיסקים, צריך ליצור תמונת מצב של כל דיסק.
- יוצרים מכונה וירטואלית זמנית באמצעות קובץ אימג' ציבורי שדומה הכי הרבה למערכת ההפעלה של המכונה הווירטואלית שלא ניתן לגשת אליה. במקרים מסוימים, מדיניות בנושא קובצי אימג' מהימנים עשויה להגביל את האפשרות ליצור דיסקי אתחול מקובצי אימג' ציבוריים. במקרים כאלה, צריך לבקש מאדמין להסיר את ההגבלה באופן זמני כדי ליצור מכונה וירטואלית לשחזור. מידע נוסף מופיע במאמר בנושא הגדרת הגבלות גישה לתמונות.
לכל אחד מקובצי ה-snapshot של דיסקי האתחול של המכונה הווירטואלית שלא ניתן לגשת אליה שיצרתם בעבר, יוצרים דיסק חדש מקובץ ה-snapshot ומצרפים אותו למכונה הווירטואלית של החילוץ באופן הבא:
נכנסים לדף VM instances במסוף Google Cloud .
לוחצים על השם של המכונה הווירטואלית הזמנית שיצרתם.
לוחצים על עריכה.
בקטע Additional disks (דיסקים נוספים), לוחצים על Add new disk (הוספת דיסק חדש), ואז מבצעים את הפעולות הבאות:
- מוסיפים את שם הדיסק, למשל my-recovery-disk.
- בשדה סוג המקור, בוחרים בכרטיסייה תמונת מצב.
- בתפריט הנפתח Source snapshot (קובץ snapshot של מקור), בוחרים את קובץ ה-snapshot של המכונה הווירטואלית של המקור שיצרתם קודם בשלבים האלה.
- לוחצים על סיום.
לוחצים על Save.
מתחברים למכונה הווירטואלית הזמנית באמצעות SSH.
מריצים את הפקודה הבאה כדי לזהות את השם של כל אחד מהדיסקים שצירפתם קודם למכונה הווירטואלית:
lsblk -d -o NAME,SERIAL
הפלט אמור להיראות כך:
NAME SERIAL sda rescue-vm sdb my-recovery-disk
בדוגמה הזו,
rescue-vmהוא דיסק האתחול של מכונת החילוץ ו-my-recovery-diskהוא דיסק האתחול מתוך ה-snapshot של המכונה הווירטואלית שלא ניתן לגשת אליה. חשוב לשים לב לNAMEשל המכונה הווירטואלית שלא ניתן לגשת אליה, כי תצטרכו להשתמש בו בשלב הבא.לכל אחד מהדיסקים שצירפתם קודם ל-VM, מבצעים את הפעולות הבאות:
מריצים את הפקודה הבאה כדי לזהות את מערכת הקבצים של כל מחיצה:
fdisk -l /dev/NAME -o Device,Size,Type
מחליפים את
NAMEבשם של דיסק האתחול של המכונה הווירטואלית שלא ניתן לגשת אליה מהשלב הקודם. בדוגמה הזו, השם יהיהsdb.הפלט אמור להיראות כך:
Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors Disk model: PersistentDisk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Disk identifier: B31430F1-F041-4555-96B9-B2F43DC057AD Device Size Type /dev/sdb1 2M BIOS boot /dev/sdb2 20M EFI System /dev/sdb3 10G Linux filesystem
בעמודה
Typeמפורטת מערכת הקבצים של כל מחיצה. אם סוג מערכת הקבצים חסר עבור מחיצות כלשהן, מריצים את הפקודה הבאה:file -sL /dev/PARTITION_NAME
מחליפים את
NAMEבשם המחיצה.הפלט משתנה בהתאם לסוג מערכת הקבצים:
אין מערכת קבצים: אם הפלט מציג רק
data, המחיצה לא מכילה מערכת קבצים. פלט לדוגמה:/dev/sdb1: data
מערכת קבצים של EFI: אם הפלט מתאר סקטור אתחול של DOS/MBR, למחיצה יש מערכת קבצים של EFI. פלט לדוגמה:
dev/sdb2: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, reserved sectors 4, root entries 512, sectors 40960 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 40, sectors/ track 32, heads 64, serial number 0xf2af2664, label: "EFI ", FAT (16 bit)
מערכת קבצים של Linux: אם הפלט מתאר נתונים של מערכת קבצים, המחיצה היא מערכת קבצים של Linux. פלט לדוגמה:
/dev/sdb3: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
רושמים את שם המחיצה של מערכת הקבצים של Linux.
יוצרים נקודת טעינה בכתובת
/rescue:sudo mkdir /rescue
מבצעים Mount של מחיצת מערכת הקבצים של Linux אל
/rescue:sudo mount PARTITION_NAME /rescue
מחליפים את PARTITION_NAME בשם של מערכת הקבצים של Linux שרשמתם קודם.
אם רוצים לשנות את תיקיית השורש של מערכת הקבצים באמצעות הפקודה
chroot, צריך גם לטעון את מערכת הקבצים הווירטואלית ואת המכשירים באמצעות הפקודות הבאות:sudo mount -t proc /proc /rescue/proc sudo mount -t sysfs /sys /rescue/sys sudo mount -o bind /dev /rescue/dev sudo mount -o bind /dev/pts /rescue/dev/pts sudo mount -o bind /run /rescue/run
מערכת הקבצים של דיסק האתחול שלא ניתן לגשת אליו נטענת עכשיו ב-
/rescue. אתם יכולים לנווט במערכת הקבצים, לשנות קובצי הגדרה, לפתור בעיות או לאחזר את הנתונים.
ביטול השינויים והפעלה מחדש של מכונת ה-VM שלא ניתן לגשת אליה
אחרי שהבעיה נפתרת או שהנתונים מאוחזרים, צריך להחזיר את המכונה הווירטואלית בפועל. כדי לשחזר את המכונה הווירטואלית המקורית:
מבטלים את הטעינה של הדיסק הנוסף שנטען בנתיב
/rescueבמכונה הווירטואלית הזמנית:cd ~ sudo umount /rescue
נכנסים לדף VM instances במסוף Google Cloud .
בוחרים את המכונה הווירטואלית הזמנית שיצרתם.
לוחצים על עריכה.
בקטע דיסקים נוספים, לוחצים על ליד הדיסק שנוצר בשלבים הקודמים כדי לנתק את הדיסק הנוסף מהמכונה הווירטואלית הזמנית.
לוחצים על Save.
נכנסים לדף VM instances במסוף Google Cloud .
אם המכונה הווירטואלית שלא ניתן לגשת אליה עדיין פועלת, מפסיקים את פעולת המכונה הווירטואלית.
לוחצים על השם של המכונה הווירטואלית שהפסקתם הרגע ואז על עריכה.
בקטע דיסק אתחול, לוחצים על ניתוק דיסק אתחול כדי לנתק את דיסק האתחול הקיים מהמכונה הווירטואלית שלא ניתן לגשת אליה.
בשלב הבא, לוחצים על CONFIGURE BOOT DISK (הגדרת דיסק האתחול) כדי לצרף את הדיסק שיצרתם ותיקנתם קודם לכן בקטע Rescue a VM (שחזור מכונה וירטואלית) בדף הזה.
- בקטע Boot Disk לוחצים על הכרטיסייה Existing disks.
- ברשימה הנפתחת, בוחרים את הדיסק שיצרתם בקטע הקודם, למשל
my-recovery-disk. - לוחצים על בחירה ואז על שמירה.
עכשיו אמורה להיות לכם אפשרות להתחבר למכונה הווירטואלית באמצעות SSH.