ترمیم در سیستمهای توزیع شده
This presentation is the property of its rightful owner.
Sponsored Links
1 / 36

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


  • 93 Views
  • Uploaded on
  • Presentation posted in: General

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

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


7000749

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

فصل 12 از کتاب singhal

Advanced Operating Systems

Sharif University of Technology


7000749

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

  • هدف: بازگرداندن سیستم به حالت معمولی و نرمال خود.

    • تغییرات داده شده بوسیله پردازه خطا در undo شوند.

    • منابع اختصاص داده شده پس گرفته شوند.

  • ایده آل: اعمال پردازه مواجه شده با خطا از همان نقطه خطا ادامه یابد (؟).  عدم اجرای مجدد بخشهای انجام شده از پردازه فوق.

  • همروندی و ترمیم! اثر یک پردازه روی پردازه های دیگر.


7000749

ترمیم به جلو – ترمیم به عقب

  • وظیفه Failure Recoveryبرگرداندن حالت سیستم (حالت مغلوط) به یک حالت بدون خطاست.

    • اگر طبیعت خطای ایجاد شده دقیقاً ارزیابی شود می توان اشکال را مرتفع کرد و پردازه را قادر به حرکت به جلو کرد: Forward Error Recovery

    • اگر نمی‌توان طبیعت خطای ایجاد شده را پیش بینی کرد، سیستم کار خود را از یک حالت بدون خطا ادامه می دهد:Backward Error Recovery

      راحت تر

      Performance penalty

      عدم وجود تضمین برای عدم تکرار خطا در اجرای مجدد


B e r

ترمیم به عقب (B.E.R)

  • نقاطی که می توان به آنها ارجاع و اعتماد کرد را نقاط ترمیم (Recovery Points) گویند.

  • بازیابی نقاط ترمیم یعنی جایگزینی حالت فعلی پردازه ای با حالت آن پردازه در نقطه ترمیم.

  • مدل سیستم:

    در اثر بروز خطا محتوای خود

    را از دست نمی دهد.

    برای ذخیره Log و نقاط ترمیم

CPU

حافظه اصلی

Secondary Storage

Stable Storage


7000749

پیاده سازی BER

  • دو روش:

  • روش مبتنی بر اعمال (Operation Based) :

    • اعمال در سیستم ثبت می شوند طوری که با undo کردن اعمال می توان به حالت قبلی دست یافت. مثال: اعمال یک تراکنش

  • تغییر در جا (UPDATE-IN-PLACE)

    نام شیئ

    • بروزآوری در جا و ثبت عمل در Log:: رکورد Logحالت قدیمی شیئ

      حالت جدید شیئ


7000749

پیاده سازی BERادامه

  • ترمیم‌پذیری تغییرات را می توان با اعمال زیر پیاده سازی کرد:

    • do: انجام یک عمل و ثبت در Log

    • Undo: خنثی کردن عمل انجام شده بوسیله do

    • Redo: اجرای مجدد عمل انجام شده بوسیله do

  • برق رفتگی بین انجام یک عمل و نوشتن log؟ WAL

  • در WAL:

    • بروزآوری وقتی انجام می شود که undo logمربوط به آن نوشته شده باشد.

    • قبل از نهایی شدن یک بروزآوری، مطمئن شویم که undo log, redo logثبت شده باشند.


7000749

روش مبتنی بر حالت

2- روش مبتنی بر حالت

  • ایجاد نقطه ترمیم در هر مقطع با ثبت کل حالت سیستم (checkpointing)

  • ارجاع به checkpoint پس از رخداد خطا: : rollback

  • تلاش در rollback به آخرین حالت ممکن و سازگار

    معمولاً در طی اجرای یک پردازه، checkpointهای زیادی گرفته می شود.

  • Shadow pagingحالت خاصی از ترمیم مبتنی بر حالت


7000749

ترمیم در سیستمهای همروند

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


Domino

پیغام یتیم – اثر دامینو (Domino)

  • خطای X بازگشت به X3

  • خطای Y بازگشت به Y2 (!)

  • m ارسال نشده است ولی دریافت شده است! (پیغام یتیم) لزوم ارجاع X به X2 و

  • خطای Z  بازگشت به Z2 لزوم بازگشت X و Y به X1و Y1 و متعاقب آن

    بازگشت Z به Z1 :: اثر دامینو:: تأثیر بازگشت یک پردازه روی بازگشت دیگر پردازه‌ها

X2

X1

X3

X

m

Y2

Y1

Y

Z

Z1

Z2


Lost msg

Lost msg

  • ارجاع X و Y به X1و Y1

  • m را پیغام گم‌شده نامیم.

X1

X

Y

Y1


Livelock

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


Checkpoints

مجموعه‌ای سازگار از checkpoints

  • نقطه مقابله محلی

  • مجموعه ای از نقاط مقابله محلی (از هر سایت یکی) را نقطه مقابله سراسری

  • مجموعه ای قویاً سازگار از نقاط مقابله: مجموعه‌ای که هیچ جریان اطلاعاتی با بیرون از خود نداشته باشد.

  • مجموعه ای سازگار از نقاط مقابله: مجموعه‌ای که در آن هر پیغام دریافت شده ارسالش نیز ثبت شده باشد.

    • با پیغام گم شده کاری نداریم.


7000749

روش ایجاد مجموعه‌ای سازگار از نقاط مقابله

  • با فرض اتمیک بودن ارسال و دریافت پیغام و همچنین انجام نقطه مقابله

  • اگر هر پردازه پس از هر پیغام یک نقطه مقابله ایجاد کند، مجموعه اخیرترین نقاط مقابله همیشه سازگار خواهد بود.

    بازگشت هر پردازه به آخرین حالت ثبت شده خود منجر به پیغام نمی شود.

  • راه حل گران است. اگر پس از هر ارسال k پیغام یکبار این کار را انجام دهیم اثر دامینو داریم!


Toueg koo

الگوریتم Toueg ,Kooبرای ایجاد همگام نقاط مقابله

  • فرضیات

    • کانالها FIFO

    • خطای ارتباطی منجر به افراز شبکه نمی شود

    • دو نوع نقطه مقابله:

      • موقت (آزمایشی): یک نقطه مقابله موقت است که ممکن است به دائمی تبدیل شود، را روی حافظه پایدار ایجاد می‌کند.

      • دائمی :بخشی از یک نقطه مقابله سراسری است و به آن ارجاع می‌شود.

    • عدم اجرای همروند این الگوریتم

    • عدم وجود خطای سایت در حین اجرای الگوریتم


Toueg koo1

الگوریتم Toueg ,Kooبرای ایجاد همگام نقاط مقابله -ادامه

  • فاز اول الگوریتم:

    • Piیک C آزمایشی می‌گیرد و از دیگر پردازه‌ها هم درخواست C آزمایشی می‌کند. هر پردازة دیگر موفقیت خود را در این کار به Pi اعلام می‌کند. اگر همه موفق بودند Pi اعلام می‌کند که دائمی تلقی شود وگرنه دور ریخته شود.

  • فاز دوم الگوریتم:

    • اعلام تصمیم Pi در پایان مرحله اول به همه  یا همه C دائمی می‌گیرند یا نه.

    • فرض می‌کنیم که در فاصله بین C آزمایشی و دریافت تصمیم آغازگر، پیغامی ارسال نمی‌شود.  حالت ناسازگار بوجود نخواهد آمد.


7000749

بهینه سازی در الگوریتم Koo، ...

  • اگر لازم نیست که پردازه‌ای C جدیدی بگیرد!؟

  • اگر X پس از دریافت m تصمیم به C بگیرد منجر به {X2, Y2, Z2} خواهد شد در حالی که X2, Y2, Z1}} هم سازگار هستند. اگر پیغامی ارسال نشده است میتوان C آزمایشی را در یک سایت انجام نداد.

آزمایشی

X1

X2

X

m

Y2

Y1

Y

Z2

Z

Z1


7000749

روش اعمال

  • پیغام‌های کنترلی موردنظر نیستند.

  • هر پیغام یک برچسب دارد. m.l که در هر پردازه حالت افزایشی دارد.

  • فرض  کوچکترین و T بزرگترین برچسب باشد.

  • به ازاء هر Y ,X، فرض کنیم m آخرین پیغام دریافت شده پس از آخرین C باشد.

    • last-label-rcvdX[Y] =

    • first-label-sentX[Y] =


7000749

روش اعمالادامه

  • هرگاه 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 به آنها ارسال شود.


The algorithm

The 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.


The algorithm continued

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;


The algorithm continued1

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;


Rollback recovery

Rollback-Recovery

  • فرض: تنها یک پردازه الگوریتم را آغاز می کند و فراخوانی همروند الگوریتم را نداریم.

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

  • فاز دوم: Pi تصمیمش را به همه می فرستد و برآن اساس عمل می شود. مادام که پردازه ای منتظر پاسخ است پیغامی در رابطه با محاسباتش نمی فرستد.


Rollback recovery continued

Rollback-RecoveryContinued

  • باز هم بهینه سازی در مواردی که لازم نیست پردازه ای با آغازی را انجام دهد:

  • با رخدادخطا در X ، Z نیازی به بازآغازی ندارد.

X1

X2

X

Y2

Y1

Y

Z1

Z2

Z


Rollback recovery continued1

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


The algorithm1

The algorithm

  • Initial state at process P:

    Resume-execution := true;

    For all processes q, do

    Last-label-rcvdp[q] := T;

    Willing-to-rollp = yes / no ….

  • At initiator process Pi:

    For all processes p roll-cohortpi do

    Send Prepare-to-rollback(Pi, last-label-sentPi[p]) message;

    If all processes p roll-cohortpi do

    Send Roll-back message;

    Else

    For all processes proll-cohortpi do

    Send Donot-roll-back message;


The algorithm continued2

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 tp q;

    End;


The algorithm continued3

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; 


Async checkpointing recovery

Async Checkpointing & Recovery

  • معایب نقطه مقابله سازی همگام:

    • پیغامهای اضافی که در هر C مبادله می شوند.

    • تأخیرات همگانی که در حین C پیغام محاسباتی مبادله نمی شود.

    • سربار زیاد درخصوص سیستمهایی که خطای نادر بین هر دو C متوالی دارند.

  • در روش ناهمگام، هر پردازه (پردازنده) C خود را مستقل از دیگران می گیرد. تضمینی بر سازگاری مجموعه ای از Cهای محلی وجود ندارد.

    الگوریتم ترمیم باید اخیرترین مجموعه سازگار از Cها را قبل از آغاز ترمیم پیدا کند.

  • برای حداقل کردن میزان محاسبات undo شده در حین Rollback ، همه پیغامهای وارده Log می شوند تا احتمالا redo شوند.


Juang venkatesan

الگوریتمJuang & Venkatesan

  • در checkpointing ، فرض می کنیم که دو نوع Log داریم :

    • فرار: دسترسی سریع ولی فرّار

    • پایدار: هراز چندگاه یکبار ذخیره روی حافظه پایدار

  • هر پردازه پس از هر واقعه، سه تایی زیر را در حافظه فرّار ثبت می کند:

  • {s, m, msg-sent}

  • توجه: فرض بر event - driver سیستم است که با انتظار برای پیغام و رسیدن پیغام fireمی‌شود.

  • این همان نقطه مقابله محلی برای رخداد واقعه است.

مجموعه ای از پیغامها که در طی واقعه توسط پردازنده ارسال شده است

پیغام (شامل شناسه فرستنده) که رسیدنش باعث رخداد واقعه شده است

حالت پردازه قبل از رخداد واقعه


Juang venkatesan notations

الگوریتمJuang & Venkatesan :ساختمان داده‌های لازم و Notations

  • RCVDij(chpti)معرف تعداد پیغامهای رسیده از j به i است. باتوجه به اطلاعاتی که در chptiذخیره شده است.

  • SENTij(chpti)معرف تعداد پیغامهای ارسال شده از i به j باتوجه به chpti است.

  • ایده اصلی

    • ترمیم باید بتواند مجموعه ای سازگار از نقاط مقابله محلی پیدا کند هر پردازنده پیغامهای ارسالی و دریافتی خود به دیگران را می شمارد.

    • وقتی پردازنده ای rollback می کند، باید همه کنترل کنند که آیا پیغامهای دریافت شده‌اشان یتیم شده‌اند یا نه؟ (مقایسه پیغامهای دریافت کرده و ارسال شده). اگر وجود داشت، ارجاع به مرحلة قبلی و ......


Juang venkatesan1

الگوریتم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


7000749

الگوریتم:

  • فرض: هر پردازنده به محض بازآغازی، پیغامی منتشر می کند که fail کرده بود. الگوریتم بلافاصله پس از ترمیم از خطا و بازآغازی شروع می شود و یا با اطلاع از خطای پردازنده دیگر.

  • به خاطر پخش پیغام به همگان، الگوریتم در همه پردازنده‌ها آغاز می شود.

  • در پردازنده i:

  • اگر ترمیم یافته از خطاست:

    • آخرین واقعه Log شده در حافظه پایدار ckpti =

  • در غیر اینصورت

    • آخرین واقعه ای که رخ داده است ckpti =

      (اعم از روی حافظه فرار یا پایدار)


7000749

الگوریتم ادامه

for k:=1 to N do (*N is he # 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;


7000749

الگوریتم ادامه

  • مثال: در نظر بگیرید:

  • پس از رخداد خطا، 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


7000749

مثال ادامه

در دور اولدر ابتدا

  • X ckptX eX3RollBack(X,2) to Y, RollBack(X,0) to Z

  • Y ckptY eY2RollBack(Y,2) to X, RollBack(Y,1) to Z

  • Z ckptZ eZ2RollBack(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


7000749

مثال ادامه

  • در دور دوم:

    پیغام ارسالیسایت

    • 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 {مجموعه سازگاری است لزومی به عقبگرد بیش از این نیست.

  • در مرحله دوم و سوم وضعیت جدیدی ایجاد نمی شود.


  • Login