בדף הזה מוסבר איך מעבירים נתונים בין שתי מערכות קבצים של POSIX. תרחישים נפוצים לדוגמה:
- העברה לענן ו-HPC היברידי: העברה מהירה של מערכי נתונים גדולים משרתים מקומיים לענן לצורך עיבוד.
- העברה וסנכרון ל-Filestore: העברה או סנכרון של נתונים ממערכת קבצים מקומית ל-Filestore.
- העברת קבצים מנוהלת: העברת נתונים באופן מאובטח ואמין בין מרכזי נתונים או בין שתי מערכות קבצים בענן.
הנחיות להעברת נתוני ביצועים
ההנחיות הבאות יכולות לעזור למקסם את הביצועים במהלך העברות ממערכת קבצים למערכת קבצים.
פריסת סוכנים
באופן כללי, מומלץ להשתמש בשלושה סוכנים בכל אחד ממאגרי הסוכנים של המקור והיעד. עוקבים אחרי ההעברה ומוסיפים עוד נציגים אם צריך. כל נציג צריך 4 מעבדים וירטואליים ו-8GB של זיכרון RAM.
אם אתם מבצעים העברה למופע Filestore, מומלץ להשתמש בסוג המופע n2-standard-8 לכל סוכן. מציינים את nconnect=2 כשמטמיעים את המופע במכונה וירטואלית של Compute Engine. במאמר הנחיות לשיפור הביצועים של Filestore מוסבר איך לבצע אופטימיזציה של הביצועים של מופע ולבדוק אותם.
העברה של מספר גדול של קבצים קטנים
כדי לשפר את הביצועים כשמעבירים מספר גדול של קבצים קטנים, מומלץ לפצל את הקבצים לכמה ספריות ולא להשתמש בספרייה אחת עם מיליוני קבצים.
לפני שמתחילים
לפני שתוכלו לבצע את המשימות שמתוארות בדף הזה, תצטרכו להשלים את השלבים המקדימים.
יצירת מאגרי סוכנים והתקנת סוכנים
כדי להעביר קבצים ממערכת קבצים אחת למערכת קבצים אחרת, צריך ליצור מאגרי סוכנים וסוכנים גם למערכת הקבצים של המקור וגם למערכת הקבצים של היעד. צריך להתקין סוכנים למאגר הסוכנים של המקור במכונות או במכונות וירטואליות שיש להן גישה למערכת קבצי המקור. צריך להתקין סוכנים למאגר הסוכנים של היעד במכונות או במכונות וירטואליות שיש להן גישה למערכת הקבצים של היעד.
אל תכללו בקידומת של מזהה הסוכן או בשם של מאגר הסוכנים מידע רגיש כמו פרטים אישיים מזהים (PII) או נתוני אבטחה. יכול להיות ששמות המשאבים יועברו לשמות של משאבים אחרים ב-Google Cloud, ויוצגו למערכות פנימיות של Google מחוץ לפרויקט שלכם.
יצירת מאגר סוכנים למקור
יוצרים מאגר של סוכנים ממקור אחד באחת מהשיטות הבאות:
CLI של gcloud
מריצים את הפקודה הבאה כדי ליצור מאגר סוכנים של מקור:
gcloud transfer agent-pools create SOURCE_AGENT_POOL
מחליפים את SOURCE_AGENT_POOL בשם שרוצים לתת למאגר הסוכנים של המקור.
מסוף Google Cloud
נכנסים לדף Agent pools במסוף Google Cloud .
מוצג הדף מאגרי סוכנים, שבו מפורטים מאגרי הסוכנים הקיימים.
לוחצים על יצירת מאגר נוסף.
מזינים שם למאגר.
לוחצים על יצירה.
התקנת סוכנים למאגר הסוכנים של המקור
התקנת סוכנים למאגר הסוכנים של המקור במכונה או ב-VM שיש להם גישה למערכת קבצים של המקור:
CLI של gcloud
כדי להתקין סוכנים למאגר הסוכנים של המקור, מריצים את הפקודה:
gcloud transfer agents install --pool=SOURCE_AGENT_POOL --count=NUMBER_OF_AGENTS \
--mount-directories=MOUNT_DIRECTORIES
מחליפים את מה שכתוב בשדות הבאים:
- SOURCE_AGENT_POOL בשם של מאגר סוכני המקור.
- NUMBER_OF_AGENTS עם מספר הסוכנים שרוצים להתקין עבור מאגר הסוכנים של המקור. כדי לקבוע את המספר האופטימלי של סוכנים לסביבה שלכם, אפשר לעיין במאמר דרישות ושיטות מומלצות לשימוש בסוכנים.
- MOUNT_DIRECTORIES ברשימה מופרדת בפסיקים של ספריות במערכת קבצים של קובץ המקור שממנה יתבצע העתקה. אם לא מציינים את הדגל הזה, כל מערכת הקבצים מותקנת, וזה עלול לסכן את האבטחה.
מסוף Google Cloud
נכנסים לדף Agent pools במסוף Google Cloud .
מוצג הדף מאגרי סוכנים, שבו מפורטים מאגרי הסוכנים הקיימים.
לוחצים על השם של מאגר הסוכנים של המקור שיצרתם.
בכרטיסייה סוכנים, לוחצים על התקנת סוכן.
פועלים לפי ההוראות ב Google Cloud מסוף כדי להתקין את Docker ולהפעיל את הסוכן.
יצירת מאגר סוכנים ליעד והתקנת סוכנים
חוזרים על השלבים הקודמים כדי ליצור מאגר סוכנים ליעד ולהתקין סוכנים.
יצירת קטגוריה של Cloud Storage בתור קטגוריית ביניים
העברות ממערכת קבצים למערכת קבצים דורשות קטגוריה של Cloud Storage בתור אמצעי להעברת הנתונים.
יוצרים קטגוריה של Cloud Storage מסוג Standard עם ההגדרות הבאות:
- הצפנה: אפשר לציין מפתח הצפנה בניהול הלקוח (CMEK). אחרת, נעשה שימוש ב-Google-owned and Google-managed encryption key .
- ניהול גרסאות של אובייקטים, נעילת קטגוריות וברירת מחדל להחזקות אובייקטים: צריך להשאיר את התכונות האלה מושבתות.
אפשר להעניק הרשאות ותפקידים באחת מהשיטות הבאות:
- מקצים לחשבון השירות של Storage Transfer Service את התפקיד 'אדמין אחסון' (
roles/storage.admin) בקטגוריה. משתמשים ב-
gcloud transfer authorizeכדי לתת הרשאה לחשבון לכל התכונות של Storage Transfer Service. הפקודה הזו מעניקה הרשאות Storage Admin ברמת הפרויקט:gcloud transfer authorize --add-missing
- מקצים לחשבון השירות של Storage Transfer Service את התפקיד 'אדמין אחסון' (
יצירת עבודת העברה
CLI של gcloud
כדי ליצור העברה ממערכת הקבצים של המקור למערכת הקבצים של היעד, מריצים
gcloud transfer jobs create SOURCE_DIRECTORY DESTINATION_DIRECTORY \
--source-agent-pool=SOURCE_AGENT_POOL \
--destination-agent-pool=DESTINATION_AGENT_POOL \
--intermediate-storage-path= gs://STORAGE_BUCKET/FOLDER/
מחליפים את המשתנים הבאים:
- SOURCE_DIRECTORY עם הנתיב של ספריית המקור.
- DESTINATION_DIRECTORY בנתיב של ספריית היעד.
- SOURCE_AGENT_POOL בשם של מאגר סוכני המקור.
- DESTINATION_AGENT_POOL בשם של מאגר הסוכנים של היעד.
- STORAGE_BUCKET בשם של קטגוריית Cloud Storage.
- FOLDER בשם התיקייה שאליה רוצים להעביר את הנתונים.
כשמפעילים משימת העברה, המערכת מחשבת קודם את הנתונים במקור וביעד כדי לקבוע אילו נתוני מקור הם חדשים או עודכנו מאז ההעברה הקודמת. רק הנתונים החדשים מועברים.
ספריות לקוח
המשך
Java
Node.js
Python
ניהול של קטגוריות אחסון ביניים
אחרי שפעולת ההעברה מסתיימת, Storage Transfer Service שומר יומני העברה שכוללים רשימה של הנתונים שהועברו והנתונים שלא הצליחו לעבור בקטגוריה. אחרי ההעברה, מופעלות אוטומטית משימות ניקוי כדי למחוק את נתוני הביניים. במקרים מסוימים, משימות הניקוי לא מצליחות למחוק את כל הנתונים בדלי. כדי למחוק נתונים שלא נמחקים במהלך הניקוי, אפשר להיעזר בהוראות שבהמשך כדי למחוק את הנתונים באופן ידני או להגדיר כלל מחזור חיים למחיקת הנתונים באופן אוטומטי.
ניקוי ידני
כדי למחוק נתונים מהבאקט הזמני, מריצים את הפקודות הבאות בהתאם לסוג הנתונים שרוצים למחוק.
כדי למחוק נתונים בקטגוריית הביניים שלא נמחקו במהלך הניקוי, מריצים את הפקודה הבאה:
gcloud storage rm gs://STORAGE_BUCKET/PREFIX**כדי למחוק את כל הנתונים, כולל יומני ההעברה, מציינים את שורש הקטגוריה באמצעות התו הכללי של התאמה לכל (*).
gcloud storage rm gs://STORAGE_BUCKET/*כדי למחוק את הקטגוריה, מריצים את הפקודה הבאה:
gcloud storage rm gs://STORAGE_BUCKET
מחליפים את המשתנים הבאים:
STORAGE_BUCKET בשם של קטגוריית הביניים.
PREFIX בשם של התיקייה שאליה הועברו הנתונים בקטגוריית הביניים.
הגדרת כלל מחזור חיים
כדי למחוק נתונים שלא נמחקים על ידי מחזור הניקוי האוטומטי, צריך להגדיר כלל מחזור חיים לקטגוריה של Cloud Storage. כדי למחוק נתונים זמניים בקטגוריה, צריך להשתמש בתנאי age ולציין תקופה ארוכה יותר מזמן ההעברה הכולל של עבודת ההעברה הארוכה ביותר שמשתמשת בקטגוריה כקטגוריית ביניים. אם תנאי הגיל שצוין קצר יותר מהזמן שנדרש להורדת הקובץ ממאגר הביניים ליעד, העברת הקובץ תיכשל.
אפשר גם להשתמש בתנאי matchesPrefix כדי למחוק נתונים בתיקייה שצוינה עבור מאגר הביניים. כדי למחוק את יומני ההעברה יחד עם הנתונים בקטגוריה, לא צריך להשתמש בתנאי matchesPrefix.
שמירה של מטא-נתונים של קבצים
כדי לשמור את המטא-נתונים של הקובץ, כולל UID, GID, MODE וקישורים סמליים מספריים:
CLI של gcloud
בשדה --preserve-metadata מציינים את אופן השמירה של ההעברה. האפשרויות שרלוונטיות להעברות של מערכת קבצים הן: gid, mode, symlink, uid.
API בארכיטקטורת REST
מציינים את האפשרויות המתאימות באובייקט metadataOptions.
מידע נוסף זמין במאמר בנושא שמירה של מאפייני POSIX אופציונליים.
דוגמה להעברה באמצעות ה-CLI של gcloud
בדוגמה הזו, אנחנו מעבירים נתונים מהספרייה /tmp/datasource ב-VM1 אל /tmp/destination ב-VM2.
מגדירים את המקור של ההעברה.
יוצרים את מאגר הנציגים של מקור השיחה:
gcloud transfer agent-pools create source_agent_poolב-VM1, מריצים את הפקודה הבאה כדי להתקין סוכנים ל-
source_agent_pool:gcloud transfer agents install --pool=source_agent_pool \ --count=1 \ --mount-directories="/tmp/datasource"
מגדירים את היעד של ההעברה.
יוצרים את מאגר הנציגים ליעד:
gcloud transfer agent-pools create destination_agent_poolבמכונה הווירטואלית VM2, מריצים את הפקודה הבאה כדי להתקין סוכנים ל-
destination_agent_pool:gcloud transfer agents install --pool=destination_agent_pool \ --count=3 \ --mount-directories="/tmp/destination"
יוצרים קטגוריה של Cloud Storage בתור קטגוריית ביניים.
יוצרים קטגוריה בשם
my-intermediary-bucket:gcloud storage buckets create gs://my-intermediary-bucketכדי לאשר את החשבון לשימוש בכל התכונות של Storage Transfer Service, מריצים את הפקודה:
gcloud transfer authorize --add-missing
יוצרים עבודת העברה על ידי הפעלת הפקודה:
gcloud transfer jobs create posix:///tmp/datasource posix:///tmp/destination \ --source-agent-pool=source_agent_pool \ --destination-agent-pool=destination_agent_pool \ --intermediate-storage-path=gs://my-intermediary-bucket