پیش از آنکه دربارهی عملکرد Snapshot در Open-E JovianDSS صحبت کنیم، ابتدا باید تعریفی از آن ارائه دهیم.
وبسایت Computer Weekly فناوری Sanpshots را به عنوان “نسخه مجازی از یک مجموعه فایلها، دایرکتوریها یا Volumeها در یک لحظه خاص” توصیف میکند. هدف این تکنولوژی” افزایش حفاظت از دادهها و کارآیی” است و برای حل مشکلاتی از قبیل بازیابی دادههای آسیبدیده، پشتیبانگیری از دادههای حجیم و افزایش عملکرد اپلیکیشنها در هنگام پشتیبانگیری مورد استفاده قرار میگیرد. به زبان ساده، Snapshot یک کپی از وضعیت سیستم در همان لحظه است. اما آن را با اسکرینشات یا پشتیبانگیری اشتباه نگیرید! زیرا تفاوتهایی دارد.
ویژگیهای اصلی Snapshot
پاسخ به این سؤال که چه زمانی باید یک Snapshot ایجاد کرد، نسبتاً ساده به نظر میرسد: در هر زمانی که بخواهید. با استفاده از Open-E JovianDSS، میتوانید بین ایجاد یک برنامه نگهداری (Retention Plan) که به شما اجازه میدهد به صورت خودکار Snapshotها را ایجاد و حذف کنید، یا ایجاد دستی Snapshot یکی را انتخاب کنید. روش دوم سادهترین گزینه به نظر میرسد، زیرا تنها با یک کلیک در هر لحظه میتوانید Snapshot ایجاد کنید، اما باید به یاد داشته باشید که این کار را انجام دهید.
اگر یک برنامه نگهداری تنظیم کنید، سیستم به صورت خودکار Snapshotها را با فرکانسی که نیازهای کسبوکار شما تعیین میکند (از هر 5 دقیقه یکبار شروع میشود) ایجاد خواهد کرد. با برنامه نگهداری، همچنین میتوانید مدت زمان نگهداری این Snapshotها را تنظیم کنید. پس از پایان این دوره، Snapshotها به صورت خودکار حذف میشوند و فضا برای Snapshotهای جدید آزاد میشود.
همانطور که پیشتر اشاره کردیم، همه Snapshotها حاوی متادیتا هستند. Snapshot مکان فعلی تمام دادههای مرتبط روی دیسک را ذخیره میکند و این فضا را برای بازگشت احتمالی به نسخه قبلی دادهها حفظ میکند. اما این فرآیند چگونه عمل میکند؟
ابتدا، هر بخش از دادهها به صورت پراکنده و به شکلی غیرقابل پیشبینی روی دیسک ذخیره میشوند. سپس، هنگامی که یک Snapshot ایجاد میشود، مکانهای داده را به خاطر میسپارد و آنها را ثابت نگه میدارد، به طوری که از هرگونه تغییرات بعدی جلوگیری شود.
Copy-on-Write که یکی از ویژگیهای اصلی ZFS و همچنین Open-E JovianDSS است، به دستیابی به این هدف کمک میکند. با این قابلیت، به جای اعمال تغییرات مستقیم بر روی داده اصلی، سیستم ابتدا یک کپی اضافی روی یک بلوک دیگر ایجاد و سپس آن را بهروزرسانی میکند. به این ترتیب، فرآیند تغییرات به درستی کنترل میشود و دادهها میتوانند بدون ایجاد تغییر دادههای موجود در Snapshot، اصلاح شوند.
به همین دلیل، میتوانید دادهها را بدون پیامدهای قابلتوجه به حالت قبلی بازگردانید. این کار حتی بهطور آنی قابل انجام است، بدون توجه به اینکه چه تغییراتی صورت گرفته باشد، از حذف ساده دادهها گرفته تا فرآیندهای پیچیدهتر مثل رمزنگاری توسط Ransomware. نگهداری Snapshotها به اندازهی یک پشتیبانگیری معمولی از دادهها، فضا اشغال نمیکند.
با توضیحات ارائه شده، لازم است به این نکته توجه داشته باشید که تمامی Snapshotها به هم مرتبط هستند. متادیتا در هر Snapshot به حالتهای قدیمیتر دادهها که در Snapshotهای قبلی ثبت شدهاند متصل است. بنابراین، وقتی دوره نگهداری به پایان میرسد و زمان حذف Snapshot مرجع میرسد، Snapshotهای بعدی باید بخشی از دادههای آن را جذب کنند.
همچنین، باید به خاطر داشت که حتی یک کپی Snapshot بدون هیچ تغییری در دادهها، نیاز به فضایی بر روی دیسک برای متادیتای خود دارد. در واقع، یک Snapshot فضای زیادی اشغال نمیکند، اما اگر تعداد زیادی از این Snapshotهای سبک را ایجاد کنید، مثلاً دهها هزار، چه اتفاقی میافتد؟ اگر یک برنامه نگهداری با فرکانس بالا تنظیم کرده باشید، Snapshotها ممکن است شروع به پر کردن ظرفیت سرور کنند. در صورت وجود هرگونه تغییری در دادهها، Volume باید هر دو نسخه، یعنی نسخه قدیمی (که توسط Snapshot حفظ شده) و نسخه جدید، را روی دیسک نگه دارد.
دو سوال اصلی که معمولاً کاربران درباره ذخیره دادهها با استفاده از Snapshot دارند این است که: اول، چگونه دادهها را بازیابی کنیم؟ و دوم، چگونه میتوان اطلاعات را بعد از آن تغییر داد؟ این مسائل خصوصاً زمانی که کاربر میداند Snapshot به صورت فقط-خواندنی (Read-Only) و غیرقابل تغییر است، مهمتر میشوند.
دو قابلیت مفید وجود دارند که به شما امکان میدهند تا وضعیت خاصی از دادهها را بازیابی کرده و Volume داده را از Snapshot به حالت قابل نوشتن تبدیل کنید: یکی Rollback و دیگری Clone.
Rollback قابلیتی است که به شما اجازه میدهد حالت دادههای اصلی Volume را از یک Snapshot خاص بازسازی کنید تا تغییراتی را که به دلیل آپدیتهای پیشبینینشده یا دیگر رویدادهای ناگوار ایجاد شده، بازگردانید. این رویدادها میتوانند شامل حذف دادهها یا حتی حملات بزرگی مانند حملات ransomware باشند.
Clone نسخهای قابل نوشتن از وضعیت Volume است که در متادیتای Snapshot حفظ شده است. زمانی که انتخاب میکنید یک Clone از Snapshot ایجاد کنید، این فرآیند یک کپی قابل نوشتن از متادیتای Snapshot را ایجاد میکند و امکان تغییرات بیشتر در دادهها را فراهم میکند. شما میتوانید دادههای Clone شده را بهروزرسانی کنید و دادههای جدید روی یک بلوک داده جدید که به طور خاص به Clone اختصاص یافته بدون ایجاد هیچ تغییری در Snapshot اصلی ثبت خواهند شد. اگر بعداً تصمیم به حذف چیزی بگیرید، Clone فقط ارجاع خود را به بلوک Snapshot اصلی حذف میکند (بدون ایجاد تغییر در Snapshot یا Volume اصلی).
Clone به Snapshotای که برای ایجاد آن استفاده شده وابسته است، به همین دلیل نمیتوانید Snapshot اصلی را بدون حذف Clone پاک کنید. برای قطع ارتباط بین Snapshot ،Clone و خود دادهها در Open-E JovianDSS، میتوانید به صورت دستی دادهها را از Clone به یک Volume جدید کپی کنید. پس از انجام این کار، هیچکدام از دادههای بازسازیشده با استفاده از Clone تحت تأثیر حذف Snapshot یا Clone اصلی قرار نخواهند گرفت.
ویژگی Snapshot در Open-E JovianDSS بخش مهمی از هر طرح حفاظت از داده است. Snapshotها همچنین با حفظ یک رکورد منظم و منسجم از تمامی تغییرات ایجادشده در مجموعه داده، از یکپارچگی دادهها اطمینان حاصل میکنند.
باید به صراحت بگوییم Snapshot یک Backup نیست.
به جای ساخت یک کپی کامل از دادهها، Snapshot تنها تفاوتها را نسبت به Snapshot قبلی ذخیره میکند. Snapshot به دادههای اصلی وابسته است و در صورت آسیب دیدن یا حذف شدن داده اصلی، نمیتواند آن را بازیابی کند. اما Backup یک کپی کامل و جداگانه از دادهها میسازد که میتواند در مکانی متفاوت نگهداری شود و در صورت بروز هرگونه فاجعه برای بازیابی استفاده شود.