במאמר הזה מוסבר על שמירת קבצים במטמון ב-Cloud Storage FUSE, ומופיעות בו הוראות להגדרה ולשימוש בשמירת קבצים במטמון.
שמירת קבצים במטמון ב-Cloud Storage FUSE היא מטמון קריאה בצד הלקוח שמשפר את הביצועים של פעולות קריאה על ידי הצגת קריאות חוזרות של קבצים מאחסון מטמון מהיר יותר לפי בחירתכם. כשמפעילים שמירת קבצים במטמון, Cloud Storage FUSE שומר עותקים של קבצים שמתבצעת אליהם גישה לעיתים קרובות באופן מקומי. כך אפשר לקרוא את הקבצים ישירות מהמטמון בפעמים הבאות, מה שמקטין את זמן האחזור ומשפר את קצב העברת הנתונים.
היתרונות של שמירת קבצים במטמון
היתרונות של שמירת קבצים במטמון:
שיפור הביצועים של קלט/פלט קטן ואקראי: שמירת קבצים במטמון משפרת את זמן האחזור ואת קצב העברת הנתונים על ידי הצגת קריאות ישירות ממדיה המטמון. פעולות קטנות ואקראיות של קלט/פלט יכולות להיות מהירות משמעותית כשהן מוגשות מהמטמון.
הורדות מקבילות מופעלות באופן אוטומטי: הורדות מקבילות מופעלות באופן אוטומטי ב-Cloud Storage FUSE בגרסה 2.12 ואילך, כשהמטמון של הקבצים מופעל. הורדות מקבילות משתמשות בכמה תהליכי עבודה כדי להוריד קובץ במקביל, באמצעות ספריית מטמון הקבצים כמאגר נתונים זמני לשליפה מראש. כך אפשר לקצר את זמן טעינת המודל עד פי תשעה. מומלץ להשתמש בהורדות מקבילות לתרחישי קריאה עם שרשור יחיד שבהם נטענים קבצים גדולים, כמו הגשת מודלים ושחזורי נקודות ביקורת.
שימוש בקיבולת קיימת: שמירה במטמון של קבצים יכולה להשתמש בקיבולת קיימת של מכונה שהוקצתה לספריית המטמון, בלי לחייב על עוד נפח אחסון. זה כולל דיסקים מקומיים מסוג SSD שמגיעים בחבילה עם סוגי מכונות של מעבדים גרפיים ל-Cloud, כמו
a2-ultragpu, a3-highgpu, דיסקים לאחסון מתמיד (persistent disk) (שהם דיסקי האתחול שבהם נעשה שימוש בכל מכונת VM) או זיכרון/tmpfs.חיובים מופחתים: בקשות שמוגשות מהמטמון מוגשות באופן מקומי ולא גוררות חיובים על פעולות או על תעבורת נתונים ב-Cloud Storage.
שיפור עלות הבעלות הכוללת של אימון AI ו-ML: שמירה במטמון של קבצים מגדילה את השימוש במעבדים גרפיים ל-Cloud וב-Cloud TPU על ידי טעינת נתונים מהירה יותר, מה שמקצר את זמן האימון ומספק יחס טוב יותר בין מחיר לביצועים עבור עומסי עבודה של אימון בינה מלאכותית ולמידת מכונה (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.
לגבי Persistent Disk, אפשר לעיין במאמר בנושא יצירת אמצעי אחסון חדש של Persistent Disk.
למידע על SSD מקומי, אפשר לעיין במאמר הוספת SSD מקומי למכונה וירטואלית.
למידע על דיסקי RAM בזיכרון, אפשר לעיין במאמר יצירת דיסקי RAM בזיכרון.
הפעלה והגדרה של התנהגות שמירת קבצים במטמון
בוחרים את השיטה שבאמצעותה רוצים להפעיל ולהגדיר שמירת קבצים במטמון, באמצעות אחת מהשיטות הבאות:
מזינים אותו כערך של
gcsfuseאפשרותמציינים אותו בקובץ תצורה של Cloud Storage FUSE
מציינים את ספריית המטמון שרוצים להשתמש בה באחת מהשיטות הבאות. כך תוכלו להפעיל את מטמון הקבצים לפריסות שאינן ב-Google Kubernetes Engine:
gcsfuseאפשרות:--cache-dir- שדה בקובץ התצורה:
cache-dir
אם אתם משתמשים בפריסה של Google Kubernetes Engine באמצעות מנהל ההתקן של Cloud Storage FUSE CSI ל-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 ו-type. מידע נוסף על מטמון של נתוני stat ו-type זמין במאמרים סקירה כללית של שמירה במטמון של נתוני type וסקירה כללית של שמירה במטמון של נתוני stat.
לפני שמריצים את עומס העבודה, מריצים באופן ידני את הפקודה
ls -Rבדלי המצורף כדי לאכלס מראש את המטא-נתונים. כך אפשר לאכלס את מטמון הסוגים לפני הקריאה הראשונה בשיטה מהירה יותר של עיבוד באצווה. למידע נוסף על שיפור הביצועים של קריאה ראשונה, אפשר לעיין במאמר בנושא שיפור הביצועים של קריאה ראשונה.
אחרי שמפעילים את שמירת הקבצים במטמון, ההורדות המקבילות מופעלות באופן אוטומטי ב-Cloud Storage FUSE בגרסה 2.12 ואילך. אם אתם משתמשים בגרסה ישנה יותר של 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 |
| המספר המקסימלי של תהליכי Worker שאפשר ליצור בכל זמן נתון בכל משימות ההורדה של הקבצים. ערך ברירת המחדל הוא כפול ממספר ליבות המעבד במחשב. כדי לציין שאין מגבלה, מזינים את הערך `-1`. | --file-cache-max-parallel-downloads |
file-cache:max-parallel-downloads |
| הגודל של כל בקשת קריאה ב-MiB שכל עובד שולח ל-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/.*" ..