בדף הזה מוסבר איך לטעון קטגוריה של 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 Run Developer (
roles/run.developer) on the Cloud Run job -
משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בזהות השירות
כדי לקבל את ההרשאות שנדרשות לזהות השירות כדי לגשת לקובץ ולקטגוריה של 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
אפשר לטעון כמה דליים בנתיבי טעינה שונים. אפשר גם לצרף נפח ליותר מקונטיינר אחד באמצעות אותם נתיבי הרכבה או נתיבי הרכבה שונים בקונטיינרים.
אם משתמשים בכמה מאגרי תגים, קודם מציינים את אמצעי האחסון ואז מציינים את נקודות הגישה לאמצעי האחסון לכל מאגר תגים.
המסוף
נכנסים לדף Jobs ב-Cloud Run במסוף Google Cloud :
לוחצים על Deploy container (פריסת מאגר תגים) כדי למלא את דף ההגדרות הראשוניות של המשימה. אם מגדירים משימה קיימת, בוחרים את המשימה ולוחצים על View and edit job configuration (הצגה ועריכה של הגדרת המשימה).
לוחצים על Container(s), Volumes, Connections, Security (מאגרי נתונים, אמצעי אחסון, חיבורים, אבטחה) כדי להרחיב את דף מאפייני העבודה.
לוחצים על הכרטיסייה Volumes (נפחים).
- בקטע כרכים:
- לוחצים על הוספת עוצמת קול.
- בתפריט הנפתח סוג נפח האחסון, בוחרים באפשרות 'קטגוריה של Cloud Storage' כסוג נפח האחסון.
- בשדה Volume name (שם נפח האחסון), מזינים את השם שרוצים להשתמש בו עבור נפח האחסון.
- מעיינים ב-bucket או בספרייה ספציפית שרוצים להשתמש בהם עבור הנפח ובוחרים אותם. אפשר גם ליצור קטגוריה חדשה.
- אופציונלי: מסמנים את התיבה קריאה בלבד כדי להגדיר את הקטגוריה לקריאה בלבד.
- לוחצים על סיום.
- לוחצים על הכרטיסייה Container (מאגר), מרחיבים את מאגר התגים שאליו רוצים לצרף את אמצעי האחסון כדי לערוך אותו.
- לוחצים על הכרטיסייה Volume Mounts (חיבורי אמצעי אחסון).
- לוחצים על Mount volume (הוספת אמצעי אחסון).
- בתפריט, בוחרים את אמצעי האחסון ב-Cloud Storage.
- מציינים את הנתיב שבו רוצים לטעון את אמצעי האחסון.
- לוחצים על Mount Volume (הוספת נפח אחסון).
- בקטע כרכים:
לוחצים על יצירה או על עדכון.
gcloud
כדי להוסיף אמצעי אחסון ולהפעיל אותו:
gcloud run jobs update JOB \ --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH
מחליפים את מה שכתוב בשדות הבאים:
-
JOB: שם המשימה. - MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון. לדוגמה,
/mnt/my-volume. - VOLUME_NAME: כל שם שרוצים לתת לנפח האחסון. הערך VOLUME_NAME משמש למיפוי הנפח לנקודת הטעינה של הנפח.
- BUCKET_NAME: שם הקטגוריה של Cloud Storage.
-
כדי לטעון את אמצעי האחסון כאמצעי אחסון לקריאה בלבד:
--add-volume=name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,readonly=true
אם אתם משתמשים בכמה מאגרי תגים, קודם מציינים את עוצמת הקול, ואז מציינים את נקודות הגישה של עוצמת הקול לכל מאגר תגים:
gcloud run jobs update JOB \ --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
אם אתם יוצרים משרה חדשה, דלגו על השלב הזה. אם אתם מעדכנים משימה קיימת, אתם צריכים להוריד את הגדרת ה-YAML שלה:
gcloud run jobs describe JOB_NAME --format export > job.yaml
מעדכנים את MOUNT_PATH, VOLUME_NAME, BUCKET_NAME ואת IS_READ_ONLY לפי הצורך.
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME spec: template: metadata: annotations: run.googleapis.com/execution-environment: gen2 spec: template: spec: containers: - image: IMAGE_URL volumeMounts: - mountPath: MOUNT_PATH name: VOLUME_NAME volumes: - name: VOLUME_NAME csi: driver: gcsfuse.run.googleapis.com readOnly: IS_READ_ONLY volumeAttributes: bucketName: BUCKET_NAME
מחליפים את מה שכתוב בשדות הבאים:
- IMAGE_URL: הפניה לקובץ אימג' של קונטיינר, לדוגמה
us-docker.pkg.dev/cloudrun/container/job:latest. - MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון. לדוגמה,
/mnt/my-volume. - VOLUME_NAME: כל שם שרוצים לתת לנפח האחסון. הערך VOLUME_NAME משמש למיפוי הנפח לנקודת העיגון של הנפח.
- IS_READ_ONLY:
Trueכדי להגדיר את אמצעי האחסון לקריאה בלבד, אוFalseכדי לאפשר כתיבה. - BUCKET_NAME: שם הקטגוריה של Cloud Storage.
- IMAGE_URL: הפניה לקובץ אימג' של קונטיינר, לדוגמה
יוצרים או מעדכנים את העבודה באמצעות הפקודה הבאה:
gcloud run jobs replace job.yaml
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
מוסיפים את השורות הבאות למשאבgoogle_cloud_run_v2_job בקובץ התצורה של Terraform: resource "google_cloud_run_v2_job" "default" {
name = "JOB_NAME"
location = "REGION"
template {
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"
}
מחליפים את מה שכתוב בשדות הבאים:
- JOB_NAME: השם של המשימה ב-Cloud Run.
- REGION: Google Cloud האזור.
- IMAGE_URL: הפניה לקובץ אימג' של קונטיינר, לדוגמה
us-docker.pkg.dev/cloudrun/container/job:latest. - VOLUME_NAME: כל שם שרוצים לתת לנפח האחסון. הערך VOLUME_NAME משמש למיפוי הנפח לנקודת הטעינה של הנפח.
- MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון. לדוגמה,
/mnt/my-volume. - IS_READ_ONLY:
Trueכדי להגדיר את אמצעי האחסון לקריאה בלבד, אוFalseכדי לאפשר כתיבה. - BUCKET_NAME: שם הקטגוריה של Cloud Storage.
קריאה וכתיבה של נתונים בווליום
אם משתמשים בתכונה של 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, כמו שמוצג בכרטיסיות הבאות:
המסוף
כדי לציין אפשרויות טעינה לנפח אחסון קיים:
נכנסים לדף Jobs ב-Cloud Run במסוף Google Cloud :
לוחצים על המשימה ואז על הצגה ועריכה של הגדרות המשימה.
לוחצים על הכרטיסייה Volumes (נפחים).
- לוחצים על עוצמת הקול שרוצים לערוך.
- לוחצים על הגדרת אפשרויות ההרכבה.
- מעדכנים את השדות המתאימים או מוסיפים אפשרויות טעינה באופן ידני כדי להגדיר את אפשרויות הטעינה.
- לוחצים על Save.
אם עדיין לא העליתם את נפח האחסון הזה במאגר, לוחצים על הכרטיסייה Container (מאגר):
- לוחצים על הכרטיסייה Volume Mounts (חיבורי אמצעי אחסון).
- לוחצים על Mount volume (הוספת אמצעי אחסון).
- בוחרים את נפח האחסון מהתפריט.
- מציינים את הנתיב שבו רוצים לטעון את אמצעי האחסון.
לוחצים על סיום.
לוחצים על פריסה.
gcloud
כדי להוסיף נפח ולטעון אותו עם אפשרויות טעינה:
gcloud run jobs update JOB \ --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
מחליפים את מה שכתוב בשדות הבאים:
- JOB: שם המשימה.
- MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון. לדוגמה,
/cache. - VOLUME_NAME: כל שם שרוצים לתת לנפח האחסון. הערך VOLUME_NAME משמש למיפוי הנפח לנקודת העיגון של הנפח.
- BUCKET_NAME: שם הקטגוריה של Cloud Storage.
- OPTION_1: אפשרות הטעינה הראשונה. שימו לב: אפשר לציין כמה אפשרויות הרכבה שרוצים, כשכל זוג של אפשרות הרכבה וערך מופרד באמצעות נקודה-פסיק.
- VALUE_1: ההגדרה שרוצים לאפשר לאפשרות הראשונה של הטעינה.
- OPTION_N: אפשרות הטעינה הבאה.
- VALUE_N: ההגדרה של אפשרות הטעינה הבאה.
- BUCKET_NAME: שם הקטגוריה של Cloud Storage.
- MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון. לדוגמה,
/cache.
YAML
אם אתם יוצרים משרה חדשה, דלגו על השלב הזה. אם אתם מעדכנים משימה קיימת, אתם צריכים להוריד את הגדרת ה-YAML שלה:
gcloud run jobs describe JOB_NAME --format export > job.yaml
מעדכנים לפי הצורך.
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME spec: metadata: template: metadata: annotations: run.googleapis.com/execution-environment: gen2 spec: template: spec: containers: - image: IMAGE_URL volumeMounts: - mountPath: MOUNT_PATH name: VOLUME_NAME volumes: - name: VOLUME_NAME csi: driver: gcsfuse.run.googleapis.com readOnly: IS_READ_ONLY volumeAttributes: bucketName: BUCKET_NAME mountOptions: OPTION_1=VALUE_1,OPTION_N=VALUE_N
מחליפים את מה שכתוב בשדות הבאים:
- IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר העובדים, למשל
us-docker.pkg.dev/cloudrun/container/worker-pool:latest - MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון. לדוגמה,
/cache. - VOLUME_NAME: כל שם שרוצים לתת לנפח האחסון. הערך VOLUME_NAME משמש למיפוי הנפח לנקודת העיגון של הנפח.
- IS_READ_ONLY:
Trueכדי להגדיר את אמצעי האחסון לקריאה בלבד, אוFalseכדי לאפשר כתיבה. - BUCKET_NAME: שם הקטגוריה של Cloud Storage.
- OPTION_1: אפשרות הטעינה הראשונה. שימו לב שאפשר לציין כמה אפשרויות טעינה שרוצים, וכל צמד של אפשרות טעינה וערך מופרד באמצעות פסיק.
- VALUE_1: ההגדרה שרוצים לאפשר לאפשרות הראשונה של הטעינה.
- OPTION_N: אפשרות הטעינה הבאה.
- VALUE_N: ההגדרה של אפשרות הטעינה הבאה.
- IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר העובדים, למשל
יוצרים או מעדכנים את העבודה באמצעות הפקודה הבאה:
gcloud run jobs replace job.yaml
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
מוסיפים את השורות הבאות למשאבgoogle_cloud_run_v2_job בקובץ התצורה של Terraform:resource "google_cloud_run_v2_job" "default" {
provider = google-beta
name = "JOB_NAME"
location = "REGION"
template {
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
mount_options = ["OPTION_1=VALUE_1", "OPTION_N=VALUE_N", "OPTION_O"]
}
}
}
}
}
מחליפים את מה שכתוב בשדות הבאים:
- JOB_NAME: השם של שירות Cloud Run.
- 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.
- OPTION_1: אפשרות הטעינה הראשונה. שימו לב: אפשר לציין כמה אפשרויות טעינה שרוצים, כשכל אפשרות טעינה וערך מופרדים בפסיק.
- VALUE_1: ההגדרה שרוצים לאפשר לאפשרות הראשונה של הטעינה.
- OPTION_N: אפשרות הטעינה השנייה, אם רלוונטית.
- VALUE_N: ההגדרה של אפשרות הטעינה השנייה.
- OPTION_O: אפשרות הטעינה השלישית, אם רלוונטית. חלק מאפשרויות ההרכבה לא כוללות ערך.
אפשרויות נפוצות לחיבור
אפשרויות הטעינה משמשות בדרך כלל כדי:
- קביעת הגדרות מטמון
- טעינה רק של ספרייה ספציפית מקטגוריה של 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 run jobs update JOB \ --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
מחליפים את מה שכתוב בשדות הבאים:
- JOB: שם המשימה.
- VOLUME_NAME: כל שם שרוצים לתת לנפח האחסון. הערך VOLUME_NAME משמש למיפוי הנפח לנקודת הטעינה של הנפח.
- BUCKET_NAME: שם הקטגוריה של Cloud Storage.
- MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון. לדוגמה:
/cache.
הפעלת רישום נתונים של ניפוי באגים
כברירת מחדל, Cloud Storage FUSE מתעד אירועים ברמה Info ומעלה. אפשר לשנות את הגדרות הרישום ביומן באמצעות כל אחת מרמות החומרה הבאות של היומן, שמופיעות בסדר עולה מהנמוכה ביותר לגבוהה ביותר:
tracedebuginfowarningerror- כדי להשבית את כל הרישום ביומן, מציינים את הערך
off.
כשמציינים רמת חומרה, Cloud Storage FUSE יוצר יומנים לאירועים עם רמת חומרה ששווה לרמת החומרה שצוינה או גבוהה ממנה. לדוגמה, כשמציינים את הרמה warning, Cloud Storage FUSE יוצר יומנים לאזהרות ולשגיאות.
הגדרת רמת החומרה של היומן לרמות גבוהות מ-info עלולה להשפיע על הביצועים וליצור כמות גדולה של נתוני רישום ביומן, ולכן מומלץ לעשות זאת רק לפי הצורך. כדי להבטיח תאימות ל-Cloud Logging, הפורמט של היומן הוא text, ופורמט json לא אפשרי.
שורת הפקודה הבאה מפעילה את רישום היומנים לניפוי באגים:
gcloud run jobs update JOB \ --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
מחליפים את מה שכתוב בשדות הבאים:
- JOB בשם של המשימה.
- VOLUME_NAME בשם שרוצים לתת לנפח האחסון. הערך VOLUME_NAME משמש למיפוי הנפח לנקודת הטעינה של הנפח.
- BUCKET_NAME בשם של קטגוריית Cloud Storage.
- MOUNT_PATH עם הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון – לדוגמה, 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 jobs update JOB \ --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
מחליפים את מה שכתוב בשדות הבאים:
- JOB: שם המשימה.
- VOLUME_NAME: כל שם שרוצים לתת לנפח האחסון. הערך VOLUME_NAME משמש למיפוי הנפח לנקודת העיגון של הנפח.
- BUCKET_NAME: שם הקטגוריה של Cloud Storage.
- MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון. לדוגמה,
/cache.
טעינת ספרייה ספציפית בתוך קטגוריה של Cloud Storage
כברירת מחדל, Cloud Run טוען את כל הקטגוריה של Cloud Storage, וכך מאפשר למשימות של Cloud Run גישה לכל התוכן שלה. במקרים מסוימים, יכול להיות שתרצו לטעון רק ספרייה ספציפית. לדוגמה, אם הקטגוריה מכילה מספר גדול של קבצים, טעינה של ספרייה ספציפית יכולה לשפר את הביצועים.
אפשר גם להשתמש בזה למטרות בידוד, כשצריך שלמשימות שונות תהיה גישה לספריות שונות בדלי האחסון.
שורת הפקודה הבאה מציינת את הספרייה לטעינה:
gcloud run jobs update JOB \ --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
מחליפים את מה שכתוב בשדות הבאים:
- JOB: שם המשימה.
- VOLUME_NAME: כל שם שרוצים לתת לנפח האחסון. הערך VOLUME_NAME משמש למיפוי הנפח לנקודת העיגון של הנפח.
- BUCKET_NAME: שם הקטגוריה של Cloud Storage.
- MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון. לדוגמה,
/cache.
הגדרת עוצמת הקול UID ו-GID
משתמשים באפשרויות ההרכבה uid ו-gid כדי לשנות את מזהה המשתמש ומזהה הקבוצה של אמצעי האחסון. האפשרות הזו שימושית אם רוצים להגדיר בעלות על הקובץ למשתמש או לקבוצה ספציפיים שתואמים לזהות של קונטיינר אחד או יותר שפועלים. כברירת מחדל, הכרכים הם בבעלות של root.
שורת הפקודה הבאה מגדירה את uid ואת gid:
gcloud run jobs update JOB \ --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
מחליפים את מה שכתוב בשדות הבאים:
- JOB: שם המשימה.
- VOLUME_NAME: כל שם שרוצים לתת לנפח האחסון. הערך VOLUME_NAME משמש למיפוי הנפח לנקודת העיגון של הנפח.
- BUCKET_NAME: שם הקטגוריה של Cloud Storage.
- MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון. לדוגמה,
/cache.
הגדרת אפשרויות אחרות להעלאה
זו רשימה מלאה של כל אפשרויות ההרכבה שנתמכות ב-Cloud Run.
הארגון שלי
implicit-dirsonly-dirrename-dir-limit
ניפוי באגים
debug_fuse_errorsdebug_fusedebug_gcsdebug-invariantsdebug_mutex
מטמון
stat-cache-capacitystat-cache-ttltype-cache-ttlenable-nonexistent-type-cache
הרשאות
uidgidfile-modedir-mode
אחר
billing-projectclient-protocolexperimental-enable-json-readexperimental-opentelemetry-collector-addresshttp-client-timeoutlimit-bytes-per-seclimit-ops-per-secmax-conns-per-hostmax-idle-conns-per-hostmax-retry-sleep-oretry-multipliersequential-read-size-mbstackdriver-export-interval
לתיעוד המלא של אפשרויות ההרכבה הנתמכות, אפשר לעיין במאמר אפשרויות הרכבה של שורת הפקודה Cloud Storage FUSE.
הצגת ההגדרות של טעינת אמצעי אחסון
אפשר לראות את הגדרות הטמעת אמצעי האחסון הנוכחיות באמצעות מסוף Google Cloud או Google Cloud CLI.
המסוף
במסוף Google Cloud , נכנסים לדף Cloud Run jobs:
לוחצים על המשרה שמעניינת אתכם כדי לפתוח את הדף פרטי המשרה.
לוחצים על הכרטיסייה Volumes (נפחים).
מחפשים את ההגדרה 'הצמדת אמצעי אחסון' בדף הפרטים של אמצעי האחסון.
gcloud
משתמשים בפקודה הבאה:
gcloud run jobs describe JOB_NAME
מאתרים את ההגדרה volume mounts (נקודות חיבור של אמצעי אחסון) בהגדרה שמוחזרת.
אופטימיזציה של ביצועי רוחב הפס ברשת ב-Cloud Storage FUSE
כדי לשפר את ביצועי הקריאה והכתיבה, כדאי לחבר את משימת Cloud Run לרשת VPC באמצעות Direct VPC, ולהעביר את כל התנועה היוצאת דרך רשת ה-VPC. אפשר לעשות את זה באחת מהדרכים הבאות:
- מפעילים את הגישה הפרטית ל-Google, ומוודאים שהפרמטר
vpc-egressמוגדר לערךall-traffic. - אפשר להשתמש באחת מהאפשרויות שמתוארות בדף השיטות המומלצות בנושא רשתות, בקטע תנועה פנימית אל Google API.
זמן ההפעלה של קונטיינר וטעינות של Cloud Storage FUSE
השימוש ב-Cloud Storage FUSE עלול להאריך מעט את זמן ההפעלה במצב התחלתי(cold start) של קונטיינר Cloud Run, כי Cloud Run מתחיל את טעינת אמצעי האחסון לפני הפעלת הקונטיינרים. הקונטיינר יופעל רק אם Cloud Storage FUSE יותקן בהצלחה.
שימו לב ש-Cloud Storage FUSE מטעין נפח אחסון רק אחרי שהוא יוצר חיבור ל-Cloud Storage. עיכובים ברשת יכולים להשפיע על זמן ההפעלה של מאגר התגים. בהתאם לכך, אם ניסיון החיבור נכשל, Cloud Storage FUSE לא יצליח לבצע mount והעבודה ב-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 jobs update JOB \ --clear-volumes --clear-volume-mounts
אם יש לכם כמה מאגרי תגים, אתם יכולים לפעול לפי המוסכמות של CLI של sidecars כדי לנקות את אמצעי האחסון והחיבורים של אמצעי האחסון:
gcloud run jobs update JOB \ --clear-volumes \ --clear-volume-mounts \ --container=container1 \ --clear-volumes \ -–clear-volume-mounts \ --container=container2 \ --clear-volumes \ -–clear-volume-mounts
הסרה של נפחים בודדים והצמדות של נפחים
כדי להסיר נפח אחסון, צריך גם להסיר את כל הנפחים שמשתמשים בו.
כדי להסיר אמצעי אחסון בודדים או נקודות לחיבור אמצעי אחסון, משתמשים בדגלים remove-volume ו-remove-volume-mount:
gcloud run jobs update JOB \ --remove-volume VOLUME_NAME --container=container1 \ --remove-volume-mount MOUNT_PATH \ --container=container2 \ --remove-volume-mount MOUNT_PATH