שמירת קבצים במטמון ב-Cloud Storage FUSE

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

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

היתרונות של שמירת קבצים במטמון

יתרונות של שמירת קבצים במטמון:

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

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

  • שימוש בקיבולת קיימת: שמירת קבצים במטמון יכולה להשתמש בקיבולת קיימת של מכונה שהוקצתה לספריית המטמון, בלי לחייב על אחסון נוסף. זה כולל דיסקים מקומיים מסוג SSD שמגיעים בחבילה עם סוגי מכונות של מעבדים גרפיים ל-Cloud, כמו a2-ultragpu, ‏ a3-highgpu, דיסק אחסון מתמיד (persistent disk) (שהוא דיסק האתחול שמשמש כל מכונה וירטואלית) או /tmpfs בזיכרון.

  • חיובים מופחתים: בקשות שמוגשות מהמטמון מוגשות באופן מקומי ולא גוררות חיובים על פעולות ב-Cloud Storage או על תעבורת נתונים ברשת.

  • שיפור עלות הבעלות הכוללת (TCO) של אימון 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. שימו לב שאי אפשר להגדיר גודל מקסימלי לכל קובץ.

  • הוצאה מהמטמון: הוצאה של מטא-נתונים ונתונים מהמטמון מבוססת על אלגוריתם של least recently used (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.

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

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

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

  1. למידע על Google Cloud Hyperdisk, קראו את המאמר יצירת נפח חדש של Google Cloud Hyperdisk.

  2. לגבי Persistent Disk, אפשר לעיין במאמר בנושא יצירת נפח אחסון חדש של Persistent Disk.

  3. למידע על SSD מקומי, אפשר לעיין במאמר הוספת SSD מקומי למכונה הווירטואלית.

  4. למידע על דיסקים של RAM בזיכרון, אפשר לעיין במאמר יצירת דיסקים של RAM בזיכרון.

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

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

  2. מציינים את ספריית המטמון שרוצים להשתמש בה באחת מהשיטות הבאות. כך תוכלו להפעיל את מטמון הקבצים לפריסות שאינן Google Kubernetes Engine:

    אם אתם משתמשים בפריסה של Google Kubernetes Engine באמצעות מנהל ההתקן של Cloud Storage FUSE CSI ל-Google Kubernetes Engine, אתם צריכים לציין אחת מהשיטות הבאות:

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

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

    אפשר גם לציין ערך ב-MiB או ב-GiB כדי להגביל את גודל המטמון.

  5. אופציונלי: אפשר לעקוף את תפוגת ה-TTL של רשומות במטמון ולהציג מטא-נתונים של קובץ מהמטמון אם הם זמינים. כדי לעשות זאת, משתמשים באחת מהשיטות הבאות ומגדירים ערך של -1:

    ברירת המחדל היא 60 שניות, והערך -1 מגדיר את הזמן ללא הגבלה. אפשר גם לציין ערך גבוה בהתאם לדרישות. מומלץ להגדיר את הערך של ttl-secs כמה שיותר גבוה, בהתאם לעומס העבודה. מידע נוסף על ה-TTL של רשומות שנשמרו במטמון זמין במאמר בנושא שיקולים.

  6. אופציונלי: מפעילים את היכולת של מטמון הקבצים לטעון באופן אסינכרוני את כל הקובץ למטמון אם פעולת הקריאה הראשונה של הקובץ מתחילה ממיקום שונה מ-offset 0, כך שגם קריאות עוקבות של היסטים שונים מאותו קובץ יוכלו להתבצע מהמטמון. משתמשים באחת מהשיטות הבאות ומגדירים את האפשרות true:

  7. אופציונלי: הגדרת שמירה במטמון של נתוני stat. מידע נוסף על מטמון נתונים סטטיסטיים זמין במאמר סקירה כללית של שמירת נתונים סטטיסטיים במטמון.

  8. לפני שמריצים את עומס העבודה, מריצים באופן ידני את הפקודה 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 option. כל קובץ שלא תואם לביטוי הרגולרי הזה לא יישמר במטמון. לדוגמה, כדי לשמור במטמון רק קבצים מסוג .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/.*" ..

המאמרים הבאים