שימוש בקישורים סמליים כדי לגשת לדיסקים שמצורפים למכונת VM של Linux

כשמצרפים דיסק למכונה וירטואלית (VM) שמשתמשת במערכת הפעלה Linux,‏Google Cloud יוצרת באופן אוטומטי קישור סמלי (symlink) לדיסק. כדי לגשת לדיסקים לאחסון מתמיד או לדיסקים מקומיים מסוג SSD במכונת ה-VM של Linux, משתמשים בקישורים סמליים. הקישורים הסמליים האלה צפויים ונשארים עקביים גם אחרי הפעלה מחדש. ‫Google Cloud יוצר קישורים סמליים לכל הדיסקים שמצורפים למכונה וירטואלית ב-Google Cloud ./dev/disk/by-id

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

קישורי Symlink נוצרים ב-/dev/disk/by-id כשמצרפים דיסק ל-VM, במהלך יצירת ה-VM או אחרי היצירה. שמות הקישורים הסמליים נוצרים באופן הבא:

Persistent Disk ו-Google Cloud Hyperdisk

הקישורים הסמליים נוצרים לפי הכללים הבאים:

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

אחרי שמעצבים את הדיסק, הקישור הסמלי מתווסף עם -partN, כאשר N הוא מספר המחיצה, לדוגמה google-data-disk-part1.

דיסקים של SSD מקומי

לקישורי סמליים של SSD מקומיים יש פורמטים שונים בהתאם לממשק הדיסק.

  • SCSI:
    • אם ציינתם שם מכשיר בהתאמה אישית כשנוצר הדיסק: google-DEVICE_NAME
    • אם לא ציינתם שם מכשיר מותאם אישית כשנוצר הדיסק: google-local-ssd-N, כאשר N הוא מספר דיסק ה-SSD המקומי, החל מ-0.
  • ‫NVMe: השמות של הקישורים הסמליים הם google-local-nvme-ssd-N, כאשר N הוא מספר ה-SSD, החל מ-0.

אחרי שמפרמטים דיסק SSD מקומי, הקישור הסמלי מסתיים ב--partN, כאשר N הוא מספר המחיצה, לדוגמה, google-local-nvme-ssd-0-part1.

קישורי symlink למכשירים

‫Compute Engine יוצר קישורי symlink נוספים בספרייה על סמך סוג הדיסק והממשק, לדוגמה scsi-0Google_PersistentDisk_DEVICE_NAME. הקישורים האלה מבצעים את אותה פעולה כמו הקישורים הסמליים שצוינו קודם.

דוגמה 1: מכונת VM מסוג C3 עם SSD מקומי מצורף

נניח שיצרתם מכונה וירטואלית עם המאפיינים הבאים:

  • שם ה-VM: instance-1
  • סדרת מכונות: C3
  • סוג ממשק הדיסק: NVMe גם ל-Persistent Disk וגם ל-Local SSD
  • דיסקים נוספים: אין
  • דיסקים מקומיים מסוג SSD שמצורפים: 2
  • שמות מכשירים בהתאמה אישית בשימוש: אין

‫Compute Engine יוצר את הקישורים הסמליים הבאים למכונה הווירטואלית:

ls -l /dev/disk/by-id/google-*
google-instance-1 -> ../../nvme2n1
google-instance-1-part1 -> ../../nvme2n1p1
google-instance-1-part14 -> ../../nvme2n1p14
google-instance-1-part15 -> ../../nvme2n1p15
google-local-nvme-ssd-0 -> ../../nvme0n1
google-local-nvme-ssd-1 -> ../../nvme1n1

בדוגמה הזו, הקישור הסימבולי של דיסק האתחול של Persistent Disk הוא google-instance-1, שמבוסס על שם ה-VM. דיסק האתחול מעוצב ומערכת ההפעלה מותקנת בו. דיסק האתחול כולל 3 מחיצות: part1,‏ part14 ו-part 15. הדיסקים המקומיים של SSD שמצורפים לא מעוצבים, ולכן נוצר רק קישור סמלי אחד לכל דיסק מקומי של SSD.

דוגמה 2: מכונת VM מסוג N2 עם NVMe Local SSD מצורף ודיסק אחסון מתמיד (persistent disk) נוסף

נניח שיצרתם מכונה וירטואלית עם המאפיינים הבאים:

  • שם ה-VM: instance-2
  • סדרת מכונות: N2
  • סוג ממשק הדיסק: SCSI ל-Persistent Disk ו-NVMe ל-Local SSD
  • דיסקים נוספים: דיסק אחסון מתמיד אחד בשם extra-scsi-disk
  • דיסקים מקומיים מסוג SSD שמצורפים: 2
  • שמות מכשירים בהתאמה אישית בשימוש: אין

נוצרים הקישורים הסמליים הבאים למכונה הווירטואלית:

ls -l /dev/disk/by-id/google-*
google-extra-scsi-disk -> ../../sdb
google-instance-2 -> ../../sda
google-instance-2-part1 -> ../../sda1
google-instance-2-part14 -> ../../sda14
google-instance-2-part15 -> ../../sda15
google-local-nvme-ssd-0 -> ../../nvme0n1
google-local-nvme-ssd-0-part1 -> ../../nvme0n1p1
google-local-nvme-ssd-1 -> ../../nvme0n2

בדוגמה הזו, הקישור הסימבולי של דיסק האתחול של Persistent Disk הוא google-instance-2, שמבוסס על שם ה-VM. דיסק האתחול מפורמט ומותקן בו קובץ אימג' של מערכת ההפעלה. דיסק האתחול כולל 3 מחיצות: part1,‏ part14 ו-part 15. גם הדיסק הראשון של Local SSD מחולק למחיצות, עם מחיצה אחת, ולכן נוצר קישור סמלי נוסף למחיצת הדיסק הזו. לדיסק ה-Persistent Disk הנוסף שנוסף למכונה הווירטואלית יש את הקישור הסימבולי google-extra-scsi-disk, שמבוסס על שם הדיסק. הדיסק הנוסף של Persistent Disk והדיסק השני של Local SSD לא מעוצבים, ולכן מוצג רק symlink אחד לדיסקים האלה.

המאמרים הבאים