פתרון בעיות בהפעלת מכונות וירטואליות

במסמך הזה יש מידע לפתרון בעיות בהפעלת מכונות וירטואליות בגלל שגיאות במכסות ודיסקים לאתחול.

שגיאות הקשורות למכסות

אם מוצגת שגיאת מכסה כשמנסים להפעיל מופע, צריך לבקש מכסת CPU נוספת. מידע נוסף זמין בקטע מכונות וירטואליות במאמר בנושא מכסות הקצאה של Compute Engine.

דיסקים לאתחול

אם המופע לא מופעל ואתם לא מצליחים להתחבר אליו או להיכנס אליו דרך המסוף הטורי האינטראקטיבי, צריך לזהות את הסיבה לכך שדיסק האתחול לא משלים את תהליך האתחול וההפעלה.

מזהים את הסיבה לכך שדיסק האתחול לא מופעל

  • מוודאים שדיסק האתחול לא מלא.

    אם דיסק האתחול מלא לגמרי ומערכת ההפעלה לא תומכת בשינוי גודל אוטומטי, לא תוכלו להתחבר למופע. צריך ליצור מופע חדש וליצור מחדש את דיסק האתחול. למידע נוסף, קראו את המאמר שחזור של מכונות וירטואליות או של דיסקים מלאים לאתחול.

  • בודקים את הפלט של היציאה הטורית של המכונה הווירטואלית.

    ה-BIOS, ה-bootloader והליבה של מופע מדפיסים את הודעות הניפוי שלהם בפלט של היציאה הטורית של המופע, ומספקים מידע חשוב על שגיאות או בעיות שהמופע חווה. אם מפעילים רישום ביומן של פלט יציאה טורית ב-Cloud Logging, אפשר לגשת למידע הזה גם כשהמופע לא פועל.

  • מפעילים גישה אינטראקטיבית למסוף הטורי.

    אתם יכולים להפעיל גישה אינטראקטיבית למסוף הטורי של מכונה, כדי שתוכלו להתחבר ולפתור בעיות בהפעלה מתוך המכונה, בלי שהמכונה תופעל באופן מלא. מידע נוסף זמין במאמר פתרון בעיות באמצעות המסוף הטורי.

  • מוודאים ששיבוט דיסק האתחול לא מתבצע

    אם שיבוט של דיסק האתחול נמצא בתהליך, אי אפשר להפעיל את המכונה הווירטואלית ומוצגת שגיאה דומה לזו שבהמשך.

    Failed to start example-vm: The instance resource 'projects/example-project/zones/us-central1-b/instances/example-vm' is already being used by 'projects/example-project/zones/us-central1-b/disks/clone'
    

    מחכים שהשיבוט יסתיים ואז מפעילים את המכונה הווירטואלית.

  • מוודאים שקובץ ה-snapshot של דיסק האתחול לא נמצא בתהליך

    אם מתבצעת תמונת מצב של דיסק האתחול, אי אפשר להפעיל את ה-VM ומוצגת שגיאה דומה לזו:

    The instance resource 'projects/example-project/zones/asia-east1-b/instances/example-vm' is already being used by 'projects/example-project/global/snapshots/example-vm-prod-asia-east1-b-abc'
    

    מחכים שהתמונה תסתיים, ואז מפעילים את מכונת ה-VM.

  • מוודאים שיש בדיסק מערכת קבצים תקינה.

    אם מערכת הקבצים פגומה או לא תקינה, לא תוכלו להפעיל את המופע. אימות מערכת הקבצים של הדיסק:

    1. מנתקים את הדיסק הרלוונטי מכל מכונה שהוא מחובר אליה, אם רלוונטי:

      gcloud compute instances delete old-instance --keep-disks boot
      
    2. מפעילים מכונה חדשה עם התמונה העדכנית שסופקה על ידי Google:

      gcloud compute instances create debug-instance
    3. מצרפים את הדיסק כדיסק שאי אפשר לאתחל ממנו, אבל לא מתקינים אותו. מחליפים את DISK בשם של הדיסק שלא ניתן לאתחל. רושמים את שם המכשיר שמזהה את הדיסק במכונה:

      gcloud compute instances attach-disk debug-instance \
          --disk DISK \
          --device-name debug-disk
      
    4. מתחברים למכונה:

      gcloud compute ssh debug-instance
      
    5. מחפשים את מחיצת הבסיס של הדיסק, שמזוהה באמצעות הסימון part1. במקרה הזה, מחיצת הבסיס של הדיסק נמצאת בכתובת: /dev/sdb1:

      ls -l /dev/disk/by-id
      total 0
      lrwxrwxrwx 1 root root  9 Jan 22 17:09 google-debug-disk -> ../../sdb
      lrwxrwxrwx 1 root root 10 Jan 22 17:09 google-debug-disk-part1 -> ../../sdb1
      lrwxrwxrwx 1 root root  9 Jan 22 17:02 google-persistent-disk-0 -> ../../sda
      lrwxrwxrwx 1 root root 10 Jan 22 17:02 google-persistent-disk-0-part1 -> ../../sda1
      lrwxrwxrwx 1 root root  9 Jan 22 17:09 scsi-0Google_PersistentDisk_debug-disk -> ../../sdb
      lrwxrwxrwx 1 root root 10 Jan 22 17:09 scsi-0Google_PersistentDisk_debug-disk-part1 -> ../../sdb1
      lrwxrwxrwx 1 root root  9 Jan 22 17:02 scsi-0Google_PersistentDisk_persistent-disk-0 -> ../../sda
      lrwxrwxrwx 1 root root 10 Jan 22 17:02 scsi-0Google_PersistentDisk_persistent-disk-0-part1 -> ../../sda1
      
    6. מריצים בדיקה של מערכת הקבצים במחיצת הבסיס:

      sudo fsck /dev/sdb1
      fsck from util-linux 2.20.1
      e2fsck 1.42.5 (29-Jul-2012)
      /dev/sdb1: clean, 19829/655360 files, 208111/2621184 blocks
      
    7. טוענים את מערכת הקבצים:

       sudo mkdir /mydisk
      
       sudo mount /dev/sdb1 /mydisk
      
    8. בודקים אם יש בדיסק קובצי ליבה:

       ls /mydisk/boot/vmlinuz-*
       /mydisk/boot/vmlinuz-3.2.0-4-amd64
       

  • מוודאים שלדיסק יש רשומת אתחול ראשית (MBR) תקינה.

    מריצים את הפקודה הבאה במכונת הניפוי עם דיסק אתחול מתמיד שמחובר אליה, כמו /dev/sdb:

    sudo parted /dev/sdb print
    

    אם ה-MBR תקין, מוצג בו מידע על מערכת הקבצים:

    Disk /dev/sdb: 10.7GB
    Sector size (logical/physical): 512B/4096B
    Partition Table: msdos
    Disk Flags:
    Number  Start   End     Size    Type     File system  Flags
     1      2097kB  10.7GB  10.7GB  primary  ext4         boot
    

תיקון בעיה בהפעלה

אחרי שמזהים את הנקודה שבה תהליך האתחול וההפעלה נכשל, אפשר לתקן את הבעיה באחת מהדרכים הבאות:

יצירת דיסק אתחול עצמאי

מבצעים Mount לתמונה שיובאה בדיסק משני שמחובר למכונת VM זמנית. משתמשים במסוף או ב-CLI של gcloud כדי ליצור דיסק עצמאי מהתמונה שהעליתם וליצור מכונה וירטואלית זמנית עם הדיסק העצמאי שמצורף אליה. Google Cloud אתם יכולים להשתמש במופע הזה כדי לשנות קבצים בדיסק העצמאי ולפתור בעיות שגורמות לכך שהתמונה לא מצליחה להתחיל.

המסוף

יוצרים דיסק עצמאי מקובץ האימג' של דיסק האתחול שיובא. אפשר גם לנתק דיסק אתחול ממופע וליצור את המופע באמצעות דיסק האתחול המנותק.

  1. In the Google Cloud console, go to the Disks page.

    Go to Disks

  2. Click Create disk.
  3. On the Create a disk page, specify the following attributes:
    • Zone: Select a zone near you. You must use this same zone when you create your temporary instance.
    • Disk source type: Image
    • Source image: Specify the name of the boot disk image that you imported.
  4. To create the disk, click Create.

יוצרים מכונה זמנית שאליה אפשר לצרף את הדיסק העצמאי ולהגדיר את טוען האתחול כך שיפעל בסביבת Google Cloud מסוף.

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף Instances

  2. לוחצים על הלחצן Create instance.

  3. בדף Create an instance, מציינים שם למכונה ותחום (zone) שבו היא תמוקם. התחום (zone) חייב להיות זהה לתחום שבו יצרתם את הדיסק העצמאי.

  4. מרחיבים את הקטע Management, security, disks, networking, sole tenancy.

  5. בכרטיסייה Disks (דיסקים) בקטע Additional disks (דיסקים נוספים), לוחצים על Attach existing disk (צירוף דיסק קיים). מופיע קטע חדש.

  6. בקטע Disk (דיסק), בוחרים את הדיסק העצמאי שיצרתם מהרשימה הנפתחת. הפעולה הזו מצרפת את הדיסק העצמאי למכונה, כדי שתוכלו לטעון אותו ולשנות את התוכן שלו בהמשך.

  7. לוחצים על סיום כדי לסיים את צירוף הדיסק.

  8. לוחצים על הלחצן יצירה כדי ליצור את המופע.

gcloud

יוצרים דיסק עצמאי מקובץ האימג' של דיסק האתחול שיובא. אפשר גם לנתק דיסק אתחול ממופע וליצור את המופע באמצעות דיסק האתחול המנותק.

gcloud compute disks create DISK_NAME \
    --zone=ZONE \
    --image=IMAGE_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • DISK_NAME: השם של הדיסק החדש העצמאי.

  • ZONE: אזור שקרוב אליכם. כשיוצרים את המכונה הזמנית, צריך להשתמש באותו אזור.

  • IMAGE_NAME: השם של תמונת הדיסק של דיסק האתחול שיובאה.

יוצרים מכונה זמנית שאליה אפשר לצרף את הדיסק העצמאי ולהגדיר את טוען האתחול כך שיפעל בסביבת Google Cloud מסוף.

gcloud compute instances create INSTANCE_NAME \
    --zone=ZONE \
    --disk name=DISK_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • INSTANCE_NAME: שם ייחודי למופע

  • ZONE: האזור שבו יצרתם את הדיסק העצמאי

  • DISK_NAME: השם של הדיסק הנפרד שיצרתם מתמונת דיסק האתחול שיובאה

אחרי שיוצרים את המכונה עם הדיסק העצמאי המצורף, יש סביבה וירטואלית שבה אפשר לשנות את טוען האתחול מקובץ האימג' המקורי של דיסק האתחול.

הגדרת דיסק האתחול

מתחברים למכונה, מתקינים את הדיסק הנפרד ומגדירים את טוען האתחול (bootloader) כך שהוא יופעל בצורה תקינה ב-Compute Engine.

  1. מתחברים למכונה הזמנית באמצעות SSH בדפדפן או באמצעות הפקודה gcloud compute ssh.
  2. משתמשים בפקודה blkid כדי לזהות את הדיסק שרוצים לשנות ואת המחיצות שצריך לטעון. בדוגמה הזו, /dev/sdb הוא הדיסק שייבאתם.

    lsblk
    
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   10G  0 disk
    └─sda1   8:1    0   10G  0 part /
    sdb      8:16   0  100G  0 disk
    ├─sdb1   8:17   0   96G  0 part
    ├─sdb2   8:18   0    1K  0 part
    └─sdb5   8:21   0    4G  0 part
    
  3. מבצעים Mount למחיצת השורש מהדיסק העצמאי לספרייה /tmp. בדוגמה הזו /dev/sdb1 היא מחיצת הבסיס, ולא צריך לבצע שינויים במחיצות האחרות. יכול להיות שתוכנית החלוקה שלכם תדרוש מכם להעלות כמה מחיצות לפני שתוכלו לגשת לכל הקבצים שאתם צריכים לשנות.

    sudo mount /dev/sdb1 /tmp
    
  4. עריכת קבצים שעלולה לגרום לדיסק להיכשל בתהליך האתחול. מידע נוסף זמין בהוראות להגדרת bootloader.

  5. מבטלים את הטעינה של דיסק האתחול מהמופע הזמני.

    sudo umount /tmp
    

שימוש בדיסק האתחול

אחרי שמסיימים להגדיר את הדיסק הזה, מנתקים אותו ומשתמשים בו כדיסק האתחול של מכונה חדשה.

המסוף

מנתקים את הדיסק העצמאי מהמכונה הזמנית.

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף Instances

  2. ברשימת המכונות, לוחצים על השם של המכונה הזמנית שבה שיניתם את דיסק האתחול העצמאי. ייפתח דף הפרטים של המופע.

  3. בראש דף הפרטים של המופע, לוחצים על עריכה.

  4. בקטע Additional disks (דיסקים נוספים), לוחצים על X לצד הדיסק העצמאי כדי לציין שרוצים לנתק אותו מהמופע הזמני.

  5. לוחצים על Save כדי לשמור את השינויים.

משתמשים בדיסק העצמאי המנותק כדי ליצור מכונה.

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף Instances

  2. לוחצים על הלחצן Create instance.

  3. בדף Create an instance, מציינים שם למכונה ותחום (zone) שבו היא תמוקם. התחום (zone) חייב להיות זהה לתחום שבו יצרתם את הדיסק העצמאי.

  4. בקטע Boot disk לוחצים על Change כדי להתחיל בהגדרת דיסק האתחול.

  5. בכרטיסייה Existing disks, בוחרים את דיסק האתחול העצמאי שרוצים להשתמש בו כדיסק האתחול של המכונה החדשה.

  6. לוחצים על הלחצן יצירה כדי ליצור את המופע.

gcloud

מנתקים את הדיסק העצמאי מהמכונה הזמנית.

gcloud compute instances detach-disk INSTANCE_NAME \
    --disk name=DISK_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • INSTANCE_NAME: שם ייחודי למכונה.
  • DISK_NAME: השם של הדיסק העצמאי החדש.

משתמשים בדיסק העצמאי המנותק כדי ליצור מכונה.

gcloud compute instances create INSTANCE_NAME \
    --zone ZONE \
    --disk name=DISK_NAME,boot=yes

מחליפים את מה שכתוב בשדות הבאים:

  • INSTANCE_NAME: שם ייחודי למופע
  • ZONE: האזור שבו נמצא הדיסק העצמאי
  • DISK_NAME: השם של הדיסק הנפרד שיצרתם מתמונת דיסק האתחול שיובאה

בודקים את המכונה שנוצרה באמצעות דיסק האתחול ששונה. אם עדיין אין אפשרות להתחבר למופע, צריך לצפות שוב בפלט של היציאה הטורית כדי לזהות איפה תהליך האתחול נכשל. חוזרים על תהליך פתרון הבעיות עד שמתקנים את הבעיות בתמונה של דיסק האתחול.