مقدمه
گسترش استفاده از کامپیوتر باعث نفوذ کاربرد کامپیوتر در جنبه های مختلف زندگی انسان از جمله جنبه های حیاتی مانند کنترل ترافیک هوایی ، کنترل خودکار خطوط دریایی ، مدیریت نقطه فروش و حتی سرویس فروش بلیط سینما شده است. داده های ذخیره شده در سیستم های کامپیوتری با ارزش ترین دارایی یک شرکت است که باید به هر قیمت از آن محافظت کنند.
تکنیک های تحمل خطا برای افزایش قابلیت در دسترس بودن سیستم و کاهش خرابی های ناشی از بروز خطا در اجزا گسترش یافتند.[3] داده های حیاتی درون حافظه پایدار ذخیره شده و کپی های اضافی برای ذخیره در حافظه های پایدار تهیه می شوند این روش ها مناسب است ولی در برابر رخ دادن یک حادثه ممکن است نا کارآمد باشد . از جمله این حوادث می توان به زلزله سال 1906 در سان فرانسیسکو اشاره کرد که بیش از نیمی از شهر را ویران کرد .
رویه های وسیع تهیه پشتیبان برای محافظت داده ها در مقابل بروز یک حادثه گسترش یافتند که از جمله آنها می توان به رویه های تهیه پشتیبان به صورت پدر بزرگ – پدر – فرزند، تکنیکهای رویدادنگاری افزایشی و متد نسخهبرداری تصویر دادهها اشاره کرد.[3] به علاوه، برای نگهداری در برابر از دست رفتن داده، سیستم باید بتواند سرویس عادی خود را پس رخ دادن حادثه ارائه کند. بنابراین همراه با داده سخت افزار کامپیوتر نیز باید جایگزین شوند.
تعریف ترمیم
پایگاهدادهها بالقوه در معرض آسیب است. انواع نقص (عیب) و در نتیجه خرابی ممکن است در پایگاهدادهها بروز کند. سیستم مدیریت پایگاهدادهها باید بتواند, در صورت بروز خرابی, پایگاهدادهها را ترمیم و آسیبها و خسارات وارده بر آن را جبران کند. به عبارت دیگر میتوان بروز خرابی در سیستم را ناشی از بروز اشتباه در سیستم دانست که خود اشتباه ناشی از ایجاد نقص در سیستم است.[2]
به عبارت ساده ترمیم یعنی بازگرداندن پایگاهدادهها به وضع سازگاری که درست قبل از بروز خرابی داشت. به بیان دیگر به آخرین وضع سازگار, به گونهای که اثری از خرابی در آن نباشد.
سلسه مراتب خطا
خطاها انواع مختلفی داشته و در منابع مختلف دستهبندیهای متفاوتی برای آنها معرفی شده است.
از جمله میتوان خرابیها را به دو دسته عمده خرابی سیستمی و خرابی رسانهای تقسیم کرد. خرابی سیستمی سبب میشود تا حداقل یک و معمولاً تمام تراکنشهای در حال اجرا در سیستم آسیب ببینند ولی دادههای ذخیره شده در حافظه جانبی دچار خرابی نمیشوند. مثل خرابی ناشی از قطع جریان برق. برعکس خرابیهای رسانهای سبب ایجاد خرابی در تمام یا قسمتی از دادههای ذخیره شده در حافظه مانا میشود و حداقل روی آن دسته از تراکنشهایی که در حال استفاده از دادهها هستند تأثیر میگذارد.
بر اساس شدت سختی خطا از کم به زیاد خطاها به چند دسته تقسیم می شوند : زودگذر، Crash، رسانهای، محلی، اپراتور و خطا های بدخواه.[2]
خطاهای گذرا آنهایی هستند که موجب از دست رفتن پیغام ها در سیستم های مبتنی بر شبکه میشوند . پروتکلها در لایه داده، لایه شبکه و لایه کاربرد میتواننند برای رفع و کنترل این گونه خطاها طراحی شوند.
در هنگام رخ دادن یک خطا ی Crash تمام محتویات حافظه و نیز حالات برنامه موجود در پردازنده از بین میروند. مکانیسم های استاندارد ترمیم Crash مانند عمل نقطهوارسی روی یک حافظه پایدار میتوانند برای مدیریت این مساله اتخاذ شوند.
خطا های رسانه ای به نقص داده در روشهای حافظه ماندگار مربوط می شوند. برای مقابله با خطاهای رسانهای نسخه های پشتبان داده وابسته به موقعیت و فرصت باید تهیه شود. این رویههای تولید پشتیبان ممکن است دستی یا خودکار باشند. ممکن است روی نوارها، دیسک ها و یا کارتریجها ذخیره شوند. واحد پشتیبانگیری ممکن است یک نسخهبرداری کامل پایگاه داده یا یک رکورد ثبت ساده باشد. پس از رخ دادن یک خطای رسانهای نسخههای پشتیبان باید برای ترمیم دادههای از دسترفته بازیابی شوند.
خطاهای سایت یا محلی تمام پردازنده های موجود در یک محل را تحت تاثیر قرار میدهند. این نوع خطاها ممکن است یک مجموعه از ایستگاههای کاری در یک اتاق یا یک مجموعه در یک ساختمان را تحت تاثیر قرار دهند.[2] از آنجایی که این خطاها ماشینهایی در محدوده بزرگی را تحت تاثیر قرار میدهند این خطا ها میتوانند اولین نوع خطاهایی باشند که به حادثه یا فاجعه مشهور میباشند. طرحها و تسهیلات موجود ترمیم فاجعه میتوانند برای تحمل خطاهای سایت طراحی شوند. دادهها در حافظه های پایدار و کارتریجهای پشتیبان ممکن است جبران ناپذیر باشند. جداسازی جغرافیایی سخت افزارهای اضافی و دادهها می تواند به ترمیم این گونه از حوادث کمک کند.
اعمال بشر باعث لایه بعدی از حوادث می شوند. به عنوان مثال ممکن است شخصی به صورت تصادفی نسخههای جاری و پشتیبان را با هم اشتباه کرده و آخرین نتیجه نوشته شده را دوباره بنویسد. بر عکس خطاهای محلی، مشخص کردن محدوده خطاهای اپراتور و تشخیص دادههای خوب از دادههای بد کار ساده ای نمیباشد. رویه های ترمیم معمولاً وقتگیر هستند. خطاهای اپراتور را میتوان بوسیله محدودسازی اختیارات کاربرهای کم تجربه و تهیه حافظههای پشتیبان کافی به حداقل رساند.[1]
بدترین نوع خطا، خطاهای بدخواه یا رومی است که میتوانند تمام قطعات اطلاعات را نابود سازند. یک نمونه از آنها ویروس کامپیوتری مثل Michelangelo است که قادر است پردازندههای اولیه و پشتیبان ونیز نوارهای پشتیبان را آلوده سازد. این نمونه از خطاها میتوانند بوسیله وادارسازی پروتکلها به توسعه خود بوسیله کنترلهای ایمنی بسیار سخت و تهیه تعداد نسخههای پشتیبان کافی کاهش داد.[1]
معماری سیستم و طبقه بندی ترمیمها
معماری اصلی سیستمی که ما در نظر میگیریم شامل یک سایت اولیه و یک سایت پشتیبان است ). سایت اولیه ممکن است یک سیستم پایگاهداده درست یا یک واحد دیسک تنها را ارایه کند. در موارد گذشته، یک واحد پردازش یک کامپیوتر همه منظوره همراه با چندین دیسک و نوار است و در موارد اخیر، یک واحد پرداش یک کنترل کننده دیسک است که هیچگونه نواری در سایت ندارد. به موازات سایت اولیه، سایت پشتیبان نیز شامل واحد پردازش، دیسک و نوار است که اطلاعات کافی در آن ذخیره میشود تا در صورتی که سایت اولیه از کار افتاد اطلاعات موجود در پشتیبان برای ترمیم دادههای از دست رفته در سایت اولیه مورد استفاده قرار گیرد. بنابراین پشتیبان فقط هنگام خطا مورد استفاده قرار می گیرد.[1]
(تصاویر در فایل اصلی موجود است)
بسته به اینکه سایت پشتیبان چگونه عمل می کند ما سیستم های قابل ترمیم را به دو دسته ترمیم داده و ترمیم سرویس تقسیم میکنیم. یک سیستم ترمیم داده هنگامی که یکی از اجزا سیستم از کار افتاد، فقط داده ها را ترمیم یا به حالتی سازگار باز میگرداند. سیستم ممکن است سرویس دهی خود را تا زمان تعمیر اجزا متوقف کند. در سیستم ترمیم سرویس, دادهها در حین ارایه سرویسها پیوسته ترمیم میشوند. تقسیم بندی بالا در شکل 2 به صورت روشنتری نمایش داده شده است.[1]
ترمیم داده به همزمان سازی داده، تکرار داده و خوشهبندی واحدهای عمل تقسیم میشود. همزمان سازی داده که برقراری سازگاری بین داده و پشتیبان را شامل میشود به دو صورت بدون تاخیر و با تاخیر صورت میگیرد. همزمانسازی بدون تاخیر هنگامی که سیستم اولیه در حال ارائه سرویس است صورت میگیرد در حالی که همزمان سازی با تاخیر هنگامی که سیستم های اولیه دادهها را تغییر نمیدهند صورت میپذیرد. به عنوان مثال یک پایگاهداده بانکداری پشتیبان سازی دادهها را در شب هنگامی که تراکنشها در حال پردازش نیستند انجام می دهد. به صورت مشهور، نسخههای پشتیبان سیستمهای دستهای به وسیله یک متد با تاخیر که سایتهای داغ[1] نامیده میشوند صورت میپذیرد.[2] یک سایت پشتیبان عادی پایگاهداده را بر اساس آخرین کپی پایگاه داده بایگانی شده و با استفاده از تغییرات فایل ثبت که تا آن زمان به پایگاه داده اعمال شده اند دوباره سازی می نماید.
پشتیبان بدون تاخیر از کپیهای پایگاهداده به روز شدهتر در تهیه نسخه پشتیبان استفاده میکند. تغییرات در سایت اولیه برای انجام اعمال فوری در پایگاهداده پشتیبان به سایت پشتیبان تحویل داده میشود. برای حذف هرگونه تفاوت در سایتهای اولیه وپشتیبان، هر دو سایت واحدهای عملیاتی خود را در روشLok-step انجام میدهند بدین معنی که هر عملیاتی در سایت اولیه باید با عملیات متناظر خود در سایت پشتیبان همزمان شود. این روش هزینه ارتباط بالایی میطلبد و نیز پرداش واحدهای عملیاتی در سایت اولیه پایین میآورد. به عنوان یک مصالحه، سایتهای اولیه و پشتیبان به صورت سستی با هم همزمان میشوند. سایت اولیه واحدهای عملیاتی را که باید اجرا شود به سایت پشتیبان میفرستد ولی منتظر اجرای آنها بوسیله سایت پشتبان نمیماند. این عمل باعث ایجاد اختلاف اندکی بین پایگاه داده اولیه و پشتیبان میشود که بسته به تاخیر ارتباط و سرعت پردازش سایتها متفاوت است.[3]
(تصاویر در فایل اصلی موجود است)
تکرار داده به دو صورت انفعالی و فعال تقسیم بندی میشوند. در تکرار داده انفعالی، اقلام داده ای تکرار شده به ثانویه ها ارسال شده و بدون پرداش در وسایل حافظه سخت افزاری ذخیره می شوند. در تکرار داده فعال ، اقلام داده تکرار شده به ثانویه ها ارسال شده و سپس برخی پروتکل های تکرار در ثانویه ها اجرا می شوند
ریزدانهگی واحدهای عملیات نیز باید در سیستم های ترمیم پایگاه داده در نظر گرفته شوند. برخی سیستمها واحدهای کوچکی از عملیات مانند خواندن و تغییر اجزای داده را پشتیبانی میکنند. عملیات به صورت ضمنی اتمیک هستند. [2]این ایده برای سسیستم های پردازش تراکنش که در آنها عملیات ها به صورت یک تراکنش گروه بندی می شوند استفاده می شود. اتمیک بودن اجرای تراکنش تضمین می شود: تمام عملیات یا باید به طور کامل اجرا شوند یا اصلا نباید اجرا شوند.
در سیستمهای ترمیم سرویس، پشتیبان, دادهها را پس از رخ دادن نقص در سایت اولیه ترمیم کرده و سپس یک سایت اولیه جدید میگیرند. پس از اینکه سایت اولیه اصلی ترمیم شد، سایت ترمیم شده یا به عنوان سایت اولیه به فعالیت خود ادامه میدهد یا خود را به عنوان سایت پشتیبان معرفی میکند. یک سیستم ترمیم داده در صورتی که اجزای سخت افزاری تکرار شده کافی در سایت پشتیبان با مد خرابی غیر وابسته داشته باشد می تواند به یک سیستم ترمیم سرویس ارتقا یابد.
اگر سایت پشتیبان یک سیستم ترمیم سرویس قبل از گرفتن سایت اولیه جدید منتظر ترمیم داده باشد ، کاربر مدت زیادی معطل خواهد شد. بنابراین بعضی از سیستم ها برای پذیرفتن سرویس جدید درخواست شده از سوی کاربر در حالی که دادهها در حال ترمیم هستند طراحی میشوند. به سیستم با این ویژگی سیستم بدون وقفه می گویند.یک نمونه سیستم های بدون وقفه جفتی هستند.[2]
روش تکرار داده انفعالی[2] برای مقاومت در برابر خطاهای گذرا، خطا های رسانهای وCrash کردن پردازنده طراحی شده است. روش های عادی تکرار انفعالی شامل روش دیسک منعکس شده، RAID، دیسک منعکس شده دور و روش سایت اولیه است.
روش دیسک منعکس[3] شده فقط یک خطای رخ داده در دیسک ها را تحمل می کند که این کار را با داشتن دو دیسک یکسان که به صورت همزمان در سرتاسر یک کنترلر دیسک عادی تغییر می یابند انجام می دهد. هر کدام از دیسکهای در حال کار برای سرویس دهی به درخواست داده کافی می باشند. این سیستم دیسک بسیار گران بوده و در مقابل رخ دادن یک فاجعه (disaster) غیر قابل ترمیم است.[1]
روش RAID یک گروه از G دیسک داده به اضافه یک دیسک توازن[4] که به کنترلر دیسک عادی متصل است می باشد. بلاک توازن ، exclusive-or G بلاک دادهی متناظرش را ذخیره میکند. خواندن یک بلاک داده از RAID به خواندن بلاک از یک دیسک داده مناسب برگردانده میشود. نوشتن یک بلاک داده به دیسک شامل نوشتن بلاک داده به دیسک به علاوه تغییر بلاک توازن متناظر آن است. روش RAID می تواند عمل خود را با وجود رخ دادن یک خرابی دیسک ادامه دهد. عمومی ترین روش RAID سطح 5 نامیده میشود. در این روش بلاکهای داده و بلاکهای توازن بین دیسکهایی که بار کار را به صورت مساوی پخش کرده و تنگراهها به دیسک توازن را برداشتهاند تقسیم میشوند. هم دیسک منعکس شده و هم RAID در مقابل فجایع (disaster) قابل ترمیم نیستند.
روش دیسک منعکس شده دور[5] یک بسط از روش دیسک منعکس شده است. تغییرات به دیسک منعکس شدهای که در سایتی دور در طول یک شبکه قرار دارند به صورت غیر همزمان اعمال میشوند. این روش در مقابل حادثهای که در سایت اولیه رخ می دهد قابل ترمیم است هر چند که دادههای منتشر نشده به سایت دور از بین میروند. روش دیسک منعکس شده دور میتواند با استفاده از بیش از یک نسخه پشتیبان به روش سایت اولیه تعمیم پیدا کند. تغییرات در سایت اولیه انجام شده و سپس به سایت ثانویه به صورت غیر همزمان منتشر میشوند. برای ترمیم خطای رخ داده شده در سایت اولیه، یکی از سایتهای ثانویه به عنوان اولیه جدید انتخاب میشود.
در روش تکرار داده فعال [6]، سایتهای پشتیبان به اندازه کافی قدرت پردازشی و منابع مورد نیاز برای تسهیم بار کاری سایت اولیه را دارا هستند. در روش توافق اکثریت[7]، یک عمل تنها وقتی که اکثریت سایت ها با انجام آن موافق باشند قابل انجام است. بازده این روش بالاتر است ولی هزینه عمل خواندن و نیز نوشتن متوسط است. توافق اکثریت می تواند به روش توافق حد نصاب تعمیم پیدا کند . به جای گرفتن رضایت اکثریت سایت ها برای یک عمل خاص ، فقط رضایت یکسری سایت مرتبط که به نام حد نصاب یا quorum هستند نیاز است . پروتکل های توافق حد نصاب در سایز quorum ها ،overhead و تحمل پذیری خطا متفاوت هستند.