הגדרת טעינת נפחים של 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). אם זהות השירות צריכה גם לבצע פעולות כתיבה בדלי, צריך להקצות במקום זאת את התפקיד Storage Object User‏ (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. אם אתם מגדירים מאגר עובדים חדש, ממלאים את הדף הראשוני של מאגר העובדים ולוחצים על Containers, Networking, Security (מאגרי קונטיינרים, רשתות, אבטחה) כדי להרחיב את דף ההגדרות של מאגרי העובדים.

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

    תמונה

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

gcloud

  • כדי להוסיף נקודת גישה לנפח:

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

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

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

    gcloud 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 run worker-pools describe WORKER_POOL --format export > worker-pool.yaml
  2. בדוגמה הבאה מופיעה הגדרת ה-YAML:

    apiVersion: run.googleapis.com/v1
    kind: WorkerPool
    metadata:
      name: WORKER_POOL
    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 run worker-pools replace worker-pool.yaml

    אם קיים קובץ worker-pool.yaml, הפקודה gcloud run worker-pools replace משתמשת בו כברירת מחדל.

Terraform

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

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

    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")

המשך

משתמשים בחבילה 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");

הגדרת נפח אחסון באמצעות אפשרויות טעינה

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

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

אפשר לציין אפשרויות הרכבה באמצעות מסוף 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. לוחצים על פריסה.

gcloud

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

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

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

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

אפשרויות נפוצות להרכבה

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

  • קביעת הגדרות מטמון
  • טעינה רק של ספרייה ספציפית מקטגוריה של 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 שאפשר ליצור בכל זמן נתון בכל משימות ההורדה של הקבצים. פי שניים ממספר ליבות ה-CPU במחשב או 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) שבו יכול להשתמש מטמון הנתונים של stat. המטמון של הנתונים הסטטיסטיים תמיד נשמר כולו בזיכרון, וזה משפיע על צריכת הזיכרון. מציינים ערך של 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 run worker-pools update WORKER_POOL \
    -add-volume mount-path=MOUNT_PATH,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"

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

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

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

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

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

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

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

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

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

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

  • WORKER_POOL: השם של מאגר העובדים.
  • 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 run worker-pools update WORKER_POOL \
    --add-volume mount-path=MOUNT_PATH,type=cloud-storage,bucket=BUCKET_NAME,mount-options="implicit-dirs=false"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

זו רשימה מלאה של כל אפשרויות ההרכבה שנתמכות ב-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 מפורטות כל האפשרויות הזמינות של FUSE, שחלקן לא נתמכות ב-Cloud Run.

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

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

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

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

שימו לב ש-Cloud Storage FUSE מטעין נפח אחסון רק אחרי שהוא יוצר חיבור ל-Cloud Storage. עיכובים ברשת יכולים להשפיע על זמן ההפעלה של מאגר התגים. בהתאם, אם ניסיון החיבור נכשל, Cloud Storage FUSE לא יצליח לבצע טעינה וה-worker pool של Cloud Run לא יצליח להתחיל. בנוסף, אם טעינת 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 run worker-pools update WORKER_POOL \
    --clear-volumes
    --clear-volume-mounts

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

gcloud 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 run worker-pools update WORKER_POOL \
    --remove-volume VOLUME_NAME \
    --container=container1 \
    --remove-volume-mount MOUNT_PATH \
    --container=container2 \
    --remove-volume-mount MOUNT_PATH