סקירה כללית של תמונות מצב

בדף הזה מוסבר מהי תמונת מצב, איך היא פועלת, ומהן המגבלות והשיטות המומלצות.

כדי ללמוד איך משתמשים בתמונות מצב, אפשר לעיין במדריכים הבאים:

מהי תמונת מצב?

תמונת מצב של Filestore היא מצב הנתונים של שיתוף הקבצים שנשמר בזמן יצירת תמונת המצב. המופע שומר את מצב הקבצים שמשתנים אחרי יצירת התמונה. אם רוצים לשחזר קובץ למצב השמור בתמונת המצב, אפשר להחליף את הקובץ הנוכחי בקובץ מתיקיית תמונת המצב הרלוונטית.

קובצי ה-snapshot מאוחסנים במופע Filestore והם משאבי צאצא של המופע. הם לא משכפלים נתונים או צורכים קיבולת עד שהנתונים במופע משתנים. כל תמונות המצב של מופע חולקות נתונים משותפים, כלומר המופע שומר רק את ההבדלים בין תמונות המצב.

תמונות מצב הן אמנם יעילות מבחינת עלות בהשוואה לפעולות אחרות לשחזור נתונים ב-Filestore, אבל הקיבולת הזמינה של המופע הולכת ופוחתת ככל שמתבצעים שינויים בקבצים.

רמות נתמכות

בטבלה הבאה אפשר לראות באילו מסלולי שירות של Filestore יש תמיכה בתמונות מצב ובפעולה revert instance:

רמה יצירת קובץ snapshot חזרה לגרסה קודמת של מכונה
HDD בסיסי לא לא
SSD בסיסי לא לא
אזורי כן כן
אזורי כן כן
Enterprise כן כן

תמונות מצב ופעולות קשורות revert נתמכות גם ברמת השירות של SSD בעל קיבולת גבוהה, שהייתה זמינה בעבר.

אומנם יש תמיכה בתמונות מצב ברמת השירות Enterprise, אבל אי אפשר לשלב אותן עם התכונה Filestore multishares.

יצירת קובץ snapshot

כל ספרייה של שיתוף קבצים מכילה ספרייה מוסתרת בשם .snapshot. כל ספריית .snapshot מכילה את התמונות של ספריית האב שאתם יוצרים, לדוגמה:

volume1/
│   genomics-file.txt
│
└───.snapshot
    │
    ├───snap1/
    │        genomics-file.txt
    │
    ├───snap2/
    │        genomics-file.txt
    │
    └───snap3/
             genomics-file.txt

התמונות מכילות תצוגה לקריאה בלבד של כל הקבצים ותתי-הספריות שקיימים בספריית האב בזמן יצירת התמונה. כל מאפייני הקובץ, כמו atime, ownership והרשאות קריאה וכתיבה, נשמרים.

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

אפשר ליצור עד 240 תמונות מצב לכל מופע בכל פעם. האורך המקסימלי של שם שיתוף הקבצים ושם התמונה יחד הוא 78 תווים.

עקביות של תמונת מצב

לתמונות המצב של Filestore יש סמנטיקה של עקביות NFSv3. לפני שמפעילים צילום של תמונת מצב, כל פעולת כתיבה שמופע Filestore מאשר שנכתבה לאחסון יציב או שמופיעה אחרי אישור של COMMIT נכללת בתמונת המצב. פרטים נוספים זמינים ב-NFSv3 RFC-1813 סעיף 3.3.7.

הכנה של שיתוף הקבצים כדי לקבל את העקביות הכי טובה של התמונות

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

  • משתמשים באפשרות ההרכבה sync או פותחים קבצים באמצעות O_DIRECT|O_SYNC. כל אחת מהשיטות האלה משפרת את העקביות, אבל לא מבטיחה אותה.
  • להשהות את התהליכים של האפליקציות או של מערכת ההפעלה שכותבים נתונים להתקן הרשת לשיתוף קבצים ולגרום להם לרוקן מידע (Flush) את השינויים שלהם להתקן הרשת לשיתוף קבצים לפני שמתחילים את קובץ ה-snapshot. מידע נוסף זמין במאמר fsync(2).
  • אם האפליקציות שלכם דורשות עקביות בין כמה שיתופי קבצים, צריך להשהות את כל האפליקציות בכל המקרים שבהם מתבצעת כתיבה לכל שיתופי הקבצים, וליצור תמונות מצב של כל שיתופי הקבצים לפני שממשיכים להשתמש באפליקציות.
  • אם נדרשת עקביות ברמת האפליקציה, צריך להפסיק את האפליקציות ולבטל את הטעינה של שיתוף הקבצים לפני שיוצרים תמונת מצב.

סמנטיקת NFS של הספרייה .snapshot

הספריות .snapshot הן ספריות מיוחדות ומוסתרות שמכילות את התמונות שצולמו עבור ספריית ההורה שלהן. כל פקודות ה-NFS וה-Bash פועלות בספריות האלה, למעט במקרים הבאים:

  • אי אפשר ליצור קובץ או ספרייה בשם .snapshot כי השם הזה שמור לתמונות מצב.
  • הספרייה .snapshot לא מופיעה בפלט של הפקודות READDIR או READDIRPLUS, וגם לא בפקודה ls -a bash.
  • כדי לעבור לספרייה .snapshot, צריך להקליד במפורש את המחרוזת .snapshot. דוגמה: cd somedir/.snapshot/
  • ההשלמה האוטומטית של פקודות Shell לא תציג את .snapshot כאפשרות.

מחיקת קבצים שצולמו בתמונת מצב

כשקובץ נכלל בתמונת מצב, מחיקה שלו לא מגדילה את נפח האחסון הפנוי בדיסק במופע.

חזרה למצב של תמונת מצב

החזרת מכונה למצב של תמונת מצב זמינה בדרך כלל רק למכונות אזוריות, למכונות אזוריות ולמכונות ארגוניות.

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

מגבלות התכונה

  • התכונה 'חזרה ל-snapshot' היא פעולה שלא ניתן לבטל, והיא מוחקת נתונים ממערכת הקבצים הפעילה ומכל קובץ snapshot חדש יותר בשרשרת. לכן, יש סיכון גבוה יותר לאובדן נתונים מקרי. ההתנהגות הזו שונה באופן משמעותי מההתנהגות של שחזור מגיבוי, שבו הגיבוי יישאר במצב הנוכחי שלו אחרי השימוש, כך שתוכלו לנסות לשחזר מכמה גיבויים כדי למצוא את הגיבוי הכי טוב. חשוב להשתמש בתכונת החזרה לגרסה קודמת בזהירות.

  • כל הנתונים שנכתבו אחרי יצירת תמונת המצב של היעד נמחקים בתחילת תהליך החזרה, ואי אפשר לשחזר אותם. כל התמונות המיידיות שנוצרו אחרי התמונה המיידית שאליה רוצים לחזור יימחקו גם הן. לדוגמה, snapshot1,‏ snapshot2 ו-snapshot3 נוצרים ברצף. החזרת המופע למצב שצולם ב-snapshot2 פירושה שכל הנתונים שנכתבו אחרי snapshot2, וגם כל התמונות שצולמו אחרי היצירה של snapshot2, נמחקים בתהליך ההחזרה.

    ניקוי הנתונים שנמחקו יכול להימשך בין שש שעות לעשרה ימים. יכולה להיות השפעה על הקיבולת והביצועים של המופע במהלך הזמן הזה.

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

  • פעולת חזרה לגרסה קודמת יכולה להימשך עד שתי דקות.

    • כל פעולת ניקוי שקשורה לפעולת החזרה, כמו מחיקת תמונות מצב עוקבות בשרשרת, יכולה להימשך בין שש שעות לעשרה ימים, בהתאם למספר הקבצים שמעורבים.
    • אתם יכולים להריץ פעולות אחרות בזמן שהפעולה להחזרה לגרסה הקודמת פועלת ובזמן שהניקוי מסתיים.
    • צריך לחכות עד שפעולת החזרה לגרסה קודמת תסתיים לפני שמתחילים פעולת חזרה לגרסה קודמת אחרת.
  • תמונות מצב והפעולות הקשורות אליהן revert זמינות ברוב רמות השירות. תמונות מצב לא זמינות ברמות השירות הבסיסיות של SSD ו-HDD.

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

  • למרות שיש תמיכה בתמונות מצב ברמת השירות Enterprise, אי אפשר לשלב אותן עם התכונה Filestore multishares.

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