slide1
Download
Skip this Video
Download Presentation
ترمیم در سیستمهای توزیع شده

Loading in 2 Seconds...

play fullscreen
1 / 36

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


  • 125 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' ترمیم در سیستمهای توزیع شده' - palmer-graves


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
slide1

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

فصل 12 از کتاب singhal

Advanced Operating Systems

Sharif University of Technology

slide2
ترمیم در سیستمهای توزیع شده
  • هدف: بازگرداندن سیستم به حالت معمولی و نرمال خود.
    • تغییرات داده شده بوسیله پردازه خطا در undo شوند.
    • منابع اختصاص داده شده پس گرفته شوند.
  • ایده آل: اعمال پردازه مواجه شده با خطا از همان نقطه خطا ادامه یابد (؟).  عدم اجرای مجدد بخشهای انجام شده از پردازه فوق.
  • همروندی و ترمیم! اثر یک پردازه روی پردازه های دیگر.
slide3
ترمیم به جلو – ترمیم به عقب
  • وظیفه Failure Recoveryبرگرداندن حالت سیستم (حالت مغلوط) به یک حالت بدون خطاست.
    • اگر طبیعت خطای ایجاد شده دقیقاً ارزیابی شود می توان اشکال را مرتفع کرد و پردازه را قادر به حرکت به جلو کرد: Forward Error Recovery
    • اگر نمی‌توان طبیعت خطای ایجاد شده را پیش بینی کرد، سیستم کار خود را از یک حالت بدون خطا ادامه می دهد:Backward Error Recovery

راحت تر

Performance penalty

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

b e r
ترمیم به عقب (B.E.R)
  • نقاطی که می توان به آنها ارجاع و اعتماد کرد را نقاط ترمیم (Recovery Points) گویند.
  • بازیابی نقاط ترمیم یعنی جایگزینی حالت فعلی پردازه ای با حالت آن پردازه در نقطه ترمیم.
  • مدل سیستم:

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

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

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

CPU

حافظه اصلی

Secondary Storage

Stable Storage

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

نام شیئ

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

حالت جدید شیئ

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

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

  • ایجاد نقطه ترمیم در هر مقطع با ثبت کل حالت سیستم (checkpointing)
  • ارجاع به checkpoint پس از رخداد خطا: : rollback
  • تلاش در rollback به آخرین حالت ممکن و سازگار

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

  • Shadow pagingحالت خاصی از ترمیم مبتنی بر حالت
slide8
ترمیم در سیستمهای همروند
  • انجام یک کار مستلزم تبادل پیغام  بازگشت یک پردازه به نقطه ترمیم مستلزم بازگشت دیگر پردازه ها هم هست (در پردازه های متأثر از پردازه خطادار - پس از نقطه ترمیم)
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
  • نقطه مقابله محلی
  • مجموعه ای از نقاط مقابله محلی (از هر سایت یکی) را نقطه مقابله سراسری
  • مجموعه ای قویاً سازگار از نقاط مقابله: مجموعه‌ای که هیچ جریان اطلاعاتی با بیرون از خود نداشته باشد.
  • مجموعه ای سازگار از نقاط مقابله: مجموعه‌ای که در آن هر پیغام دریافت شده ارسالش نیز ثبت شده باشد.
    • با پیغام گم شده کاری نداریم.
slide13
روش ایجاد مجموعه‌ای سازگار از نقاط مقابله
  • با فرض اتمیک بودن ارسال و دریافت پیغام و همچنین انجام نقطه مقابله
  • اگر هر پردازه پس از هر پیغام یک نقطه مقابله ایجاد کند، مجموعه اخیرترین نقاط مقابله همیشه سازگار خواهد بود.

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

  • راه حل گران است. اگر پس از هر ارسال k پیغام یکبار این کار را انجام دهیم اثر دامینو داریم!
toueg koo
الگوریتم Toueg ,Kooبرای ایجاد همگام نقاط مقابله
  • فرضیات
    • کانالها FIFO
    • خطای ارتباطی منجر به افراز شبکه نمی شود
    • دو نوع نقطه مقابله:
      • موقت (آزمایشی): یک نقطه مقابله موقت است که ممکن است به دائمی تبدیل شود، را روی حافظه پایدار ایجاد می‌کند.
      • دائمی :بخشی از یک نقطه مقابله سراسری است و به آن ارجاع می‌شود.
    • عدم اجرای همروند این الگوریتم
    • عدم وجود خطای سایت در حین اجرای الگوریتم
toueg koo1
الگوریتم Toueg ,Kooبرای ایجاد همگام نقاط مقابله -ادامه
  • فاز اول الگوریتم:
    • Piیک C آزمایشی می‌گیرد و از دیگر پردازه‌ها هم درخواست C آزمایشی می‌کند. هر پردازة دیگر موفقیت خود را در این کار به Pi اعلام می‌کند. اگر همه موفق بودند Pi اعلام می‌کند که دائمی تلقی شود وگرنه دور ریخته شود.
  • فاز دوم الگوریتم:
    • اعلام تصمیم Pi در پایان مرحله اول به همه  یا همه C دائمی می‌گیرند یا نه.
    • فرض می‌کنیم که در فاصله بین C آزمایشی و دریافت تصمیم آغازگر، پیغامی ارسال نمی‌شود.  حالت ناسازگار بوجود نخواهد آمد.
slide16
بهینه سازی در الگوریتم Koo، ...
  • اگر لازم نیست که پردازه‌ای C جدیدی بگیرد!؟
  • اگر X پس از دریافت m تصمیم به C بگیرد منجر به {X2, Y2, Z2} خواهد شد در حالی که X2, Y2, Z1}} هم سازگار هستند. اگر پیغامی ارسال نشده است میتوان C آزمایشی را در یک سایت انجام نداد.

آزمایشی

X1

X2

X

m

Y2

Y1

Y

Z2

Z

Z1

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

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

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

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

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;

slide34
الگوریتم ادامه
  • مثال: در نظر بگیرید:
  • پس از رخداد خطا، 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

slide35
مثال ادامه

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

  • 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

slide36
مثال ادامه
  • در دور دوم:

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

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