שמירת קבצים במטמון ב-Cloud Storage FUSE היא מטמון קריאה בצד הלקוח, שמשפר את הביצועים של קריאות קבצים חוזרות על ידי הצגתם מאחסון מטמון מהיר יותר לבחירתכם. כשהתכונה "שמירת קבצים במטמון" מופעלת, Cloud Storage FUSE שומר עותקים של קבצים שניגשים אליהם לעיתים קרובות באופן מקומי. כך זמן האחזור מתקצר וקצב העברת הנתונים משתפר בקריאות הבאות.
במאמר הזה מוסבר איך להגדיר את המטמון של הקבצים ולהשתמש בו.
היתרונות של שמירת קבצים במטמון
היתרונות של שמירת קבצים במטמון:
ביצועים משופרים לפעולות קלט/פלט קטנות ואקראיות: שמירת קבצים במטמון משפרת את זמן האחזור ואת קצב הנתונים על ידי הצגת קריאות ישירות ממדיה של המטמון. פעולות קלט/פלט קטנות ואקראיות יכולות להיות מהירות יותר באופן משמעותי כשהן מוגשות מהמטמון.
הפעלה אוטומטית של הורדות מקבילות: הורדות מקבילות מופעלות באופן אוטומטי בגרסאות 2.12 ואילך של Cloud Storage FUSE כשמטמון הקבצים מופעל. הורדות מקבילות משתמשות בכמה תהליכי עבודה כדי להוריד קובץ במקביל, תוך שימוש בספריית המטמון של הקבצים כמאגר נתונים לשליפה מראש. כך אפשר לטעון את המודל עד פי תשעה מהר יותר. מומלץ להשתמש בהורדות מקבילות בתרחישי קריאה עם שרשור יחיד שטוענים קבצים גדולים, כמו פרסום המודל ושחזור נקודות הבדיקה.
שימוש בקיבולת קיימת: שמירת קבצים במטמון יכולה להשתמש בקיבולת המכונה הקיימת שהוקצתה לספריית המטמון, בלי לחייב על אחסון נוסף.
חיובים מופחתים: בקשות שנמצאות במטמון מוגשות באופן מקומי, ולא כרוכות בחיובים על פעולות או על רשת ב-Cloud Storage.
עלות בעלות כוללת (TCO) משופרת לאימון AI ו-ML: שמירת קבצים במטמון מגבירה את השימוש במעבדים גרפיים ל-Cloud על ידי טעינת נתונים מהירה יותר, מה שמקצר את זמן האימון ומספק יחס מחיר-ביצועים טוב יותר לעומסי עבודה של אימון AI ו-ML.
הורדות במקביל
הורדות מקבילות יכולות לשפר את ביצועי הקריאה על ידי שימוש בכמה קבצים כדי להוריד כמה חלקים של קובץ במקביל, באמצעות ספריית המטמון של הקבצים כמאגר נתונים זמני לאחזור מראש. מומלץ להשתמש בהורדות מקבילות בתרחישי קריאה שבהם נטענים קבצים גדולים, כמו פרסום המודל, שחזור נקודות ביקורת ואימון על אובייקטים גדולים.
תרחישים לדוגמה שבהם כדאי להפעיל שמירת קבצים במטמון עם הורדות מקבילות:
| סוג תרחיש השימוש | תיאור |
|---|---|
| הדרכה | כדאי להפעיל את האפשרות לשמירת קבצים במטמון אם אתם רוצים לגשת לנתונים שנקראים כמה פעמים, בין אם מדובר באותו קובץ כמה פעמים או בהיסטים שונים של אותו קובץ. אם מערך הנתונים גדול יותר מהמטמון של הקבצים, צריך להשאיר את המטמון של הקבצים מושבת, ולהשתמש באחת מהשיטות הבאות: |
| משקלי מודלים להצגה וקריאות של נקודות ביקורת | כדי להשתמש בהורדות מקבילות, צריך להפעיל את האפשרות "שמירת קבצים במטמון עם הורדות מקבילות". כך קבצים גדולים נטענים הרבה יותר מהר מאשר בלי שמירת קבצים במטמון והורדות מקבילות. |
לתשומת ליבכם
אורך החיים (TTL) של מטמון הקבצים: אם התוקף של רשומה במטמון הקבצים עדיין לא פג לפי ה-TTL שלה והקובץ נמצא במטמון, פעולות הקריאה של הקובץ הזה מוגשות מהמטמון של הלקוח המקומי בלי לשלוח בקשה ל-Cloud Storage.
תפוגת התוקף של רשומת מטמון הקבצים: אם פג התוקף של רשומת מטמון הקבצים, קודם מתבצעת קריאה של מאפייני הקובץ
GETל-Cloud Storage. אם הקובץ חסר או שהמאפיינים או התוכן שלו השתנו, המערכת מאחזרת את התוכן החדש. אם המאפיינים בוטלו אבל התוכן עדיין תקף, כלומר מספר הגנרציה של האובייקט לא השתנה, התוכן מוצג מהמטמון רק אחרי שהקריאה למאפיין מאשרת את התוקף שלו. שתי הפעולות גורמות לזמני אחזור ברשת.ביטול תוקף של מטמון קבצים: כשלקוח של Cloud Storage FUSE משנה קובץ שנשמר במטמון או את המאפיינים שלו, הרשומה של הלקוח במטמון מבוטלת באופן מיידי כדי לשמור על עקביות. עם זאת, לקוחות אחרים שניגשים לאותו קובץ ממשיכים לקרוא את הגרסאות שלהם שנשמרו במטמון, עד שהגדרות ה-TTL הנפרדות שלהם גורמות לביטול התוקף.
גודל הקובץ והקיבולת הזמינה: הקובץ שנקרא צריך להתאים לקיבולת הזמינה בספריית המטמון של הקבצים, שאותה אפשר לשנות באמצעות האפשרות
--file-cache-max-size-mbאו השדהfile-cache:max-size-mb. שימו לב שאי אפשר להגדיר גודל מקסימלי לכל קובץ.פינוי מטמון: פינוי המטא-נתונים והנתונים מהמטמון מבוסס על אלגוריתם של שימוש אחרון (LRU), שמתחיל לפעול ברגע שמגיעים לסף המקום שהוגדר במגבלה של
--file-cache-max-size-mb. אם פג התוקף של הרשומה על סמך ה-TTL שלה, קודם מתבצעת קריאת מטא-נתונים שלGETל-Cloud Storage, והיא כפופה לזמני האחזור ברשת. מכיוון שהנתונים והמטא-נתונים מנוהלים בנפרד, יכול להיות שישות אחת תוסר או תבוטל והשנייה לא.שמירת המטמון: המטמון של Cloud Storage FUSE לא נשמר אחרי ביטול טעינה והפעלה מחדש. במטמון הקבצים, רשומות המטא-נתונים שנדרשות כדי להציג קבצים מהמטמון נמחקות בזמן ביטול הטעינה וההפעלה מחדש, אבל יכול להיות שהנתונים במטמון הקבצים עדיין נמצאים בספריית הקבצים. מומלץ למחוק את הנתונים בספריית המטמון של הקבצים אחרי ביטול טעינה או הפעלה מחדש.
ניהול קריאה אקראית וקריאה חלקית: כשפעולת הקריאה הראשונה של הקובץ מתחילה מתחילת הקובץ, בהיסט
0, המטמון של הקבצים ב-Cloud Storage FUSE מטמיע וטוען את הקובץ כולו למטמון, גם אם קוראים רק מקבוצת משנה קטנה של טווחים. כך, קריאות אקראיות או חלקיות מאותו אובייקט יוגשו ישירות מהמטמון.כברירת מחדל, קריאה מכל היסט אחר לא מפעילה אחזור אסינכרוני של הקובץ המלא. כדי לשנות את ההתנהגות הזו כך ש-Cloud Storage FUSE יטמיע קובץ במטמון בקריאה אקראית ראשונית, מגדירים את האפשרות
--file-cache-cache-file-for-range-readאו את השדהfile-cache:cache-file-for-range-readלערךtrue.מומלץ להפעיל את המאפיין הזה אם מתבצעות הרבה פעולות קריאה אקראיות או חלקיות שונות באותו אובייקט.
אבטחת מידע: כשמפעילים את השמירה במטמון, Cloud Storage FUSE משתמש בספריית המטמון שציינתם באמצעות האפשרות
--cache-dirאו השדהcache-dirבתור הספרייה הבסיסית של המטמון, כדי לשמור קבצים מהקטגוריה של Cloud Storage בפורמט מוצפן. כל משתמש או תהליך שיש להם גישה לספריית המטמון הזו יכולים לגשת לקבצים האלה. מומלץ להגביל את הגישה לספרייה הזו.גישה ישירה או מרובה למטמון הקבצים: שימוש בתהליך שאינו Cloud Storage FUSE כדי לגשת לקובץ בספריית המטמון או לשנות אותו עלול להוביל לפגיעה בנתונים. מטמונים של Cloud Storage FUSE הם ספציפיים לכל תהליך שפועל ב-Cloud Storage FUSE, בלי מודעות לתהליכים שונים של Cloud Storage FUSE שפועלים באותו מחשב או במחשבים שונים. לכן, לא מומלץ להשתמש באותה ספריית מטמון לתהליכים שונים של Cloud Storage FUSE.
הפעלת כמה תהליכים של Cloud Storage FUSE באותו מחשב: אם צריך להפעיל כמה תהליכים של Cloud Storage FUSE באותו מחשב, כל תהליך של Cloud Storage FUSE צריך לקבל ספריית מטמון ספציפית משלו, או להשתמש באחת מהשיטות הבאות כדי לוודא שהנתונים לא ייפגמו:
טעינה של כל הקטגוריות באמצעות מטמון משותף: שימוש בטעינה דינמית כדי לטעון את כל הקטגוריות שיש לכם גישה אליהן בתהליך אחד באמצעות מטמון משותף. מידע נוסף זמין במאמר טעינה דינמית של Cloud Storage FUSE.
הפעלת מטמון בקטגוריה ספציפית: הפעלת מטמון רק בקטגוריה ספציפית באמצעות טעינה סטטית. מידע נוסף זמין במאמר טעינה סטטית של Cloud Storage FUSE.
שמירה במטמון רק של תיקייה או ספרייה ספציפית: טעינה ושמירה במטמון רק של תיקייה ספציפית ברמת הקטגוריה, במקום טעינה של קטגוריה שלמה. מידע נוסף זמין במאמר טעינת ספרייה בתוך קטגוריה.
לפני שמתחילים
כדי לשמור קבצים במטמון, צריך להגדיר נתיב לספרייה. אתם יכולים ליצור ספרייה חדשה במערכת קבצים קיימת או ליצור מערכת קבצים חדשה באחסון שהוקצה. אם אתם מקצים נפח אחסון חדש, אתם יכולים להשתמש בהוראות הבאות כדי ליצור מערכת קבצים חדשה:
ב-Google Cloud Hyperdisk, קראו את המאמר יצירת נפח חדש של Google Cloud Hyperdisk.
למידע על דיסקים של RAM בזיכרון, ראו יצירת דיסקים של RAM בזיכרון.
הפעלה והגדרה של התנהגות השמירה של קבצים במטמון
בוחרים באחת מהשיטות הבאות כדי להפעיל ולהגדיר את שמירת הקבצים במטמון:
מזינים אותו כערך של אפשרות
gcsfuseמציינים אותה בקובץ תצורה של Cloud Storage FUSE.
מציינים את ספריית המטמון שבה רוצים להשתמש באחת מהשיטות הבאות. כך מפעילים את מטמון הקבצים בפריסות שהן לא של Google Kubernetes Engine:
- אפשרות
gcsfuse:--cache-dir - שדה קובץ התצורה:
cache-dir
אם אתם משתמשים בפריסה של Google Kubernetes Engine באמצעות מנהל התקן ה-CSI של Cloud Storage FUSE ל-Google Kubernetes Engine, ציינו אחת מהשיטות הבאות:
- אפשרות
gcsfuse:--file-cache-max-size-mb - שדה קובץ התצורה:
file-cache:max-size-mb
- אפשרות
אופציונלי: אם ההורדות במקביל לא הופעלו באופן אוטומטי, אפשר להפעיל אותן על ידי הגדרת אחת מהשיטות הבאות לערך
true:- אפשרות
gcsfuse:--file-cache-enable-parallel-downloads - שדה קובץ התצורה:
file-cache:enable-parallel-downloads
- אפשרות
כדי להגביל את הקיבולת הכוללת שהמטמון של Cloud Storage FUSE יכול להשתמש בה בספרייה שנטענה, אפשר לשנות אחת מהאפשרויות הבאות. כשמציינים ספריית מטמון, הערך של האפשרויות האלה מוגדר באופן אוטומטי ל-
-1:- אפשרות
gcsfuse:--file-cache-max-size-mb - שדה קובץ התצורה:
file-cache:max-size-mb
אפשר גם לציין ערך ב-MiB או ב-GiB כדי להגביל את גודל המטמון.
- אפשרות
אופציונלי: אפשר לעקוף את תפוגת ה-TTL של רשומות במטמון ולהציג מטא-נתונים של קבצים מהמטמון אם הם זמינים, באמצעות אחת מהשיטות הבאות והגדרת הערך
-1:- אפשרות
gcsfuse:--metadata-cache-ttl-secs - שדה קובץ התצורה:
metadata-cache:ttl-secs
ערך ברירת המחדל הוא 60 שניות, והערך
-1מגדיר את הזמן ללא הגבלה. אפשר גם לציין ערך גבוה בהתאם לדרישות שלכם. מומלץ להגדיר את הערך שלttl-secsהכי גבוה שאפשר, בהתאם לעומס העבודה. למידע נוסף על זמן החיים (TTL) של רשומות שנשמרו במטמון, ראו שיקולים.- אפשרות
אופציונלי: מפעילים את היכולת של מטמון הקבצים לטעון באופן אסינכרוני את הקובץ כולו למטמון, אם פעולת הקריאה הראשונה של הקובץ מתחילה מכל מקום אחר מלבד
offset 0, כדי שגם קריאות עוקבות של היסטים שונים מאותו קובץ יוכלו להגיע מהמטמון. משתמשים באחת מהשיטות הבאות ומגדירים את האפשרות לערךtrue:- אפשרות
gcsfuse:--file-cache-cache-file-for-range-read - שדה קובץ התצורה:
file-cache:cache-file-for-range-read
- אפשרות
אופציונלי: הגדרת שמירה במטמון של נתוני stat. מידע נוסף על שמירת נתוני stat במטמון זמין במאמר סקירה כללית של שמירת נתוני stat במטמון.
מריצים ידנית את הפקודה
ls -Rבקטגוריה שנטענה לפני שמריצים את עומס העבודה, כדי לאכלס שדות מראש מטא-נתונים ולוודא שהמטמון של הנתונים הסטטיסטיים מאוכלס לפני הקריאה הראשונה, בשיטה מהירה יותר של אצווה. למידע נוסף על שיפור הביצועים של קריאה ראשונה, ראו שיפור קריאות ראשונות.
אחרי שמפעילים את שמירת הקבצים במטמון, ההורדות במקביל מופעלות באופן אוטומטי בגרסאות 2.12 ואילך של Cloud Storage FUSE. אם אתם משתמשים בגרסה ישנה יותר של Cloud Storage FUSE, הגדירו את האפשרות enable-parallel-downloads לערך true כדי לאפשר הורדות במקביל.
הגדרת מאפיינים תומכים להורדות במקביל
אפשר להגדיר את המאפיינים התומכים הבאים להורדות במקביל באמצעות ה-CLI של Cloud Storage FUSE או קובץ תצורה של Cloud Storage FUSE:
| תיאור הנכס | אפשרות gcsfuse |
שדה קובץ התצורה |
|---|---|---|
| המספר המקסימלי של תהליכי worker שאפשר ליצור לכל קובץ כדי להוריד את האובייקט מ-Cloud Storage למטמון הקבצים. | --file-cache-parallel-downloads-per-file |
file-cache:parallel-downloads-per-file |
| המספר המקסימלי של תהליכי עבודה שאפשר להפעיל בכל זמן נתון בכל משימות הורדת הקבצים. כברירת מחדל, הערך מוגדר למספר כפול ממספר ליבות המעבד (CPU) במכונה. כדי לציין שאין מגבלה, מזינים את הערך "-1". | --file-cache-max-parallel-downloads |
file-cache:max-parallel-downloads |
| גודל בקשת הקריאה ב-MiB שכל worker שולח ל-Cloud Storage בזמן הורדת האובייקט למטמון הקבצים. חשוב לזכור שהורדה מקבילה מופעלת רק אם הקובץ שנקרא הוא בגודל שצוין. | --file-cache-download-chunk-size-mb |
file-cache:download-chunk-size-mb |
השבתת הורדות מקבילות
כדי להשבית הורדות מקבילות, מגדירים את אחת מהאפשרויות הבאות לערך false:
- אפשרות
gcsfuse:--file-cache-enable-parallel-downloads - שדה קובץ התצורה:
file-cache:enable-parallel-downloads
שליטה ביכולת השמירה במטמון ברמת פירוט של קובץ באמצעות ביטויים רגולריים
כברירת מחדל, כל הקבצים שנקראים נשמרים במטמון. אתם יכולים לקבוע אילו קבצים יישמרו במטמון ברמת פירוט של קובץ, באמצעות השדות האופציונליים include-regex ו-exclude-regex בהגדרות של file-cache. בשדות האלה אפשר לציין ביטויים רגולריים שיתאימו לנתיבי קבצים בפורמט bucket_name/object_key.
הוספת קבצים ספציפיים לשמירה במטמון
כדי לשמור במטמון רק קבצים שתואמים לתבנית ספציפית, משתמשים באפשרות include-regex. כל קובץ שלא תואם לביטוי הרגולרי הזה לא נשמר במטמון.
לדוגמה, כדי לשמור במטמון רק קובצי .tfrecord ממערך הנתונים לאימון, מציינים את הפרטים הבאים בקובץ התצורה:
file-cache:
include-regex: ".*\\.tfrecord$"
אפשר גם להשתמש בדגל --file-cache-include-regex:
gcsfuse --file-cache-include-regex ".*\\.(tfrecord)$" ..
החרגת קבצים ספציפיים מהשמירה במטמון
כדי למנוע שמירה במטמון של קבצים ספציפיים, משתמשים באפשרות exclude-regex.
כל קובץ שתואם לביטוי הרגולרי הזה לא נשמר במטמון. לדוגמה, כדי להחריג את כל הקבצים בספרייה בשם logs/, מציינים את הפרטים הבאים בקובץ התצורה:
file-cache:
exclude-regex: ".*/logs/.*"
אפשר גם להשתמש בדגל --file-cache-exclude-regex:
gcsfuse --file-cache-exclude-regex ".*/logs/.*" ..
שימוש בכללי הכללה והחרגה ביחד
אפשר להשתמש גם ב-include-regex וגם ב-exclude-regex בו-זמנית. הכלל exclude-regex תמיד נבדק ראשון. אם קובץ תואם ל-exclude-regex, הוא לא יישמר במטמון, גם אם הוא תואם גם ל-include-regex.
לדוגמה, כדי לשמור במטמון את כל קובצי ה-.tfrecord, חוץ מאלה שבספרייה output/, צריך לציין את הפרטים הבאים בקובץ התצורה:
file-cache:
include-regex: ".*\\.tfrecord$"
exclude-regex: ".*/output/.*"
אפשר גם להשתמש בשני הדגלים:
gcsfuse --file-cache-include-regex ".*\\.tfrecord$" --file-cache-exclude-regex ".*/output/.*" ..