במאמר הזה נסביר איך ליצור ולהריץ משימה באצווה שמשתמשת בכרך אחסון חיצוני אחד או יותר. אפשרויות האחסון החיצוני כוללות דיסק מתמשך חדש או קיים, כונני SSD מקומיים חדשים, קטגוריות קיימות של Cloud Storage ומערכת קבצים קיימת ברשת (NFS) כמו שיתוף קבצים ב-Filestore.
בין אם מוסיפים אמצעי אחסון חיצוניים ובין אם לא, לכל מכונה וירטואלית ב-Compute Engine שמוגדרת לעיבוד משימה יש דיסק אתחול, שמשמש לאחסון של קובץ האימג' וההוראות של מערכת ההפעלה של המשימה. למידע על הגדרת דיסק האתחול של משימה, אפשר לעיין במאמר סקירה כללית על סביבת מערכת ההפעלה של מכונה וירטואלית.
לפני שמתחילים
- אם עוד לא השתמשתם ב-Batch, כדאי לעיין במאמר תחילת העבודה עם Batch ולהפעיל את Batch על ידי השלמת הדרישות המוקדמות לפרויקטים ולמשתמשים.
-
כדי לקבל את ההרשאות שדרושות ליצירת משימה, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- הכלי לעריכת משימות באצווה (
roles/batch.jobsEditor) בפרויקט - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בחשבון השירות של המשימה, שמוגדר כברירת מחדל כחשבון השירות של Compute Engine שמוגדר כברירת מחדל -
יצירת משימה שמשתמשת בקטגוריה של Cloud Storage:
Storage Object Viewer (
roles/storage.objectViewer) on the bucket
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
- הכלי לעריכת משימות באצווה (
יצירת משימה שמשתמשת באמצעי אחסון
אופציונלי: עבודה יכולה להשתמש באחד או יותר מהסוגים הבאים של נפחי אחסון חיצוניים. מידע נוסף על כל סוגי נפחי האחסון, ההבדלים וההגבלות של כל אחד מהם זמין במאמר בנושא אפשרויות אחסון במכונות וירטואליות ב-Compute Engine.
- persistent disk: אחסון בלוקים (block storage) אזורי או של תחום מוגדר
- local SSD: אחסון בלוקים זמני עם ביצועים גבוהים
- קטגוריה של Cloud Storage: אחסון אובייקטים במחיר משתלם
- network file system (NFS): מערכת קבצים מבוזרת שפועלת לפי פרוטוקול Network File System – לדוגמה, Filestore file share, שהוא NFS עם רמת ביצועים גבוהה שמארח ב- Google Cloud
כדי לאפשר למשימה להשתמש בכל נפח אחסון, צריך לכלול אותו בהגדרת המשימה ולציין את נתיב ההרכבה (mountPath) בקבצים הניתנים להרצה. כדי ללמוד איך ליצור משימה שמשתמשת בנפחי אחסון, אפשר לעיין באחד מהקטעים הבאים או יותר:
- שימוש בדיסק אחסון מתמיד (persistent disk)
- שימוש ב-SSD מקומי
- שימוש בקטגוריה של Cloud Storage
- שימוש במערכת קבצים ברשת
שימוש בדיסק אחסון מתמיד
למשימה שמשתמשת בדיסקים מתמידים יש את ההגבלות הבאות:
כל הדיסקים לאחסון מתמיד: אפשר לעיין בהגבלות על כל הדיסקים לאחסון מתמיד.
דיסקים חדשים לעומת דיסקים קיימים לאחסון מתמיד: כל דיסק לאחסון מתמיד בעבודה יכול להיות חדש (מוגדר ונוצר עם העבודה) או קיים (כבר נוצר בפרויקט וצוין בעבודה). כדי להשתמש בדיסק אחסון מתמיד, צריך לעצב אותו ולהוסיף אותו למכונות הווירטואליות של העבודה, שצריכות להיות באותו מיקום כמו דיסק האחסון המתמיד. הכלי מבצע התקנה של כל דיסק אחסון מתמיד שכללתם במשימה, ומפרמט כל דיסק אחסון מתמיד חדש. אבל אתם צריכים לפרמט ולבטל את ההתקנה של כל דיסק אחסון מתמיד קיים שאתם רוצים שהמשימה תשתמש בו.
אפשרויות המיקום, אפשרויות הפורמט ואפשרויות ההרכבה הנתמכות משתנות בין דיסקים קשיחים קיימים לבין דיסקים קשיחים חדשים, כפי שמתואר בטבלה הבאה:
דיסקים חדשים לאחסון מתמיד דיסקים קיימים לאחסון מתמיד אפשרויות פורמט האחסון המתמיד מפורמט אוטומטית עם מערכת קבצים מסוג
ext4.כדי להשתמש בדיסק מתמשך במשימה, צריך להגדיר בו מערכת קבצים מסוג
ext4לפני שמשתמשים בו.אפשרויות הרכבה כל האפשרויות נתמכות.
כל האפשרויות נתמכות, חוץ מכתיבה. הסיבה לכך היא מגבלות של מצב ריבוי כותבים.
לפני שמשתמשים בדיסק מתמשך לעבודה, צריך לנתק אותו מכל מכונות ה-VM שהוא מצורף אליהן.
אפשרויות מיקום אפשר ליצור רק דיסקים של אחסון מתמיד (persistent disks) באזור מסוים.
אתם יכולים לבחור כל מיקום לעבודה. הדיסקים לאחסון מתמיד נוצרים בתחום שבו הפרויקט פועל.
אפשר לבחור דיסקים לאחסון מתמיד (persistent disks) אזוריים ושל תחום מוגדר.
צריך להגדיר את המיקום של המשרה (או, אם מצוין, רק את המיקומים המותרים של המשרה) כמיקומים שמכילים את כל הדיסקים הקבועים של המשרה. לדוגמה, אם מדובר בדיסק אחסון מתמיד אזורי, המיקום של המשימה צריך להיות האזור של הדיסק. אם מדובר בדיסק אחסון מתמיד אזורי, המיקום של המשימה צריך להיות האזור של הדיסק, או אם מציינים אזורים, אחד או שני האזורים הספציפיים שבהם נמצא דיסק האחסון המתמיד האזורי.תבניות של הגדרות מכונה: אם רוצים להשתמש בתבנית של הגדרות מכונה וירטואלית בזמן יצירת העבודה הזו, צריך לחבר את כל דיסקי האחסון המתמיד(persistent disk) של העבודה הזו בתבנית של הגדרות המכונה. אחרת, אם לא רוצים להשתמש בתבנית של הגדרות מכונה, צריך לחבר את דיסקי האחסון המתמידים ישירות להגדרת העבודה.
אפשר ליצור משימה שמשתמשת בדיסק אחסון מתמיד (persistent disk) באמצעותGoogle Cloud המסוף, ה-CLI של gcloud, Batch API, C++, Go, Java, Node.js או Python.
המסוף
בדוגמה הבאה, נעשה שימוש במסוף Google Cloud כדי ליצור עבודה שמריצה סקריפט לקריאת קובץ מדיסק קשיח מתמשך אזורי קיים שנמצא באזור us-central1-a. סקריפט לדוגמה מניח שלמשימה יש אחסון מתמיד אזורי קיים שמכיל קובץ טקסט בשם example.txt בספריית הבסיס.
אופציונלי: יצירת דיסק לדוגמה של אחסון מתמיד (persistent disk) אזורי
אם רוצים ליצור דיסק קבוע אזורי שאפשר להשתמש בו כדי להריץ את הסקריפט לדוגמה, צריך לבצע את הפעולות הבאות לפני שיוצרים את העבודה:
מחברים דיסק חדש וריק עם שם
example-diskלמכונת Linux וירטואלית באזורus-central1-a, ואז מריצים פקודות במכונה הווירטואלית כדי לפרמט את הדיסק ולחבר אותו. הוראות מפורטות זמינות במאמר בנושא הוספת דיסק אחסון מתמיד (persistent disk) למכונת VM.אל תתנתקו מה-VM עדיין.
כדי ליצור את
example.txtבדיסק של אחסון מתמיד, מריצים את הפקודות הבאות במכונה הווירטואלית:כדי לשנות את ספריית העבודה הנוכחית לספריית הבסיס של הדיסק הקשיח הקבוע, מקלידים את הפקודה הבאה:
cd VM_MOUNT_PATHמחליפים את VM_MOUNT_PATH בנתיב לספרייה שבה דיסק האחסון המתמיד (persistent disk) הותקן במכונה הווירטואלית הזו בשלב הקודם – לדוגמה,
/mnt/disks/example-disk.לוחצים על
Enter.כדי ליצור ולהגדיר קובץ בשם
example.txt, מקלידים את הפקודה הבאה:cat > example.txtלוחצים על
Enter.מקלידים את התוכן של הקובץ. לדוגמה, מקלידים
Hello world!.כדי לשמור את הקובץ, מקישים על
Ctrl+D(או עלCommand+Dב-macOS).
בסיום, אפשר להתנתק מהמכונה הווירטואלית.
מנתקים את דיסק האחסון המתמיד מה-VM.
אם אתם לא צריכים יותר את ה-VM, אתם יכולים למחוק אותו, וכך הדיסק הקשיח ינותק אוטומטית.
אחרת, מנתקים את האחסון המתמיד. לפי ההוראות במאמר ניתוק וחיבור מחדש של דיסקים לאתחול, מנתקים את הדיסק הקשיח
example-diskבמקום את דיסק האתחול של המכונה הווירטואלית.
יצירת עבודה שמשתמשת בדיסק אחסון מתמיד (persistent disk) אזורי קיים
כדי ליצור עבודה שמשתמשת בדיסקים קיימים של אחסון מתמיד אזורי באמצעותGoogle Cloud המסוף, מבצעים את הפעולות הבאות:
נכנסים לדף Job list במסוף Google Cloud .
לוחצים על יצירה. ייפתח הדף יצירת משימה באצווה. בחלונית הימנית, הדף פרטי המשרה מסומן.
מגדירים את הדף Job details:
אופציונלי: בשדה שם המשרה, אפשר להתאים אישית את שם המשרה.
לדוגמה, מזינים
example-disk-job.מגדירים את הקטע פרטי המשימה:
בחלון New runnable, מוסיפים לפחות סקריפט אחד או קונטיינר אחד כדי שהעבודה הזו תפעל.
לדוגמה, כדי להריץ סקריפט שמדפיס את התוכן של קובץ בשם
example.txtשנמצא בספריית הבסיס של הדיסק הקשיח הקבוע שבו נעשה שימוש בעבודה הזו, מבצעים את הפעולות הבאות:מסמנים את תיבת הסימון Script (סקריפט). תופיע תיבת טקסט.
בתיבת הטקסט, מזינים את הסקריפט הבא:
echo "Here is the content of the example.txt file in the persistent disk." cat MOUNT_PATH/example.txtמחליפים את MOUNT_PATH בנתיב שבו אתם מתכננים לטעון את דיסק האחסון המתמיד (persistent disk) למכונות הווירטואליות עבור העבודה הזו – לדוגמה,
/mnt/disks/example-disk.לוחצים על סיום.
בשדה מספר המשימות, מזינים את מספר המשימות של העבודה הזו.
לדוגמה, מזינים
1(ברירת מחדל).בשדה מקביליות, מזינים את מספר המשימות שרוצים להריץ בו-זמנית.
לדוגמה, מזינים
1(ברירת מחדל).
מגדירים את הדף Resource specifications:
בחלונית הימנית, לוחצים על מפרטי משאבים. ייפתח הדף מפרטי משאבים.
בוחרים את המיקום של המשרה. כדי להשתמש בדיסק אחסון מתמיד קיים של תחום מוגדר, המכונות הווירטואליות של העבודה צריכות להיות באותו תחום.
בשדה אזור, בוחרים אזור.
לדוגמה, כדי להשתמש בדיסק מתמשך אזורי לדוגמה, בוחרים באפשרות
us-central1 (Iowa)(ברירת מחדל).בשדה Zone, בוחרים אזור.
לדוגמה, בוחרים באפשרות
us-central1-a (Iowa).
קובעים את ההגדרות בדף הגדרות נוספות:
בחלונית הימנית, לוחצים על הגדרות נוספות. ייפתח הדף הגדרות נוספות.
לכל דיסק לאחסון מתמיד (persistent disk) אזורי קיים שרוצים לצרף לעבודה הזו, מבצעים את הפעולות הבאות:
בקטע נפח אחסון, לוחצים על הוספת נפח חדש. מופיע החלון New volume (נפח אחסון חדש).
בחלון New volume (נפח חדש):
בקטע Volume type בוחרים באפשרות Persistent disk (ברירת מחדל).
ברשימה Disk, בוחרים דיסק קשיח קיים באזור שרוצים לצרף לעבודה הזו. הדיסק צריך להיות באותו אזור שבו נמצאת המשימה.
לדוגמה, בוחרים את הדיסק הקיים והקבוע באזור
us-central1-aשהכנתם, שמכיל את הקובץexample.txt.אופציונלי: אם רוצים לשנות את השם של הדיסק הקשיח הקבוע הזה, מבצעים את הפעולות הבאות:
בוחרים באפשרות התאמה אישית של שם המכשיר.
בשדה שם המכשיר, מזינים את השם החדש של הדיסק.
בשדה Mount path (נתיב להרכבה), מזינים את נתיב ההרכבה (MOUNT_PATH) של הדיסק הקשיח הזה:
לדוגמה, אפשר להזין את הפרטים הבאים:
/mnt/disks/EXISTING_PERSISTENT_DISK_NAMEמחליפים את EXISTING_PERSISTENT_DISK_NAME בשם הדיסק. אם שיניתם את השם של דיסק האחסון המתמיד (persistent disk) האזורי, צריך להשתמש בשם החדש.
לדוגמה, מחליפים את EXISTING_PERSISTENT_DISK_NAME ב-
example-disk.לוחצים על סיום.
אופציונלי: מגדירים את השדות האחרים של המשרה.
אופציונלי: כדי לבדוק את הגדרות העבודה, בחלונית הימנית לוחצים על תצוגה מקדימה.
לוחצים על יצירה.
בדף פרטי המשרה מוצגת המשרה שיצרתם.
gcloud
בדוגמה הבאה נעשה שימוש ב-CLI של gcloud כדי ליצור עבודה שמחברת ומטמיעה דיסק אחסון מתמיד קיים ודיסק אחסון מתמיד חדש.
למשימה יש 3 משימות שכל אחת מהן מריצה סקריפט כדי ליצור קובץ בדיסק הקשיח החדש שנקרא output_task_TASK_INDEX.txt, כאשר TASK_INDEX הוא האינדקס של כל משימה: 0, 1 ו-2.
כדי ליצור משימה שמשתמשת בדיסקים קשיחים קבועים באמצעות ה-CLI של gcloud, משתמשים בפקודה gcloud batch jobs submit.
בקובץ התצורה בפורמט JSON של העבודה, מציינים את הדיסקים הקשיחים בשדה instances ומטמיעים את הדיסק הקשיח בשדה volumes.
יוצרים קובץ JSON.
אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, צרו קובץ JSON עם התוכן הבא:
{ "allocationPolicy": { "instances": [ { "policy": { "disks": [ { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "existingDisk": "projects/PROJECT_ID/EXISTING_PERSISTENT_DISK_LOCATION/disks/EXISTING_PERSISTENT_DISK_NAME" }, { "newDisk": { "sizeGb": NEW_PERSISTENT_DISK_SIZE, "type": "NEW_PERSISTENT_DISK_TYPE" }, "deviceName": "NEW_PERSISTENT_DISK_NAME" } ] } } ], "location": { "allowedLocations": [ "EXISTING_PERSISTENT_DISK_LOCATION" ] } }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/NEW_PERSISTENT_DISK_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "NEW_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/NEW_PERSISTENT_DISK_NAME", "mountOptions": "rw,async" }, { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/EXISTING_PERSISTENT_DISK_NAME" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שלכם. -
EXISTING_PERSISTENT_DISK_NAME: השם של דיסק אחסון מתמיד קיים. -
EXISTING_PERSISTENT_DISK_LOCATION: המיקום של דיסק אחסון מתמיד (persistent disk) קיים. לכל דיסק אחסון מתמיד אזורי קיים, המיקום של העבודה צריך להיות האזור של הדיסק. לכל דיסק אחסון מתמיד אזורי קיים, המיקום של העבודה צריך להיות האזור של הדיסק, או אם מציינים אזורים, אחד או שני האזורים הספציפיים שבהם נמצא דיסק האחסון המתמיד האזורי. אם לא מציינים דיסקים קשיחים קיימים, אפשר לבחור כל מיקום. מידע נוסף על השדהallowedLocations -
NEW_PERSISTENT_DISK_SIZE: הגודל של דיסק האחסון המתמיד החדש ב-GB. הגדלים המותרים תלויים בסוג הדיסק הקשיח הקבוע, אבל הגודל המינימלי הוא לרוב 10GB (10) והגודל המקסימלי הוא לרוב 64TB (64000). -
NEW_PERSISTENT_DISK_TYPE: סוג הדיסק של דיסק האחסון המתמיד החדש, אחד מהערכים הבאים:pd-standard, pd-balanced, pd-ssdאוpd-extreme. סוג הדיסק שמוגדר כברירת מחדל לדיסקים קבועים שאינם דיסקים לאתחול הואpd-standard. -
NEW_PERSISTENT_DISK_NAME: השם של דיסק האחסון המתמיד החדש.
-
אם משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, צריך ליצור קובץ JSON כמו שמוצג למעלה, אבל להחליף את השדה
instancesבערך הבא:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ],כאשר
INSTANCE_TEMPLATE_NAMEהוא השם של תבנית של הגדרות מכונה של המשימה הזו. אם העבודה משתמשת בדיסקים קשיחים קבועים, בתבנית של הגדרות מכונה הזו צריך להגדיר ולצרף את הדיסקים הקשיחים הקבועים שבהם רוצים שהעבודה תשתמש. בדוגמה הזו, התבנית צריכה להגדיר ולצרף דיסק אחסון מתמיד חדש בשםNEW_PERSISTENT_DISK_NAME, וגם לצרף דיסק אחסון מתמיד קיים בשםEXISTING_PERSISTENT_DISK_NAME.
מריצים את הפקודה הבאה:
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILEמחליפים את מה שכתוב בשדות הבאים:
JOB_NAME: שם המשימה.
LOCATION: המיקום של המשרה.
JSON_CONFIGURATION_FILE: הנתיב לקובץ JSON עם פרטי ההגדרות של העבודה.
API
בדוגמה הבאה נעשה שימוש ב-Batch API כדי ליצור משימה שמחברת ומתקינה דיסק אחסון מתמיד קיים ודיסק אחסון מתמיד חדש. למשימה יש 3 משימות שכל אחת מהן מריצה סקריפט כדי ליצור קובץ בדיסק הקשיח החדש שנקרא output_task_TASK_INDEX.txt, כאשר TASK_INDEX הוא האינדקס של כל משימה: 0, 1 ו-2.
כדי ליצור משימה שמשתמשת בדיסקים לאחסון מתמיד באמצעות Batch API, משתמשים ב-method jobs.create.
בבקשה, מציינים את הדיסקים של אחסון מתמיד (persistent disks) בשדה instances ומעלים את הדיסק של אחסון מתמיד בשדה volumes.
אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, אתם יכולים לשלוח את הבקשה הבאה:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME { "allocationPolicy": { "instances": [ { "policy": { "disks": [ { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "existingDisk": "projects/PROJECT_ID/EXISTING_PERSISTENT_DISK_LOCATION/disks/EXISTING_PERSISTENT_DISK_NAME" }, { "newDisk": { "sizeGb": NEW_PERSISTENT_DISK_SIZE, "type": "NEW_PERSISTENT_DISK_TYPE" }, "deviceName": "NEW_PERSISTENT_DISK_NAME" } ] } } ], "location": { "allowedLocations": [ "EXISTING_PERSISTENT_DISK_LOCATION" ] } }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/NEW_PERSISTENT_DISK_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "NEW_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/NEW_PERSISTENT_DISK_NAME", "mountOptions": "rw,async" }, { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/EXISTING_PERSISTENT_DISK_NAME" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שלכם. -
LOCATION: המיקום של המשרה. -
JOB_NAME: שם המשימה. -
EXISTING_PERSISTENT_DISK_NAME: השם של דיסק אחסון מתמיד קיים. -
EXISTING_PERSISTENT_DISK_LOCATION: המיקום של דיסק אחסון מתמיד (persistent disk) קיים. לכל דיסק אחסון מתמיד אזורי קיים, המיקום של העבודה צריך להיות האזור של הדיסק. לכל דיסק אחסון מתמיד אזורי קיים, המיקום של העבודה צריך להיות האזור של הדיסק, או אם מציינים אזורים, אחד או שני האזורים הספציפיים שבהם נמצא דיסק האחסון המתמיד האזורי. אם לא מציינים דיסקים קשיחים קיימים, אפשר לבחור כל מיקום. מידע נוסף על השדהallowedLocations -
NEW_PERSISTENT_DISK_SIZE: הגודל של דיסק האחסון המתמיד החדש ב-GB. הגדלים המותרים תלויים בסוג הדיסק הקשיח הקבוע, אבל הגודל המינימלי הוא לרוב 10GB (10) והגודל המקסימלי הוא לרוב 64TB (64000). -
NEW_PERSISTENT_DISK_TYPE: סוג הדיסק של דיסק האחסון המתמיד החדש, אחד מהערכים הבאים:pd-standard, pd-balanced, pd-ssdאוpd-extreme. סוג הדיסק שמוגדר כברירת מחדל לדיסקים קבועים שאינם דיסקים לאתחול הואpd-standard. -
NEW_PERSISTENT_DISK_NAME: השם של דיסק האחסון המתמיד החדש.
-
אם משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, צריך ליצור קובץ JSON כמו שמוצג למעלה, אבל להחליף את השדה
instancesבערך הבא:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ], ...כאשר
INSTANCE_TEMPLATE_NAMEהוא שם תבנית של הגדרות מכונה של המשימה הזו. אם העבודה משתמשת בדיסקים קשיחים קבועים, בתבנית של הגדרות מכונה הזו צריך להגדיר ולצרף את הדיסקים הקשיחים הקבועים שבהם רוצים שהעבודה תשתמש. בדוגמה הזו, התבנית צריכה להגדיר ולצרף דיסק אחסון מתמיד חדש בשםNEW_PERSISTENT_DISK_NAME, וגם לצרף דיסק אחסון מתמיד קיים בשםEXISTING_PERSISTENT_DISK_NAME.
C++
כדי ליצור עבודת Batch שמשתמשת בדיסקים קשיחים חדשים או קיימים באמצעות ספריות הלקוח ב-Cloud ל-C++, משתמשים בפונקציה CreateJob וכוללים את הפרטים הבאים:
- כדי לצרף דיסקים מתמידים למכונות הווירטואליות של משימה, צריך לכלול אחת מהאפשרויות הבאות:
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו,
אתם יכולים להשתמש בשיטה
set_remote_path. - אם אתם משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, צריך להשתמש בשיטה
set_instance_template.
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו,
אתם יכולים להשתמש בשיטה
- כדי לצרף את הדיסקים לאחסון מתמיד לעבודה, משתמשים בשדה
volumesעם השדותdeviceNameו-mountPath. בדיסקים קשיחים חדשים, צריך גם להשתמש בשדהmountOptionsכדי להפעיל כתיבה.
דוגמת קוד לתרחיש שימוש דומה מופיעה במאמר בנושא שימוש בקטגוריה של Cloud Storage.
המשך
כדי ליצור משימת Batch שמשתמשת בדיסקים קשיחים חדשים או קיימים באמצעות ספריות הלקוח של Cloud ל-Go, משתמשים בפונקציה CreateJob וכוללים את הפרטים הבאים:
- כדי לצרף דיסקים מתמידים למכונות הווירטואליות של משימה, צריך לכלול אחת מהאפשרויות הבאות:
- אם לא משתמשים בתבנית של הגדרות מכונה וירטואלית למשימה הזו, צריך לכלול את הסוג
AllocationPolicy_AttachedDisk. - אם אתם משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, צריך לכלול את הסוג
AllocationPolicy_InstancePolicyOrTemplate_InstanceTemplate.
- אם לא משתמשים בתבנית של הגדרות מכונה וירטואלית למשימה הזו, צריך לכלול את הסוג
- כדי לטעון את הדיסקים לאחסון מתמיד לעבודה, משתמשים בסוג
Volumeעם סוגVolume_DeviceNameוהשדהMountPath. בדיסקים קשיחים חדשים, משתמשים גם בשדהMountOptionsכדי להפעיל כתיבה.
Java
כדי ליצור עבודת Batch שמשתמשת בדיסקים קשיחים חדשים או קיימים באמצעות ספריות הלקוח של Cloud ל-Java, משתמשים במחלקה CreateJobRequest וכוללים את הפרטים הבאים:
- כדי לצרף דיסקים מתמידים למכונות הווירטואליות של משימה, צריך לכלול אחת מהאפשרויות הבאות:
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, צריך לכלול את השיטה
setDisks. - אם אתם משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, אתם צריכים לכלול את השיטה
setInstanceTemplate.
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, צריך לכלול את השיטה
- כדי לצרף את הדיסקים לאחסון מתמיד לעבודה, משתמשים בבמחלקה
VolumeבשיטותsetDeviceNameו-setMountPath. בדיסקים קשיחים חדשים, צריך להשתמש גם בשיטהsetMountOptionsכדי להפעיל כתיבה.
לדוגמה, אפשר להשתמש בדוגמת הקוד הבאה:
Node.js
כדי ליצור עבודת Batch שמשתמשת בדיסקים קשיחים חדשים או קיימים באמצעות ספריות הלקוח של Cloud ל-Node.js, משתמשים בשיטה createJob וכוללים את הפרטים הבאים:
- כדי לצרף דיסקים מתמידים למכונות הווירטואליות של משימה, צריך לכלול אחת מהאפשרויות הבאות:
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, צריך לכלול את הסיווג
AllocationPolicy.AttachedDisk. - אם אתם משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, צריך לכלול את המאפיין
instanceTemplate.
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, צריך לכלול את הסיווג
- כדי לצרף את הדיסקים לאחסון מתמיד לעבודה, משתמשים בבמחלקה
Volumeעם המאפייןdeviceNameוהמאפייןmountPath. בדיסקים קשיחים חדשים, צריך להשתמש גם במאפייןmountOptionsכדי להפעיל כתיבה.
Python
כדי ליצור עבודת Batch שמשתמשת בדיסקים מתמשכים חדשים או קיימים באמצעות ספריות הלקוח של Cloud ל-Python, משתמשים בפונקציה CreateJob וכוללים את הפרטים הבאים:
- כדי לצרף דיסקים מתמידים למכונות הווירטואליות של משימה, צריך לכלול אחת מהאפשרויות הבאות:
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, צריך לכלול את הסיווג
AttachedDisk. - אם אתם משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, צריך לכלול את המאפיין
instance_template.
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, צריך לכלול את הסיווג
- כדי לטעון את הדיסקים לאחסון מתמיד לעבודה, משתמשים במחלקה
Volumeעם המאפייןdevice_nameוהמאפייןmount_path. בדיסקים קשיחים חדשים, משתמשים גם במאפייןmount_optionsכדי להפעיל כתיבה.
לדוגמה, אפשר להשתמש בדוגמת הקוד הבאה:
שימוש ב-SSD מקומי
ההגבלות הבאות חלות על משימה שמשתמשת בכונני SSD מקומיים:
- כל מכשירי ה-SSD המקומיים כדאי לעיין בהגבלות על כל מכשירי ה-SSD המקומיים.
- תבניות של הגדרות מכונה אם רוצים לציין תבנית של הגדרות מכונה בזמן יצירת העבודה הזו, צריך לחבר את כל דיסקי האחסון המתמיד(persistent disk) לעבודה הזו בתבנית של הגדרות המכונה. אחרת, אם לא רוצים להשתמש בתבנית של מופע, צריך לצרף את הדיסקים הקבועים ישירות להגדרת העבודה.
אפשר ליצור משימה שמשתמשת ב-SSD מקומי באמצעות ה-CLI של gcloud, Batch API, Java או Python.
בדוגמה הבאה מוסבר איך ליצור משימה שיוצרת, מצרפת ומפעילה SSD מקומי. בנוסף, יש למשימה 3 תתי-משימות, שכל אחת מהן מריצה סקריפט כדי ליצור קובץ ב-SSD המקומי בשם output_task_TASK_INDEX.txt, כאשר TASK_INDEX הוא האינדקס של כל תת-משימה: 0, 1 ו-2.
gcloud
כדי ליצור משימה שמשתמשת בכונני SSD מקומיים באמצעות ה-CLI של gcloud, משתמשים בפקודה gcloud batch jobs submit.
בקובץ ההגדרות בפורמט JSON של העבודה, יוצרים ומצרפים את כונני ה-SSD המקומיים בשדה instances ומטמיעים את כונני ה-SSD המקומיים בשדה volumes.
יוצרים קובץ JSON.
אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, צרו קובץ JSON עם התוכן הבא:
{ "allocationPolicy": { "instances": [ { "policy": { "machineType": MACHINE_TYPE, "disks": [ { "newDisk": { "sizeGb": LOCAL_SSD_SIZE, "type": "local-ssd" }, "deviceName": "LOCAL_SSD_NAME" } ] } } ] }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/LOCAL_SSD_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "LOCAL_SSD_NAME", "mountPath": "/mnt/disks/LOCAL_SSD_NAME", "mountOptions": "rw,async" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }מחליפים את מה שכתוב בשדות הבאים:
-
MACHINE_TYPE: סוג המכונה, שיכול להיות מוגדר מראש או מותאם אישית, של המכונות הווירטואליות של העבודה. מספר כונני ה-SSD המקומיים המותר תלוי בסוג המכונה של מכונות ה-VM של העבודה. -
LOCAL_SSD_NAME: השם של SSD מקומי שנוצר עבור המשימה הזו. -
LOCAL_SSD_SIZE: הגודל של כל ה-SSD המקומיים בגיגה-בייט. כל כונן SSD מקומי הוא בנפח 375GB, ולכן הערך הזה חייב להיות מכפלה של375GB. לדוגמה, אם יש 2 כונני SSD מקומיים, צריך להגדיר את הערך הזה ל-750GB.
-
אם משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, צריך ליצור קובץ JSON כמו שמוצג למעלה, אבל להחליף את השדה
instancesבערך הבא:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ],כאשר
INSTANCE_TEMPLATE_NAMEהוא השם של תבנית של הגדרות מכונה של המשימה הזו. אם העבודה משתמשת בכונני SSD מקומיים, בתבנית של הגדרות מכונה הזו צריך להגדיר ולצרף את כונני ה-SSD המקומיים שבהם רוצים שהעבודה תשתמש. בדוגמה הזו, התבנית חייבת להגדיר ולצרף כונן SSD מקומי בשםLOCAL_SSD_NAME.
מריצים את הפקודה הבאה:
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILEמחליפים את מה שכתוב בשדות הבאים:
-
JOB_NAME: שם המשימה. -
LOCATION: המיקום של המשרה. -
JSON_CONFIGURATION_FILE: הנתיב לקובץ JSON עם פרטי ההגדרות של העבודה.
-
API
כדי ליצור משימה שמשתמשת בכונני SSD מקומיים באמצעות Batch API, משתמשים ב-method jobs.create.
בבקשה, יוצרים ומצרפים את כונני ה-SSD המקומיים בשדה instances ומעלים את כונני ה-SSD המקומיים בשדה volumes.
אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, אתם יכולים לשלוח את הבקשה הבאה:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME { "allocationPolicy": { "instances": [ { "policy": { "machineType": MACHINE_TYPE, "disks": [ { "newDisk": { "sizeGb": LOCAL_SSD_SIZE, "type": "local-ssd" }, "deviceName": "LOCAL_SSD_NAME" } ] } } ] }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/LOCAL_SSD_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "LOCAL_SSD_NAME", "mountPath": "/mnt/disks/LOCAL_SSD_NAME", "mountOptions": "rw,async" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שלכם. -
LOCATION: המיקום של המשרה. -
JOB_NAME: שם המשימה. -
MACHINE_TYPE: סוג המכונה, שיכול להיות מוגדר מראש או מותאם אישית, של המכונות הווירטואליות של העבודה. מספר כונני ה-SSD המקומיים המותר תלוי בסוג המכונה של מכונות ה-VM של העבודה. -
LOCAL_SSD_NAME: השם של SSD מקומי שנוצר עבור המשימה הזו. -
LOCAL_SSD_SIZE: הגודל של כל ה-SSD המקומיים בגיגה-בייט. כל כונן SSD מקומי הוא בנפח 375GB, ולכן הערך הזה חייב להיות מכפלה של375GB. לדוגמה, אם יש 2 כונני SSD מקומיים, צריך להגדיר את הערך הזה ל-750GB.
-
אם משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, צריך ליצור קובץ JSON כמו שמוצג למעלה, אבל להחליף את השדה
instancesבערך הבא:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ], ...כאשר
INSTANCE_TEMPLATE_NAMEהוא שם תבנית של הגדרות מכונה של המשימה הזו. אם העבודה משתמשת בכונני SSD מקומיים, בתבנית של הגדרות מכונה הזו צריך להגדיר ולצרף את כונני ה-SSD המקומיים שבהם רוצים שהעבודה תשתמש. בדוגמה הזו, התבנית חייבת להגדיר ולצרף כונן SSD מקומי בשםLOCAL_SSD_NAME.
המשך
Java
Node.js
Python
שימוש בקטגוריה של Cloud Storage
כדי ליצור משימה שמשתמשת בקטגוריה קיימת של Cloud Storage, בוחרים באחת מהשיטות הבאות:
- מומלץ: להטמיע קטגוריה ישירות במכונות הווירטואליות של העבודה על ידי ציון הקטגוריה בהגדרת העבודה, כמו שמוצג בקטע הזה. כשמריצים את העבודה, הקטגוריה נטענת אוטומטית למכונות הווירטואליות של העבודה באמצעות Cloud Storage FUSE.
- יצירת משימה עם משימות שמתבצעת גישה ישירה לקטגוריה של Cloud Storage באמצעות ה-CLI של gcloud או ספריות לקוח עבור Cloud Storage API. כדי ללמוד איך לגשת לקטגוריית Cloud Storage ישירות ממכונה וירטואלית, אפשר לעיין במסמכי התיעוד של Compute Engine בנושא כתיבה וקריאה של נתונים מקטגוריות Cloud Storage.
לפני שיוצרים עבודה שמשתמשת בקטגוריה, צריך ליצור קטגוריה או לזהות קטגוריה קיימת. מידע נוסף זמין במאמרים בנושא יצירת קטגוריות ורשימת קטגוריות.
אפשר ליצור משימה שמשתמשת בקטגוריה של Cloud Storage באמצעותGoogle Cloud המסוף, ה-CLI של gcloud, Batch API, C++, Go, Java, Node.js או Python.
בדוגמה הבאה מוסבר איך ליצור עבודה שמבצעת הרכבה של קטגוריית Cloud Storage. בנוסף, יש למשימה 3 תתי-משימות, שכל אחת מהן מריצה סקריפט כדי ליצור קובץ בדלי בשם output_task_TASK_INDEX.txt, כאשר TASK_INDEX הוא האינדקס של כל תת-משימה: 0, 1 ו-2.
המסוף
כדי ליצור עבודה שמשתמשת בקטגוריה של Cloud Storage באמצעותGoogle Cloud המסוף, מבצעים את הפעולות הבאות:
נכנסים לדף Job list במסוף Google Cloud .
לוחצים על יצירה. ייפתח הדף יצירת משימה באצווה. בחלונית הימנית, הדף פרטי המשרה מסומן.
מגדירים את הדף Job details:
אופציונלי: בשדה שם המשרה, אפשר להתאים אישית את שם המשרה.
לדוגמה, מזינים
example-bucket-job.מגדירים את הקטע פרטי המשימה:
בחלון New runnable, מוסיפים לפחות סקריפט אחד או קונטיינר אחד כדי שהעבודה הזו תפעל.
לדוגמה, אפשר לבצע את הפעולות הבאות:
מסמנים את תיבת הסימון Script (סקריפט). תופיע תיבת טקסט.
בתיבת הטקסט, מזינים את הסקריפט הבא:
echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txtמחליפים את MOUNT_PATH בנתיב הטעינה שבו משתמשים הקבצים להרצה של העבודה הזו כדי לגשת לקטגוריה קיימת של Cloud Storage. הנתיב חייב להתחיל ב-
/mnt/disks/ואחריו ספרייה או נתיב שתבחרו. לדוגמה, אם רוצים לייצג את הקטגוריה הזו באמצעות ספריה בשםmy-bucket, מגדירים את נתיב ההרכבה ל-/mnt/disks/my-bucket.לוחצים על סיום.
בשדה מספר המשימות, מזינים את מספר המשימות של העבודה הזו.
לדוגמה, מזינים
3.בשדה מקביליות, מזינים את מספר המשימות שרוצים להריץ בו-זמנית.
לדוגמה, מזינים
1(ברירת מחדל).
קובעים את ההגדרות בדף הגדרות נוספות:
בחלונית הימנית, לוחצים על הגדרות נוספות. ייפתח הדף הגדרות נוספות.
לכל קטגוריה של Cloud Storage שרוצים לצרף לעבודה הזו, מבצעים את הפעולות הבאות:
בקטע נפח אחסון, לוחצים על הוספת נפח חדש. מופיע החלון New volume (נפח אחסון חדש).
בחלון New volume (נפח חדש):
בקטע סוג נפח האחסון, בוחרים באפשרות קטגוריה של Cloud Storage.
בשדה Storage Bucket name, מזינים את השם של קטגוריה קיימת.
לדוגמה, מזינים את הקטגוריה שצוינה בקובץ ההפעלה של העבודה הזו.
בשדה Mount path, מזינים את נתיב ההרכבה של הדלי (MOUNT_PATH), שצוין בקובץ הניתן להפעלה.
לוחצים על סיום.
אופציונלי: מגדירים את השדות האחרים של המשרה.
אופציונלי: כדי לבדוק את הגדרות העבודה, בחלונית הימנית לוחצים על תצוגה מקדימה.
לוחצים על יצירה.
בדף פרטי המשרה מוצגת המשרה שיצרתם.
gcloud
כדי ליצור משימה שמשתמשת בקטגוריה של Cloud Storage באמצעות ה-CLI של gcloud, משתמשים בפקודה gcloud batch jobs submit.
בקובץ התצורה של המשימה בפורמט JSON, מעלים את הקטגוריה בשדה volumes.
לדוגמה, כדי ליצור משימה שמפיקה קבצים ל-Cloud Storage:
יוצרים קובץ JSON עם התוכן הבא:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "gcs": { "remotePath": "BUCKET_PATH" }, "mountPath": "MOUNT_PATH" } ] }, "taskCount": 3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }מחליפים את מה שכתוב בשדות הבאים:
-
BUCKET_PATH: הנתיב של ספריית הקטגוריה שרוצים שהעבודה הזו תהיה לה גישה. הנתיב חייב להתחיל בשם הקטגוריה. לדוגמה, עבור קטגוריה בשםBUCKET_NAME, הנתיבBUCKET_NAMEמייצג את ספריית הבסיס של הקטגוריה, והנתיבBUCKET_NAME/subdirectoryמייצג את ספריית המשנהsubdirectory. -
MOUNT_PATH: נתיב ההרכבה שרכיבי ההפעלה של המשימה משתמשים בו כדי לגשת לקטגוריה הזו. הנתיב חייב להתחיל ב-/mnt/disks/ואחריו ספרייה או נתיב שתבחרו. לדוגמה, אם רוצים לייצג את הקטגוריה הזו באמצעות ספריה בשםmy-bucket, מגדירים את נתיב הטעינה ל-/mnt/disks/my-bucket.
-
מריצים את הפקודה הבאה:
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILEמחליפים את מה שכתוב בשדות הבאים:
-
JOB_NAME: שם המשימה. -
LOCATION: המיקום של המשרה. -
JSON_CONFIGURATION_FILE: הנתיב לקובץ JSON עם פרטי ההגדרות של העבודה.
-
API
כדי ליצור משימה שמשתמשת בקטגוריה של Cloud Storage באמצעות Batch API, משתמשים ב-method jobs.create ומטמיעים את הקטגוריה בשדה volumes.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt"
}
}
],
"volumes": [
{
"gcs": {
"remotePath": "BUCKET_PATH"
},
"mountPath": "MOUNT_PATH"
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שלכם. -
LOCATION: המיקום של המשרה. -
JOB_NAME: שם המשימה. -
BUCKET_PATH: הנתיב של ספריית הקטגוריה שאתם רוצים שהג'וב הזה יקבל אליה גישה. הנתיב צריך להתחיל בשם הקטגוריה. לדוגמה, עבור קטגוריה בשםBUCKET_NAME, הנתיבBUCKET_NAMEמייצג את ספריית הבסיס של הקטגוריה, והנתיבBUCKET_NAME/subdirectoryמייצג את ספריית המשנהsubdirectory. -
MOUNT_PATH: נתיב ההרכבה שרכיבי ההפעלה של המשימה משתמשים בו כדי לגשת לקטגוריה הזו. הנתיב חייב להתחיל ב-/mnt/disks/ואחריו ספרייה או נתיב שתבחרו. לדוגמה, אם רוצים לייצג את הקטגוריה הזו באמצעות ספרייה בשםmy-bucket, מגדירים את נתיב הטעינה ל-/mnt/disks/my-bucket.
C++
C++
מידע נוסף מופיע במאמרי העזרה של Batch C++ API.
כדי לבצע אימות ב-Batch, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
המשך
Go
מידע נוסף מופיע במאמרי העזרה של Batch Go API.
כדי לבצע אימות ב-Batch, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Java
Java
מידע נוסף מופיע במאמרי העזרה של Batch Java API.
כדי לבצע אימות ב-Batch, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
Node.js
מידע נוסף מופיע במאמרי העזרה של Batch Node.js API.
כדי לבצע אימות ב-Batch, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
Python
מידע נוסף מופיע במאמרי העזרה של Batch Python API.
כדי לבצע אימות ב-Batch, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
שימוש במערכת קבצים ברשת
אפשר ליצור משימה שמשתמשת במערכת קבצים קיימת ברשת (NFS), כמו שיתוף קבצים ב-Filestore, באמצעות המסוף Google Cloud , ה-CLI של gcloud או Batch API.
לפני שיוצרים עבודה שמשתמשת ב-NFS, צריך לוודא שחומת האש של הרשת מוגדרת בצורה נכונה כדי לאפשר תעבורה בין מכונות וירטואליות של העבודה לבין ה-NFS. מידע נוסף זמין במאמר בנושא הגדרת כללים של חומת אש ל-Filestore.
בדוגמה הבאה מוסבר איך ליצור משימה שמציינת NFS ומטמיעה אותו. לג'וב יש גם 3 משימות, שכל אחת מהן מריצה סקריפט כדי ליצור קובץ ב-NFS בשם output_task_TASK_INDEX.txt, כאשר TASK_INDEX הוא האינדקס של כל משימה: 0, 1 ו-2.
המסוף
כדי ליצור משימה שמשתמשת ב-NFS באמצעות Google Cloud המסוף, פועלים לפי השלבים הבאים:
נכנסים לדף Job list במסוף Google Cloud .
לוחצים על יצירה. ייפתח הדף יצירת משימה באצווה. בחלונית הימנית, הדף פרטי המשרה מסומן.
מגדירים את הדף Job details:
אופציונלי: בשדה שם המשרה, אפשר להתאים אישית את שם המשרה.
לדוגמה, מזינים
example-nfs-job.מגדירים את הקטע פרטי המשימה:
בחלון New runnable, מוסיפים לפחות סקריפט אחד או קונטיינר אחד כדי שהעבודה הזו תפעל.
לדוגמה, אפשר לבצע את הפעולות הבאות:
מסמנים את תיבת הסימון Script (סקריפט). תופיע תיבת טקסט.
בתיבת הטקסט, מזינים את הסקריפט הבא:
echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txtמחליפים את MOUNT_PATH בנתיב ההרכבה שבו קובץ ההפעלה של הג'וב משתמש כדי לגשת ל-NFS הזה. הנתיב חייב להתחיל ב-
/mnt/disks/ואחריו בספרייה או בנתיב שתבחרו. לדוגמה, אם רוצים לייצג את ה-NFS הזה באמצעות ספרייה בשםmy-nfs, מגדירים את נתיב הטעינה ל-/mnt/disks/my-nfs.לוחצים על סיום.
בשדה מספר המשימות, מזינים את מספר המשימות של העבודה הזו.
לדוגמה, מזינים
3.בשדה מקביליות, מזינים את מספר המשימות שרוצים להריץ בו-זמנית.
לדוגמה, מזינים
1(ברירת מחדל).
קובעים את ההגדרות בדף הגדרות נוספות:
בחלונית הימנית, לוחצים על הגדרות נוספות. ייפתח הדף הגדרות נוספות.
לכל קטגוריה של Cloud Storage שרוצים לצרף לעבודה הזו, מבצעים את הפעולות הבאות:
בקטע נפח אחסון, לוחצים על הוספת נפח חדש. מופיע החלון New volume (נפח אחסון חדש).
בחלון New volume (נפח חדש):
בקטע Volume type (סוג נפח האחסון), בוחרים באפשרות Network file system (מערכת קבצים ברשת).
בשדה File server (שרת קבצים), מזינים את כתובת ה-IP של השרת שבו נמצא ה-NFS שצוין בקובץ ההפעלה של המשימה הזו.
לדוגמה, אם ה-NFS שלכם הוא שיתוף קבצים של Filestore, צריך לציין את כתובת ה-IP של מופע Filestore. אפשר לקבל את כתובת ה-IP על ידי תיאור מופע Filestore.
בשדה Remote path, מזינים נתיב שיכול לגשת ל-NFS שציינתם בשלב הקודם.
הנתיב של ספריית ה-NFS חייב להתחיל ב-
/ואחריו ספריית הבסיס של ה-NFS.בשדה Mount path, מזינים את נתיב ההרכבה ל-NFS (MOUNT_PATH), שציינתם בשלב הקודם.
לוחצים על סיום.
אופציונלי: מגדירים את השדות האחרים של המשרה.
אופציונלי: כדי לבדוק את הגדרות העבודה, בחלונית הימנית לוחצים על תצוגה מקדימה.
לוחצים על יצירה.
בדף פרטי המשרה מוצגת המשרה שיצרתם.
gcloud
כדי ליצור משימה שמשתמשת ב-NFS באמצעות ה-CLI של gcloud, משתמשים בפקודה gcloud batch jobs submit.
בקובץ התצורה של המשימה בפורמט JSON, מעלים את ה-NFS בשדה volumes.
יוצרים קובץ JSON עם התוכן הבא:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "nfs": { "server": "NFS_IP_ADDRESS", "remotePath": "NFS_PATH" }, "mountPath": "MOUNT_PATH" } ] }, "taskCount": 3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }מחליפים את מה שכתוב בשדות הבאים:
NFS_IP_ADDRESS: כתובת ה-IP של NFS. לדוגמה, אם ה-NFS שלכם הוא שיתוף קבצים ב-Filestore, צריך לציין את כתובת ה-IP של מופע Filestore. אפשר לקבל את כתובת ה-IP על ידי תיאור מופע Filestore.-
NFS_PATH: הנתיב של ספריית ה-NFS שרוצים שהעבודה הזו תהיה לה גישה. הנתיב צריך להתחיל ב-/ואחריו ספריית הבסיס של ה-NFS. לדוגמה, בשיתוף קבצים ב-Filestore בשםFILE_SHARE_NAME, הנתיב/FILE_SHARE_NAMEמייצג את ספריית הבסיס של שיתוף הקבצים, והנתיב/FILE_SHARE_NAME/subdirectoryמייצג את ספריית המשנהsubdirectory. -
MOUNT_PATH: נתיב ההרכבה שרכיבי ההפעלה של המשימה משתמשים בו כדי לגשת ל-NFS הזה. הנתיב חייב להתחיל ב-/mnt/disks/ואחריו ספרייה או נתיב שתבחרו. לדוגמה, אם רוצים לייצג את ה-NFS הזה באמצעות ספרייה בשםmy-nfs, צריך להגדיר את נתיב הטעינה ל-/mnt/disks/my-nfs.
מריצים את הפקודה הבאה:
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILEמחליפים את מה שכתוב בשדות הבאים:
-
JOB_NAME: שם המשימה. -
LOCATION: המיקום של המשרה. -
JSON_CONFIGURATION_FILE: הנתיב לקובץ JSON עם פרטי ההגדרות של העבודה.
-
API
כדי ליצור משימה שמשתמשת ב-NFS באמצעות Batch API, משתמשים ב-method jobs.create ומטמיעים את ה-NFS בשדה volumes.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt"
}
}
],
"volumes": [
{
"nfs": {
"server": "NFS_IP_ADDRESS",
"remotePath": "NFS_PATH"
},
"mountPath": "MOUNT_PATH"
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שלכם. -
LOCATION: המיקום של המשרה. -
JOB_NAME: שם המשימה. -
NFS_IP_ADDRESS: כתובת ה-IP של מערכת קבצים ברשת (NFS). לדוגמה, אם ה-NFS שלכם הוא שיתוף קבצים ב-Filestore, צריך לציין את כתובת ה-IP של מופע Filestore. אפשר לקבל את כתובת ה-IP על ידי תיאור מופע Filestore. -
NFS_PATH: הנתיב של ספריית ה-NFS שרוצים שהעבודה הזו תהיה לה גישה. הנתיב צריך להתחיל ב-/ואחריו ספריית הבסיס של ה-NFS. לדוגמה, בשיתוף קבצים ב-Filestore בשםFILE_SHARE_NAME, הנתיב/FILE_SHARE_NAMEמייצג את ספריית השורש של שיתוף הקבצים, והנתיב/FILE_SHARE_NAME/subdirectoryמייצג ספריית משנה. -
MOUNT_PATH: נתיב ההרכבה שרכיבי ההפעלה של המשימה משתמשים בו כדי לגשת ל-NFS הזה. הנתיב חייב להתחיל ב-/mnt/disks/ואחריו ספרייה או נתיב שתבחרו. לדוגמה, אם רוצים לייצג את ה-NFS הזה באמצעות ספרייה בשםmy-nfs, צריך להגדיר את נתיב הטעינה ל-/mnt/disks/my-nfs.
Java
Node.js
Python
המאמרים הבאים
- אם נתקלתם בבעיות ביצירה או בהפעלה של משימה, תוכלו להיעזר בפתרון בעיות.
- הצגת משרות ומשימות.
- מידע נוסף על אפשרויות ליצירת משרות