دانشگاه صنعتی امیرکبیر دانشکده مهدسی پزشکی سمینار درس کنترل سیستمهای عصبی-عضلانی
ترمیم در سیستمهای توزیع شده
-
Upload
palmer-graves -
Category
Documents
-
view
77 -
download
0
description
Transcript of ترمیم در سیستمهای توزیع شده
singhal از کتاب 12فصل
Advanced Operating Systems
Sharif University of Technology
ترمیم در سیستمهای توزیع شده
نرم�ال :هدف و معم�ولی ح�الت ب�ه بازگردان�دن سیس�تم خود.
تغییرات داده شده بوسیله پردازه خطا درundo.شوند .منابع اختصاص داده شده پس گرفته شوند
ده آل�هم�ان :ای از خط�ا ب�ا ش�ده مواج�ه پ�ردازه اعم�ال ع�دم اج�رای مج�دد بخش�های . نقط�ه خط�ا ادام�ه یاب�د )؟(انجام شده از پردازه فوق.
.همروندی و ترمیم! اثر یک پردازه روی پردازه های دیگر
ترمیم به جلو – ترمیم به عقب
وظیف�هFailure Recovery برگردان�دن ح�الت سیس�تم )ح�التمغلوط( به یک حالت بدون خطاست.
ارزی�ابی ش�ود می 1. I دقیق�ا ایج�اد ش�ده اگ�ر ط�بیعت خط�ای ت�وان اش�کال را مرتف�ع ک�رد و پ�ردازه را ق�ادر ب�ه ح�رکت ب�ه
Forward Error Recoveryجلو کرد:
اگ�ر نمی ت�وان ط�بیعت خط�ای ایج�اد ش�ده را پیش بی�نی ک�رد، 2. :سیس�تم ک�ار خ�ود را از ی�ک ح�الت ب�دون خط�ا ادام�ه می ده�د
Backward Error Recovery
راحت ترPerformance penalty
عدم وجود تضمین برای عدم تکرار خطا در اجرای مجدد
(B.E.R)ترمیم به عقب نق�اطی ک�ه می ت�وان ب�ه آنه�ا ارج�اع و اعتم�اد ک�رد را نق�اط
گویند.(Recovery Points)ترمیم بازی�ابی نق�اط ت�رمیم یع�نی ج�ایگزینی ح�الت فعلی پ�ردازه ای
با حالت آن پردازه در نقطه ترمیم.مدل سیستم :
در اثر بروز خطا محتوای خود را از دست نمی دهد.
و نقاط ترمیمLogبرای ذخیره
CPU
حافظه اصلی
Stable Storage
Secondary Storage
BERپیاده سازی
ادامه BERپیاده سازی
ترمیم پ�ذیری تغی�یرات را می ت�وان ب�ا اعم�ال زی�ر پی�اده س�ازیکرد:
do انجام یک عمل و ثبت در :LogUndo خنثی کردن عمل انجام شده بوسیله :doRedo اجرای مجدد عمل انجام شده بوسیله :do
برق رفتگی بین انجام یک عمل و نوشتنlog ؟ WAL درWAL :
بروزآوری وق�تی انج�ام می ش�ود ک�هundo log مرب�وط ب�ه آننوشته شده باشد.
که بروزآوری، مطمئن شویم یک نهایی شدن از undoقبل log, redo log .ثبت شده باشند
- روش مبتنی بر حالت2روش مبتنی بر حالت ایج�اد نقط�ه ت�رمیم در ه�ر مقط�ع ب�ا ثبت ک�ل ح�الت سیس�تم(checkpointing) ارجاع بهcheckpoint : :پس از رخداد خطا rollback
تالش درrollbackبه آخرین حالت ممکن و سازگار ،در طی اج�رای ی�ک پ�ردازه I ه�ای زی�ادی checkpointمعم�وًال
گرفته می شود.
Shadow paging حالت خاصی از ترمیم مبتنی بر حالت
ترمیم در سیستمهای همروند پیغ�ام تب�ادل مس�تلزم ک�ار ی�ک انج�ام
ت�رمیم نقط�ه ب�ه پ�ردازه ی�ک بازگش�ت هم ه�ا پ�ردازه دیگ�ر بازگش�ت مس�تلزم پ�ردازه از مت�أثر ه�ای پ�ردازه )در هس�ت
(پس از نقطه ترمیمخطادار -
(Domino)پیغام یتیم – اثر دامینو
خطایX بازگشت به X3
خطایY بازگشت به Y2)!(
m )ارس�ال نش�ده اس�ت ولی دری�افت ش�ده اس�ت! )پیغ�ام ی�تیم و X2 به Xلزوم ارجاع
خط�ایZ بازگش�ت ب�ه Z2 ل�زوم بازگش�ت X وY ب�ه X1 وY1و متعاقب آن
ت�أثیر بازگش�ت ی�ک پ�ردازه :: اث�ر دامین�و :: Z1 ب�ه Z بازگش�تروی بازگشت دیگر پردازه ها
X
Y
Z
X1X2 X3
Y1Y2
Z1 Z2
m
Lost msg
ارجاع X وY به X1 وY1
m.را پیغام گم شده نامیم
X
Y
X1
Y1
LiveLock
وق�تی رخ می ده�د ک�ه رخ�داد خط�ا ب�اعث تع�دادی نامتن�اهیارجاع داشته باشیم و لذا مانع پیشرفت کار سیستم.
n1 .در راه اس�تY ب�ه Y1 و بواس�طه وج�ود پیغ�ام ی�تیمm1، X گ�ردد X1به می ب�از m1 وn1 .ش�وند می ارس�ال دوب�اره
ارس�ال n1، m2 می رس�د. ب�ا رس�یدن Yمعه�ذا نس�خه در راه ب�ه را دری�افت می کن�د ولی m2 را ارس�ال و n2 ن�یز Yش�ده اس�ت.
ل�زوم ارج�اع وج�ود ن�دارد. n1در ح�الت سیس�تم اث�ری از ارس�ال و..... Yبه عقب در
X
Y
X1
Y1 خطا
m1
n1
X
Y
m2n2
Roll-backn1
مجموعه ای سازگار از checkpoints
نقطه مقابله محلی مجموع�ه ای از نق�اط مقابل�ه محلی )از ه�ر س�ایت
یکی( را نقطه مقابله سراسری:مقابل��ه نق��اط از س��ازگار I قوی��ا ای مجموع��ه
از ب�یرون ب�ا مجم�وعه ای ک�ه هیچ جری�ان اطالع�اتی خود نداشته باشد.
مجم�وعه ای مجموع�ه ای س�ازگار از نق�اط مقابل�ه :ک�ه �در آ�ن ه�ر� �پیغ�ام �در�ی�اف�ت �ش�ده �ار�س�ال�ش �ن�یز ثب�ت
شده باشد. .با پیغام گم شده کاری نداریم
روش ایجاد مجموعه ای سازگار از نقاط مقابله
پیغ�ام و اتمی�ک ب�ودن ارس�ال و دری�افت با ف�رض همچنین انجام نقطه مقابله
اگ�ر ه�ر پ�ردازه پس از ه�ر پیغ�ام ی�ک نقط�ه مقابل�همقاب�ل�ه اخ�یرت�رین �نق�اط مجمو�ع�ه کن�د،� ایج�اد�
همیشه سازگار خواهد بود. بازگش�ت ه�ر پ�ردازه ب�ه آخ�رین ح�الت ثبت ش�ده
خود منجر به پیغام نمی شود. ارس�ال ه�ر از اگ�ر پس اس�ت. گ�ران kراه ح�ل
اث�ر دهیم انج�ام را ک�ار این یکب�ار دامین�وپیغ�ام داریم!
برای ایجاد همگام نقاط Toueg ,Kooالگوریتم مقابله
فرضیات کانالهاFIFOخطای ارتباطی منجر به افراز شبکه نمی شود :دو نوع نقطه مقابله
)آزمایش�ی( ک�ه :موقت نقط�ه مقابل�ه م�وقت اس�ت ی�ک ممکن اس�ت ب�ه دائمی تب�دیل ش�ود، را روی حافظ�ه پای�دار
ایجاد می کند. بخش�ی از ی�ک نقط�ه مقابل�ه سراس�ری اس�ت و ب�ه :دائمی
آن ارجاع می شود.عدم اجرای همروند این الگوریتمعدم وجود خطای سایت در حین اجرای الگوریتم
برای ایجاد همگام نقاط مقابله Toueg ,Kooالگوریتم ادامه -
:فاز اول الگوریتمPi ی�کC آزمایش�ی می گ�یرد و از دیگ�ر پردازه ه�ا هم درخواس�ت
C آزما�یش�ی می کن�د�. ه�ر پ�ر�دازة� دی�گ�ر م�وفقیت� خ�و�د را در این م می �کن�د Pi اعالم� می �کن�د. اگ�ر هم�ه موف�ق بود�ن�د Piک�ار ب�ه اعال�
که دائمی تلقی شود وگرنه دور ریخته شود.
:فاز دوم الگوریتم تص�میم هم�ه Piاعالم ب�ه اول مرحل�ه پای�ان در هم�ه ی�ا C
دائمی می گیرند یا نه. فرض می ک�نیم ک�ه در فاص�له بینC آزمایش�ی و دری�افت تص�میم
نمی� ش�ود. ار�س�ال نا�س�ازگار �بوج�ود آغ�ازگر، �پیغ�امی �ح�الت نخواهد آمد.
، ...Kooبهینه سازی در الگوریتم
اگر ًالزم نیست که پردازه ایCجدیدی بگیرد!؟
اگرX از دریافت به m پس به }C تصمیم بگیرد منجر X2, Y2, Z2 خوا�ه�د ش�د �در ح�ا�لی ک�ه� }X2, Y2, Z1} هم س�ازگار� } آزمایش�ی C اگ�ر پیغ�امی ارس�ال نش�ده اس�ت میت�وان .هس�تند
را در یک سایت انجام نداد.
X
Y
Z
X1 X2
Y1 Y2
Z1
Z2
m
آزمایشی
روش اعمال.پیغام های کنترلی موردنظر نیستند .هر پیغ�ام ی�ک برچس�ب داردm.l ک�ه در ه�ر پ�ردازه ح�الت
افزایشی دارد. فرض کوچکترین و T.بزرگترین برچسب باشد به ازاء ه�رY ,X ف�رض ک�نیم ،m آخ�رین پیغ�ام دری�افت ش�ده
باشد.Cپس از آخرین
last-label-rcvdX[Y] =
first-label-sentX[Y] =
otherwise
existsmiflm.
otherwise
existsmiflm.
ادامه روش اعمال
هرگاهX از Y درخواست می کند که یک C آزمایشی را هم last-label-rcvdX[Y]بگیرد، همراه درخواستش
می گیرد که C تنها وقتی Yمی فرستد. last-label-rcvdX[Y] first-label-sentY[X] >
یعنیX رسید تعدادی پیغام را ثبت کرده است که پس از ارسال شده اند. Y در Cآخرین
Y.هم باید واقعه ارسال آنها را ثبت کند
Chkpt-cohortX = {Y | last-label-rcvdX[Y] > }
به آنها ارسال شود.Cهم در سایتهایی که باید درخواست
The algorithmInitial 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 doSend Make-tentative-ckpt-permanent;
elseFor all processes p ckpt-cohort pi do
Send Undo-tentative-ckpt.
otherwiseno
checkpoataketowillingispifyes
""
int""
The algorithm Continued
At all processes p: Upon receiving Take-a-tentative-ckpt(q, last-label-rcvd q[p])
message from q doBeginIf OK-to-take-ckptp = “yes” AND last-label-rcvd q[p] first-label-sentp[q] > then
begintake 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 p replied “yes” thenOK-to-take-ckptp := “yes”
ElseOK-to-take-ckptp = “no”
End;Send (p, OK-to-take-ckptp) to q;End;
The algorithm Continued
At all processes p:Upon receiving Make-tentative-ckpt-permanent
message doBeginMake 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 doBeginUndo tentative checkpoint;For all processes r ckpt-cohort p do
Send Undo-tentative-ckpt-permanent message;End;
Rollback-Recoveryو فرض کن�د می آغ�از را الگ�وریتم پ�ردازه ی�ک تنه�ا :
فراخوانی همروند الگوریتم را نداریم.
آغ�ازگرفاز اول :( Pi) کن�ترل میکن�د ک�ه آی�ا هم�ه پ�ردازه ه�ا خ�ود هس�تند ی�ا ن�ه؟ پ�ردازه Cعالقمن�د ب�ه بازآغ�ازی از آخ�رین
آغ�از ش�ده بوس�یله دیگ�ری درگ�یر اس�ت R ی�ا Cای ک�ه در می ده�د. در ص�ورت مثبت ب�ودن پاس�خ هم�ه، "no"پاس�خ
بازآغازی اعالم می شود.فاز دوم :Pi ب�رآن و ب�ه هم�ه می فرس�تد را تص�میمش
اس�اس عم�ل می ش�ود. م�ادام ک�ه پ�ردازه ای منتظ�ر پاس�خ است پیغامی در رابطه با محاسباتش نمی فرستد.
Rollback-Recovery Continued
باز هم بهین�ه س�ازی در م�واردی ک�ه ًالزم نیس�ت پ�ردازه ای ب�اآغازی را انجام دهد:
نیازی به بازآغازی ندارد.X ، Zخطا در با رخداد•
X
Y
Z
X1 X2
Y1 Y2
Z2Z1
Rollback-Recovery Continued
:تعریف
Last-Label-SentX[Y] =
وق�تیx از y می خواه�د ک�ه ب�ه آخ�رین Cدائمی اش برگ�ردد Last-Label-SentX[Y] .را هم می فرس�تدY ب�ه ش�رط�ی ب�ه آخ�رین� C خ�ود
بر می گردد که Last-Label-RcvdY[X] > Last-Label-SentX[Y]
یع�نیX متمای�ل ب�ه ارج�اع ب�ه ح�التی اس�ت ک�ه ارس�ال ی�ک ی�ا چن�د شود.y، undo به Xپیغام از
roll-cohortX = {Y|X can send msgs to Y}
OtherwiseT
existsmiflm.
Largest Value
The algorithmInitial state at process P: Resume-execution := true;
For all processes q, doLast-label-rcvdp[q] := T;
Willing-to-rollp = yes / no …. At initiator process Pi:
For all processes p roll-cohortpi doSend Prepare-to-rollback(Pi, last-label-sentPi[p])
message;If all processes p roll-cohortpi do
Send Roll-back message;Else
For all processes proll-cohortpi doSend Donot-roll-back message;
The algorithm Continued
At all processes p: Upon receiving Prepare-to-rollback(q, last-label-sentq[p])
Message from q doBeginIf willing-to-rollp AND last-label-rcvdp[q] > last-label-
sentq[p] AND (resume-executionp)Then
BeginResume-executionp := false;For all processes r roll-cohortp do
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 Continued
Upon receiving Roll-back message AND if resume-executionp = false do
BeginRestart from p’s permanent checkpoint;For all processes r roll-cohortp do
Send Roll-back message;End;
Upon receiving Donot-roll-back message doBeginResume execution;For all processes r roll-cohortp do
Send Roll-back message;End;
Async Checkpointing & Recovery:معایب نقطه مقابله سازی همگام
مبادله می شوند.Cپیغامهای اضافی که در هر 1.
پیغ�ام محاس�باتی مبادل�ه نمی شود.Cتأخیرات همگ�انی ک�ه در حین 2.
دو 3. ه�ر بین ن�ادر خط�ای ک�ه سیس�تمهایی درخص�وص زی�اد Cسربار متوالی دارند.
خ�ود را مس�تقل از دیگ�ران Cدر روش ناهمگ�ام، ه�ر پ�ردازه )پردازن�ده( 1.ه�ای محلی� C تض�مینی ب�ر� س�ازگا�ری �مجموع�ه ای از� � می �گ�یرد.
وجود ندارد.ه�ا را قب�ل C الگ�وریتم ت�رمیم بای�د اخ�یرترین مجموع�ه س�ازگار از
از آغاز ترمیم پیدا کند. Rollback ش�ده در حین undo ب�رای ح�داقل ک�ردن م�یزان محاس�بات 1.
شوند. �redo می شوند تا اح�تماًال Log، همه پیغامها�ی وارده �
Juang & Venkatesan الگوریتم
درcheckpointing فرض می کنیم که دو نوع ، Log داریم :ار فرار: دسترسی سریع ولی فر�هراز چندگاه یکبار ذخیره روی حافظه پایدار: پایدار
ار هر پ�ردازه پس از ه�ر واقع�ه، س�ه ت�ایی زی�ر را در حافظ�ه ف�ر�ثبت می کند:
{s, m, msg-sent}
:ه� سیس�تم اس�ت ک�ه ب�ا انتظ�ار ب�رای event - driver ف�رض ب�ر توج.می شود fireپیغام و رسیدن پیغام
.این همان نقطه مقابله محلی برای رخداد واقعه است
حالت پ�ردازه از قب�����ل رخ�داد واقع�ه
پیغ�ام )ش�امل شناس�ه فرس�تنده( ک�ه رس�یدنش ب�اعث رخ�داد واقع�ه
شده است
در ک�ه پیغامه�ا از ای مجموع�ه پردازن��ده توس��ط واقع��ه طی
ارسال شده است
: Juang & Venkatesan الگوریتمNotationsساختمان داده های ًالزم و
RCVDij(chpti) از رس�یده پیغامه�ای تع�داد ب�ه jمع�رف i
ذخیره شده است. chpti باتوجه به اطالعاتی که در .استSENT ij(chpti) مع�رف تع�داد پیغامه�ای ارس�ال ش�ده ازi ب�ه j باتوجه به chpti.است ایده اصلی
ترمیم بای�د بتوان�د مجموع�ه ای س�ازگار از نق�اط مقابل�ه محلی خ�ود ب�ه دری�افتی و ارس�الیپی�دا کن�د ه�ر پردازن�ده پیغامه�ای
دیگران را می شمارد. وق�تی پردازن�ده ایrollback می کن�د، بای�د هم�ه کن�ترل کنن�د ک�ه
آی�ا پی�غامه�ای� دری�افت شد�ه اش�ان ی�ت�یم ش�ده ا�ند �ی�ا ن�ه؟ )م�قایس�ه پیغامه�ای دری�افت ک�رده و ارس�ال ش�ده(. اگ�ر وج�ود داش�ت،
ارجاع به مرحلة قبلی و ......
ادامه Juang & Venkatesan الگوریتم
اگ�رY ب�ه eY1 ،عقبگ�رد کن�د Y ی�ک پیغ�ام ب�ه X فرس�تاده اس�ت بای�د ب�ه X دری�افت ک�رده اس�ت.Y دوت�ا پیغ�ام از Xولی
هم Z س�ازگار باش�د.Y عقبگ�رد کن�د ت�ا ب�ا eX2ح�الت قب�ل از باید عقبگرد کند.
ex0X
Y
Z
ex1 ex2 ex3
ey0 ey1 ey2ey3
ez0 ez1 ez2 ez3
الگوریتم: :پیغ�امی منتش�ر فرض بازآغ�ازی، ب�ه محض پردازن�ده ه�ر
ک�رده ب�ود. الگ�وریتم بالفاص�له پس از ت�رمیم failمی کن�د ک�ه از خط�ا و بازآغ�ازی ش�روع می ش�ود و ی�ا ب�ا اطالع از خط�ای
پردازنده دیگر. هم�ه در الگ�وریتم همگ�ان، ب�ه پیغ�ام پخش خ�اطر به
پردازنده ها آغاز می شود. در پردازندهi :اگر ترمیم یافته از خطاست:
آخرین واقعهLog شده در حافظه پایدار ckpti= در غیر اینصورت
آخرین واقعه ای که رخ داده استckpti= )اعم از روی حافظه فرار یا پایدار(
ادامهالگوریتم
for k:=1 to N do (*N is he # of processors*)begin
for each neighboring process j doSend ROLLBACK(I, SENTij(ckpti)) msg;
wait for ROLLBACK msg from every neighbor.)چون همه در حال اجرای الگوریتم هستند پس به همسایه ها پیغام را می فرستند(
for every ROLLBACK(j,c) received from j,i does the following:
if RCVDij(ckpti) > c then /* یتیم پیغام /*وجودbegin
find the latest event e such that RCVDij(e)cj;ckpti := e;
end;end;
ادامهالگوریتم
مثال: در نظر بگیرید:
،خط�ا رخ�داد از بهYپس Y1 .برمی گ�ردد ey2 آخ�رین ن�یز را logواقع�ة ثبت ش�ده در از خط�ا اس�ت. چ�ون برگش�ت
هم الگوریتم را شروع می کنند.Z و Xپخش می کند
X
Y
Z
ey0 ey1 ey2ey3
ez0 ez1 ez2 ez3
ex0 ex1 ex2 ex3
X1
Y1
Z1
failure
ادامهمثال
در ابتدادر دور اول 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 چون ، RCVDXY(ckptX) = 3> 2 ckptX eX2 :و لذا داریم
RCVD XY(eX2) = 2 2 درZ داریم RCVDZY(ckptZ) = 2> 1 پس ckptZ = eZ1 ارجاع به عقب درY،
نیاز به عقبگرد در این مرحله ندارد.Yپس
)(1)(
21)(
ZYZYZY
YXY
ckptSENTckptRCVD
ckptRCVD
RollBackدریافتی از پیغام
ادامهمثال
در دور دوم:سایت پیغام ارسالی
Y RollBack(Y,2) to X, RollBack(Y,1) to Z
X RollBack(X,0) to Z, RollBack(X,1) to Y
Z RollBack(Z,1) to Y, RollBack(Z,0) to X
مقدارckpt در Z, Y, X بترتیبex2 ، eY2 ، eZ1.است چون مجموع�هex2} ، eY2، eZ1 { اس�ت مجموع�ه س�ازگاری
.لزومی به عقبگرد بیش از این نیست.در مرحله دوم و سوم وضعیت جدیدی ایجاد نمی شود