חזרה לבלוג

Snapshots הם לא גיבויים

ה-volume איננו. כשל controller, ‏rm -rf עם אצבע שמנה, מיגרציה שהשתבשה — הסיבה כמעט לא משנה בשלב הזה. אתם עדיין רגועים, כי אתם זוכרים שלקחתם snapshot ביום שלישי.

אתם פותחים את הקונסולה. גם ה-snapshot איננו.

הוא מעולם לא היה עותק שני. הוא היה סימנייה בתוך הדבר שזה עתה איבדתם.

מה זה snapshot באמת

Snapshot הוא נקודה בזמן על volume חי. רוב המימושים הם copy-on-write: ה-snapshot לא משכפל את הנתונים שלכם — הוא מתעד את הבלוקים שהשתנו מאז שלקחתם אותו, ומצביע על הבלוקים המקוריים לכל השאר. בגלל זה הוא מיידי, ובגלל זה לקיחה שלו כמעט לא עולה כלום.

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

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

הוא פשוט לא הגנה. הוא undo.

מה זה גיבוי באמת

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

זה נותן לכם מבחן אחד, והוא היחיד ששווה לשנן:

אם זה לא יכול לשרוד את ההשמדה של הדבר שעליו זה מגן — זה לא גיבוי.

תעבירו את אסטרטגיית הגנת-הנתונים שלכם דרך המשפט הזה. רוב מה שאנשים קוראים לו גיבויים לא יוצא מהצד השני.

למה כל קונסולה מטשטשת את הגבול

תסתכלו איך שני הדברים האלה מוצגים לכם. אותו sidebar, בדרך כלל תחת כותרת כמו “הגנת נתונים”. שני כפתורים שנראים אותו דבר. אחד מיידי וכמעט חינם; השני איטי ונמדד לפי שימוש. הממשק רומז שאלה שתי דרגות של אותו מוצר — שמירה מהירה ושמירה איטית, אקספרס ורגיל.

הם לא שתי דרגות של שום דבר. הם חיים ב-failure domains שונים, וזו התכונה היחידה שחשובה כשאתם באמת צריכים אותם.

אף אחד לא ממש משקר לכם. הם רק בנו layout שעושה את הרמיזה, ונתנו לכם להסיק לבד את המסקנה השגויה המתבקשת.

השחזור שאף אחד לא הריץ

הנה האמת הקשה יותר: אף אחד מהשניים אינו הגנה עד ששחזרתם אחד.

גיבוי שמעולם לא שחזרתם הוא לא גיבוי — הוא השערה. ארכיונים שלא נבדקו נכשלים בדרכים משעממות וספציפיות — volume שמעולם לא נכלל, ארכיון שנקטע באמצע, בסיס נתונים שדרש quiesce וקיבל במקום זה torn write באמצע טרנזקציה. תגלו איזו מהן חלה עליכם ביום הגרוע ביותר של הרבעון שלכם, בדיוק ברגע שבו אין לכם שום יכולת לאלתר.

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

מה אנחנו עושים במקום זה

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

Snapshot ב-Kaligon הוא מצב נקודת-זמן של ה-VM שלכם, שמוחזק על אותו אחסון כמו הדיסק, אופציונלית כולל RAM. מיידי, זול, בנוי ל-rollback. אנחנו קוראים לו snapshot, ואנחנו לא קוראים לו הגנה.

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

שניהם מופיעים בפאנל בדיוק כמו שהם. אף אחד מהם לא מחופש לשני, ואנחנו לא מתכוונים לשים אותם מאחורי כפתור אחד בשם “הגנה” כדי שהמוצר ייראה פשוט יותר מהפיזיקה.

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

קחו snapshots. הם יצילו לכם את אחר הצהריים.

קחו גיבויים. הם יצילו לכם את החברה.

רק אל תתבלבלו לגבי מה משניהם לקחתם.