שגיאות הקשורות למכסות
אם אתם מקבלים שגיאת מכסה כשאתם מפעילים את המכונה הווירטואלית, יכול להיות שהגעתם לערך המכסה של המשאבים בפרויקט. כדי להבין את הודעת השגיאה, צריך לזהות את ערך המכסה שהחריגה ממנו גרמה לשגיאה ולעיין בדף פתרון בעיות שקשורות למכסות.
דיסקי אתחול
אם המופע לא מופעל ואתם לא מצליחים להתחבר אליו או להיכנס אליו דרך קונסולה טורית אינטראקטיבית, צריך לזהות את הסיבה לכך שדיסק האתחול לא משלים את תהליך האתחול וההפעלה.
זיהוי הסיבה לכך שדיסק האתחול לא מבצע אתחול
מוודאים שדיסק האתחול לא מלא.
אם דיסק האתחול מלא לגמרי ומערכת ההפעלה לא תומכת בשינוי גודל אוטומטי, לא תוכלו להתחבר למופע. תצטרכו ליצור מכונה חדשה וליצור מחדש את דיסק האתחול. למידע נוסף, ראו שחזור של מכונות וירטואליות או של דיסקים מלאים של אתחול.
בודקים את הפלט של היציאה הטורית של המכונה הווירטואלית.
ה-BIOS, bootloader והליבה של מופע מדפיסים את הודעות הניפוי שלהם בפלט של היציאה הטורית של המופע, ומספקים מידע חשוב על שגיאות או בעיות שהמופע חווה. אם מפעילים רישום ביומן של פלט יציאה טורית ב-Cloud Logging, אפשר לגשת למידע הזה גם כשהמופע לא פועל.
מפעילים את הגישה האינטראקטיבית לקונסולה הטורית.
אתם יכולים להפעיל גישה אינטראקטיבית לקונסולה הטורית של מכונה, כדי שתוכלו להיכנס ולנפות בעיות בהפעלה מתוך המכונה, בלי שהמכונה תופעל באופן מלא. מידע נוסף זמין במאמר פתרון בעיות באמצעות קונסולה טורית.
איך לוודא שדיסק האתחול לא משוכפל כרגע
אם שכפול דיסק האתחול בתהליך, אי אפשר להפעיל את ה-VM ומוצגת שגיאה דומה לזו:
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'מחכים שה-snapshot יסתיים ואז מפעילים את המכונה הווירטואלית.
מוודאים שלדיסק יש מערכת קבצים תקינה.
אם מערכת הקבצים פגומה או לא תקינה מסיבה אחרת, לא תוכלו להפעיל את המופע. מאמתים את מערכת הקבצים של הדיסק:
אם הדיסק מחובר למכונה כלשהי, מנתקים אותו:
gcloud compute instances delete old-instance --keep-disks boot
מפעילים אינסטנס חדש עם התמונה העדכנית שסופקה על ידי Google:
gcloud compute instances create debug-instance
מצרפים את הדיסק כדיסק אתחול שאי אפשר לאתחל ממנו, אבל לא מתקינים אותו. מחליפים את
DISKבשם של הדיסק שלא ניתן לאתחל. רושמים את שם המכשיר שמזהה את הדיסק במכונה:gcloud compute instances attach-disk debug-instance \ --disk DISK \ --device-name debug-diskמתחברים למכונה:
gcloud compute ssh debug-instance
מחפשים את מחיצת הבסיס של הדיסק, שמזוהה באמצעות הסימון
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כדי להריץ בדיקה של מערכת הקבצים במחיצת הבסיס, מבצעים את השלבים הבאים:
מריצים את הפקודה
lsblk -fכדי לזהות את סוג מערכת הקבצים של מחיצות הדיסק:sudo lsblk -f
הפלט אמור להיראות כך:
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT sdb └─sdb1 xfs 2e4f7b4e-9b0a-4b7c-8b8a-9b0a4b7c8b8c sda └─sda1 ext4 0e4f7b4e-9b0a-4b7c-8b8a-9b0a4b7c8b8a
בהתאם לסוג מערכת הקבצים, מריצים אחת מהפקודות הבאות כדי לבדוק אם יש שגיאות במערכת הקבצים:
ext או vfat
אם מערכת הקבצים של מחיצת הבסיס היא
ext2,ext3,ext4אוvfat, מריצים את הפקודהfsckבאופן הבא:sudo fsck DEVICE_NAME
מחליפים את
DEVICE_NAMEבשם המכשיר של מחיצת הבסיס. לדוגמה,/dev/sdb1.אם הפקודה
fsckמחזירה שגיאה כמוBad magic number in super-block, זה מצביע על כך שמערכת הקבצים פגומה.xfs
אם מערכת הקבצים של מחיצת הבסיס היא
xfs, צריך להשתמש בכליxfs_repair.אי אפשר להשתמש ב-
xfs_repairבמערכת קבצים שנטענה. לפני שמריצים את הפקודהxfs_repair, מוודאים שהמחיצה לא מותקנת. אם המחיצה נטענה, מריצים את הפקודהumountכדי לבטל את הטעינה שלה. מחליפים אתDEVICE_NAMEבשם המכשיר של מחיצת הבסיס, לדוגמה,/dev/sdb1.sudo umount DEVICE_NAME
כדי לסרוק את מערכת הקבצים ולחפש שגיאות, מריצים את
xfs_repairבמצב פרימטר לבדיקות באמצעות האפשרות-n.sudo xfs_repair -n DEVICE_NAME
- אם לא נמצאו שגיאות, או אם הפונקציה
xfs_repair -nמסתיימת בהצלחה, זה מצביע על כך שאין נזק. צריך לבדוק סיבות אחרות לכשל בהפעלת המכונה הווירטואלית. - אם מדווח על שגיאות, או אם הפקודה
xfs_repair -nנכשלת עם הודעה כמוIf you wish to clear the log, mount the file system with the norecovery option, ממשיכים לשלב הבא כדי לנסות לתקן את הבעיה.
- אם לא נמצאו שגיאות, או אם הפונקציה
כדי לתקן את מערכת הקבצים, מריצים את הפקודה
xfs_repairבלי האפשרות-n.sudo xfs_repair DEVICE_NAME
אם הפקודה
xfs_repairנכשלת ומוצע להשתמש באפשרות-L, מריצים אתxfs_repairעם האפשרות-Lכדי לנקות את היומן ולנסות שוב לתקן את מערכת הקבצים.sudo xfs_repair -L DEVICE_NAME
טוענים את מערכת הקבצים:
sudo mkdir MOUNT_POINT
sudo mount DEVICE_NAME MOUNT_POINT
מחליפים את מה שכתוב בשדות הבאים:
-
DEVICE_NAME: שם המכשיר של מחיצת הבסיס, לדוגמה/dev/sdb1. -
MOUNT_POINT: הספרייה שבה רוצים לטעון את הדיסק. לדוגמה,/mydisk.
-
בודקים אם יש בדיסק קבצי ליבה:
ls MOUNT_POINT/boot/vmlinuz-*
הפלט אמור להיראות כך:
MOUNT_POINT/boot/vmlinuz-3.2.0-4-amd64
מוודאים שלדיסק יש רשומה של הפעלת מאסטר (MBR) תקינה.
מריצים את הפקודה הבאה במכונה לניפוי באגים שמחובר אליה דיסק אתחול מתמיד:
sudo parted DISK_DEVICE print
מחליפים את
DISK_DEVICEבשם המכשיר של דיסק האתחול המתמיד שרוצים לבדוק. לדוגמה,/dev/sdb1.אם ה-MBR תקין, מוצג בו מידע על מערכת הקבצים:
Disk DISK_DEVICE: 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 זמנית. משתמשים במסוף Google Cloud או ב-CLI של gcloud כדי ליצור דיסק עצמאי מהתמונה שהעליתם, וליצור מכונה וירטואלית זמנית עם הדיסק העצמאי שמצורף אליה. אתם יכולים להשתמש במופע הזה כדי לשנות קבצים בדיסק העצמאי ולפתור בעיות שגורמות לתמונה להיכשל בהפעלה.
המסוף
יוצרים דיסק עצמאי מקובץ האימג' של דיסק האתחול שיובא. אפשרות אחרת היא לנתק דיסק אתחול ממופע וליצור את המופע באמצעות דיסק האתחול המנותק.
- נכנסים לדף Disks במסוף Google Cloud .
- לוחצים על Create disk.
-
מציינים את המאפיינים הבאים בדף Create a disk:
-
Zone (תחום):
Select a zone near you. You must use this same zone when you create your temporary instance. - Disk source type (סוג המקור של הדיסק): Image (קובץ אימג'):
- קובץ אימג' של המקור: מציינים את השם של קובץ האימג' של דיסק האתחול שייבאתם.
-
Zone (תחום):
- לוחצים על Create כדי ליצור את הדיסק.
יוצרים מכונה זמנית שאליה אפשר לצרף את הדיסק העצמאי ומגדירים את טוען האתחול כך שיפעל בסביבת Google Cloud מסוף.
נכנסים לדף VM instances במסוף Google Cloud .
לוחצים על הכפתור Create instance.
בדף Create an instance, מציינים את שם המכונה ואת האזור שבו היא תמוקם. התחום צריך להיות אותו תחום שבו יצרתם את הדיסק העצמאי.
מרחיבים את הקטע Management, security, disks, networking, sole tenancy.
בכרטיסייה Disks (דיסקים) בקטע Additional disks (דיסקים נוספים), לוחצים על Attach existing disk (צירוף דיסק קיים). יופיע קטע חדש.
בקטע Disk, בוחרים מהרשימה הנפתחת את הדיסק העצמאי שיצרתם. הפעולה הזו מצרפת את הדיסק העצמאי למכונה, כדי שתוכלו להתקין אותו ולשנות את התוכן שלו בהמשך.
לוחצים על סיום כדי לסיים את צירוף הדיסק.
לוחצים על הלחצן Create כדי ליצור את המכונה.
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: השם של הדיסק הנפרד שיצרתם מתמונת דיסק האתחול שיובאה
אחרי שיוצרים את המכונה עם הדיסק העצמאי המצורף, יש סביבה וירטואלית שבה אפשר לשנות את טוען האתחול מקובץ האימג' המקורי של דיסק האתחול.
הגדרת דיסק האתחול
מתחברים למכונה, מטמיעים את הדיסק הנפרד ומגדירים את טוען האתחול כך שהוא יופעל בצורה תקינה ב-Compute Engine.
- מתחברים למכונה הזמנית באמצעות SSH בדפדפן או באמצעות הפקודה
gcloud compute ssh. משתמשים בפקודה
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
טוענים את מחיצת הבסיס מהדיסק העצמאי לספרייה
/tmp. בדוגמה הזו,/dev/sdb1היא מחיצת הבסיס, ולא צריך לשנות את המחיצות האחרות. יכול להיות שתוכנית החלוקה שלכם תדרוש מכם להעלות כמה מחיצות לפני שתוכלו לגשת לכל הקבצים שאתם צריכים לשנות.sudo mount DEVICE_NAME /tmp
מחליפים את
DEVICE_NAMEבשם המכשיר של מחיצת הבסיס שרוצים לטעון. לדוגמה,/dev/sdb1.עריכת קבצים שעלולים לגרום לדיסק להיכשל בתהליך האתחול. מידע נוסף זמין בהוראות להגדרת bootloader.
מבטלים את הטעינה של דיסק האתחול מהמכונה הזמנית.
sudo umount /tmp
שימוש בדיסק האתחול
כשמסיימים להגדיר את הדיסק, מנתקים אותו ומשתמשים בו כדיסק האתחול של המכונה החדשה.
המסוף
מנתקים את הדיסק הנפרד מהמכונה הזמנית.
נכנסים לדף VM instances במסוף Google Cloud .
ברשימת המכונות, לוחצים על השם של המכונה הזמנית שבה שיניתם את דיסק האתחול העצמאי. ייפתח הדף עם פרטי המופע.
בחלק העליון של דף הפרטים של המופע, לוחצים על עריכה.
בקטע Additional disks (דיסקים נוספים), לוחצים על X לצד הדיסק העצמאי כדי לציין שרוצים לנתק אותו מהמופע הזמני.
לוחצים על Save כדי לשמור את השינויים.
משתמשים בדיסק העצמאי המנותק כדי ליצור מכונה.
נכנסים לדף VM instances במסוף Google Cloud .
לוחצים על הלחצן Create instance.
בדף Create an instance, מציינים שם למכונה ותחום (zone) שבו המכונה תמוקם. האזור צריך להיות אותו אזור שבו יצרתם את הדיסק העצמאי.
בקטע Boot disk לוחצים על Change כדי להתחיל בהגדרת דיסק האתחול.
בכרטיסייה Existing disks, בוחרים את דיסק האתחול העצמאי שרוצים להשתמש בו כדיסק האתחול של המכונה החדשה.
לוחצים על הלחצן Create כדי ליצור את המכונה.
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: השם של הדיסק הנפרד שיצרתם מתמונת דיסק האתחול שיובאה
בודקים את המכונה שנוצרה באמצעות דיסק האתחול ששונה. אם עדיין אין אפשרות להתחבר למופע, צריך לצפות שוב בפלט של היציאה הטורית כדי לזהות איפה תהליך האתחול נכשל. חוזרים על תהליך פתרון הבעיות עד שמתקנים את הבעיות בקובץ אימג' דיסק האתחול.