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

אם הוספתם למכונה דיסק חדש וריק מסוג Google Cloud Hyperdisk או Persistent Disk, אתם צריכים לפרמט ולטעון את הדיסק לפני שתוכלו להשתמש בו. אם הוספתם דיסק שכבר מכיל נתונים, תצטרכו לטעון אותו לפני שתוכלו להשתמש בו.

לפני שמתחילים

  • אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות. אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים האלה:

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

    המסוף

    כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API של Google Cloud , לא צריך להגדיר אימות.

    gcloud

    1. התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

      gcloud init

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  • הגדרת אזור ותחום כברירת מחדל.
  • REST

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

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .

התחברות למכונה הווירטואלית

  1. נכנסים לדף VM instances.

    לדף VM instances

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

פירמוט דיסק שהוא לא דיסק אתחול ב-VM של Linux

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

     ls -l /dev/disk/by-id/google-*
    

    לדיסקים לא מפורמטים אין קישורים סימבוליים נוספים עם -partN בשם.

     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-1 -> ../../nvme0n2
    

    בדוגמה הזו, הדיסק החדש נוצר עם השם extra-scsi-disk. שם המכשיר של הדיסק החדש הוא sdb.

  2. מוודאים שהכלי mkfs.<type> מותקן, כאשר <type> היא מערכת הקבצים שבה רוצים להשתמש, כמו xfs או ext4.

    לדוגמה, כדי לפרמט את הדיסק באמצעות מערכת הקבצים xfs, צריך להתקין את mkfs.xfs במערכת ההפעלה.

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

      ls -l /usr/sbin/mkfs.*
      

      הפלט אמור להיראות כך:

      /usr/sbin/mkfs.bfs
      /usr/sbin/mkfs.cramfs
      /usr/sbin/mkfs.ext2 -> mke2fs
      /usr/sbin/mkfs.ext3 -> mke2fs
      /usr/sbin/mkfs.ext4 -> mke2fs
      /usr/sbin/mkfs.minix
      

      בדוגמה הזו,mkfs.xfs לא מופיע ברשימה, ולכן אי אפשר לפרמט את הדיסק באמצעות xfs בלי להתקין את mkfs.xfs.

    2. אופציונלי: אם מערכת הקבצים שבה רוצים להשתמש לא זמינה, מתקינים אותה באמצעות הפקודה הבאה. לדוגמה, אפשר להתקין את mkfs.xfs באמצעות הפקודות הבאות לדוגמה.

      • כדי להתקין ב-Ubuntu וב-Debian:
        sudo apt update && sudo apt install xfsprogs
        
      • כדי להתקין ב-CentOS, ב-Fedora וב-Red Hat Enterprise Linux:
        sudo yum install xfsprogs
        
  3. מפרמטים את הדיסק באמצעות הפקודה המתאימה של mkfs.<type>. הפקודה הזו מוחקת את כל הנתונים מהדיסק שצוין, לכן חשוב לוודא שציינתם את מכשיר הדיסק הנכון.

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

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

    הפקודות הבאות מפרמטות את כל הדיסק בלי טבלת מחיצות.

    • ב-ext4, אין צורך לשמור מקום לנפח הבסיס בדיסק המשני הזה, לכן צריך לציין -m 0 כדי להשתמש בכל מקום הכונן הזמין. משתמשים בפקודה הבאה:

      $ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/DEVICE_NAME
      
    • בשדה xfs, מציינים -s size=4096 כדי להגדיר את גודל הסקטור ל-4,096 בייטים לשיפור הביצועים. משתמשים בפקודה הבאה:

      $ sudo mkfs.xfs -s size=4096 /dev/DEVICE_NAME
      

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

טעינת הדיסק

  1. יוצרים ספרייה שמשמשת כנקודת הטעינה של הדיסק החדש במכונה הווירטואלית. אפשר להשתמש בכל ספרייה. בדוגמה הבאה נוצרת ספרייה ב-/mnt/disks/.

    $ sudo mkdir -p /mnt/disks/MOUNT_DIR
    

    מחליפים את MOUNT_DIR בספרייה שבה רוצים לטעון את הדיסק.

  2. משתמשים בכלי הטעינה כדי לטעון את הדיסק למכונה, ומפעילים את האפשרות discard:

    $ sudo mount -o discard,defaults /dev/DEVICE_NAME /mnt/disks/MOUNT_DIR
    

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

    • ‫DEVICE_NAME: שם המכשיר של הדיסק שרוצים לטעון.
    • ‫MOUNT_DIR: הספרייה שבה רוצים לטעון את הדיסק.
  3. מגדירים הרשאות קריאה וכתיבה בדיסק. בדוגמה הזו, נותנים לכל המשתמשים גישת כתיבה לדיסק.

    $ sudo chmod a+w /mnt/disks/MOUNT_DIR
    

    מחליפים את MOUNT_DIR בספרייה שבה טענתם את הדיסק.

הגדרת טעינה אוטומטית בהפעלה מחדש של ה-VM

מוסיפים את הדיסק לקובץ /etc/fstab, כדי שהדיסק יתחבר מחדש באופן אוטומטי כשהמכונה הווירטואלית תופעל מחדש. במערכות הפעלה של Linux, שם המכשיר יכול להשתנות בכל הפעלה מחדש, אבל ה-UUID של המכשיר תמיד מצביע על אותו אמצעי אחסון, גם כשמעבירים דיסקים בין מערכות. לכן, מומלץ להשתמש ב-UUID של המכשיר במקום בשם המכשיר כדי להגדיר טעינה אוטומטית בהפעלה מחדש של המכונה הווירטואלית.

  1. יוצרים גיבוי של קובץ /etc/fstab הנוכחי.

    $ sudo cp /etc/fstab /etc/fstab.backup
    
  2. משתמשים בפקודה blkid כדי להציג את ה-UUID של הדיסק.

    $ sudo blkid /dev/DEVICE_NAME
    
    /dev/DEVICE_NAME: UUID="a9e1c14b-f06a-47eb-adb7-622226fee060" BLOCK_SIZE="4096"
    TYPE="ext4" PARTUUID="593b3b75-108f-bd41-823d-b7e87d2a04d1"
    

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

    • ‫DEVICE_NAME: שם המכשיר של הדיסק שרוצים לטעון באופן אוטומטי. אם יצרתם טבלת מחיצות בדיסק, ציינו את המחיצה שאתם רוצים לטעון על ידי הוספת הסיומת לשם המכשיר. לדוגמה, אם sdb הוא שם המכשיר של הדיסק, sdb1 יכול להיות השם של המחיצה.
  3. פותחים את הקובץ /etc/fstab בכלי לעריכת טקסט ויוצרים רשומה שכוללת את ה-UUID. לדוגמה:

    UUID=UUID_VALUE /mnt/disks/MOUNT_DIR FILE_SYSTEM_TYPE discard,MOUNT_OPTION 0 2
    

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

    • ‫UUID_VALUE: ה-UUID של הדיסק, שמופיע בפלט של השלב הקודם
    • ‫MOUNT_DIR: הספרייה שבה טענתם את הדיסק
    • ‫FILE_SYSTEM_TYPE: סוג מערכת הקבצים. לדוגמה, ext2, ext3, ext4 או xfs.
    • ‫MOUNT_OPTION: מציין מה מערכת ההפעלה עושה אם היא לא יכולה לטעון את הדיסק לאחסון מתמיד של התחום בזמן ההפעלה. ערכים תקינים מפורטים בקטע The fourth field במסמכי התיעוד של Linux fstab. כדי לאפשר למערכת לבצע אתחול גם אם הדיסק לא זמין, משתמשים באפשרות הטעינה nofail.
  4. משתמשים בפקודה cat כדי לוודא שהרשומות של /etc/fstab נכונות:

    $ cat /etc/fstab
    
    UUID=6B33-A686 /boot/efi vfat defaults 0 0
    UUID=UUID_VALUE /mnt/disks/MOUNT_DIR FILE_SYSTEM_TYPE discard,MOUNT_OPTION 0 2
    
    

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