הגדרת טעינת נפחים של Cloud Storage למאגרי עובדים

בדף הזה מוסבר איך לטעון קטגוריה של Cloud Storage כנפח אחסון באמצעות טעינת נפחים ב-Cloud Run.

טעינת הקטגוריה כנפח ב-Cloud Run מציגה את התוכן של הקטגוריה כקבצים במערכת הקבצים של הקונטיינר. אחרי שמעלים את הקטגוריה כנפח אחסון, אפשר לגשת אליה כאילו היא הייתה ספרייה במערכת הקבצים המקומית, באמצעות פעולות וספריות של מערכת הקבצים בשפת התכנות, במקום להשתמש בספריות הלקוח של Google API.

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

דרישות זיכרון

בטעינת אמצעי אחסון של Cloud Storage נעשה שימוש בזיכרון הקונטיינר של Cloud Run לפעילויות הבאות:

  • בכל המקרים של שמירה במטמון ב-Cloud Storage FUSE, ‏ Cloud Run משתמש בהגדרה של מטמון stat עם זמן חיים (TTL) של 60 שניות כברירת מחדל. גודל ברירת המחדל של מטמון הנתונים הסטטיסטיים הוא 32MB, וגודל ברירת המחדל של מטמון הסוג הוא 4MiB.

  • כשקוראים מ-Cloud Storage, ‏ Cloud Storage FUSE שולח קריאות ל-API כדי לקרוא אובייקט ישירות, בלי להוריד את הקובץ כולו לספרייה מקומית. ‫Cloud Storage FUSE יוצר חיבור TCP וקורא בחזרה את האובייקט כולו ב-Cloud Storage, או רק חלקים מהקובץ שצוינו באפליקציה או במערכת ההפעלה באמצעות היסט. במהלך קריאה, Cloud Storage FUSE צורך גם זיכרון שאינו שמור במטמון של נתוני stat ו-type, כמו מערך של 1MiB לכל קובץ שהוא קורא, וגם עבור goroutines.

  • כשכותבים ל-Cloud Storage, ‏ Cloud Storage FUSE תומך ב-streaming-writes, נתיב כתיבה, כברירת מחדל. ‫Cloud Storage FUSE מעלה נתונים ישירות ל-Cloud Storage בלי להעביר את הקובץ למחסן ביניים. כל קובץ שפותחים להזרמה צורך בערך 64 מיביבייט של זיכרון במהלך תהליך ההעלאה. כך מקטינים את זמן האחזור ואת השימוש בנפח האחסון בדיסק, ולכן זה מועיל במיוחד לכתיבה רציפה של נתונים בכמויות גדולות.

מגבלות

מכיוון ש-Cloud Run משתמש ב-Cloud Storage FUSE לטעינת הנפח הזה, יש כמה דברים שכדאי לזכור כשמטעינים קטגוריה של Cloud Storage כנפח:

  • ‫Cloud Storage FUSE לא מאפשר בקרת בו-זמניות על פעולות כתיבה מרובות (נעילת קבצים) באותו קובץ. כשמספר אנשים מנסים להחליף קובץ, פעולת הכתיבה האחרונה היא הקובעת וכל התוכן הקודם נמחק.
  • ‫Cloud Storage FUSE היא לא מערכת קבצים שתואמת באופן מלא ל-POSIX. פרטים נוספים זמינים במאמרי העזרה של Cloud Storage FUSE.

נתיבים אסורים

ב-Cloud Run אי אפשר לטעון נפח אחסון ב-/dev, ב-/proc או ב-/sys, או בספריות המשנה שלהם.

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

צריך קטגוריה של Cloud Storage כדי להגדיר אותה כנפח.

למידע על אופטימיזציה של ביצועי קריאה/כתיבה אופטימליים ל-Cloud Storage, ראו אופטימיזציה של הביצועים של רוחב הפס ברשת של Cloud Storage FUSE.

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות להגדרת נקודות טעינה של נפח אחסון ב-Cloud Storage, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

כדי לקבל את ההרשאות שנדרשות לזהות השירות כדי לגשת לקובץ ולקטגוריה של Cloud Storage, צריך לבקש מהאדמין להקצות לזהות השירות את התפקיד צפייה באובייקט אחסון (roles/storage.objectViewer). אם זהות השירות צריכה גם לבצע פעולות כתיבה בדלי, צריך להקצות במקום זאת את התפקיד משתמש באובייקט אחסון (roles/storage.objectUser).

פרטים נוספים על תפקידים והרשאות ב-Cloud Storage זמינים במאמר בנושא IAM ל-Cloud Storage.

רשימת ההרשאות והתפקידים ב-IAM שמשויכים ל-Cloud Run מופיעה במאמרים תפקידי IAM ב-Cloud Run והרשאות IAM ב-Cloud Run. אם מאגר העובדים של Cloud Run מתקשר עםGoogle Cloud ממשקי API, כמו ספריות לקוח ב-Cloud, כדאי לעיין במדריך להגדרת זהות שירות. מידע נוסף על מתן תפקידים זמין במאמרים הרשאות פריסה וניהול גישה.

טעינת נפח אחסון ב-Cloud Storage

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

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

אפשר להגדיר נפח אחסון ב-Cloud Storage עבור מאגר עובדים של Cloud Run באמצעות מסוף Google Cloud ,‏ Google Cloud CLI,‏ YAML או Terraform:

המסוף

  1. נכנסים ל-Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. בתפריט, בוחרים באפשרות מאגרי עובדים ולוחצים על פריסת קונטיינר כדי להגדיר מאגר עובדים חדש. אם אתם מגדירים מאגר עובדים קיים, לוחצים על מאגר העובדים ואז על Edit and deploy new revision (עריכה ופריסה של גרסה חדשה).

  3. אם אתם מגדירים מאגר עובדים חדש, ממלאים את הדף הראשוני של מאגר העובדים ולוחצים על Container(s), Volumes, Networking, Security כדי להרחיב את דף ההגדרות של מאגרי העובדים.

  4. לוחצים על הכרטיסייה Volumes (נפחים).

    תמונה

    • לוחצים על הוספת עוצמת קול.
    • בתפריט הנפתח סוג נפח האחסון, בוחרים באפשרות 'קטגוריה של Cloud Storage' כסוג נפח האחסון.
    • בשדה Volume name (שם נפח האחסון), מזינים את השם שרוצים להשתמש בו עבור נפח האחסון.
    • מעיינים בקטגוריה של Cloud Storage או בספרייה ספציפית ובוחרים את אלה שרוצים להשתמש בהם לנפח האחסון. אפשר גם ליצור קטגוריה חדשה.
    • אם רוצים להגדיר את הקטגוריה לקריאה בלבד, מסמנים את התיבה 'קריאה בלבד'.
    • לוחצים על סיום.
    • לוחצים על הכרטיסייה Container ומבצעים את הפעולות הבאות:
      • לוחצים על הכרטיסייה Volume Mounts (חיבורי אמצעי אחסון).
      • לוחצים על Mount volume (הוספת אמצעי אחסון).
      • בוחרים את נפח האחסון מהתפריט.
      • מציינים את הנתיב שבו רוצים לטעון את אמצעי האחסון.
      • לוחצים על סיום.
  5. לוחצים על יצירה או על פריסה.

gcloud

  • כדי להוסיף אמצעי אחסון ולהפעיל אותו:

    gcloud beta run worker-pools update WORKER_POOL \
      --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME \
      --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

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

    • WORKER_POOL: השם של מאגר העובדים.
    • MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון. לדוגמה, /mnt/my-volume.
    • VOLUME_NAME: כל שם שרוצים לתת לנפח האחסון. הערך VOLUME_NAME משמש למיפוי הנפח לנקודת העיגון של הנפח.
    • BUCKET_NAME: שם הקטגוריה של Cloud Storage.
  • כדי לטעון את אמצעי האחסון כאמצעי אחסון לקריאה בלבד:

    gcloud beta run worker-pools update WORKER_POOL \
       --add-volume=name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,readonly=true
  • אם אתם משתמשים בכמה מאגרי תגים, קודם מציינים את עוצמת הקול, ואז מציינים את נקודות הגישה של עוצמת הקול לכל מאגר תגים:

    gcloud beta run worker-pools update WORKER_POOL \
       --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME \
       --container=CONTAINER_1 \
       --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH \
       --container=CONTAINER_2 \
       --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH2

YAML

  1. אם אתם יוצרים מאגר עובדים חדש, דלגו על השלב הזה. אם אתם מעדכנים מאגר עובדים קיים, אתם צריכים להוריד את הגדרת ה-YAML שלו:

    gcloud beta run worker-pools describe WORKER_POOL --format export > workerpool.yaml
  2. בדוגמה הבאה מופיעה הגדרת ה-YAML:

    apiVersion: run.googleapis.com/v1
    kind: WorkerPool
    metadata:
      name: WORKER_POOL
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        spec:
          containers:
            image: IMAGE_URL
            volumeMounts:
            - name: 
              mountPath: MOUNT_PATH
          volumes:
          - name: VOLUME_NAME
            csi:
              driver: gcsfuse.run.googleapis.com
              readOnly: IS_READ_ONLY
              volumeAttributes:
                bucketName: BUCKET_NAME

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

    • WORKER_POOL: השם של מאגר העובדים שלכם ב-Cloud Run.
    • IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר העובדים, למשל us-docker.pkg.dev/cloudrun/container/worker-pool:latest
    • MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון. לדוגמה, /mnt/my-volume.
    • VOLUME_NAME: כל שם שרוצים לתת לנפח האחסון. הערך VOLUME_NAME משמש למיפוי הנפח לנקודת העיגון של הנפח.
    • IS_READ_ONLY: True כדי להגדיר את אמצעי האחסון לקריאה בלבד, או False כדי לאפשר כתיבה.
    • BUCKET_NAME: שם הקטגוריה של Cloud Storage.
  3. יוצרים או מעדכנים את מאגר העובדים באמצעות הפקודה הבאה:

    gcloud beta run worker-pools replace workerpool.yaml

Terraform

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

  resource "google_cloud_run_v2_worker_pool" "default" {
    name     = "WORKER_POOL"
    location = "REGION"
    launch_stage = "BETA"

    template {
      containers {
        image = "IMAGE_URL"
        volume_mounts {
          name = "VOLUME_NAME"
          mount_path = "MOUNT_PATH"
        }
      }

      volumes {
        name = "VOLUME_NAME"
        gcs {
          bucket = google_storage_bucket.default.name
          read_only = IS_READ_ONLY
        }
      }
    }
  }

  resource "google_storage_bucket" "default" {
    name     = "BUCKET_NAME"
    location = "REGION"
  }

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

  • WORKER_POOL: השם של מאגר העובדים.
  • REGION: Google Cloud האזור.
  • IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר העובדים, למשל us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
  • VOLUME_NAME: כל שם שרוצים לתת לנפח האחסון. הערך VOLUME_NAME משמש למיפוי הנפח לנקודת הטעינה של הנפח.
  • MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון. לדוגמה, /mnt/my-volume.
  • IS_READ_ONLY: True כדי להגדיר את אמצעי האחסון לקריאה בלבד, או False כדי לאפשר כתיבה.
  • BUCKET_NAME: שם הקטגוריה של Cloud Storage.

הצגת ההגדרות של משתני הסביבה במאגר העובדים

  1. נכנסים ל-Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. לוחצים על Worker pools כדי להציג את רשימת מאגרי העובדים שנפרסו.

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

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

קריאה וכתיבה של נתונים בווליום

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

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

בדוגמאות הקוד הבאות מניחים שיש נקודת הרכבה של נפח אחסון עם mountPath שמוגדר ל-/mnt/my-volume.

Nodejs

משתמשים במודול File System כדי ליצור קובץ חדש או להוסיף לקובץ קיים בכרך /mnt/my-volume:

var fs = require('fs');
fs.appendFileSync('/mnt/my-volume/sample-logfile.txt', 'Hello logs!', { flag: 'a+' });

Python

כתיבה לקובץ שנשמר בנפח, /mnt/my-volume:

f = open("/mnt/my-volume/sample-logfile.txt", "a")

Go

משתמשים בחבילה os כדי ליצור קובץ חדש שנשמר בווליום, /mnt/my-volume:

f, err := os.Create("/mnt/my-volume/sample-logfile.txt")

Java

משתמשים במחלקה Java.io.File כדי ליצור קובץ יומן בכרך /mnt/my-volume:

import java.io.File;
File f = new File("/mnt/my-volume/sample-logfile.txt");

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

אפשר להשתמש באפשרויות של mount כדי להגדיר מאפיינים שונים של ה-mount של אמצעי האחסון. אפשרויות הטעינה הזמינות מאפשרות להגדיר את הגדרות המטמון, לטעון ספרייה ספציפית, להפעיל רישום באגים ביומן ועוד.

ציון אפשרויות הטעינה

אפשר לציין אפשרויות הרכבה באמצעות מסוף Google Cloud , Google Cloud CLI,‏ YAML או Terraform. אפשרויות ההרכבה מופרדות באמצעות נקודה-פסיק (;) ב-Google Cloud CLI, ומופרדות באמצעות פסיקים ב-YAML, כמו שמוצג בכרטיסיות הבאות:

המסוף

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

  1. במסוף Google Cloud , נכנסים לדף Worker pools של Cloud Run:

    כניסה ל-Cloud Run

  2. לוחצים על מאגר העובדים ואז על עריכה ופריסה של עדכון חדש.

  3. לוחצים על הכרטיסייה Volumes (נפחים).

    1. לוחצים על עוצמת הקול שרוצים לערוך.
    2. לוחצים על הגדרת אפשרויות ההרכבה.
    3. מעדכנים את השדות המתאימים או מוסיפים אפשרויות טעינה באופן ידני כדי להגדיר את אפשרויות הטעינה.
    4. לוחצים על Save.
  4. אם עדיין לא העליתם את נפח האחסון הזה במאגר, לוחצים על הכרטיסייה Container (מאגר):

    1. לוחצים על הכרטיסייה Volume Mounts (חיבורי אמצעי אחסון).
    2. לוחצים על Mount volume (הוספת אמצעי אחסון).
    3. בוחרים את נפח האחסון מהתפריט.
    4. מציינים את הנתיב שבו רוצים לטעון את אמצעי האחסון.
  5. לוחצים על סיום.

  6. לוחצים על פריסה.

gcloud

כדי להוסיף נפח ולטעון אותו עם אפשרויות טעינה:

gcloud beta run worker-pools update WORKER_POOL \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="OPTION_1=VALUE_1;OPTION_N=VALUE_N" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

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

  • WORKER_POOL: השם של מאגר העובדים.
  • VOLUME_NAME: כל שם שרוצים לתת לנפח האחסון. הערך VOLUME_NAME משמש למיפוי הנפח לנקודת הטעינה של הנפח.
  • BUCKET_NAME: שם הקטגוריה של Cloud Storage.
  • OPTION_1: אפשרות הטעינה הראשונה. שימו לב: אפשר לציין כמה אפשרויות טעינה שרוצים, כשכל אפשרות טעינה וערך מופרדים באמצעות נקודה-פסיק.
  • VALUE_1: ההגדרה שרוצים לאפשר לאפשרות הראשונה של הטעינה.
  • OPTION_N: אפשרות הטעינה הבאה.
  • VALUE_N: ההגדרה של אפשרות הטעינה הבאה.
  • MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון. לדוגמה, /cache.

אפשרויות נפוצות לחיבור

אפשרויות הטעינה משמשות בדרך כלל כדי:

  • קביעת הגדרות מטמון
  • טעינה רק של ספרייה ספציפית מקטגוריה של Cloud Storage
  • הגדרת הבעלות על אמצעי האחסון (uid, gid)
  • השבתת ספריות מרומזות
  • מציינים את רמות הרישום ביומן לניפוי באגים.

קביעת הגדרות של שמירת נתונים במטמון

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

הגדרת מטמון תיאור ברירת מחדל
cache-dir השם של אמצעי האחסון בזיכרון שמשמש כספרייה הבסיסית לשמירת קבצים מהקטגוריה של Cloud Storage בפורמט cr-volume:{volume name}. לדוגמה, אם יש לכם אמצעי אחסון בזיכרון בשם in-memory-1 שבו אתם רוצים להשתמש כספריית מטמון, מציינים cr-volume:in-memory-1. הוראות להגדרת אמצעי אחסון בזיכרון זמינות במאמר הגדרת נקודות טעינה של אמצעי אחסון בזיכרון לשירותים. כשמפעילים את התכונות האלה, Cloud Run משנה את חישוב המשאבים של תהליך Cloud Storage FUSE וכולל אותו במגבלות הזיכרון של הקונטיינר. כדי להגדיל את מגבלת הזיכרון של הקונטיינר, אפשר לעיין במאמר בנושא הגדרת מגבלות זיכרון לשירותים.
file-cache-download-chunk-size-mb מציין את הגודל של כל בקשת קריאה ב-MiB שכל goroutine שולח ל-Cloud Storage כשמורידים את האובייקט למטמון הקבצים. 200
file-cache-enable-parallel-downloads האפשרות הזו מאיצה את הקריאה של קבצים גדולים באמצעות שימוש בספריית מטמון הקבצים כמאגר אחזור מראש, ושימוש בכמה תהליכי עבודה להורדה מקבילה של כמה חלקים של קובץ. TRUE
file-cache-max-parallel-downloads המספר המקסימלי של goroutines שאפשר ליצור בכל רגע נתון בכל משימות ההורדה של הקבצים. פי שניים ממספר ליבות המעבד במחשב או 16, הגבוה מביניהם.
file-cache-parallel-downloads-per-file מספר בקשות ההורדה בו-זמנית לכל קובץ. 16
file-cache-cache-file-for-range-read ההגדרה הזו קובעת אם האובייקט המלא יורד באופן אסינכרוני וייאוחסן בספריית המטמון של Cloud Storage FUSE כשהקריאה הראשונה תושלם מהיסט שאינו אפס. FALSE
stat-cache-max-size-mb הגודל המקסימלי במביבייטים (MiB) שבו יכול להשתמש מטמון הנתונים הסטטיסטיים. המטמון של הנתונים הסטטיסטיים תמיד נשמר כולו בזיכרון, ולכן משפיע על צריכת הזיכרון. מציינים ערך של 32 אם עומס העבודה כולל עד 20,000 קבצים. אם עומס העבודה שלכם משתמש ביותר מ-20,000 קבצים, צריך להגדיל את הגודל בערכים של 10 לכל 6,000 קבצים נוספים, כאשר מטמון הנתונים הסטטיסטיים משתמש בממוצע ב-1,500 בייט לכל קובץ.

כדי לאפשר למטמון הנתונים הסטטיסטיים להשתמש בכמה זיכרון שצריך, מציינים ערך של -1. כדי להשבית את מטמון הנתונים הסטטיסטיים, מציינים ערך של 0.
32
type-cache-max-size-mb הגודל המקסימלי ב-MiB לכל ספרייה שבה יכול המטמון של הסוג להשתמש. מטמון הסוג תמיד נשמר כולו בזיכרון, וזה משפיע על צריכת הזיכרון.

מציינים ערך של 4 אם המספר המקסימלי של קבצים בספרייה אחת מהמאגר שאתם מטמיעים הוא 20,000 או פחות. אם המספר המקסימלי של קבצים בספרייה אחת שאתם מטמיעים מכיל יותר מ-20,000 קבצים, צריך להגדיל את הערך ב-1 לכל 5,000 קבצים, כלומר בממוצע כ-200 בייט לכל קובץ.

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

כדי להשבית את מטמון הסוגים, מציינים ערך של 0.
4

הפקודה הבאה ב-Google Cloud CLI מגדירה את metadata-cache-ttl-secs ל-120 שניות ומגדילה את הקיבולת של מטמון הנתונים הסטטיסטיים ומטמון הסוגים ל-52 ו-7 מיגה-בייט, בהתאמה:

gcloud beta run worker-pools update WORKER_POOL \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="metadata-cache-ttl-secs=120;stat-cache-max-size-mb=52;type-cache-max-size-mb=7" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

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

  • WORKER_POOL: השם של מאגר העובדים.
  • VOLUME_NAME: כל שם שרוצים לתת לנפח האחסון. הערך VOLUME_NAME משמש למיפוי הנפח לנקודת הטעינה של הנפח.
  • BUCKET_NAME: שם הקטגוריה של Cloud Storage.
  • MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון. לדוגמה: /cache.

הפעלת רישום נתונים של ניפוי באגים

כברירת מחדל, Cloud Storage FUSE מתעד אירועים ברמה Info ומעלה. אפשר לשנות את הגדרות הרישום ביומן באמצעות כל אחת מרמות החומרה הבאות של היומן, שמופיעות בסדר עולה מהנמוכה ביותר לגבוהה ביותר:

  • trace
  • debug
  • info
  • warning
  • error
  • כדי להשבית את כל הרישום ביומן, מציינים את הערך off.

כשמציינים רמת חומרה, Cloud Storage FUSE יוצר יומנים לאירועים עם רמת חומרה ששווה לרמת החומרה שצוינה או גבוהה ממנה. לדוגמה, כשמציינים את הרמה warning, ‏ Cloud Storage FUSE יוצר יומנים לאזהרות ולשגיאות.

הגדרת רמת החומרה של היומן לרמות גבוהות מ-info עלולה להשפיע על הביצועים וליצור כמות גדולה של נתוני רישום ביומן, ולכן מומלץ לעשות זאת רק לפי הצורך. כדי להבטיח תאימות ל-Cloud Logging, הפורמט של היומן הוא text, ופורמט json לא אפשרי.

שורת הפקודה הבאה מפעילה את רישום היומנים לניפוי באגים:

gcloud beta run worker-pools update WORKER_POOL \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="log-severity=debug" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

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

  • WORKER_POOL: השם של מאגר העובדים.
  • VOLUME_NAME: כל שם שרוצים לתת לנפח האחסון. הערך VOLUME_NAME משמש למיפוי הנפח לנקודת הטעינה של הנפח.
  • BUCKET_NAME: שם הקטגוריה של Cloud Storage.
  • MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון. לדוגמה, /cache.

השבתת ספריות מרומזות

כדי ש-Cloud Storage ייראה יותר כמו מערכת קבצים רגילה, Cloud Run מאפשר ספריות מוגדרות במרומז כברירת מחדל כשמטעינים קטגוריה של Cloud Storage. אפשר להשבית ספריות מרומזות באמצעות אפשרות ההרכבה implicit-dirs. השבתת ספריות מרומזות יכולה לשפר את הביצועים ולצמצם את העלויות, אבל היא עלולה לפגוע בתאימות.

התכונה 'ספריות משתמעות' מאפשרת ל-Cloud Run לזהות קבצים קיימים ב-Cloud Storage ששמות הקבצים שלהם מחקים מבנה של ספריות, כמו /mydir/myfile.txt. אם תשביתו ספריות מרומזות, Cloud Run לא יוכל לרשום או לקרוא קבצים כאלה.

השבתה של ספריות מרומזות מפחיתה את מספר הבקשות ל-Cloud Storage, מה שיכול לשפר את הביצועים והעלות של האפליקציה. מידע נוסף זמין במאמרי עזרה בנושא קבצים וספריות ב-Cloud Storage FUSE.

שורת הפקודה הבאה משביתה ספריות מרומזות:

gcloud beta run worker-pools update WORKER_POOL \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="implicit-dirs=false" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

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

  • WORKER_POOL: השם של מאגר העובדים.
  • VOLUME_NAME: כל שם שרוצים לתת לנפח האחסון. הערך VOLUME_NAME משמש למיפוי הנפח לנקודת העיגון של הנפח.
  • BUCKET_NAME: שם הקטגוריה של Cloud Storage.
  • MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון. לדוגמה, /cache.

טעינת ספרייה ספציפית בתוך קטגוריה של Cloud Storage

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

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

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

gcloud beta run worker-pools update WORKER_POOL \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="only-dir=images" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

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

  • WORKER_POOL: השם של מאגר העובדים.
  • VOLUME_NAME: כל שם שרוצים לתת לנפח האחסון. הערך VOLUME_NAME משמש למיפוי הנפח לנקודת העיגון של הנפח.
  • BUCKET_NAME: שם הקטגוריה של Cloud Storage.
  • MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון. לדוגמה, /cache.

הגדרת עוצמת הקול UID ו-GID

משתמשים באפשרויות ההרכבה uid ו-gid כדי לשנות את מזהה המשתמש ומזהה הקבוצה של אמצעי האחסון. האפשרות הזו שימושית אם רוצים להגדיר בעלות על הקובץ למשתמש או לקבוצה ספציפיים שתואמים לזהות של קונטיינר אחד או יותר שפועלים. כברירת מחדל, הכרכים הם בבעלות של root.

שורת הפקודה הבאה מגדירה את uid ואת gid:

gcloud beta run worker-pools update WORKER_POOL \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="uid=UID;gid=GID" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

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

  • WORKER_POOL: השם של מאגר העובדים.
  • VOLUME_NAME: כל שם שרוצים לתת לנפח האחסון. האפליקציה
  • BUCKET_NAME: שם הקטגוריה של Cloud Storage. הערך VOLUME_NAME משמש למיפוי הנפח לנקודת העיגון של הנפח.
  • MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון. לדוגמה, /cache.

הגדרת אפשרויות אחרות להעלאה

זו רשימה מלאה של כל אפשרויות ההרכבה שנתמכות ב-Cloud Run.

הארגון שלי

  • implicit-dirs
  • only-dir
  • rename-dir-limit

ניפוי באגים

  • debug_fuse_errors
  • debug_fuse
  • debug_gcs
  • debug-invariants
  • debug_mutex

מטמון

  • stat-cache-capacity
  • stat-cache-ttl
  • type-cache-ttl
  • enable-nonexistent-type-cache

הרשאות

  • uid
  • gid
  • file-mode
  • dir-mode

אחר

  • billing-project
  • client-protocol
  • experimental-enable-json-read
  • experimental-opentelemetry-collector-address
  • http-client-timeout
  • limit-bytes-per-sec
  • limit-ops-per-sec
  • max-conns-per-host
  • max-idle-conns-per-host
  • max-retry-sleep
  • -o
  • retry-multiplier
  • sequential-read-size-mb
  • stackdriver-export-interval

לתיעוד המלא של אפשרויות ההרכבה הנתמכות, אפשר לעיין במאמר אפשרויות הרכבה של שורת הפקודה Cloud Storage FUSE.

אופטימיזציה של ביצועי רוחב הפס ברשת ב-Cloud Storage FUSE

כדי לשפר את הביצועים של פעולות קריאה וכתיבה, כדאי לחבר את מאגר העובדים של Cloud Run לרשת VPC באמצעות Direct VPC, ולנתב את כל התנועה היוצאת דרך רשת ה-VPC. אפשר לעשות את זה באחת מהדרכים הבאות:

זמן ההפעלה של קונטיינר וטעינות של Cloud Storage FUSE

השימוש ב-Cloud Storage FUSE עלול להאריך מעט את זמן ההפעלה במצב התחלתי(cold start) של קונטיינר Cloud Run, כי Cloud Run מתחיל את טעינת אמצעי האחסון לפני הפעלת הקונטיינרים. הקונטיינר יופעל רק אם Cloud Storage FUSE יותקן בהצלחה.

שימו לב ש-Cloud Storage FUSE מטעין נפח אחסון רק אחרי שהוא יוצר חיבור ל-Cloud Storage. עיכובים ברשת יכולים להשפיע על זמן ההפעלה של מאגר התגים. בהתאם לכך, אם ניסיון החיבור נכשל, Cloud Storage FUSE לא יצליח לבצע טעינה, ו-Cloud Run worker pool לא יצליח להתחיל. בנוסף, אם הטעינה של Cloud Storage FUSE נמשכת יותר מ-30 שניות, מאגר העובדים של Cloud Run לא יופעל כי ל-Cloud Run יש זמן קצוב לתפוגה כולל של 30 שניות לביצוע כל הטעינות.

מאפייני הביצועים של Cloud Storage FUSE

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

הפעולות באמצעות Cloud Storage FUSE מושפעות מרוחב הפס ברשת, כי Cloud Storage FUSE מתקשר עם Cloud Storage באמצעות Cloud Storage API. חלק מהפעולות, כמו הצגת התוכן של מאגר, עשויות להיות איטיות אם רוחב הפס של הרשת נמוך. באופן דומה, קריאה של קובץ גדול יכולה לקחת זמן כי היא מוגבלת גם על ידי רוחב הפס של הרשת.

כשכותבים לקטגוריה, Cloud Storage FUSE מעביר את האובייקט באופן מלא לזיכרון. המשמעות היא שכתיבת קבצים גדולים מוגבלת על ידי כמות הזיכרון שזמינה למופע של המאגר (מגבלת הזיכרון המקסימלית של המאגר היא ‎32 GiB).

הכתיבה מועברת לקטגוריה רק כשמבצעים פעולת close או fsync: האובייקט המלא מועלה לקטגוריה. המקרה היחיד שבו אובייקט לא מועלה מחדש במלואו לקטגוריה הוא קובץ עם תוכן שנוסף לו, כשהקובץ הוא בנפח 2MiB‎ או יותר.

מידע נוסף זמין במקורות המידע הבאים:

ניקוי והסרה של נפחים ונקודות חיבור של נפחים

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

ניקוי כל אמצעי האחסון והחיבורים שלהם

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

gcloud beta run worker-pools update WORKER_POOL \
    --clear-volumes
    --clear-volume-mounts

אם יש לכם כמה מאגרי תגים, אתם יכולים לפעול לפי המוסכמות של CLI של sidecars כדי לנקות את אמצעי האחסון והחיבורים של אמצעי האחסון:

gcloud beta run worker-pools update WORKER_POOL \
    --container=container1 \
    --clear-volumes
    -–clear-volume-mounts \
    --container=container2 \
    --clear-volumes \
    -–clear-volume-mounts

הסרה של נפחים בודדים והצמדות של נפחים

כדי להסיר נפח אחסון, צריך גם להסיר את כל הנפחים שמשתמשים בו.

כדי להסיר אמצעי אחסון בודדים או נקודות לחיבור אמצעי אחסון, משתמשים בדגלים remove-volume ו-remove-volume-mount:

gcloud beta run worker-pools update WORKER_POOL \
    --remove-volume VOLUME_NAME \
    --container=container1 \
    --remove-volume-mount MOUNT_PATH \
    --container=container2 \
    --remove-volume-mount MOUNT_PATH