סקירה כללית על דיסקים ומערכת קבצים

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

מערכת קבצים

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

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

כשמשתמשים ב-Container-Optimized OS, חשוב לשים לב לחלוקת המחיצות אם מפעילים שירותים משלכם שיש להם ציפיות מסוימות לגבי פריסת מערכת הקבצים מחוץ לקונטיינרים.

מערכת הקבצים ברמה הבסיסית (root) נטענת כקריאה בלבד כדי להגן על שלמות המערכת. עם זאת, ספריות הבית ו-/mnt/stateful_partition הן קבועות ואפשר לכתוב בהן.

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

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

נתיב מאפיינים מטרה
/
  • לקריאה בלבד
  • קובץ הפעלה
מערכת הקבצים הבסיסית טעונה לקריאה בלבד כדי לשמור על השלמות שלה. הליבה מאמתת את התקינות של מערכת הקבצים הבסיסית במהלך ההפעלה, ומסרבת לבצע אתחול במקרה של שגיאות.
‫/home
‫/var
  • ניתן לכתיבה
  • לא קובץ להפעלה
  • עם שמירת מצב
הנתיבים האלה מיועדים לאחסון נתונים שנשמרים למשך משך החיים של דיסק האתחול. הם מותקנים מ-/mnt/stateful_partition.
‪/var/lib/google
‪ /var/lib/docker
‪ /var/lib/toolbox
  • ניתן לכתיבה
  • קובץ הפעלה
  • עם שמירת מצב
הנתיבים האלה הם ספריות עבודה לחבילות של Compute Engine (לדוגמה, שירות ניהול החשבונות), Docker ו-Toolbox, בהתאמה.
/var/lib/cloud
  • ניתן לכתיבה
  • קובץ הפעלה
  • אינו שומר מצב
  • tmpfs
הנתיב הזה הוא ספריית העבודה של חבילת cloud-init.
/etc
  • ניתן לכתיבה
  • קובץ הפעלה
  • אינו שומר מצב
  • tmpfs
בדרך כלל הוא מכיל את ההגדרות שלכם (לדוגמה, systemd שירותים שהוגדרו באמצעות cloud-init). מומלץ לתעד את המצב הרצוי של המכונות ב-cloud-init, כי cloud-init מופעל כשיוצרים מכונה חדשה וגם כשמפעילים מחדש מכונה.
/tmp
  • ניתן לכתיבה
  • לא קובץ להפעלה
  • אינו שומר מצב
  • tmpfs
בדרך כלל משתמשים בו כשטח אחסון זמני, ולא מומלץ לאחסן בו נתונים קבועים.
/mnt/disks
  • ניתן לכתיבה
  • קובץ הפעלה
  • אינו שומר מצב
  • tmpfs
אפשר לצרף דיסקים קשיחים קבועים לספריות ב-/mnt/disks.

הרכבה ופרמוט של דיסקים

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

אפשר לטעון את הדיסקים על ידי יצירת תיקיית משנה מתחת לתיקייה /mnt/disks. מכיוון ש-/etc/ הוא בלי שמירת מצב ב-מערכת הפעלה שמותאמת לקונטיינרים, אי אפשר להשתמש ב-/etc/fstab כדי לבצע אוטומטית fsck (בדיקת עקביות של מערכת הקבצים) ולטעון את הדיסקים באתחול. אבל אפשר להשיג את אותה התוצאה על ידי ביצוע הפעולות האלה בקטע bootcmd ב-cloud-config.

בדוגמה הבאה, הדיסק DEVICE_ID נטען בספרייה /mnt/disks.

  1. יוצרים קובץ סקריפט עם התוכן הבא:

    #cloud-config
    
    bootcmd:
    - fsck.ext4 -tvy /dev/DEVICE_ID
    - mkdir -p /mnt/disks/MNT_DIR
    - mount -t ext4 -o ... /dev/DEVICE_ID /mnt/disks/MNT_DIR
    

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

    • DEVICE_ID: מזהה המכשיר של הדיסק שרוצים לפרמט ולטעון.
    • MNT_DIR: הספרייה שבה רוצים לטעון את הדיסק.

    במאמרי העזרה של Linux מופיע סט מלא של אפשרויות שנתמכות על ידי הפקודות fsck.ext4 ו-mount.

  2. מעדכנים את המטא-נתונים של ה-VM כדי לכלול את קובץ הסקריפט באמצעות הדגל --metadata-from-file.

    כדי ליצור מכונת VM, משתמשים בפקודה הבאה:

    gcloud compute instances create INSTANCE_NAME \
        --metadata-from-file user-data=SCRIPT_FILE_NAME
    

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

    gcloud compute instances add-metadata INSTANCE_NAME \
        --metadata-from-file user-data=SCRIPT_FILE_NAME
    

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

    • INSTANCE_NAME: השם של מופע ה-VM.
    • SCRIPT_FILE_NAME: השם של קובץ הסקריפט של המטא-נתונים.