1 / 36

ترمیم در سیستمهای توزیع شده

ترمیم در سیستمهای توزیع شده. فصل 12 از کتاب singhal Advanced Operating Systems Sharif University of Technology. ترمیم در سیستمهای توزیع شده. هدف : بازگرداندن سیستم به حالت معمولی و نرمال خود. تغییرات داده شده بوسیله پردازه خطا در undo شوند. منابع اختصاص داده شده پس گرفته شوند.

tyme
Download Presentation

ترمیم در سیستمهای توزیع شده

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ترمیم در سیستمهای توزیع شده فصل 12 از کتاب singhal Advanced Operating Systems Sharif University of Technology

  2. ترمیم در سیستمهای توزیع شده • هدف: بازگرداندن سیستم به حالت معمولی و نرمال خود. • تغییرات داده شده بوسیله پردازه خطا در undo شوند. • منابع اختصاص داده شده پس گرفته شوند. • ایده آل: اعمال پردازه مواجه شده با خطا از همان نقطه خطا ادامه یابد (؟).  عدم اجرای بخشهای انجام شده از پردازه فوق. • همروندی و ترمیم! اثر یک پردازه روی پردازه های دیگر.

  3. ترمیم به جلو – ترمیم به عقب • وظیفه Failure Recoveryبرگرداندن حالت سیستم (حالت مغلوط) به یک حالت بدون خطاست. • اگر طبیعت خطای ایجاد شده دقیقاً ارزیابی شود می توان اشکال را مرتفع کرد و پردازه را قادر به حرکت به جلو کرد: Forward Error Recovery • اگر نمی‌توان طبیعت خطای ایجاد شده را پیش بینی کرد، سیستم کار خود را از یک حالت بدون خطا ادامه می دهد:Backward Error Recovery راحتتر Performance penalty عدم وجود تضمین برای عدم تکرار خطا در اجرای مجدد

  4. ترمیم به عقب (B.E.R) • نقاطی که می توان به آنها ارجاع و اعتماد کرد را نقاط ترمیم(Recovery Points) گویند. • بازیابی نقاط ترمیم یعنی جایگزینی حالت فعلی پردازه ای با حالت آن پردازه در نقطه ترمیم. • مدل سیستم: در اثر بروز خطا محتوای خود را از دست نمی دهد. برای ذخیره Log و نقاط ترمیم CPU حافظه اصلی Secondary Storage Stable Storage

  5. پیاده سازی BER • دو روش: • روش مبتنی بر اعمال (Operation Based) : • اعمال در سیستم ثبت می شوند طوری که با undo کردن اعمال می توان به حالت قبلی دست یافت. مثال: اعمال یک تراکنش • تغییر در جا (UPDATE-IN-PLACE) نام شیئ • بروزآوری در جا و ثبت عمل در Log:: رکورد Logحالت قدیمی شیئ حالت جدید شیئ

  6. پیاده سازی BERادامه • ترمیم‌پذیری تغییرات را می توان با اعمال زیر پیاده سازی کرد: • do: انجام یک عمل و ثبت در Log • Undo: خنثی کردن عمل انجام شده بوسیله do • Redo: اجرای مجدد عمل انجام شده بوسیله do • برق رفتگی بین انجام یک عمل و نوشتن log؟ WAL • در WAL: • بروزآوری وقتی انجام می شود که undo logمربوط به آن نوشته شده باشد. • قبل از نهایی شدن یک بروزآوری، مطمئن شویم که undo log, redo logثبت شده باشند.

  7. پیاده سازی BERادامه 2- روش مبتنی بر حالت • ایجاد نقطه ترمیم در هر مقطع با ثبت کل حالت سیستم ( checkpointing) • ارجاع به checkpoint پس از رخداد خطا: : rollback • تلاش در rollback به آخرین حالت ممکن و سازگار معمولاً در طی اجرای یک پردازه، checkpointهای زیادی گرفته می شود. • Shadow pagingحالت خاصی از ترمیم مبتنی بر حالت

  8. ترمیم در سیستمهای همروند • انجام یک کار مستلزم تبادل پیغام  بازگشت یک پردازه به نقطه ترمیم مستلزم بازگشت دیگر پردازه ها هم هست (در پردازه های متأثر از پردازه خطادار - پس از نقطه ترمیم)

  9. پیغام یتیم – اثر دامینو (Domino) X2 X1 X3 • خطای X بازگشت به X3 • خطای Y بازگشت به Y2 (!) • m ارسال نشده است ولی دریافت شده است! (پیغام یتیم) لزوم ارجاع X به X2 و • خطای Z بازگشت به Z2 لزوم بازگشت X و Y به X1و Y1 و متعاقب آن بازگشت Z به Z1 :: اثر دامینو:: تأثیر بازگشت یک پردازه روی بازگشت دیگر پردازه‌ها X m Y2 Y1 Y Z Z1 Z2

  10. Lost msg • ارجاع X و Y به X1و Y1 • m را پیغام گم‌شده نامیم. X1 X Y Y1

  11. LiveLock • وقتی رخ می دهد که رخداد دو خطا باعث تعدادی نامتناهی ارجاع داشته باشیم و لذا مانع پیشرفت کار سیستم. • n1در راه است. Y به Y1و بواسطه وجود پیغام یتیم m1، X بهX1 باز می گردد. m1 و n1دوباره ارسال می شوند. معهذا نسخه در راه به Y می‌رسد. با رسیدن n1، m2 ارسال شده است. Y نیز n2 را ارسال و m2را دریافت می کند ولی در حالت سیستم اثری از ارسال n1وجود ندارد. لزوم ارجاع به عقب در Y و..... X1 X n1 m1 Y Y1 خطا X n2 m2 Y n1 Roll-back

  12. مجموعه‌ای سازگار از نقاط مقابله • نقطه مقابله محلی • مجموعه ای از نقاط مقابله محلی (از هر سایت یکی) را نقطه مقابله سراسری می ناميم. • مجموعه ای قویاً سازگار از نقاط مقابله: مجموعه‌ای که هیچ جریان اطلاعاتی با بیرون از خود نداشته باشد. • مجموعه ای سازگار از نقاط مقابله: مجموعه‌ای که در آن هر پیغام دریافت شده ارسالش نیز ثبت شده باشد. • با پیغام گم شده کاری نداریم.

  13. روش ایجاد مجموعه‌ای سازگار از نقاط مقابله • با فرض اتمیک بودن ارسال و دریافت پیغام و همچنین انجام نقطه مقابله • اگر هر پردازه پس از هر پیغام یک نقطه مقابله ایجاد کند، مجموعه اخیرترین نقاط مقابله همیشه سازگار خواهد بود. بازگشت هر پردازه به آخرین حالت ثبت شده خود منجر به پیغام يتيم نمی شود. • راه حل گران است. اگر پس از هر ارسال k پیغام یکبار این کار را انجام دهیم نيز اثر دامینو خواهيم داشت!

  14. الگوریتم Toueg ,Kooبرای ایجاد همگام نقاط مقابله • فرضیات • کانالها FIFO • خطای ارتباطی منجر به افراز شبکه نمی شود • دو نوع نقطه مقابله: • موقت (آزمایشی): یک نقطه مقابله موقت است که ممکن است به دائمی تبدیل شود را روی حافظه پایدار ایجاد می‌کند. • دائمی :بخشی از یک نقطه مقابله سراسری است و به آن ارجاع می‌شود. • عدم اجرای همروند این الگوریتم • عدم وجود خطای سایت در حین اجرای الگوریتم

  15. الگوریتم Toueg ,Kooبرای ایجاد همگام نقاط مقابله - ادامه • فاز اول الگوریتم: • Piیک C آزمایشی می‌گیرد و از دیگر پردازه‌ها هم درخواست C آزمایشی می‌کند. هر پردازة دیگر موفقیت خود را در این کار به Pi اعلام می‌کند. اگر همه موفق بودند Pi اعلام می‌کند که دائمی تلقی شود وگرنه دور ریخته شود. • فاز دوم الگوریتم: • اعلام تصمیم Pi در پایان مرحله اول به همه  یا همه C دائمی می‌گیرند یا نه. • فرض می‌کنیم که در فاصله بین C آزمایشی و دریافت تصمیم آغازگر پیغامی ارسال نمی‌شود.  حالت ناسازگار بوجود نخواهد آمد.

  16. بهینه سازی در الگوریتم Koo، ... • اگر لازم نیست که پردازه‌ای C جدیدی بگیرد!؟ • اگر X پس از دریافت m تصمیم به C بگیرد منجر به {X2, Y2, Z2} خواهد شد در حالی که X2, Y2, Z1}} هم سازگار هستند. اگر پیغامی ارسال نشده است میتوان C آزمایشی را در یک سایت انجام نداد. آزمایشی X1 X2 X m Y2 Y1 Y Z2 Z Z1

  17. روش اعمال • پیغام‌های کنترلی موردنظر نیستند. • هر پیغام یک برچسب دارد. m.l که در هر پردازه حالت افزایشی دارد. • فرض  کوچکترین و T بزرگترین برچسب باشد. • به ازاء هر Y ,X ، فرض کنیم m آخرین پیغام دریافت شده پس از آخرین C باشد. • last-label-rcvdX[Y] = • first-label-sentX[Y] =

  18. روش اعمالادامه • هرگاه X از Y درخواست می‌کند که یک C آزمایشی بگیرد، همراه درخواستش last-label-rcvdX[Y] را هم می‌فرستد. Y تنها وقتی C می گیرد که • last-label-rcvdX[Y]  first-label-sentY[X] >  • یعنی X رسید تعدادی پیغام را ثبت کرده است که پس از آخرین C در Y ارسال شده‌اند. Y هم باید واقعه ارسال آنها را ثبت کند. • Chkpt-cohortX = {Y | last-label-rcvdX[Y] > } همه سایتهایی که باید درخواست C به آنها ارسال شود.

  19. The Checkpoint Algorithm • Initial state at all processes p: For all processes q do first-label-sentp[q] := ; OK-to-take-ckptp = • At initiator process Pi: For all processes pckpt-cohort pi do Send Take-a-tentative-ckpt(Pi, last-label-rcvd pi[p]) message; If all processes replied “yes” then For all processes pckpt-cohort pi do Send Make-tentative-ckpt-permanent; else For all processes pckpt-cohort pi do Send Undo-tentative-ckpt.

  20. The algorithm Continued • At all processes p: • Upon receiving Take-a-tentative-ckpt(q, last-label-rcvd q[p]) message from q do Begin If OK-to-take-ckptp = “yes” AND last-label-rcvd q[p]  first-label-sentp[q] >  then begin take a tentative checkpoint; for all processes rckpt-cohort p do Send Take-a-tentative-ckpt(P,last-label-rcvd p[r]) message; If all processes rckpt-cohort preplied “yes” then OK-to-take-ckptp := “yes” else OK-to-take-ckptp = “no” End; Send (p, OK-to-take-ckptp) to q; end;

  21. The algorithm Continued • At all processes p: • Upon receiving Make-tentative-ckpt-permanent message do Begin Make tentative checkpoint permanent; For all processes rckpt-cohort p do Send Make-tentative-ckpt-permanent message; End; • Upon receiving Undo-tentative-ckpt-permanent message do Begin Undo tentative checkpoint; For all processes rckpt-cohort p do Send Undo-tentative-ckpt-permanent message; End;

  22. Rollback-Recovery • فرض: تنها یک پردازه الگوریتم را آغاز می کند و فراخوانی همروند الگوریتم را نداریم. • فاز اول: آغازگر (Pi) کنترل میکند که آیا همه پردازه ها علاقمند به بازآغازی از آخرین C خود هستند یا نه؟ پردازه ای که در C یا R آغاز شده بوسیله دیگری درگیر است پاسخ "no" می دهد. در صورت مثبت بودن پاسخ همه، بازآغازی اعلام می‌شود. • فاز دوم: Pi تصمیمش را به همه می فرستد و برآن اساس عمل می شود. مادام که پردازه ای منتظر پاسخ است پیغامی در رابطه با محاسباتش نمی فرستد.

  23. Rollback-RecoveryContinued • باز هم بهینه سازی در مواردی که لازم نیست پردازه ای با آغازی را انجام دهد: • با رخداد در X ، Z نیازی به بازآغازی ندارد. X1 X2 X Y2 Y1 Y Z1 Z2 Z

  24. Rollback-RecoveryContinued • تعریف: • Last-Label-SentX[Y] = • وقتی x از y می خواهد که به آخرین C دائمی اش برگرددLast-Label-SentX[Y]را هم می فرستد. Y به شرطی به آخرین C خود بر می گردد که Last-Label-RcvdY[X] > Last-Label-SentX[Y] • یعنی X متمایل به ارجاع به حالتی است که ارسال یک یا چند پیغام ازX به y، undo شود. • roll-cohortX = {Y|X can send msgs to Y} Largest Value

  25. The Recovery Algorithm • Initial state at process P: Resume-execution := true; For all processes q, do Last-label-rcvdp[q] := T; Willing-to-rollp = • At initiator process Pi: For all processes p roll-cohortpi do Send Prepare-to-rollback (Pi, last-label-sentPi[p]) message; If all processes replied “Yes” then for all p roll-cohortpi do Send Roll-back message; else for all processes proll-cohortpi do Send Donot-roll-back message;

  26. The algorithm Continued • At all processes p: Upon receiving Prepare-to-rollback(q, last-label-sentq[p]) message from q do Begin If willing-to-rollp AND last-label-rcvdp[q] > last-label-sentq[p] AND (resume-executionp) Then Begin Resume-executionp := false; For all processes r  roll-cohortpdo Send Prepare-to-rollback(p, last-label- sentp[r]) message; If all processes r  roll-cohortp replied “yes” then willing-to-rollp := “yes” else willing-to-rollp := “no” end; Send (p, willing-to-rollp) message tpq; End;

  27. The algorithm Continued Upon receiving Roll-back message AND if resume-executionp= false do Begin Restart from p’s permanent checkpoint; For all processes rroll-cohortp do Send Roll-back message; End; Upon receiving Donot-roll-back message do Begin Resume execution; For all processes rroll-cohortp do Send Roll-back message; End; 

  28. AsyncCheckpointing & Recovery • معایب نقطه مقابله سازی همگام: • پیغامهای اضافی که در هر C مبادله می شوند. • تأخیرات همگانی که در حین C پیغام محاسباتی مبادله نمی شود. • سربار زیاد درخصوص سیستمهایی که خطای نادر بین هر دو C متوالی دارند. • در روش ناهمگام، هر پردازه (پردازنده) C خود را مستقل از دیگران می گیرد. تضمینی بر سازگاری مجموعه ای از Cهای محلی وجود ندارد. الگوریتم ترمیم باید اخیرترین مجموعه سازگار از Cها را قبل از آغاز ترمیم پیدا کند. • برای حداقل کردن میزان محاسبات undo شده در حین Rollback ، همه پیغامهای وارده Log می شوند تا احتمالا redo شوند.

  29. الگوریتمJuang & Venkatesan • در checkpointing ، فرض می کنیم که دو نوع Log داریم : • فرار: دسترسی سریع ولی فرّار • پایدار: هراز چندگاه یکبار ذخیره روی حافظه پایدار • هر پردازه پس از هر واقعه، سه تایی زیر را در حافظه فرّار ثبت می کند: • {s, m, msg-sent} • توجه: فرض بر event-driven بودن سیستم است که با انتظار برای پیغام و رسیدن پیغام fireمی‌شود. • این همان نقطه مقابله محلی برای رخداد واقعه است. مجموعه ای از پیغامها که در طی واقعه توسط پردازنده ارسال شده است پیغام (شامل شناسه فرستنده) که رسیدنش باعث رخداد واقعه شده است حالت پردازه قبل از رخداد واقعه

  30. الگوریتمJuang & Venkatesan:ساختمان داده‌های لازم و Notations • RCVDij(chpti)معرف تعداد پیغامهای رسیده از j به i است. باتوجه به اطلاعاتی که در chptiذخیره شده است. • SENTij(chpti)معرف تعداد پیغامهای ارسال شده از i به j باتوجه به chpti است. • ایده اصلی • ترمیم باید بتواند مجموعه ای سازگار از نقاط مقابله محلی پیدا کند هر پردازنده پیغامهای ارسالی و دریافتی خود به دیگران را می شمارد. • وقتی پردازنده ای rollback می کند، باید همه کنترل کنند که آیا پیغامهای دریافت شده‌اشان یتیم شده‌اند یا نه؟ (مقایسه پیغامهای دریافت کرده و ارسال شده). اگر وجود داشت، ارجاع به مرحلة قبلی و ......

  31. الگوریتمJuang & Venkatesanادامه • اگر Y به eY1 عقبگرد کند، Y یک پیغام به X فرستاده است ولی X دوتا پیغام از Y دریافت کرده است.X باید به حالت قبل از eX2 عقبگرد کند تا با Y سازگار باشد.Zهم باید عقبگرد کند. ex0 ex1 ex2 ex3 X ey3 ey1 ey2 ey0 Y ez0 ez1 ez2 ez3 Z

  32. الگوریتم: • فرض: هر پردازنده به محض بازآغازی، پیغامی منتشر می کند که fail کرده بود. الگوریتم بلافاصله پس از ترمیم از خطا و بازآغازی شروع می شود و یا با اطلاع از خطای پردازنده دیگر. • به خاطر پخش پیغام به همگان، الگوریتم در همه پردازنده‌ها آغاز می شود. • در پردازنده i: • اگر ترمیم یافته از خطاست: • آخرین واقعه Log شده در حافظه پایدار ckpti = • در غیر اینصورت • آخرین واقعه ای که رخ داده است ckpti = (اعم از روی حافظه فرار یا پایدار)

  33. الگوریتم ادامه for k:=1 to N do (* N is the # of processors *) begin for each neighboring process j do Send ROLLBACK(I, SENTij(ckpti)) msg; wait for ROLLBACK msg from every neighbor • (چون همه در حال اجرای الگوریتم هستند پس به همسایه ها پیغام را می فرستند). for every ROLLBACK(j,c) received from j, i does the following: if RCVDij(ckpti) > c then /* وجود پیغام یتیم*/ begin find the latest event e such that RCVDij(e)cj; ckpti := e; end; end;

  34. الگوریتم ادامه • مثال: در نظر بگیرید: • پس از رخداد خطا، Y بهY1 برمی‌گردد. ey2نیز آخرین واقعة ثبت شده در log است. چون برگشت از خطا را پخش می کند X و Z هم الگوریتم را شروع می کنند. X1 ex0 ex1 ex2 ex3 X ey3 ey1 ey2 Y1 ey0 Y failure ez0 ez1 ez2 ez3 Z Z1

  35. مثال ادامه در دور اول در ابتدا • X ckptX eX3 RollBack(X,2) to Y, RollBack(X,0) to Z • Y ckptY eY2 RollBack(Y,2) to X, RollBack(Y,1) to Z • Z ckptZ eZ2 RollBack(Z,0) to X, RollBack(Z,1) to Y • در X، چون RCVDXY(ckptX) = 3> 2ckptX eX2 و لذا داریم: • RCVD XY(eX2) = 2  2 • در Z داریم RCVDZY(ckptZ) = 2> 1پس ckptZ = eZ1 ارجاع به عقب • در Y، پس Y نیاز به عقبگرد در این مرحله ندارد. دریافتی از پیغام RollBack

  36. مثال ادامه • در دور دوم: پیغام ارسالی سایت • YRollBack(Y,2) to X, RollBack(Y,1) to Z • XRollBack(X,0) to Z, RollBack(X,1) to Y • ZRollBack(Z,1) to Y, RollBack(Z,0) to X • مقدار ckpt در Z, Y, X بترتیب ex2 ، eY2، eZ1 است. • چون مجموعه ex2}، eY2،eZ1 {مجموعه سازگاری است لزومی به عقبگرد بیش از این نیست. • در مرحله دوم و سوم وضعیت جدیدی ایجاد نمی شود.

More Related