בדף הזה מוסבר איך מעבירים נתונים בין שתי מערכות קבצים של POSIX. תרחישים נפוצים לדוגמה:
- שימוש בענן לפרצי עומס ו-HPC היברידי: העברה מהירה של מערכי נתונים גדולים משרתים מקומיים לענן לצורך עיבוד.
- העברה וסנכרון ל-Filestore: העברה או סנכרון של נתונים ממערכת קבצים מקומית ל-Filestore.
- העברת קבצים מנוהלת: העברת נתונים באופן מאובטח ואמין בין מרכזי נתונים או בין שתי מערכות קבצים בענן.
הנחיות להעברת נתוני ביצועים
ההנחיות הבאות יעזרו לכם למקסם את הביצועים במהלך העברות ממערכת קבצים אחת למערכת קבצים אחרת.
פריסת סוכנים
באופן כללי, מומלץ להשתמש בשלושה סוכנים בכל אחד ממאגרי הסוכנים של המקור והיעד. עוקבים אחרי ההעברה ומוסיפים עוד נציגים אם צריך. כל נציג צריך 4 vCPU ו-8 GiB 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 בשם התיקייה שאליה רוצים להעביר את הנתונים.
כשמפעילים משימת העברה, המערכת מחשבת קודם את הנתונים במקור וביעד כדי לקבוע אילו נתוני מקור הם חדשים או עודכנו מאז ההעברה הקודמת. רק הנתונים החדשים מועברים.
ספריות לקוח
Go
Java
Node.js
Python
ניהול של קטגוריות אחסון ביניים
אחרי שפעולת ההעברה מסתיימת, Storage Transfer Service שומר יומני העברה שמפרטים את הנתונים שהועברו ואת הנתונים שלא הצליחו לעבור בקטגוריה. אחרי ההעברה, מופעלות אוטומטית משימות ניקוי כדי למחוק את נתוני הביניים. במקרים מסוימים, משימות הניקוי לא מצליחות למחוק את כל הנתונים בדלי. כדי למחוק נתונים שלא נמחקים במהלך הניקוי, אפשר להיעזר בהוראות שבהמשך כדי למחוק את הנתונים באופן ידני או להגדיר כלל מחזור חיים למחיקת הנתונים באופן אוטומטי.
ניקוי ידני
כדי למחוק נתונים מהבאקט הזמני, מריצים את הפקודות הבאות בהתאם לסוג הנתונים שרוצים למחוק.
כדי למחוק נתונים בקטגוריית הביניים שלא נמחקו במהלך הניקוי, מריצים את הפקודה הבאה:
gcloud storage rm gs://STORAGE_BUCKET/PREFIX**כדי למחוק את כל הנתונים, כולל רישומי ההעברה, מציינים את הרמה הבסיסית (root) של הקטגוריה באמצעות התו הכללי לחיפוש של התאמה לכל (*)
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