טעינת קטגוריות של Cloud Storage באמצעות Cloud Storage FUSE

אפשרויות ל-CLI של Cloud Storage FUSE

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

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

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

קבלת התפקידים הנדרשים להרכבה ולגישה לקטגוריה

כדי לטעון קטגוריה, לגשת אליה ולבצע בה פעולות קריאה וכתיבה, צריך לבקש מבעלי הקטגוריה להקצות לכם את התפקיד 'משתמש באובייקט אחסון' (roles/storage.objectUser) בקטגוריה.

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

ההרשאות הנדרשות

  • storage.objects.create
  • storage.objects.delete
  • storage.objects.get
  • storage.objects.list
  • storage.objects.update

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

במאמר הגדרה וניהול של מדיניות IAM בקטגוריות מוסבר איך מקצים תפקידים בקטגוריות.

התקנת FUSE של Cloud Storage

אם עוד לא עשיתם זאת, מתקינים את Cloud Storage FUSE במחשב.

אימות בקשות של Cloud Storage FUSE

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

כך מגדירים Application Default Credentials באמצעות Google Cloud CLI:

  1. Install the Google Cloud CLI.

  2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

כשיוצרים מכונה וירטואלית (VM) ב-Compute Engine, אפשר להשתמש בחשבון השירות שלה גם כדי לאמת את הגישה ל-Cloud Storage FUSE.

טעינת קטגוריה

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

gcsfuse GLOBAL_OPTIONS BUCKET_NAME MOUNT_POINT

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

  • GLOBAL_OPTIONS הן האפשרויות שאפשר לכלול כדי לשלוט באופן הגדרת הטעינה. מידע נוסף על האפשרויות ועל אופן השימוש בהן זמין במאמר הפניה ל-CLI של Cloud Storage FUSE או במאמר קובץ התצורה של Cloud Storage FUSE.

    • BUCKET_NAME הוא שם הקטגוריה שרוצים לטעון. לדוגמה, my-bucket. אם רוצים לבצע טעינה דינמית, לא כוללים שם של קטגוריה בפקודה.

    • MOUNT_POINT היא הספרייה המקומית שאליה טוענים את הקטגוריה. לדוגמה, /path/to/mount/point.

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

אחרי היציאה מ-Cloud Storage FUSE, אפשר לגשת לקטגוריות שנטענו על ידי הרצת ls בנקודת הטעינה של הקטגוריה. אם אתם מעדיפים ש-Cloud Storage FUSE יישאר בחזית (למשל, לרישום ניפוי באגים ביומן), תוכלו להריץ את הפקודה gcsfuse עם השדה foreground או עם האפשרות --foreground.

דוגמאות לטעינה

בקטע הזה מתוארות דוגמאות שונות לפקודות להרכבת קטגוריות.

טעינה סטטית

טעינה סטטית מתייחסת לטעינה של קטגוריה ספציפית. לדוגמה, כדי לטעון קטגוריה בשם my-bucket לספרייה /path/to/mount/point, מריצים את הפקודות הבאות:

mkdir /path/to/mount/point
gcsfuse my-bucket /path/to/mount/point

טעינה דינמית

טעינה דינמית מתייחסת לטעינה של כל הקטגוריות שלמשתמש יש גישה אליהן כספריות משנה.

כשמבצעים טעינה דינמית, לא כוללים שמות של קטגוריות בפקודה. לדוגמה, נניח שיש לכם גישה לקטגוריות בשמות my-bucket-1, my-bucket-2 ו-my-bucket-3. כדי לטעון את כל הקטגוריות לספרייה /path/to/mount/point, מריצים את הפקודות הבאות:

mkdir /path/to/mount/point
gcsfuse /path/to/mount/point

לאחר מכן אפשר לגשת לקטגוריות כספריות משנה:

ls /path/to/mount/point/my-bucket-1/
ls /path/to/mount/point/my-bucket-2/
ls /path/to/mount/point/my-bucket-3/

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

טעינת קטגוריה במצב קריאה בלבד

כדי לטעון קטגוריה במצב קריאה בלבד, מעבירים את האפשרות -o ro לפקודה gcsfuse. לדוגמה, כדי לטעון את הקטגוריה my-bucket במצב קריאה בלבד לספרייה /path/to/mount/point, מריצים את הפקודה הבאה:

gcsfuse -o ro my-bucket  /path/to/mount/point

טעינת ספרייה בתוך קטגוריה

כברירת מחדל, Cloud Storage FUSE טוען קטגוריות בשלמותן, כולל כל התוכן והמבנים של הספריות. כדי לטעון ספרייה ספציפית בתוך קטגוריה, צריך להעביר את האפשרות --only-dir אל gcsfuse CLI או אל השדה only-dir בקובץ ההגדרות של Cloud Storage FUSE. לדוגמה, כדי לטעון את הספרייה my-bucket/a/b לספרייה /path/to/mount/point, מריצים את הפקודה הבאה:

gcsfuse --only-dir a/b my-bucket /path/to/mount/point

טעינה באמצעות הפקודה mount של Linux

התקנת Cloud Storage FUSE כוללת כלי עזר שמתקשר באמצעות הפקודה mount של Linux, וכך אפשר להשתמש בפקודה mount כדי לטעון קטגוריות. אם משתמשים ב-Linux, צריך להריץ את הפקודה mount מהרמה הבסיסית (root). לדוגמה, הפקודה הבאה טוענת קטגוריה בשם my-bucket לנתיב /path/to/mount/point:

sudo mount -t gcsfuse -o rw,user my-bucket /path/to/mount/point

כשמבצעים טעינה באמצעות הפקודה mount של Linux, אפשר להעביר אפשרויות gcsfuse כארגומנט לאפשרות -o, אבל צריך להחליף את המקפים (-) בקו תחתון (_). לדוגמה, implicit_dirs במקום implicit-dirs.

sudo mount -t gcsfuse -o implicit_dirs my-bucket /path/to/mount/point

טעינה מתמידה

התקנת Cloud Storage FUSE כוללת כלי עזר שמותקן במערכת בנתיב /sbin/mount.gcsfuse. כלי העזר הזה מאפשר ליצור נקודות טעינה באמצעות הקובץ /etc/fstab, כדי שתוכלו להתמיד בטעינות.

לדוגמה, כשמוסיפים את השורה הבאה לקובץ /etc/fstab, היא מגדירה נקודת טעינה לקטגוריה בשם my-bucket בנתיב /mount/point:

my-bucket /mount/point gcsfuse rw,noauto,user

כאשר:

  • האפשרות rw מציינת שנקודת הטעינה תיווצר עם הרשאות לקריאה ולכתיבה.

  • האפשרות noauto מציינת שאסור לטעון את מערכת הקבצים בזמן ההפעלה.

  • האפשרות user מאפשרת לכל אחד ליצור את נקודת הטעינה שמצוינת בקובץ /etc/fstab. אחרי שמוסיפים את השורה לדוגמה לקובץ /etc/fstab, אפשר להריץ את mount /mount/point כמשתמש שאינו Root.

אם רוצים לטעון את הקטגוריה באופן אוטומטי בזמן ההפעלה, יכול להיות שתצטרכו לכלול את האפשרות x-systemd.requires=network-online.target או את האפשרות _netdev ברשומת /etc/fstab, כדי לוודא ש-Cloud Storage FUSE ימתין שמערכת הרשת תהיה מוכנה לפני הטעינה. לדוגמה:

my-bucket /mount/point gcsfuse rw,x-systemd.requires=network-online.target,user

אפשר לטעון קטגוריה באופן אוטומטי כמשתמש ספציפי שאינו Root, אם כוללים את האפשרויות uid, gid או שתיהן ברשומת /etc/fstab. לדוגמה:

my-bucket /mount/point gcsfuse rw,_netdev,allow_other,uid=1001,gid=1001

בדומה לפקודה linux mount, בדגל שמשמש להרכבה בקובץ /etc/fstab צריך להשתמש בקו תחתון (_) במקום במקף (-). לדוגמה, implicit_dirs במקום implicit-dirs.

טעינת קטגוריה עם תיקיות

אפשר לטעון דליים עם כמה סוגי תיקיות.

טעינת קטגוריה עם תיקיות מנוהלות

כדי לטעון קטגוריה כולל התיקיות המנוהלות שלה, צריך לכלול את האפשרות --implicit-dirs או את השדה implicit-dirs בפקודה.

לדוגמה, כדי לטעון קטגוריה בשם my-bucket ואת התיקיות המנוהלות שלה לספרייה /path/to/mount/point, מריצים את הפקודות הבאות:

gcsfuse --implicit-dirs my-bucket /path/to/mount/point

כשמבצעים Mount לקטגוריה עם תיקיות מנוהלות, חשוב לזכור את המגבלות והשיקולים הבאים:

  • תיקיות מנוהלות ריקות לא מופיעות בדליים שמוצמדים.

  • אי אפשר להגדיר או לנהל הרשאות IAM בתיקייה מנוהלת באמצעות Cloud Storage FUSE. במאמר שימוש ב-IAM עם תיקיות מנוהלות מוסבר איך מגדירים או מנהלים הרשאות IAM בתיקייה מנוהלת.

  • אפשר להעתיק ולהעביר תיקייה מנוהלת בקטגוריה מוצמדת באמצעות הפקודות cp ו-mv. כשמעתיקים או מעבירים תיקייה מנוהלת, מדיניות ה-IAM בתיקייה המנוהלת המקורית לא נשמרת בתיקייה המנוהלת החדשה. צריך להגדיר כללי מדיניות חדשים של IAM בתיקייה המנוהלת החדשה.

צירוף של מאגר עם תיקיות שהוגדרו באופן מרומז

אפשר לטעון תיקיות שמוגדרות במרומז באמצעות האפשרות --implicit-dirs gcsfuse ב-CLI של gcsfuse או בשדה implicit-dirs בקובץ ההגדרות של Cloud Storage FUSE. תיקיות שמוגדרות באופן מרומז הן תיקיות שלא נוצרו באופן מפורש כאובייקטים ב-Cloud Storage. האפשרות --implicit-dirs מאפשרת לכם לראות תיקיות כשמבצעים mount של bucket.

לדוגמה, כדי לטעון קטגוריה בשם my-bucket לספרייה /path/to/mount/point עם תיקיות שמוגדרות באופן מרומז, מריצים את הפקודה הבאה:

gcsfuse --implicit-dirs my-bucket /path/to/mount/point

צירוף קטגוריה עם תיקיות שמופעל בה מרחב שמות היררכי

אפשר לטעון קטגוריה עם מרחב שמות היררכי מופעל, כולל התיקיות שלה. כשמציבים קטגוריה עם מרחב שמות היררכי, לא צריך לציין את האפשרות --implicit-dirs gcsfuse או את השדה implicit-dirs כדי שהתיקיות יופיעו בקטגוריה המוצבת.

לדוגמה, כדי לטעון קטגוריה בשם my-bucket עם תיקיות לספרייה /path/to/mount/point, מריצים את הפקודה הבאה:

gcsfuse my-bucket /path/to/mount/point

שליטה בהרשאות הגישה לנקודת הטעינה

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

כדי לטעון קטגוריה ולאפשר לאחרים לגשת לנקודת הטעינה של הקטגוריה, אפשר להריץ את הפקודה mount ברמה הבסיסית (root) עם האפשרות -o allow_other:

mount -t gcsfuse -o allow_other my-bucket /path/to/mount/point

אם רוצים להימנע מטעינת הקטגוריה ברמה הבסיסית (root), צריך להוסיף את user_allow_other לקובץ /etc/fuse.conf כדי לאפשר לאחרים גישה לנקודת הטעינה של הקטגוריה.

ניתוק קטגוריה

כדי לנתק קטגוריה, צריך להשתמש בכלי fusermount:

fusermount -u /path/to/mount/point

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