שגיאות הקשורות למכסות
אם אתם מקבלים שגיאת מכסה כשאתם מפעילים את המכונה הווירטואלית, יכול להיות שהגעתם לערך המכסה של המשאבים בפרויקט. כדי להבין את הודעת השגיאה, צריך לזהות את ערך המכסה שהחריגה ממנו גרמה לשגיאה ולעיין בדף פתרון בעיות שקשורות למכסות.
דיסקים לאתחול
אם המופע לא מופעל ואתם לא מצליחים להתחבר אליו או להיכנס אליו דרך מסוף סדרתי אינטראקטיבי, צריך לזהות את הסיבה לכך שדיסק האתחול לא משלים את תהליך האתחול וההפעלה.
מזהים את הסיבה לכך שדיסק האתחול לא מופעל
מוודאים שדיסק האתחול לא מלא.
אם דיסק האתחול מלא לגמרי ומערכת ההפעלה לא תומכת בשינוי גודל אוטומטי, לא תוכלו להתחבר למופע. תצטרכו ליצור מכונה חדשה וליצור מחדש את דיסק האתחול. למידע נוסף, קראו את המאמר שחזור של מכונות וירטואליות או של דיסקים מלאים לאתחול.
בודקים את הפלט של היציאה הטורית של המכונה הווירטואלית.
ה-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'מחכים שה-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במצב בדיקה (dry run) באמצעות האפשרות-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 זמנית. משתמשים במסוף או ב-CLI של gcloud כדי ליצור דיסק עצמאי מהתמונה שהעליתם, וליצור מכונה וירטואלית זמנית עם הדיסק העצמאי שמצורף אליה. Google Cloud אתם יכולים להשתמש במופע הזה כדי לשנות קבצים בדיסק העצמאי ולפתור בעיות שגורמות לכך שהתמונה לא מופעלת.
המסוף
יוצרים דיסק עצמאי מקובץ האימג' של דיסק האתחול שיובא. לחלופין, אפשר לנתק דיסק אתחול ממופע וליצור את המופע באמצעות דיסק האתחול המנותק.
- נכנסים לדף 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, מציינים שם למכונה ותחום (zone) שבו היא תמוקם. התחום (zone) חייב להיות זהה לתחום שבו יצרתם את הדיסק העצמאי.
מרחיבים את הקטע 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בשם המכשיר של מחיצת הבסיס (root) שרוצים לטעון. לדוגמה,/dev/sdb1.עריכת קבצים שעלולה לגרום לדיסק להיכשל בתהליך האתחול. מידע נוסף זמין בהוראות להגדרת bootloader.
מבטלים את הטעינה של דיסק האתחול מהמופע הזמני.
sudo umount /tmp
שימוש בדיסק האתחול
אחרי שמסיימים להגדיר את הדיסק הזה, מנתקים אותו ומשתמשים בו כדיסק האתחול של מכונה חדשה.
המסוף
מנתקים את הדיסק הנפרד מהמכונה הזמנית.
נכנסים לדף VM instances במסוף Google Cloud .
ברשימת המכונות, לוחצים על השם של המכונה הזמנית שבה שיניתם את דיסק האתחול העצמאי. ייפתח דף הפרטים של המופע.
בראש דף הפרטים של המופע, לוחצים על עריכה.
בקטע Additional disks (דיסקים נוספים), לוחצים על X לצד הדיסק העצמאי כדי לציין שרוצים לנתק אותו מהמופע הזמני.
לוחצים על Save כדי לשמור את השינויים.
משתמשים בדיסק עצמאי מנותק כדי ליצור מכונה.
נכנסים לדף VM instances במסוף Google Cloud .
לוחצים על הלחצן Create instance.
בדף Create an instance, מציינים שם למכונה ותחום (zone) שבו היא תמוקם. התחום (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: השם של הדיסק הנפרד שיצרתם מתמונת דיסק האתחול שיובאה
בודקים את המכונה שנוצרה באמצעות דיסק האתחול ששונה. אם עדיין אין אפשרות להתחבר למופע, צריך לצפות שוב בפלט של היציאה הטורית כדי לזהות איפה תהליך האתחול נכשל. חוזרים על תהליך פתרון הבעיות עד שמתקנים את הבעיות בתמונת דיסק האתחול.