مقایسه بکاپ crash-consistent و application-consistent
data consistency مجموعی از اعتبار1، صحت2، کاربردپذیری3 و انسجامِ4 دادهها در میان اپلیکیشنها و در سراسر سیستم عامل است. نمیتوان اذعان نداشت که حضور data consistency در فرآیند بکاپ از اهمیت بسیار بالایی برخوردار است. به عبارت دیگر، آیا دادههایی که از آنها بکاپ گرفته شده است، کاربردیاند؟ آیا در وضعیتی هستند که بتوانند یک نقطه بازیابی قابل اطمینان را فراهم نمایند؟ به طور کلی چند گزینه مختلف وجود دارد که برای ایجاد بکاپ کاربردی به ذهن خطور میکند و ممکن است به گوش شما رسیده باشد : crash-consistent و application-consistent. هر کدام از این انواع بکاپ چیست؟ چه زمانی به بکاپ application-consistent به جای crash-consistent نیاز دارید؟
بکاپ Crash-consistent
بکاپهای crash-consistent امکان بکاپگیری بیتناقض از فایلهای روی دیسک را به شما میدهند. یک بکاپ crash-consistent از تمامی فایلها در زمانی معین snapshot میگیرد. این بدان معناست که هر کدام از فایلهایی که به یکدیگر وابسته هستند، در نقطه زمانی مشابهی قرار دارند و بنابراین تناقضی در نسبت آنها با یکدیگر وجود ندارد. عبارت crash-consistent به این واقعیت اشاره دارد که گرفتن بکاپ همچون به دست آوردن نقطه بازیابی (recovery point) در لحظهای است که سرور crash میکند یا خاموش یا reset میشود.
ممکن است تصور کنید که نرمافزار بکاپ چگونه قادر به گرفتن snapshot از کل مجموعه دادهها در نقطه زمانی مشابهی است. این توسط بهکارگیریِ سرویس Volume Shadow Copy از سیستمعامل مایکروسافت قابل انجام است، سرویسی که بخشی از اکثرِ سیستمعامل های ویندوزِ امروزی به شمار میآید.
سرویس Volume Shadow Copy یا همان VSS به سرعت عملیاتهای I/O بر روی یک volume را معلق میکند، عملیاتهایی که در آن زمان برای اجرا در صف قرار گرفته بودند، همچنین VSS بلوکهایی از volume که در حال حاضر مورد استفاده بودند را ثبت میکند. تمامی اینها، تنها در چند ثانیه به انجام میرسند. بنابراین از اینکه چه بلوکهایی در طول آن نقطه زمانیِ snapshot در حال استفاده بودند، آگاهی دارد. نرمافزار بکاپ، سپس در فرصتی مناسب، میتواند از تمامیِ دادههای فیزیکی بر روی دیسک حتی پس از تغییر انجام شده بر بلاکها کپی بگیرد زیرا از اینکه در آن snapshot کدام بلاکها مورد استفاده بودهاند، آگاه است.
بکاپ crash-consistent بسیار بهتر عمل میکند نسبت به بکاپ قدیمیِ inconsistent که اساسا تنها کپیای از فایلهای روی دیسک به شمار میآید. در این صورت، اگر فایلها در مدت زمان بکاپ تغییر کنند، فایلهایی که به یکدیگر وابسته هستند در وضعیت inconsistent قرار میگیرند چرا که فایلی که به فایل دیگر وابسته است ممکن است در طول فرآیند بکاپ تغییر کرده باشد.
با وجود امتیازاتی که بکاپِ crash-consistent نسبت به بکاپ inconsistent دارد، در عین حال نقصی بسیار قابل توجه دارد. بکاپ crash-consistent قادر نیست در رابطه با وجود consistency در سطح دادههای اپلیکیشن اطمینانی را به دست دهد، دادههایی که ممکن است در memory قرار داشته باشند یا جزو عملیات I/O معلق شده باشند. این به ویژه در رابطه با اپلیکیشنهای مرتبط با database همچون Microsoft SQL Server یا Microsoft Exchange صدق میکند. چگونه میتوانیم از وجود consistency در دادههای اپلیکیشن خود مطمئن شویم؟ برای کسب این اطمینان از بکاپ application-consistent استفاده میکنیم.
بکاپ Application-consistent
برخلاف بکاپ crash-consistent، بکاپ application-consistent این توانایی را دارد که اطلاعات اپلیکیشن را هم در memory و هم در عملیاتهایِ معلق I/O مشاهده کند. بکاپهای application-consistent این تواناییِ مشاهده اطلاعات را با استفاده از VSS writer ها (VSS writer به ابزارهای بکاپگیری اطلاع میدهد که چگونه از آن اپلیکیشن و دادههایش بکاپ تهیه نماید) به دست میآورند. پیش از این گفته شد که سرویس Volume Shadow Copy، چگونه در سطح volume عمل میکند. VSS writerها در سرویس Volume Shadow Copy از مایکروسافت، مولفههایی ویژهی اپلیکیشن هستند که به هنگام ایجاد یک shadow copy، مسئله consistency را برای دادههای اپلیکیشن تضمین میکنند.
VSS writer در مایکروسافت یا third party writer به VSS اجازه خواهد داد نه فقط بر روی فایلهای دیسک همچنین بر دادههای اپلیکیشنی خاص کنترل داشته باشد و به آن اپلیکیشنها اجازه خواهد داد که بکاپی همراه با consistency در اختیار داشته باشد. به عنوان مثال، Microsoft SQL Server ممکن است علاوه بر عملیات I/Oای که معلق شدهاند، دادههایی را در اختیار داشته باشد که در memory مقیم هستند. یک بکاپگیریِ crash-consistent معمولی از فایلهای روی دیسک، اگرچه در سطح فایل consistent است، اما دادههای مقیم در آن مکانها را از دست میدهد. در صورتی که در استفاده از بکاپ application-consistent، وجود VSS writer برای Microsoft SQL Server اجازه خواهد داد که اطلاعات موجود در memory تخلیه شود و عملیات I/O معلق شده با ترتیب میانکنشیِ درستی بر روی دیسک تخلیه شوند، بنابراین بکاپگیری از دیسک به همراه دادههای اپلیکیشن اطلاعات میانکنشیِ یکدستی را دربرمیگیرد.
تفاوت مهم دیگر میان بکاپ application-consistent و crash-consistent در حجم کاری است که باید به هنگام بازیابی انجام دهید. از آنجایی که در بکاپ crash-consistent دادههای اپلیکیشن ممکن است consistent نباشند، باید از رویهای برای بالا آوردن اپلیکیشن در وضعیتی consistent پیروی نمایید. این فرآیند برای محصولات مختلفی همچون Microsoft Exchange یا Microsoft SQL تغییر میکند. در صورتی که با استفاده از بکاپ application-consistent، داده اپلیکیشن هماکنون consistent است چرا که VSS writer پیش از اینکه فرآیند snapshot صورت گیرد، نسبت به تمامیِ تراکنشهای درون memory و عملیاتهای معلقِ I/O قرار گرفته در دیسک اطمینانی را به دست میدهد. در سناریوی جبران یک حادثه (disaster recovery) برای دادههای اپلیکیشن به ویژه برای سرورهای دیتابیس، برخورداری از روش بکاپی آگاه به اپلیکیشن بسیار مفید خواهد بود نسبت به بکاپگیری crash-consistent از سرورهای اپلیکیشن.
شما میتوانید با استفاده از دستور vssadmin list writers، وضعیتِ VSS writerها را در ویندوز مشاهده کنید. در تصویر زیر، می توانیم VSS SqlServerWriter را مشاهده نماییم. Vssadmin یک ابزار عیبیابی قدرتمند برای VSS writerها است و بسیاری از قابلیتها از طریق command line در دسترس هستند.
در تصویر زیر Microsoft Exchange writer دیده میشود.
در تصویر زیر دستوراتی آورده شده است که در ابزار vssadmin پشتیبانی میشوند.
مقایسه بکاپ crash-consistent و application-consistent
در جدول زیر مقایسه بکاپ crash-consistent و application-consistent آورده شده است:
Operation | Crash-consistent | Application-consistent |
---|---|---|
Consistent point in time backup of files | Yes | Yes |
Utilizes Volume Shadow Copy for block-level backup | Yes | Yes |
Application consistency | No | Yes |
Aware of in memory and pending I/O | No | Yes |
Utilizes VSS writers | No | Yes |
Requires no special steps for application data restore | No | Yes |
نتیجهگیری
در صورتی که در رابطه با بررسیِ تفاوت میان انواع بکاپ همچون crash-consistent و application-consistent کوتاهی شود، امکان دارد با نتایجی غیرمنتظره وحتی دادههایی مخدوش روبرو شوید. در رابطه با چگونگی مدیریت دادههای اپلیکیشن (همچون Microsoft SQL Server یا Microsoft Exchange) تفاوتی آشکار میان بکاپهای crash-consistent و application-consistent وجود دارد. بکاپهای crash-consistent نسبت به دادههای موجود در حافظه ناآگاهند. بکاپهای آگاه به اپلیکیشن نسبت به این نوع از دادههای موقتی آگاه هستند و برای مدیریت آنها به بکارگیری VSS writer (به عنوان مولفهای از VSS service در ویندوز) مجهز میشوند تا از طریق تخلیه memory و عملیات I/O معلق شده درون دیسک، اپلیکیشنها را به درستی غیرفعال کنند و اجازه دهند به درستی بکاپی برخوردار از transactional consistency ایجاد شود.
دیدگاهتان را بنویسید
می خواهید در گفت و گو شرکت کنید؟خیالتان راحت باشد :)