במסמך הזה מוסבר איך לפתור בעיות שקשורות להעברה ולסוכנים, ואיפה אפשר למצוא את יומני הסוכנים שיעזרו לכם לפתור בעיות.
שגיאות
בטבלה הבאה מתוארות הודעות שגיאה שקשורות להעברה, ומוסבר איך לפתור אותן:
| הודעת השגיאה | סוג השגיאה | מה המשמעות של השגיאה | איך פותרים את השגיאה |
|---|---|---|---|
| השתנה במהלך ההעברה | FILE_MODIFIED_FAILURE | קובץ המקור השתנה במהלך ההעברה בכל פעם ש-Storage Transfer Service ניסה להעתיק את קובץ המקור. | למנוע כתיבה לקובץ שצוין במהלך הפעולה הבאה של Storage Transfer Service. |
| ההעברה נכשלה | PRECONDITION_FAILURE | האובייקט ב-Cloud Storage שמשויך לקובץ המקור עבר שינוי בכל פעם ש-Storage Transfer Service ניסה להעלות את הקובץ. | כדי למנוע מכמה משימות העברה לכתוב את אותו קובץ לאותה קטגוריה של Cloud Storage, צריך להשתמש בקידומות ייחודיות של אובייקטים ב-Cloud Storage כשיוצרים משימות העברה. |
| ספריית קובצי המקור לא נמצאה | SOURCE_DIR_NOT_FOUND | נתיב המקור שצוין שגוי, או שהנתיב נכון אבל לא לכל הסוכנים יש גישה אליו. | בודקים את ההגדרות של משימת ההעברה ומוודאים:
|
| לא הייתה אפשרות למצוא את ספריית המקור או היעד של העבודה | ROOT_DIR_NOT_FOUND | נתיב המקור או היעד שצוין שגוי, או שהנתיב נכון אבל לא לכל הסוכנים יש גישה אליו. | בודקים את ההגדרות של משימת ההעברה ומוודאים:
|
| הקובץ לא נמצא | FILE_NOT_FOUND_FAILURE | קובץ המקור נמצא, אבל הוא נמחק לפני שהועבר אל Cloud Storage. | אם הקובץ נמחק בטעות, צריך לשחזר אותו כדי שיועלה בהעברה הבאה. |
| לא נמצאה קטגוריית היעד | BUCKET_NOT_FOUND | קטגוריית היעד לא קיימת ב-Cloud Storage. | מוודאים שהאיות של שם דלי היעד נכון ושהוא קיים. |
| לא נמצא אובייקט פנימי של מטא-נתונים | METADATA_OBJECT_ NOT_FOUND_FAILURE |
Storage Transfer Service מאחסן מטא-נתונים בקטגוריית היעד עם התחילית storage-transfer. אם קובצי המטא-נתונים נמחקים לפני שפעולות ההעברה התואמות מסתיימות, השגיאה הזו מוצגת.
|
מומלץ להימנע ממחיקת אובייקטים עם הקידומת storage-transfer/ בקטגוריית היעד עד שכל עבודות ההעברה יסתיימו. |
| ההעלאה נכשלה בגלל שם קובץ לא תקין | INVALID_FILE_NAME | הנתיב של קובץ מקור לא תקין. | בודקים ומתקנים את נתיב הקובץ שצוין. מוודאים שהנתיב משתמש ב תווים שנתמכים על ידי Cloud Storage. |
| הפעולה נכשלה בגלל סוג אחסון לא תקין | INVALID_FILE_STORAGE_CLASS | סיווג האחסון של המקור שצוין לא מאפשר קריאות. | כדי להעביר את הנתונים לסוג אחסון (storage class) שמאפשר להעתיק אותם, צריך לעיין במסמכי התיעוד של ספק שירותי הענן. |
| הפעולה נכשלה בגלל URI לא תקין של סשן העלאה שניתן להמשיך | SESSION_URI_INVALID | תוקף מזהה ההעלאה שניתן להמשיך או ה-URI של הסשן פג או שהם בוטלו. | הניסיון החוזר לביצוע הפעולה נכשל. עליך לפנות לתמיכה. |
| הפעולה נכשלה בגלל גודל קובץ לא תקין | INVALID_FILE_SIZE | גודל הקובץ לא תקין. | מוודאים שגודל הקובץ הוא >= 0 ו- <= 5 TiB (גודל האובייקט המקסימלי ב-Cloud Storage) להעברות אל Cloud Storage. |
| הפעולה נכשלה בגלל הרשאות | PERMISSION_FAILURE ו-UNAUTHENTICATED | לסוכן ההעברה לא היו הרשאות מספיקות לביצוע פעולה. יש שתי אפשרויות לשגיאה הזו:
|
עליך לוודא את הדברים הבאים:
|
| האובייקט כפוף למדיניות שמירת הנתונים של הקטגוריה ואי אפשר למחוק, לשכתב או להעביר אותו לארכיון | PERMISSION_FAILURE | יש מדיניות שמירת נתונים בתוקף בקטגוריה, והאובייקט כבר קיים בקטגוריה. אי אפשר להשתמש ב-Storage Transfer Service כדי להחליף אובייקטים קיימים בקטגוריה. השגיאה הזו יכולה להופיע אם הקובץ השתנה במקור, או אם Storage Transfer Service מנסה להעלות את הקובץ פעמיים בגלל תנאי הרשת, וההעלאה הראשונה הצליחה. | מוודאים שהנתונים בקטגוריה של Cloud Storage תואמים למה שציפיתם. כדי לוודא שהגודל וזמן השינוי (mtime) של קובצי המקור זהים לאלה של האובייקטים המקבילים ב-Cloud Storage, מריצים מחדש את העבודה ומוודאים שאין שגיאות. |
| לשירות לא היו הרשאות מספיקות | SERVICE_PERMISSION_FAILURE | ל-Storage Transfer Service לא היו הרשאות מספיקות לביצוע פעולה. |
Storage Transfer Service משתמש בחשבון שירות שמנוהל על ידי Google, בדרך כלל בפורמט project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com, כדי לגשת למשאבים.
כדי לקבוע את PROJECT_NUMBER הספציפי, משתמשים בקריאה ל-API
googleserviceaccounts.get.
מוודאים שלחשבון השירות יש את התפקידים הבאים:
|
| אין תמיכה בסוכן | AGENT_UNSUPPORTED_VERSION | גרסת הסוכן לא תואמת יותר ל-Storage Transfer Service. | זו שגיאה זמנית שקשורה לעדכון סוכן פגום. אם זה קורה, צריך לבצע את הפעולות הבאות:
|
| הפעולה נכשלה בגלל חוסר התאמה של הגיבוב | HASH_MISMATCH_FAILURE | בכל פעם ש-Storage Transfer Service ניסה להעלות את הקובץ הזה, הבייטים שהועלו היו פגומים. כתוצאה מכך, הגיבוב של הקובץ המקומי לא תאם לגיבוב של האובייקט שנוצר ב-Cloud Storage. | יכול להיות שהשגיאה הזו נגרמת בגלל כמה בעיות אפשריות. אם אתם רואים אחוז קטן של כשלים בהתאמת הגיבוב (פחות מ-1%) בהעברה גדולה, נסו להעלות מחדש את הקבצים שנכשלו. אם אתם רואים אחוז גבוה של כשלים בגלל חוסר התאמה של הגיבוב (1% או יותר), מומלץ לבדוק אם יש כשלים פוטנציאליים בזיכרון, במעבד או בחומרה אחרת במכונת הסוכן. |
| הפעולה נכשלה בגלל מצב קובץ שלא נתמך | UNSUPPORTED_FILE_MODE | Storage Transfer Service נתקל בקובץ עם מצב לא נתמך, כמו מכשיר, שקע, צינור בעל שם או קובץ לא סדיר. | מסירים את סוגי הקבצים המיוחדים האלה מספריית קובצי המקור. |
| הפעולה נכשלה בגלל שגיאה במערכת הקבצים | FILESYSTEM_ERROR | סוכן נתקל בשגיאה במערכת הקבצים או במערכת ההפעלה במהלך ביצוע פעולה במערכת הקבצים, כמו קריאה, חיפוש או סטטוס. | קוראים את תיאור הכשל כדי להבין איזו פעולה במערכת הקבצים נכשלה. מוודאים שיש לסוכן המקומי גישה למערכת הקבצים, ושהוא מגיב לפעולות בסיסיות בקבצים. |
| הפעולה נכשלה כי לא נשאר מקום במערכת הקבצים | FILESYSTEM_NO_SPACE_ON_DEVICE | הסוכן לא הצליח לבצע פעולה במערכת הקבצים, כמו פתיחה או כתיבה, כי לא היה מספיק מקום. | קוראים את תיאור הכשל כדי להבין איזו פעולה במערכת הקבצים נכשלה. מוודאים שיש מספיק מקום במערכת הקבצים כדי לבצע פעולות על קבצים. |
| הפעולה נכשלה בגלל שגיאה לא ידועה | UNKNOWN_FAILURE | אירעה שגיאה בלתי צפויה. | קוראים את תיאור הכשל. אם תיאור הכשל לא מכיל מספיק מידע כדי לפתור את הבעיה, צריך לפנות לתמיכה. |
| הפעולה נכשלה בגלל מפרט לא תקין | INVALID_SPEC | הסוכן קיבל מפרט פנימי פגום. | בודקים אם יש נתונים פגומים במארחי הסוכנים, ואם לא מוצאים כאלה, פונים לתמיכה. |
| הפעולה נכשלה בגלל קובץ מניפסט ריק או לא תקין | CONFORMANCE_FAILURE | הסוכן לא יכול לקרוא או לקבל בייטים תקינים של CSV בגלל פורמט לא תקין או רשומות CSV לא תקינות. | מוודאים שהערכים במניפסט הם נתיבי קבצים תקינים. אם תיאור הכשל לא מכיל מספיק מידע כדי לפתור את הבעיה, צריך לפנות לתמיכה. |
| החזרה להעלאות שניתן להמשיך במקום להעלאות מרובות חלקים בגלל שגיאת דחייה של הרשאה | PERMISSION_FAILURE | העלאות מרובות חלקים הופעלו להעברה הזו, אבל לא הוגדרו הרשאות נכונות בקטגוריה. | ההרשאות הנדרשות מפורטות בקטע העלאות מרובות חלקים במאמר הרשאות במערכת הקבצים. |
| הערכים מופיעים בסדר לא נכון | INCOMPATIBLE_LIST_ORDER_FAILURE | מערכת הקבצים של המקור החזירה רשימת קבצים בסדר שלא תואם ל-Storage Transfer Service. שירות העברת נתונים (Storage Transfer Service) דורש שמערכת הקבצים של המקור תחזיר קבצים בסדר מילוני. | מוודאים שמערכת הקבצים מחזירה קבצים בסדר ממוין לקסיקוגרפית. |
צפייה ביומני הנציגים
יומני הנציגים מכילים מידע שרלוונטי לתהליכי הנציגים, ויכולים לעזור לכם לפתור בעיות בחיבור הנציגים. אם הסוכנים שלכם מופיעים במסוף כסוכנים מחוברים Google Cloud ואתם נתקלים בכשלים בהעברה, תוכלו לעיין במאמר הצגת שגיאות כדי לראות דוגמה לשגיאות בהעברה. כדי לראות יומנים שמכילים רשומה של כל קובץ ש-Storage Transfer Service לקח בחשבון במהלך העברה, אפשר לעיין במאמר בנושא הצגת יומני העברה.
כברירת מחדל, יומני הסוכנים מאוחסנים ב-/tmp. אפשר לשנות את המיקום באמצעות --log-dir=logs-directory
אפשרות שורת הפקודה.
השמות של היומנים הם:
agent.hostname.username.log.log-level.timestamp
הרכיבים של שם היומן הם:
-
hostname– שם המארח שבו פועל הסוכן. -
username– שם המשתמש שמריץ את הסוכן. log-levelהוא אחד מהערכים הבאים:-
INFO– הודעות עם מידע חשוב -
ERROR– שגיאות שנתקלו בהן במהלך ההעברה, אבל הן לא מונעות את המשך העברת העבודה. -
FATAL– שגיאות שמונעות את המשך העברת העבודה.
-
-
timestamp– חותמת זמן בפורמטYYYYMMDD-hhmmss.thread-id
ספריית היומנים מכילה קישורים סמליים ליומנים העדכניים ביותר לכל אחת מרמות העדיפות:
agent.ERRORagent.FATALagent.INFO
מהירות העברה נמוכה
אם העברת הנתונים נמשכת זמן רב, כדאי לבדוק את הדברים הבאים:
קצב העברת הנתונים של מערכת הקבצים צריך להיות בערך פי 1.5 מקצב ההעלאה הרצוי. אפשר להשתמש ב-FIO כדי לבדוק את קצב העברת הנתונים של הקריאה במערכת הקבצים.
מתקינים את fio:
sudo apt install -y fioיוצרים ספרייה חדשה
fiotest:TEST_DIR=/mnt/mnt_dir/fiotestsudo mkdir -p $TEST_DIRבדיקת תפוקת הקריאה:
sudo fio --directory=$TEST_DIR --direct=1 --rw=randread --randrepeat=0 --ioengine=libaio --bs=1M --iodepth=8 --time_based=1 --runtime=180 --name=read_test --size=1Gאחרי שמריצים את הפקודות שלמעלה, Fio יוצר דוח. הקו עם התווית bw מייצג את רוחב הפס הכולל של כל השרשורים, ואפשר להשתמש בו כקירוב למהירות הקריאה.
משתמשים ב-iPerf3 כדי לבדוק את רוחב הפס הזמין באינטרנט בשביל Storage Transfer Service.
מוודאים שלכל סוכן העברה יש לפחות 4 vCPU ו-8GB של RAM.
אם בדקתם את התנאים שלמעלה ועדיין נתקלתם בזמני העברה ארוכים, אתם יכולים להוסיף סוכנים נוספים כדי להגדיל את מספר החיבורים בו-זמנית למערכת הקבצים של הנתונים.
למידע נוסף על שיפור הביצועים של סוכני ההעברה, אפשר לעיין במאמר בנושא שיטות מומלצות לשימוש בסוכנים.
פתרון בעיות שקשורות לסוכנים
בקטעים הבאים מוסבר איך לפתור בעיות שקשורות לסוכן ההעברה:
הנציגים לא מחוברים
אם סוכני ההעברה לא מוצגים כמחוברים במסוף Google Cloud :
מוודאים שהסוכנים יכולים להתחבר לממשקי Cloud Storage API:
מריצים את הפקודה הבאה מאותה מכונה שבה מותקן סוכן ההעברה כדי לבדוק את החיבור של הסוכן לממשקי Cloud Storage API:
gcloud storage cp test.txt gs://my-bucketמחליפים את:
my-bucketבשם של קטגוריית Cloud Storage.
אם בפרויקט שלכם נעשה שימוש ב-VPC Service Controls, כדאי לבדוק את יומני הסוכן כדי לראות אם יש שגיאות. אם ההגדרה של VPC Service Controls שגויה, ביומני הסוכן
INFOתופיע השגיאה הבאה:Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: idבפלט הזה:
הנציגים מחוברים אבל העבודות נכשלות
אם הסוכנים מוצגים כמחוברים אבל משימות ההעברה נכשלות, צריך לבדוק את פרטי השגיאה של המשימות שנכשלו.
שרת ה-proxy דוחה כתובות IP
אם אתם מפעילים שרת פרוקסי כמו Squid ואתם משתמשים ברשימת היתרים, יכול להיות שתראו בקשות שנדחות בגלל שימוש בכתובות IP במקום בשמות מארחים.
כדי לפתור את הבעיה, משתמשים בפקודה docker run כדי להריץ את הסוכנים ומוסיפים את הדגל הבא:
--transfer-service-endpoint=storagetransfer.googleapis.com:443
אם אתם משתמשים בנקודת קצה חלופית כדי להגיע אל googleapis.com (לדוגמה, ל-Private Service Connect), צריך להחליף את googleapis.com בנקודת הקצה החלופית.
הסוכן לא מצליח להתחבר לנקודת קצה (endpoint) של HTTPS באמצעות אישור בחתימה עצמית
אם הסוכן לא מצליח להתחבר לנקודת קצה של HTTPS באמצעות אישור בחתימה עצמית, אפשר להשתמש באפשרות -v נוספת כדי להעלות את חבילת האישורים המותאמת אישית למיקום ברירת המחדל של הקונטיינר (/etc/ssl/certs).
כדי לעשות זאת, משנים את הפקודה docker run ומוסיפים את הדגל הבא:
-v PATH_TO_LOCAL_CERT:/etc/ssl/certs/ca-certificates.crt
מחליפים את:
- PATH_TO_LOCAL_CERT מחליפים בנתיב לקובץ האישור בהתאמה אישית.