lida_star
22nd January 2009, 01:27 PM
با جستجو در فرهنگ لغت اين معاني را ميتوانيم براي واژهيraid بيابيم:تاخت و تاز ،يورش ،ورود ناگهاني پليس ،حملهي مسلحانه ،جريمه ،اختلاس ،مورد حمله و تاخت و تاز قراردادن ،در حمله شركت كردن ، هجوم آوردن و ... .
واژهيraidمعمولاً براي افسران پليس دورنمايي از يك حادثهاست براي غافلگيركردن و دستگيري مجرمان. اما در صنعت كامپيوتر ،معناي RAID بسيار متفاوت است. كه در اينجا استفاده ميشود نيرويي است براي بهبود كارآيي در يك سيستم.
چند اصطلاح :
Fault tolerance يا تحمل خطا :
براي اينكه ما بتوانيم به طور مداوم و بدون هيچ مشكلي سيستم خود را فعال نگه داشته و از دادههاي باارزش محافظت كنيم ،روش هاي مختلفي وجود دارد. برخي از اين روشها آن كارهايي است كه ما بهطور معمول انجام ميدهيم . مثلاً ذخيره دادهها بر روي CD و يا ايجاد فلاپي ديسكهاي سيستمي و ديسكهاي نجات (Rescue Disk ) . و يا امكاناتي كه به ويژه در ويندوز 2000 وجود دارد تا ما بتوانيم در صورت خرابي بخشي از فايلهاي سيستم عامل ،آنها را دوباره بازسازي كنيم. با اين كارها در حقيقت ما ميخواهيم تحمل سيستم را در برابر مشكلات افزايش دهيم. ولي ميدانيم كه اين كارها به تنهايي كافي نيست.
تحمل خطا : هر مكانيسم يا فناوري كه به يك كامپيوتر يا يك سيستم عامل امكان ميدهد تا در صورت ازكارافتادن بتواند دوباره Recover شود (بهبود يابد). در سيستمهاي تحمل خطا وقتي يكي از اجزا از كار افتاد ،دادهها باز هم قابل دسترسي هستند.
چند نمونه از روشهاي تحمل خطا:
**فايلهاي گزارش عملكرد (Transactional log files) كه در رجيستري ويندوز نگهداري ميشوند و امكان بازيابي را به ما ميدهند.
**UPS ( مولد بدون وقفه برق ) براي محافظت سيستم در برابر نوسان يا قطع برق
** RAID ( آرايهاي از ديسكها )
RAID (Redundancy array of inexpensive disk ) :
RAID يكي از موارد افزايش تحمل خطاي سيستم است. RAID (آرايهاي افزايشي از ديسكهاي ارزان) در سال 1987 در دانشگاه بركلي كاليفرنيا بنيانگذاري شد. در مقالهي با عنوان ” بررسي آرايههاي افزايشي از ديسكهاي ارزان ” كه توسط katz ، Gibson و Patterson معرفي شد. ( البته در خيلي جاها ، مانند كتابهاي مايكروسافت ، واژهي ” ارزان” با واژي ”مستقل” جايگزين ميشود ،كه به نظر ميرسد به دليل اهميت آن در بحث RAID استفاده از آن بهتر باشد ، اما قديميترين آنها همان چيزي است كه در سال 1987 ارايه شده است.) موضوع موردبحث اين مقاله ارايه يك ميانگين براي بهبود قابليت اعتماد و نيز كارآيي در سيستمهاي ذخيرهسازي بود. و مفهوم آغازين آن شامل گروهبندي درايوهاي ديسك ارزان و كوچك در يك آرايه است به طوري كه در سيستم عامل به صورت يك SLED (ديسك منفرد بزرگ وگران ) ديده ميشوند. RAID نقطهي مقابل SLED است و كارايي ، ظرفيت و قابليت اعتماد بيشتري نسبت به آن دارد.
روشهاي مختلفي براي تركيب چند هارد ديسك در يك آرايه ، بسته به نياز برنامههاي كاربردي ، وجود دارد. اما در همهي حالات استفاده از چندين درايو نتايجي چون : افزايش گنجايش ، امنيت داده و كارآيي درايوها (exceed the capacity, data security, and performance) را به دنبال خواهد داشت. به ياد داشته باشيد كه اين روشها روشهاي خيلي ارزاني نيستند و هميشه با پيچيدگي و هزينههاي زيادي همراهند.
از زمان اختراع كامپيوتر تا به حال كدهاي نرمافزاري رشد زيادي داشتهاند. و اين رشد نياز به يك محيط ذخيرهسازي بزرگ را افزايش دادهاست و ابداع شبكههاي محلي و اينترنت نيز اين نياز را شديدتر كردهاست. مبناي كار RAID فضاي ديسك است و توانستهاست با تركيب فضاي هاردديسكهاي كوچك با هم در يك مخزن بسيار بزرگ مشكلات را برطرف كند.
MTBF (ميانگين زماني كه از يك Fail تا Fail ديگر صرفميشود ) در آرايه برابر است با MTBF يك درايو منحصر بفرد تقسيم بر تعداد درايوهاي موجود در آرايه. در اين صورت MTBF يك آرايه غير افزايشي خيلي كم است. و RAID با ارايهي روشهاي مختلف و با ذخيرهي اطلاعات افزايشي ميتواند در اين مورد نيز سودمند واقع شود.
RAID با توزيع عمليات خواندن / نوشتن روي چند ديسك ميتواند كارآيي هاردديسكها را افزايش دهد.( ما در اين مبحث فقط در مورد هارد ديسك بحث ميكنيم چون اين اصطلاحها براي ساير حافظههاي جانبي از قبيل CD_ROM ، zip drive ، floppyبه كار نميرود.)
پيش از اينRAIDبه دليل هزينههاي بسيار بالاي سختافزار مورد نياز آن ، بيشتر براي كاربردهاي تجاري با حوزهاي محدود بهكار ميرفت. ولي در چند سالها اخير اين امر دچار تغيير شدهاست ، از ميان تمام سروصداهايي كه براي بهبود كارايي و استفاده بهتر از زمان ميشود ، RAID توانسته راه خود را باز كند و يك پله بالاتر از همه قراربگيرد. افزايش كنترلرهاي RAID ارزان كه ميتوانند با نسخهي مصرفكنندهي IDE/ATA كاركنند ( مانند آنچه واحدهاي گرانقيمت SCSI انجام ميدهند) اشتياق همگان را به RAID افزايش دادهاست. و اين گرايش شايد ادامه يابد.در حال حاضر نيز تعداد زيادي از سازندگان مادربورد ،بوردهاي خود را با حمايت از استاندارد RAID به بازار عرضه ميكنند . متاسفانه RAID در زمينهي كامپيوتر به طور واقعي اشكالات را برطرف نمي كند. با اين حال اگر به طور صحيح اجراشود ، ميتواند زمان از كارافتادگي را از بين ببرد.
Striping
Striping اساس كار RAID است. در اين روش چندين هارد ديسك يا به طور كلي چندين درايو طوري با هم تركيب ميشوند كه به صورت يك واحد ذخيرهسازي منطقي ديده شوند. در Striping فضاي ذخيرهسازي هر درايو در نوارهايي ،كه ميتوانند كمتر از يك سكتور (512 بايت ) يا بيشتر از چندين مگابايت باشند ، بخشبندي ميشود. اين Stripe ها ،كه ما آن را ” نوار ” ترجمه كردهايم ، در يك تناوب چرخشي كنار هم قرارميگيرند ، در نتيجه فضاي نهايي به دست آمده تركيبي است از نوارهاي هر درايو. به بياني سادهتر دادهها به جاي اينكه به طور كامل در يك درايو ذخيرهشوند و در صورت نياز ادامهي عمليات ذخيرهسازي آنها در درايوهاي ديگر دنبال شود ، به صورت نواري در سرتاسر آرايه ذخيرهميشوند. نوع محيط عملياتي تعيين ميكند كه ما بايد از نوارهاي كوچك استفاده كنيم يا بزرگ.
امروزه بيشتر سيستم عاملها ازعمليات I/O همزمان روي چند درايو حمايت ميكنند.با اين حال براي بهدست آوردن حداكثر توان خروجي براي يك زيرسيستم ديسك ، سنگيني بار عمليات I/O بايد روي چند درايو توزيع شود ،تا اينكه هر درايو تا جاي ممكن مشغول فعاليت باشد و هيچ درايوي بدون استفاده يا با فعاليت كمتر وجود نداشته باشد. در سيستم هاي چند درايوي كه از Striping استفاده نميكنند بار I/O ديسك هيچگاه به طور كامل متوازن نميشود. چون برخي درايوها شامل فايلهاي داده خواهندبود كه مكرراً به آنها مراجعه ميشود و برخي درايوها به ندرت مورد استفاده قرارميگيرند.
بوسيلهي نواري كردنِ (Striping) درايوهاي آرايه و ايجاد نوارهايي كه به اندازهي كافي بزرگ هستند ، به طوري كه هر گروه از ركوردها به طور كامل در يك نوار قرارگيرند ، تعداد ركوردهاي بيشتري ميتوانند در تمام درايوها به طور مساوي توزيع شوند. اين كار در مواقعي كه load سنگين وجود دارد تمام درايوها را مشغول نگه ميدارد. و به تمام درايوها اجازه ميدهد تا به طور همزمان عمليات مختلف ورودي/خروجي انجام دهند. و به اين صورت تعداد عمليات ورودي/خروجي كه ميتواند در آرايه انجام شود افزايش مييابد.
سطوح مختلف RAID
سطوح مختلفي براي RAID در نطرگرفته شدهاست. اما بايد توجه داشت كه وقتي از سطوح مختلف RAID صحبت ميكنيم منظور ما كيفيت ذخيرهسازي دادهها نيست.بلكه منظور ما شيوهاي است كه براي ذخيرهي دادهها در آرايههاي هارد ديسك به كارگرفته ميشود.
RAID 0
به اين نوع از RAID ، Striping نيز گفته ميشود. در RAID 0 شامل آرايهاي از درايوهاي ديسك به صورت غير افزايشي است. ( يعني علاوه بر دادههاي اصلي ، هيچ درايو ديگري براي نگهداري نسخهي ديگري از دادهها وجود ندارد) در RAID 0پريتي نيز وجود ندارد.براساس آنچه در مورد Striping گفتيم براي يك مجموعهي RAID 0 ،كنترل كنندهي RAID دادهةا را به صورت نواري روي چند درايو قرارميدهد. اما اساساً چه دليلي وجود دارد كه دادهها را در بلوكهايي از چندين درايو بنويسيم. بخشي از پاسخ اين پرسش در توضيح Striping گفته شد ،اما بگذاريد بيشتر در اين مورد بحث كنيم. فرض كنيد شما 10 بلوك داده داريد ( A , B ,C , ... ) . در يك هارد ديسك استاندارد ، دادهها بايد به اين صورت ذخيره شوند : ابتدا بلوك A ، سپس بلوك B، سپس بلوك C و ... در اينصورت اگر نياز به دستيابي به 10 بلوك داشته باشيم ،كنترل كننده بايد تمام دادهها را فقط يك هارد ديسك داشتهباشد. در RAID 0،دادهها بين هارد ديسكها تقسيم ميشوند. پس اگر شما 3 ديسك Stripe شده داشتهباشيد ، دادههاي بلوك Aدرهاردديسك صفر ، دادههاي بلوك B در هارد ديسك يك و دادههاي بلوك C در هارد ديسك سوم بايد ذخيرهشوند. در اين روش به طور همزمان ميتوانيم عمليات نوشتن را بر تمام درايوها انجام دهيم و نيز عمليات خواندن دادهها نيز ميتواند بهطور موازي انجام شود. پس مدت زمان خواندن و نوشتن ، بسته به تعداد درايوهاي موجود در آرايه كم و كمتر ميشود.توجه كنيد كه در اينجا دادهي افزايشي وجود ندارد. تا زمانيكه دادهها به صورت نواري شكل در تمامي هارد ديسكها قراردارند ، RAID 0 سريعترين و مناسبترين روش از ميان تمامي حالات RAID است. و بهترين كارمفيد و كارآيي را در ذخيرهسازي دادهها ارايه ميدهد. ولي بايد گفت كه هيچگونه تحمل خطايي ندارد. اگر يكي از ديسكها دچار مشكل شود ، تمام آرايه از كار ميافتد و هيچ راهي براي بازگرداندن دادههاي از دست رفته وجود ندارد.در RAID 0 ،كارآيي به اندازهي بلوكها بستگي دارد . اگر اندازهي آنها خيلي كوچك باشد دستورات براي اجرا در عمليات نوشتن متمركز ميشوند ، علاوه بر آن به دستورات واسط سختافزاري بيشتري نياز است. بهينه سازي اندازهي بلوكها باعث ميشود كه افزايش توان عملياتي كار ميشود ، به ويژه براي درخواستهاي موازي براي خواندن دادهها. اندازهي بلوكها قابل تنظيم است . ولي شما بايد بيت به بيت آزمايش كنيد تا به نتيجهي مطلوب برسيد. اما يكي از تقاط شروع خوب براي حداقل اندازهي بلوك 16 كيلوبايت است. براي محيطهاي چندكاربره ميتوانيم آرايه را با نوارهاي بزرگ تنظيم كنيم. براي سيستمهاي تككاربره كه به طور مداوم با ركوردها سروكار دارند نيز ميتوان اندازهي نوارهاي موجود در آرايه را كوچك تر در نظر گرفت.به طور نمونه اندازهي فايل 48 كيلوبايت است. 16 كيلوبايت از اين فايل روي ديسك اول ،16 كيلوبايت در ديسك دوم و 16 كيلوبايت ديگر در ديسك سوم نوشتهميشود.
RAID 1
به اين سطح ،mirroring نيز گفته ميشود. و اساساً يك تركيب از دو هارد ديسك است كه اطلاعات يكي از اين دو ،عيناً روي ديگري كپي ميشود و در كامپيوتر به صورت يك درايو نمايش دادهميشود.تحمل خطا در RAID 1 وجود دارد.چراكه اگر يكي از ديسكها از كار بيفتد آرايه ميتواند همچنان به فعاليت خود ادامه دهد. به دليل اينكه همزمان از دو هارد ديسك استفاده ميشود ، زمان خواندن سريعتر ميشود.روشي كه در اينجا براي خواندن دادهها بهكارگرفته ميشود ، زمانبندي Round-robin ( روح سرگردان ! )نام دارد. كه سرور براي خواندن دادهها مرتباً از يك هارد به هارد ديگر ميرود و عملاً زمان را بين دو هارد ديسك تقسيم ميكند.سرعت خواندن در اين جا دوبرابر سرعت خواندن از يك درايومنفرد فاقدmirroring است. با اين حال در موقع نوشتن ، دادهها بايد روي دو هارد ديسك نوشتهشوند. و عملاً ميبينيم كه در مدت زمان نوشتن تغييري حاصل نخواهدشد.نسبت به ساير انواع آرايههاي افزايشي ،اين سطح بهترين كارآيي را دارد. ولي از لحاظ رتبه در هنگام ازكارافتادن درايو ،نسبت به RAID 5 كارآيي كمتري دارد.بزرگترين عيب اين سطح ،هزينهاي است كه براي درايوهاي اضافي آن پرداخت ميشود. به هر حال هيچچيز ارزان به دست نميآيد و براي داشتن يك سيستم امن و كارآ بايد هزينههاي زيادي پرداخت چراكه اگر سيستم ازكار بيفتد يا حتي براي ساعاتي متوقف شود ، هيچ هزينهاي نميتواند جايگزين دادهها و اطلاعات باارزش ازدست رفته ما باشد.
Duplexing : در بيشتر متونِ منبع در مورد آرايههاي ديسك (RAID ) در ادامهي مبحث RAID 1 به موضوعي اشارهشده كه به آن Duplexing گفته ميشود. اما Duplexing چيست؟اساساً Duplexing در مواقعي مورد بررسي قرار خواهد گرفت كه ما خواستهباشيم RAID را به صورت نرمافزاري اجراكنيم . مثلاً بوسيلهي سيستم عامل ويندوز 2000 يا XP .( در فصلهاي بعدي توضيحات كاملتري از RAID نرمافزاري و سختافزاري خواهيم آورد)در روش استفاده هارد ديسک ها با استفاده از کنترلرهای يکسان مشكل اين است كه يك كنترلر هم درايو اصلي و هم درايو آيينهاي را كنترل ميكند. اگر كنترل كننده ديسك از كار بيفتد هر دو درايو غير قابل دسترسي ميشوند . تكنيكي كه براي جلوگيري از اين مشكل پيشنهاد ميشود Duplexing است. يعني اينكه براي هر ديسك يك كنترلر جداگانه استفاده كنيم.
RAID 2
در RAID 2 نيز از روش Striping استفاده ميشود و دادهها به صورت نوارهاي سكتوري ذخيره ميشوند . و بعضي از درايوهاي آرايه براي اطلاعات ECC در نظرگرفته ميشوند.با وجود اينكه اين سطح بهندرت در كاربردهاي تجاري استفاده شدهاست ولي بيانگر مفهوم ديگري از تضمين دادهها ست. هر بيت داده كه روي هارد ديسكها نوشتهميشود ، كد تصحيح خطا يا ECC مربوط به خود را دارد. اين كدها روي درايوهاي جداگانه ذخيره ميشوند و به منظور حفاظت از يكپارچگي و سلامت دادهها مورد استفاده قرار ميگيرند.ECC ارزشهاي عددي دادههاي ذخيرهشده بر روي بلوكهاي مشخص در درايو مجازي را با استفاده از فرمولي به نام check-sum ( جمع كنترلي ) جدول بندي ميكند. سپس در صورت نياز ، جمع كنترلي براي تاييد سلامت دادهها به انتهاي بلوك داده الحاق ميشود.هنگامي كه دادهها مجدداً خوانده ميشوند ، جدول بندي ECCمجدداً محاسبه ميشود . سپس جمع كنترلي هر بلوك دادهي خاص ،خوانده شده و با آخرين جدول بندي مقايسه ميشود. چنانچه اعداد همانند باشند دادهها بدون نقص هستند ، اما اگر تناقضي وجود داشتهباشد ، دادهها ي از دست رفته با استفاده از اولين جمع كنترلي (يا جمع كنترلي قبلي )به عنوان يك نقطهي مرجع ،قابل محاسبهي مجدد هستند.از اين سطح به ندرت استفاده ميشود. به دليل اينكه تمام هارد ديسكها امروزه اطلاعات ECC را در هر سكتور جاسازي ميكنند ، RAID 2مزيت قابل توجهي نسبت به ساير نمونههاي RAID ندارد . ( ضمناً كنترلرهاي Adaptec اين سطح را پشتيباني نميكنند)
RAID 3
امروزه ،بسيار كم مورد استفاده قرار ميگيرد. RAID 3خيلي شبيه RAID 2 ميباشد . و اطلاعات را به صورت سكتوري روي گروهي از درايوها stripe ميكند. تفاوت آن ايناست كه يك درايو جداگانه براي ذخيرهي دادههاي پريتي درنظر ميگيرد. RAID 3 بر دادههاي ECC جاسازي شده در هر سكتور براي رديابي اشكالات ، تكيه دارد. اگر درايوي از كار افتاد ، بهوسيلهي XOR كردن اطلاعات موجود روي ساير درايوها ،عمليات بازيابي را انجام ميدهد.
اين سطح در واقع انطباقي از RAID 0 است كه مقداري از طرفيت هر يك از درايوها را قرباني ميكند اما به سطح بالايي از سلامت اطلاعات و تحمل خطا دستيابد.در اين حالت ، بلوكهاي داده به نوارهايي تقسيم شده و بر روي تمام درايوهاي درون آرايه به جز يكي از آنها نوشته ميشوند. اطلاعات موازنهي نوار كه براي بررسي سلامت داده در تمام درايوهاي درون زيرسيستم مورد استفاده قرار ميگيرند د رهنگام نوشتن دادهها ، ايجاد شده و بر روي ديسك پريتي ،نوشته ميشوند. درايو موازنه نيز به نوارهايي تقسيم شدهاست و هر يك از اين نوارها در درايو موازنه براي نگهداري اطلاعات پريتي مربوط به نوارهاي دادهي متناظر آن كه در سراسر آرايه گسترده شده ، مورد استفاده قرار ميگيرد. اطلاعات موازنه هنگام خواندن دادهها بازبيني ميشود.اين شيوه با خواندن يا نوشتن دادهها بر روي تمام درايوها به طور همزمان يا به صورت موازي توانايي انتقال داده بسيار بالايي را در اختيار قرار ميدهد ولي در عين حال مزيت بازسازي داده در صورت از كارافتادن يكي از درايوها و حفظ سلامتي دادهها براي سيستم را نيز از دست نميدهد.ركوردهايي كه در تمام درايوها گسترده شدهاند ، نرخ انتقال را در ديسك بهينه ميكنند.به دليل اينكه هر درخواست I/O به چندين درايو از آرايه دسترسي دارد. در اين سطح RAID در يك زمان فقط به يك درخواست پاسخ داده ميشود. و براي محيطهاي تك كاربره ، تك كاره با ركوردهاي طولاني ، بهترين كارآيي را دارد. درايوهاي spindle همگام شده (؟) براي پرهيز از پايين آمدن كارآيي در مقابل كار با ركوردهاي كوچك به RAID 3 نيازدارند. ( به دليل اينكه RAID 5 با نوارهاي كوچك ميتواند همان كارآيي RAID 3 را داشتهباشد، (كنترلرهاي Adaptec اين نمونه را نيز پشتيباني نميكنند)
RAID 4
RAID 4 با RAID 3 يكسان است . به جز اينكه از نوارهاي بزرگتري استفاده ميكند.به همين دليل ركوردها از هر درايو جداگانه ميتوانند خواندهشوند(البته به جز درايو پريتي). اين عمل اين امكان را ميدهد تا عمليات خواندن به اشتراك گذاشتهشود. در هنگام نوشتن ،عمليات آهسته ميشود جون پس از ذخيره شدن دادهها بر روي يك ديسك ،بايد اطلاعات پريتي نيز در درايو مربوط به پريتي نوشته شوند. به هرحال با هر بار عمل نوشتن بايد پريتي به روزآوري شود و لذا درايوها در موقع نوشتن نميتوانند مشتركاً استفاده شوند. اين ساختار مزيت ويژهاي نسبت به ساير حالات ندارد و كنترلرهاي Adaptec اين نمونه را پشتيباني نميكنند.در يك جمله ميتوان گفت كه استفاده از نوارهاي بزرگتر ( معمولاً دو بلوك ) در RAID 4 به نرمافزار مديريت RAID امكان ميدهد تا با استقلال بيشتري نسبت به RAID 3 به ادارهي ديسكها بپردازد.
RAID 5
اساساً RAID 5 شبيه RAID 1 است . با اين تفاوت كه RAID 5 براي هر نوار از دادهها يك پريتي ذخيره ميكند. اما در مقايسه با RAID 1 عمليات نوشتن آهستهتر است. زيرا يك زمان اضافي براي نوشتن اطلاعات پريتي نياز است.در موقع نوشتن اطلاعات RAID 5 تقريباً 60 درصد آهستهتر از RAID 1 عمل ميكند. عمليات خواندن هم هيچ تغييري پيدا نميكند.براي رسيدن به بهترين كارآيي ، RAID 5 بايد يك فضاي ذخيرهسازي داشته باشد برابر با حاصل جمع فضاي تمامي هارد ديسكها منهاي 1.بعضي مواقع به اين سطح از RAID ،” آرايه با پريتي چرخشي ” نيز گفتهميشود. چرا كه مانند RAID 4 پريتيها را در يك درايو جداگانه جمع نميكند و اين اطلاعات را در تمام آرايه و بر تمام درايوها توزيع ميكند.هيچ درايو منحصر بفردي براي ذخيرهي اطلاعات پريتي وجود ندارد. تمام درايوها شامل داده هستند و عمليت خواندن ميتواند از تمام درايوها به صورت مشترك انجام شود. براي نوشتن اطلاعات نيز به يك درايو داده و نيز يك درايو ديگر براي ذخيرهي اطلاعات پريتي نياز داريم. با توجه به اينكه ،پريتي ركوردهاي مختلف روي درايوهاي ديگر قرارميگيرد ،عمليا ت نوشتن معمولاً ميتواند به اشتراك گذاشته شود.بيشترين استفاده از RAID 5 در سرورها و شبكههاي محلي ميباشد ، جايي كه فضاي ذخيرهسازي و تحمل خطا بسيار اهميت دارد. در اين روش نيازي به وجود درايو آيينه وجود ندارد . زيرا اگر يكي از ديسكهاي اصلي از كار بيفتد ، سرور اطلاعات از دست رفته از نوارهاي پريتي ذهيره شده روي ديگر درايوها بازسازي ميكند. براي اجراي RAID 5 ،حداقل به سه هارد ديسك نياز داريم.
RAID سخت افزاري يا نرم افزاري ؟ كدام يك بهتر است؟
بستگي دارد به هدف و ميزان هزينه شما و انتظاراتي كه شما داريد. RAID نرم افزاري از طريق يك سيستم عامل تنظيم مي شود و به طور ذاتي كارايي كمتري نسبت به كنترلرهاي سخت افزاري RAID دارد. اين به علت فقدان سخت افزار اختصاصي براي مديريت آرايه هاي RAID است. اما بايد گفت كه تنظيم آن، دست كم موقع استفاده از Windows XP Professional، نسبت به سيستم هاي مبتني بر سخت افزار ساده تر و انعطاف پذير تر است.دومين عامل در زمينه بررسي و انتخاب نوع RAID، اين است كه آيا شما مي خواهيد سيستم عامل تان قسمتي از آرايه باشد يا خير؟ بزرگترين محدوديت در انجام RAID در ويندوز XP اين است كه سيستم عامل بايد قبل از ايجاد آرايه RAID نصب شود. به اين معنا كه اگر شما بخواهيد ديسك سيستم عامل خود را Strip كنيد، براي افزايش سرعت Loading راهي جز رفتن به سمت كنترلرهاي RAID سخت افزاري نداريد.بنابراين اگر بدون ايجاد درايوهاي Strip شده ، مي خواهيد حداكثر استفاده را ببريد يا اگر براي Backup هاي خود نياز داريد كه از RAID استفاده نماييد از مادربردي استفاده كنيد كه كنترلر RAID را به صورت Onboard در خود دارد و يا اينكه از يك كارت كنترلر PCI استفاده كنيد. اما اگر مي خواهيد سرعت درايوهاي Stripped را امتحان كنيد به سراغ RAID نرم افزاري برويد كه همان طور كه گفتيم در ويندوز XP, 2000 اين امکان فراهم شده است و ضمناً آسانتر و ارزانتر نيز مي باشد.
تجهيزات RAID از بخش هاي زير تشكيل شده است:
جدول RAID براي تعريف تنظيمات آرايه هاي RAID، ساختارهاي داده به منظور ذخيره Discriptionها براي Cache كردن داده ها، موتورها براي محاسبه اطلاعات توازن ( Parity ) ، بخش منطقي براي هندل كردن ورودي/خروجي ها از آرايه هاي RAID.
اين قسمت ها (Components ) ممكن است به صورت نرم افزاري ارائه شوند( مثل حالت kernel-mode ) يا اينكه درون كنترلرها جاسازي شده باشند. در RAID نرم افزاري يكي از مشكلات اين است كه به دليل مراجعه زياد CPU و اجزاي آرايه و ترافيك بالاي داده اي كه جريان پيدا مي كند مشكلاتي براي ساير نرم افزارها بوجود آمده و در برخي موارد از كار افتادن سيستم را نيز به دنبال دارد.
نتيجه:
RAID نرم افزاري را در صورتي استفاده كنيد كه گستردگي كار شما زياد نباشد و يا براي مصارف خانگي و استفاده در محيط هاي كوچكي كه حجم درخواست ها و تعداد كاربران كمتري دارند استفاده کنيد. اما در محيط هايي با كاربران زياد و عمليات خواندن و نوشتن سنگين، RAID سخت افزاري تنها گزينه است. البته باز هم بستگي به نوع كار دارد.
نكته:
تمام روش ها و تكنيك هايي كه RAID ارائه مي دهد در جهت كاهش اثرات از كارافتادگي سيستم ها و سرورهاست و هيچگاه اين شيوه ها شما را از پشتيباني فايل ها (Backup ) بي نياز نمي كند. پس اگر قصد داريد كه RAID انتخاب كنيد باز هم روش هاي معمول خود براي گرفتن نسخه پشتيبان از داده ها و فايل ها ( به هر صورتي كه هست ) را ادامه دهيد.
RAID سخت افزاري :
بيشتر موارد جدي پياده سازي RAID ، از RAID سخت افزاري استفاده مي شود. به اين معنا كه برخلاف پردازش كنترلي آرايه توسط نرم افزار از سخت افزاري اختصاصي براي كنترل آرايه استفاده شود.در ادامه مزايا و معايب هر كدام از شيوه هاي RAID را بررسي مي كنيم.دو نوع RAID سخت افزاري وجود دارد، كه تفاوت اصلي اين دو نوع در چگونگي ارتباط آرايه با سيستم است.
" BUS-Based " يا كارت هاي كنترلر RAID سخت افزاري :
اين روش ، سنتي ترين و پر استفاده ترين نوع RAID سخت افزاري به ويژه براي سيستم هاي "" دست پايين"" است. يك كنترلر RAID در PC يا سرور نصب مي شود و درايوهاي آرايه به آن متصل مي شوند. اين كنترلر واسطه اي است بين سيستم و هارد ديسك هاي موجود در آرايه و معمولاً از اينترفيس هاي SCSI يا كنترلرهاي IDE/ATA براي اين منظور استفاده مي شود. داده ها از طريق BUS سيستم ( نوعا PCI ) به سراسر PC فرستاده مي شود. برخي مادربردها بويژه براي سيستم هاي سرور به همراه خود به صورت مجتمع، كنترلرهاي RAID را نيز دارند. اين كنترلرها در مادربرد جاسازي شده اند اما از لحاظ كاري تفاوتي با كارت هاي BUS-Based افزودني ندارند. (مانند آنچه كنترلرهاي IDE/ATA در مادربردهاي امروزي انجام مي دهند در مقايسه با سيستم هاي قديمي كه كنترلر IDE آن ها به صورت جداگانه به مادربرد افزوده مي شد ) تنها تفاوت كنترلرهاي مجتمع اين است كه هزينه اضافي را كاهش مي دهند.
كنترلرهاي RAID هوشمند و خارجي:
در اين طراحي كه مورد استفاده سيستم های "بالا دستي" قرار مي گيرد، كنترلر RAID به طور كامل از سيستم جدا شده و در يك جعبه جداگانه قرار داده شده است. درون جعبه، كنترلر RAID درايوهاي آرايه را مديريت مي كند (مثلاً با استفاده از SCSI ) و سپس درايوهاي منطقي از آرايه را در واسطه اي استاندارد به سرورهايي كه از آرايه استفاده مي كنند، ارايه مي دهد. سرور، آرايه يا آرايه ها را فقط به صورت يك يا چند هارد ديسك سريع مي بيند و RAID به طور كامل از ديد ماشين مخفي است. در حقيقت، هر يك از اين واحدها (كنترلرهاي خارجي ) واقعاً يك كامپيوتر درون خودشان دارند. به همراه يك پردازنده اختصاصي كه آرايه ها و فعاليت ها را مانند كانالي بين سرور و آرايه مديريت مي كند.
اجراي RAID به صورت BUS-Based ارزانتر و خيلي ساده تر از اجراي RAID به صورت اکسترنال است. محدوده قيمتي كارت هاي IDE/ATA حدود 100 دلار و در بالاترين حد با استفاده از وسايلي كه از امتيازات خاصي برخوردارند تا چند هزار دلار مي رسد.
اين در حالي است كه سيستم هاي كنترلرهاي خارجي RAID هنوز خيلي گران هستند اما از امتيازها و ويژگي هاي جذاب آن نمي توان چشم پوشيد! مثلاً قابليت توسعه زيادي نسبت به BUS-Based RAID دارند، (براي آرايه هاي بزرگ ، فضايي در حد ترابايت را نيز مي توانند پوشش دهند ) و مي توانند كارآيي بهتري ارايه كنند. اما هزينه اي كه بايد در ازاي اين سخت افزار پرداخت شود معمولاً در حدي نيست كه كاربران معمولي PCها از عهده آن برآيند يا حتي به آن فكر كنند!
توجه :
كنترلرهاي RAID خارجي نبايد با كيس هاي RAID خارجي اشتباه گرفته شود. اين كيس ها كه به Enclosure معروفند داراي Power وساختار فيزيكي خاص براي درايوهاي يك آرايه RAID هستند، اين كيس ها را بيشتر در محيط هاي بزرگ عملياتي كه با داده هاي زيادي با حجم بالا سروكار دارند مي بينيم. ضمناً مي توان تركيبي از كنترلرهاي RAID را با اين سيستم ها ايجاد كرد.در اكثر حالات تصميم گيري براي استفاده از RAID به صورت سخت افزاري مستلزم پرداخت هزينه هاي بالايي است.اگر شما از هر كدام از سطوح پيچيده و مبهم RAID مثل 1+0 مي خواهيد استفاده كنيد، قطعاً بايد به RAID سخت افزاري متوسل شويد چرا كه اين سطوح خاص در RAID نرم افزاري Support نمي شود. و نيز اگر به كارآيي بالا نياز داريد كه در زمان استفاده از سطوح محاسباتي و قدرتي RAID به دست مي آيد انتخاب RAID سخت افزاري الزامي است. به دليل اينكه RAID5 نرم افزاري ممكن است در مواردي براي شما دردسر آفرين باشد.
RAID نرم افزاري:
در مورد RAID نرم افزاري پيش از اين نكاتي گفتيم. حال نگاهي گذرا داريم به مزايا و معايب استفاده از آن:
مزاياي RAID نرم افزاري:
هزينه كم:
اگر قبلاً از سيستم عاملي استفاده كرده و مي كنيد كه RAID را پوشش مي دهد، ديگر نيازي به پرداخت هزينه هاي اضافي نيست. فقط ممكن است نيازداشته باشيد كه حافظه سيستم تان را بالا ببريد.
ساده بودن: نيازي به نصب، تنظيم و مديريت يك كنترلر سخت افزاري نيست.
Duplexing: در بخش اول اين مقاله (شماره 6 ماهنامه) Duplexing را توضيح داديم. در
سطح RAID1 نرم افزاري مي توان از اين شيوه استفاده كرد اما در سخت افزار نه. (البته بسته به نوع كنترلر)
معايب RAID نرم افزاري:
كارآيي پايين:
براي مديريت آرايه ، چرخه هايCPU ( CPU Cycles ) ربوده مي شوند و كار ساير بخش هاي نرم افزاري و سخت افزاري دچار مشكل مي شود. در اصل اين مشكل براي سطوح ساده مثل سطح 1 چندان مهم نيست اما براي سطوح پيچيده اي چون سطح 5 خيلي اهميت پيدا مي كند.
محدوديت Boot Volume:
سيستم عامل نمي تواند از طريق آرايه RAID بوت شود و به يك پارتيشن غير RAID براي بالا آوردن سيستم نياز است كه باعث افزايش زمان بالا آوردن سيستم مي شود.
عدم پوشش سطوح مختلف به طور كامل:
RAID نرم افزاري محدود است به سطح خاصي مانند 0،1 و5 و سطوح جذاب RAID، بيشتر سخت افزاري هستند. ( به جز Duplexing كه قبلاً توضيح داده شد )
عدم حمايت از ويژگي هاي پيشرفته :
اين نوع RAID، از ويژگي اي پيشرفته اي چون Hot Spares و Drive Swapping حمايت نمي كند.
ناسازگاري با سيستم عامل ها :
اگر RAID را براي يك سيستم عامل مشخص تنظيم كنيد، فقط آن سيستم عامل مي تواند به آرايه دسترسي داشته باشد و در صورت نصب ساير سيستم عامل ها قابل دسترس نخواهد بود، و مشكلاتي را براي محيط هايي با چند سيستم عامل كه مي خواهند از RAID استفاده كنند به دنبال خواهد داشت.
ناسازگاري نرم افزاري:
برخي نرم افزارهاي سودمند مثل Partition Magic و برنامه هايي از اين قبيل ممكن است با آرايه هاي نرم افزاري تداخل داشته باشند.
عدم اعتبار و قابليت اطمينان:
برخي كاربران به خاطر باگ هايي كه ممكن است ضمن استفاده از RAID پيش بيايد از آن پرهيز مي كنند، هر چند كنترلر هاي سخت افزاري RAID هم از اين مشكلات دارند اما، نسبت به RAID هاي سخت افزاري با كيفيت خوب بعضي سيستم عامل ها هم هستند كه در برابر اين مشكلات تحمل بيشتري دارند.
واژهيraidمعمولاً براي افسران پليس دورنمايي از يك حادثهاست براي غافلگيركردن و دستگيري مجرمان. اما در صنعت كامپيوتر ،معناي RAID بسيار متفاوت است. كه در اينجا استفاده ميشود نيرويي است براي بهبود كارآيي در يك سيستم.
چند اصطلاح :
Fault tolerance يا تحمل خطا :
براي اينكه ما بتوانيم به طور مداوم و بدون هيچ مشكلي سيستم خود را فعال نگه داشته و از دادههاي باارزش محافظت كنيم ،روش هاي مختلفي وجود دارد. برخي از اين روشها آن كارهايي است كه ما بهطور معمول انجام ميدهيم . مثلاً ذخيره دادهها بر روي CD و يا ايجاد فلاپي ديسكهاي سيستمي و ديسكهاي نجات (Rescue Disk ) . و يا امكاناتي كه به ويژه در ويندوز 2000 وجود دارد تا ما بتوانيم در صورت خرابي بخشي از فايلهاي سيستم عامل ،آنها را دوباره بازسازي كنيم. با اين كارها در حقيقت ما ميخواهيم تحمل سيستم را در برابر مشكلات افزايش دهيم. ولي ميدانيم كه اين كارها به تنهايي كافي نيست.
تحمل خطا : هر مكانيسم يا فناوري كه به يك كامپيوتر يا يك سيستم عامل امكان ميدهد تا در صورت ازكارافتادن بتواند دوباره Recover شود (بهبود يابد). در سيستمهاي تحمل خطا وقتي يكي از اجزا از كار افتاد ،دادهها باز هم قابل دسترسي هستند.
چند نمونه از روشهاي تحمل خطا:
**فايلهاي گزارش عملكرد (Transactional log files) كه در رجيستري ويندوز نگهداري ميشوند و امكان بازيابي را به ما ميدهند.
**UPS ( مولد بدون وقفه برق ) براي محافظت سيستم در برابر نوسان يا قطع برق
** RAID ( آرايهاي از ديسكها )
RAID (Redundancy array of inexpensive disk ) :
RAID يكي از موارد افزايش تحمل خطاي سيستم است. RAID (آرايهاي افزايشي از ديسكهاي ارزان) در سال 1987 در دانشگاه بركلي كاليفرنيا بنيانگذاري شد. در مقالهي با عنوان ” بررسي آرايههاي افزايشي از ديسكهاي ارزان ” كه توسط katz ، Gibson و Patterson معرفي شد. ( البته در خيلي جاها ، مانند كتابهاي مايكروسافت ، واژهي ” ارزان” با واژي ”مستقل” جايگزين ميشود ،كه به نظر ميرسد به دليل اهميت آن در بحث RAID استفاده از آن بهتر باشد ، اما قديميترين آنها همان چيزي است كه در سال 1987 ارايه شده است.) موضوع موردبحث اين مقاله ارايه يك ميانگين براي بهبود قابليت اعتماد و نيز كارآيي در سيستمهاي ذخيرهسازي بود. و مفهوم آغازين آن شامل گروهبندي درايوهاي ديسك ارزان و كوچك در يك آرايه است به طوري كه در سيستم عامل به صورت يك SLED (ديسك منفرد بزرگ وگران ) ديده ميشوند. RAID نقطهي مقابل SLED است و كارايي ، ظرفيت و قابليت اعتماد بيشتري نسبت به آن دارد.
روشهاي مختلفي براي تركيب چند هارد ديسك در يك آرايه ، بسته به نياز برنامههاي كاربردي ، وجود دارد. اما در همهي حالات استفاده از چندين درايو نتايجي چون : افزايش گنجايش ، امنيت داده و كارآيي درايوها (exceed the capacity, data security, and performance) را به دنبال خواهد داشت. به ياد داشته باشيد كه اين روشها روشهاي خيلي ارزاني نيستند و هميشه با پيچيدگي و هزينههاي زيادي همراهند.
از زمان اختراع كامپيوتر تا به حال كدهاي نرمافزاري رشد زيادي داشتهاند. و اين رشد نياز به يك محيط ذخيرهسازي بزرگ را افزايش دادهاست و ابداع شبكههاي محلي و اينترنت نيز اين نياز را شديدتر كردهاست. مبناي كار RAID فضاي ديسك است و توانستهاست با تركيب فضاي هاردديسكهاي كوچك با هم در يك مخزن بسيار بزرگ مشكلات را برطرف كند.
MTBF (ميانگين زماني كه از يك Fail تا Fail ديگر صرفميشود ) در آرايه برابر است با MTBF يك درايو منحصر بفرد تقسيم بر تعداد درايوهاي موجود در آرايه. در اين صورت MTBF يك آرايه غير افزايشي خيلي كم است. و RAID با ارايهي روشهاي مختلف و با ذخيرهي اطلاعات افزايشي ميتواند در اين مورد نيز سودمند واقع شود.
RAID با توزيع عمليات خواندن / نوشتن روي چند ديسك ميتواند كارآيي هاردديسكها را افزايش دهد.( ما در اين مبحث فقط در مورد هارد ديسك بحث ميكنيم چون اين اصطلاحها براي ساير حافظههاي جانبي از قبيل CD_ROM ، zip drive ، floppyبه كار نميرود.)
پيش از اينRAIDبه دليل هزينههاي بسيار بالاي سختافزار مورد نياز آن ، بيشتر براي كاربردهاي تجاري با حوزهاي محدود بهكار ميرفت. ولي در چند سالها اخير اين امر دچار تغيير شدهاست ، از ميان تمام سروصداهايي كه براي بهبود كارايي و استفاده بهتر از زمان ميشود ، RAID توانسته راه خود را باز كند و يك پله بالاتر از همه قراربگيرد. افزايش كنترلرهاي RAID ارزان كه ميتوانند با نسخهي مصرفكنندهي IDE/ATA كاركنند ( مانند آنچه واحدهاي گرانقيمت SCSI انجام ميدهند) اشتياق همگان را به RAID افزايش دادهاست. و اين گرايش شايد ادامه يابد.در حال حاضر نيز تعداد زيادي از سازندگان مادربورد ،بوردهاي خود را با حمايت از استاندارد RAID به بازار عرضه ميكنند . متاسفانه RAID در زمينهي كامپيوتر به طور واقعي اشكالات را برطرف نمي كند. با اين حال اگر به طور صحيح اجراشود ، ميتواند زمان از كارافتادگي را از بين ببرد.
Striping
Striping اساس كار RAID است. در اين روش چندين هارد ديسك يا به طور كلي چندين درايو طوري با هم تركيب ميشوند كه به صورت يك واحد ذخيرهسازي منطقي ديده شوند. در Striping فضاي ذخيرهسازي هر درايو در نوارهايي ،كه ميتوانند كمتر از يك سكتور (512 بايت ) يا بيشتر از چندين مگابايت باشند ، بخشبندي ميشود. اين Stripe ها ،كه ما آن را ” نوار ” ترجمه كردهايم ، در يك تناوب چرخشي كنار هم قرارميگيرند ، در نتيجه فضاي نهايي به دست آمده تركيبي است از نوارهاي هر درايو. به بياني سادهتر دادهها به جاي اينكه به طور كامل در يك درايو ذخيرهشوند و در صورت نياز ادامهي عمليات ذخيرهسازي آنها در درايوهاي ديگر دنبال شود ، به صورت نواري در سرتاسر آرايه ذخيرهميشوند. نوع محيط عملياتي تعيين ميكند كه ما بايد از نوارهاي كوچك استفاده كنيم يا بزرگ.
امروزه بيشتر سيستم عاملها ازعمليات I/O همزمان روي چند درايو حمايت ميكنند.با اين حال براي بهدست آوردن حداكثر توان خروجي براي يك زيرسيستم ديسك ، سنگيني بار عمليات I/O بايد روي چند درايو توزيع شود ،تا اينكه هر درايو تا جاي ممكن مشغول فعاليت باشد و هيچ درايوي بدون استفاده يا با فعاليت كمتر وجود نداشته باشد. در سيستم هاي چند درايوي كه از Striping استفاده نميكنند بار I/O ديسك هيچگاه به طور كامل متوازن نميشود. چون برخي درايوها شامل فايلهاي داده خواهندبود كه مكرراً به آنها مراجعه ميشود و برخي درايوها به ندرت مورد استفاده قرارميگيرند.
بوسيلهي نواري كردنِ (Striping) درايوهاي آرايه و ايجاد نوارهايي كه به اندازهي كافي بزرگ هستند ، به طوري كه هر گروه از ركوردها به طور كامل در يك نوار قرارگيرند ، تعداد ركوردهاي بيشتري ميتوانند در تمام درايوها به طور مساوي توزيع شوند. اين كار در مواقعي كه load سنگين وجود دارد تمام درايوها را مشغول نگه ميدارد. و به تمام درايوها اجازه ميدهد تا به طور همزمان عمليات مختلف ورودي/خروجي انجام دهند. و به اين صورت تعداد عمليات ورودي/خروجي كه ميتواند در آرايه انجام شود افزايش مييابد.
سطوح مختلف RAID
سطوح مختلفي براي RAID در نطرگرفته شدهاست. اما بايد توجه داشت كه وقتي از سطوح مختلف RAID صحبت ميكنيم منظور ما كيفيت ذخيرهسازي دادهها نيست.بلكه منظور ما شيوهاي است كه براي ذخيرهي دادهها در آرايههاي هارد ديسك به كارگرفته ميشود.
RAID 0
به اين نوع از RAID ، Striping نيز گفته ميشود. در RAID 0 شامل آرايهاي از درايوهاي ديسك به صورت غير افزايشي است. ( يعني علاوه بر دادههاي اصلي ، هيچ درايو ديگري براي نگهداري نسخهي ديگري از دادهها وجود ندارد) در RAID 0پريتي نيز وجود ندارد.براساس آنچه در مورد Striping گفتيم براي يك مجموعهي RAID 0 ،كنترل كنندهي RAID دادهةا را به صورت نواري روي چند درايو قرارميدهد. اما اساساً چه دليلي وجود دارد كه دادهها را در بلوكهايي از چندين درايو بنويسيم. بخشي از پاسخ اين پرسش در توضيح Striping گفته شد ،اما بگذاريد بيشتر در اين مورد بحث كنيم. فرض كنيد شما 10 بلوك داده داريد ( A , B ,C , ... ) . در يك هارد ديسك استاندارد ، دادهها بايد به اين صورت ذخيره شوند : ابتدا بلوك A ، سپس بلوك B، سپس بلوك C و ... در اينصورت اگر نياز به دستيابي به 10 بلوك داشته باشيم ،كنترل كننده بايد تمام دادهها را فقط يك هارد ديسك داشتهباشد. در RAID 0،دادهها بين هارد ديسكها تقسيم ميشوند. پس اگر شما 3 ديسك Stripe شده داشتهباشيد ، دادههاي بلوك Aدرهاردديسك صفر ، دادههاي بلوك B در هارد ديسك يك و دادههاي بلوك C در هارد ديسك سوم بايد ذخيرهشوند. در اين روش به طور همزمان ميتوانيم عمليات نوشتن را بر تمام درايوها انجام دهيم و نيز عمليات خواندن دادهها نيز ميتواند بهطور موازي انجام شود. پس مدت زمان خواندن و نوشتن ، بسته به تعداد درايوهاي موجود در آرايه كم و كمتر ميشود.توجه كنيد كه در اينجا دادهي افزايشي وجود ندارد. تا زمانيكه دادهها به صورت نواري شكل در تمامي هارد ديسكها قراردارند ، RAID 0 سريعترين و مناسبترين روش از ميان تمامي حالات RAID است. و بهترين كارمفيد و كارآيي را در ذخيرهسازي دادهها ارايه ميدهد. ولي بايد گفت كه هيچگونه تحمل خطايي ندارد. اگر يكي از ديسكها دچار مشكل شود ، تمام آرايه از كار ميافتد و هيچ راهي براي بازگرداندن دادههاي از دست رفته وجود ندارد.در RAID 0 ،كارآيي به اندازهي بلوكها بستگي دارد . اگر اندازهي آنها خيلي كوچك باشد دستورات براي اجرا در عمليات نوشتن متمركز ميشوند ، علاوه بر آن به دستورات واسط سختافزاري بيشتري نياز است. بهينه سازي اندازهي بلوكها باعث ميشود كه افزايش توان عملياتي كار ميشود ، به ويژه براي درخواستهاي موازي براي خواندن دادهها. اندازهي بلوكها قابل تنظيم است . ولي شما بايد بيت به بيت آزمايش كنيد تا به نتيجهي مطلوب برسيد. اما يكي از تقاط شروع خوب براي حداقل اندازهي بلوك 16 كيلوبايت است. براي محيطهاي چندكاربره ميتوانيم آرايه را با نوارهاي بزرگ تنظيم كنيم. براي سيستمهاي تككاربره كه به طور مداوم با ركوردها سروكار دارند نيز ميتوان اندازهي نوارهاي موجود در آرايه را كوچك تر در نظر گرفت.به طور نمونه اندازهي فايل 48 كيلوبايت است. 16 كيلوبايت از اين فايل روي ديسك اول ،16 كيلوبايت در ديسك دوم و 16 كيلوبايت ديگر در ديسك سوم نوشتهميشود.
RAID 1
به اين سطح ،mirroring نيز گفته ميشود. و اساساً يك تركيب از دو هارد ديسك است كه اطلاعات يكي از اين دو ،عيناً روي ديگري كپي ميشود و در كامپيوتر به صورت يك درايو نمايش دادهميشود.تحمل خطا در RAID 1 وجود دارد.چراكه اگر يكي از ديسكها از كار بيفتد آرايه ميتواند همچنان به فعاليت خود ادامه دهد. به دليل اينكه همزمان از دو هارد ديسك استفاده ميشود ، زمان خواندن سريعتر ميشود.روشي كه در اينجا براي خواندن دادهها بهكارگرفته ميشود ، زمانبندي Round-robin ( روح سرگردان ! )نام دارد. كه سرور براي خواندن دادهها مرتباً از يك هارد به هارد ديگر ميرود و عملاً زمان را بين دو هارد ديسك تقسيم ميكند.سرعت خواندن در اين جا دوبرابر سرعت خواندن از يك درايومنفرد فاقدmirroring است. با اين حال در موقع نوشتن ، دادهها بايد روي دو هارد ديسك نوشتهشوند. و عملاً ميبينيم كه در مدت زمان نوشتن تغييري حاصل نخواهدشد.نسبت به ساير انواع آرايههاي افزايشي ،اين سطح بهترين كارآيي را دارد. ولي از لحاظ رتبه در هنگام ازكارافتادن درايو ،نسبت به RAID 5 كارآيي كمتري دارد.بزرگترين عيب اين سطح ،هزينهاي است كه براي درايوهاي اضافي آن پرداخت ميشود. به هر حال هيچچيز ارزان به دست نميآيد و براي داشتن يك سيستم امن و كارآ بايد هزينههاي زيادي پرداخت چراكه اگر سيستم ازكار بيفتد يا حتي براي ساعاتي متوقف شود ، هيچ هزينهاي نميتواند جايگزين دادهها و اطلاعات باارزش ازدست رفته ما باشد.
Duplexing : در بيشتر متونِ منبع در مورد آرايههاي ديسك (RAID ) در ادامهي مبحث RAID 1 به موضوعي اشارهشده كه به آن Duplexing گفته ميشود. اما Duplexing چيست؟اساساً Duplexing در مواقعي مورد بررسي قرار خواهد گرفت كه ما خواستهباشيم RAID را به صورت نرمافزاري اجراكنيم . مثلاً بوسيلهي سيستم عامل ويندوز 2000 يا XP .( در فصلهاي بعدي توضيحات كاملتري از RAID نرمافزاري و سختافزاري خواهيم آورد)در روش استفاده هارد ديسک ها با استفاده از کنترلرهای يکسان مشكل اين است كه يك كنترلر هم درايو اصلي و هم درايو آيينهاي را كنترل ميكند. اگر كنترل كننده ديسك از كار بيفتد هر دو درايو غير قابل دسترسي ميشوند . تكنيكي كه براي جلوگيري از اين مشكل پيشنهاد ميشود Duplexing است. يعني اينكه براي هر ديسك يك كنترلر جداگانه استفاده كنيم.
RAID 2
در RAID 2 نيز از روش Striping استفاده ميشود و دادهها به صورت نوارهاي سكتوري ذخيره ميشوند . و بعضي از درايوهاي آرايه براي اطلاعات ECC در نظرگرفته ميشوند.با وجود اينكه اين سطح بهندرت در كاربردهاي تجاري استفاده شدهاست ولي بيانگر مفهوم ديگري از تضمين دادهها ست. هر بيت داده كه روي هارد ديسكها نوشتهميشود ، كد تصحيح خطا يا ECC مربوط به خود را دارد. اين كدها روي درايوهاي جداگانه ذخيره ميشوند و به منظور حفاظت از يكپارچگي و سلامت دادهها مورد استفاده قرار ميگيرند.ECC ارزشهاي عددي دادههاي ذخيرهشده بر روي بلوكهاي مشخص در درايو مجازي را با استفاده از فرمولي به نام check-sum ( جمع كنترلي ) جدول بندي ميكند. سپس در صورت نياز ، جمع كنترلي براي تاييد سلامت دادهها به انتهاي بلوك داده الحاق ميشود.هنگامي كه دادهها مجدداً خوانده ميشوند ، جدول بندي ECCمجدداً محاسبه ميشود . سپس جمع كنترلي هر بلوك دادهي خاص ،خوانده شده و با آخرين جدول بندي مقايسه ميشود. چنانچه اعداد همانند باشند دادهها بدون نقص هستند ، اما اگر تناقضي وجود داشتهباشد ، دادهها ي از دست رفته با استفاده از اولين جمع كنترلي (يا جمع كنترلي قبلي )به عنوان يك نقطهي مرجع ،قابل محاسبهي مجدد هستند.از اين سطح به ندرت استفاده ميشود. به دليل اينكه تمام هارد ديسكها امروزه اطلاعات ECC را در هر سكتور جاسازي ميكنند ، RAID 2مزيت قابل توجهي نسبت به ساير نمونههاي RAID ندارد . ( ضمناً كنترلرهاي Adaptec اين سطح را پشتيباني نميكنند)
RAID 3
امروزه ،بسيار كم مورد استفاده قرار ميگيرد. RAID 3خيلي شبيه RAID 2 ميباشد . و اطلاعات را به صورت سكتوري روي گروهي از درايوها stripe ميكند. تفاوت آن ايناست كه يك درايو جداگانه براي ذخيرهي دادههاي پريتي درنظر ميگيرد. RAID 3 بر دادههاي ECC جاسازي شده در هر سكتور براي رديابي اشكالات ، تكيه دارد. اگر درايوي از كار افتاد ، بهوسيلهي XOR كردن اطلاعات موجود روي ساير درايوها ،عمليات بازيابي را انجام ميدهد.
اين سطح در واقع انطباقي از RAID 0 است كه مقداري از طرفيت هر يك از درايوها را قرباني ميكند اما به سطح بالايي از سلامت اطلاعات و تحمل خطا دستيابد.در اين حالت ، بلوكهاي داده به نوارهايي تقسيم شده و بر روي تمام درايوهاي درون آرايه به جز يكي از آنها نوشته ميشوند. اطلاعات موازنهي نوار كه براي بررسي سلامت داده در تمام درايوهاي درون زيرسيستم مورد استفاده قرار ميگيرند د رهنگام نوشتن دادهها ، ايجاد شده و بر روي ديسك پريتي ،نوشته ميشوند. درايو موازنه نيز به نوارهايي تقسيم شدهاست و هر يك از اين نوارها در درايو موازنه براي نگهداري اطلاعات پريتي مربوط به نوارهاي دادهي متناظر آن كه در سراسر آرايه گسترده شده ، مورد استفاده قرار ميگيرد. اطلاعات موازنه هنگام خواندن دادهها بازبيني ميشود.اين شيوه با خواندن يا نوشتن دادهها بر روي تمام درايوها به طور همزمان يا به صورت موازي توانايي انتقال داده بسيار بالايي را در اختيار قرار ميدهد ولي در عين حال مزيت بازسازي داده در صورت از كارافتادن يكي از درايوها و حفظ سلامتي دادهها براي سيستم را نيز از دست نميدهد.ركوردهايي كه در تمام درايوها گسترده شدهاند ، نرخ انتقال را در ديسك بهينه ميكنند.به دليل اينكه هر درخواست I/O به چندين درايو از آرايه دسترسي دارد. در اين سطح RAID در يك زمان فقط به يك درخواست پاسخ داده ميشود. و براي محيطهاي تك كاربره ، تك كاره با ركوردهاي طولاني ، بهترين كارآيي را دارد. درايوهاي spindle همگام شده (؟) براي پرهيز از پايين آمدن كارآيي در مقابل كار با ركوردهاي كوچك به RAID 3 نيازدارند. ( به دليل اينكه RAID 5 با نوارهاي كوچك ميتواند همان كارآيي RAID 3 را داشتهباشد، (كنترلرهاي Adaptec اين نمونه را نيز پشتيباني نميكنند)
RAID 4
RAID 4 با RAID 3 يكسان است . به جز اينكه از نوارهاي بزرگتري استفاده ميكند.به همين دليل ركوردها از هر درايو جداگانه ميتوانند خواندهشوند(البته به جز درايو پريتي). اين عمل اين امكان را ميدهد تا عمليات خواندن به اشتراك گذاشتهشود. در هنگام نوشتن ،عمليات آهسته ميشود جون پس از ذخيره شدن دادهها بر روي يك ديسك ،بايد اطلاعات پريتي نيز در درايو مربوط به پريتي نوشته شوند. به هرحال با هر بار عمل نوشتن بايد پريتي به روزآوري شود و لذا درايوها در موقع نوشتن نميتوانند مشتركاً استفاده شوند. اين ساختار مزيت ويژهاي نسبت به ساير حالات ندارد و كنترلرهاي Adaptec اين نمونه را پشتيباني نميكنند.در يك جمله ميتوان گفت كه استفاده از نوارهاي بزرگتر ( معمولاً دو بلوك ) در RAID 4 به نرمافزار مديريت RAID امكان ميدهد تا با استقلال بيشتري نسبت به RAID 3 به ادارهي ديسكها بپردازد.
RAID 5
اساساً RAID 5 شبيه RAID 1 است . با اين تفاوت كه RAID 5 براي هر نوار از دادهها يك پريتي ذخيره ميكند. اما در مقايسه با RAID 1 عمليات نوشتن آهستهتر است. زيرا يك زمان اضافي براي نوشتن اطلاعات پريتي نياز است.در موقع نوشتن اطلاعات RAID 5 تقريباً 60 درصد آهستهتر از RAID 1 عمل ميكند. عمليات خواندن هم هيچ تغييري پيدا نميكند.براي رسيدن به بهترين كارآيي ، RAID 5 بايد يك فضاي ذخيرهسازي داشته باشد برابر با حاصل جمع فضاي تمامي هارد ديسكها منهاي 1.بعضي مواقع به اين سطح از RAID ،” آرايه با پريتي چرخشي ” نيز گفتهميشود. چرا كه مانند RAID 4 پريتيها را در يك درايو جداگانه جمع نميكند و اين اطلاعات را در تمام آرايه و بر تمام درايوها توزيع ميكند.هيچ درايو منحصر بفردي براي ذخيرهي اطلاعات پريتي وجود ندارد. تمام درايوها شامل داده هستند و عمليت خواندن ميتواند از تمام درايوها به صورت مشترك انجام شود. براي نوشتن اطلاعات نيز به يك درايو داده و نيز يك درايو ديگر براي ذخيرهي اطلاعات پريتي نياز داريم. با توجه به اينكه ،پريتي ركوردهاي مختلف روي درايوهاي ديگر قرارميگيرد ،عمليا ت نوشتن معمولاً ميتواند به اشتراك گذاشته شود.بيشترين استفاده از RAID 5 در سرورها و شبكههاي محلي ميباشد ، جايي كه فضاي ذخيرهسازي و تحمل خطا بسيار اهميت دارد. در اين روش نيازي به وجود درايو آيينه وجود ندارد . زيرا اگر يكي از ديسكهاي اصلي از كار بيفتد ، سرور اطلاعات از دست رفته از نوارهاي پريتي ذهيره شده روي ديگر درايوها بازسازي ميكند. براي اجراي RAID 5 ،حداقل به سه هارد ديسك نياز داريم.
RAID سخت افزاري يا نرم افزاري ؟ كدام يك بهتر است؟
بستگي دارد به هدف و ميزان هزينه شما و انتظاراتي كه شما داريد. RAID نرم افزاري از طريق يك سيستم عامل تنظيم مي شود و به طور ذاتي كارايي كمتري نسبت به كنترلرهاي سخت افزاري RAID دارد. اين به علت فقدان سخت افزار اختصاصي براي مديريت آرايه هاي RAID است. اما بايد گفت كه تنظيم آن، دست كم موقع استفاده از Windows XP Professional، نسبت به سيستم هاي مبتني بر سخت افزار ساده تر و انعطاف پذير تر است.دومين عامل در زمينه بررسي و انتخاب نوع RAID، اين است كه آيا شما مي خواهيد سيستم عامل تان قسمتي از آرايه باشد يا خير؟ بزرگترين محدوديت در انجام RAID در ويندوز XP اين است كه سيستم عامل بايد قبل از ايجاد آرايه RAID نصب شود. به اين معنا كه اگر شما بخواهيد ديسك سيستم عامل خود را Strip كنيد، براي افزايش سرعت Loading راهي جز رفتن به سمت كنترلرهاي RAID سخت افزاري نداريد.بنابراين اگر بدون ايجاد درايوهاي Strip شده ، مي خواهيد حداكثر استفاده را ببريد يا اگر براي Backup هاي خود نياز داريد كه از RAID استفاده نماييد از مادربردي استفاده كنيد كه كنترلر RAID را به صورت Onboard در خود دارد و يا اينكه از يك كارت كنترلر PCI استفاده كنيد. اما اگر مي خواهيد سرعت درايوهاي Stripped را امتحان كنيد به سراغ RAID نرم افزاري برويد كه همان طور كه گفتيم در ويندوز XP, 2000 اين امکان فراهم شده است و ضمناً آسانتر و ارزانتر نيز مي باشد.
تجهيزات RAID از بخش هاي زير تشكيل شده است:
جدول RAID براي تعريف تنظيمات آرايه هاي RAID، ساختارهاي داده به منظور ذخيره Discriptionها براي Cache كردن داده ها، موتورها براي محاسبه اطلاعات توازن ( Parity ) ، بخش منطقي براي هندل كردن ورودي/خروجي ها از آرايه هاي RAID.
اين قسمت ها (Components ) ممكن است به صورت نرم افزاري ارائه شوند( مثل حالت kernel-mode ) يا اينكه درون كنترلرها جاسازي شده باشند. در RAID نرم افزاري يكي از مشكلات اين است كه به دليل مراجعه زياد CPU و اجزاي آرايه و ترافيك بالاي داده اي كه جريان پيدا مي كند مشكلاتي براي ساير نرم افزارها بوجود آمده و در برخي موارد از كار افتادن سيستم را نيز به دنبال دارد.
نتيجه:
RAID نرم افزاري را در صورتي استفاده كنيد كه گستردگي كار شما زياد نباشد و يا براي مصارف خانگي و استفاده در محيط هاي كوچكي كه حجم درخواست ها و تعداد كاربران كمتري دارند استفاده کنيد. اما در محيط هايي با كاربران زياد و عمليات خواندن و نوشتن سنگين، RAID سخت افزاري تنها گزينه است. البته باز هم بستگي به نوع كار دارد.
نكته:
تمام روش ها و تكنيك هايي كه RAID ارائه مي دهد در جهت كاهش اثرات از كارافتادگي سيستم ها و سرورهاست و هيچگاه اين شيوه ها شما را از پشتيباني فايل ها (Backup ) بي نياز نمي كند. پس اگر قصد داريد كه RAID انتخاب كنيد باز هم روش هاي معمول خود براي گرفتن نسخه پشتيبان از داده ها و فايل ها ( به هر صورتي كه هست ) را ادامه دهيد.
RAID سخت افزاري :
بيشتر موارد جدي پياده سازي RAID ، از RAID سخت افزاري استفاده مي شود. به اين معنا كه برخلاف پردازش كنترلي آرايه توسط نرم افزار از سخت افزاري اختصاصي براي كنترل آرايه استفاده شود.در ادامه مزايا و معايب هر كدام از شيوه هاي RAID را بررسي مي كنيم.دو نوع RAID سخت افزاري وجود دارد، كه تفاوت اصلي اين دو نوع در چگونگي ارتباط آرايه با سيستم است.
" BUS-Based " يا كارت هاي كنترلر RAID سخت افزاري :
اين روش ، سنتي ترين و پر استفاده ترين نوع RAID سخت افزاري به ويژه براي سيستم هاي "" دست پايين"" است. يك كنترلر RAID در PC يا سرور نصب مي شود و درايوهاي آرايه به آن متصل مي شوند. اين كنترلر واسطه اي است بين سيستم و هارد ديسك هاي موجود در آرايه و معمولاً از اينترفيس هاي SCSI يا كنترلرهاي IDE/ATA براي اين منظور استفاده مي شود. داده ها از طريق BUS سيستم ( نوعا PCI ) به سراسر PC فرستاده مي شود. برخي مادربردها بويژه براي سيستم هاي سرور به همراه خود به صورت مجتمع، كنترلرهاي RAID را نيز دارند. اين كنترلرها در مادربرد جاسازي شده اند اما از لحاظ كاري تفاوتي با كارت هاي BUS-Based افزودني ندارند. (مانند آنچه كنترلرهاي IDE/ATA در مادربردهاي امروزي انجام مي دهند در مقايسه با سيستم هاي قديمي كه كنترلر IDE آن ها به صورت جداگانه به مادربرد افزوده مي شد ) تنها تفاوت كنترلرهاي مجتمع اين است كه هزينه اضافي را كاهش مي دهند.
كنترلرهاي RAID هوشمند و خارجي:
در اين طراحي كه مورد استفاده سيستم های "بالا دستي" قرار مي گيرد، كنترلر RAID به طور كامل از سيستم جدا شده و در يك جعبه جداگانه قرار داده شده است. درون جعبه، كنترلر RAID درايوهاي آرايه را مديريت مي كند (مثلاً با استفاده از SCSI ) و سپس درايوهاي منطقي از آرايه را در واسطه اي استاندارد به سرورهايي كه از آرايه استفاده مي كنند، ارايه مي دهد. سرور، آرايه يا آرايه ها را فقط به صورت يك يا چند هارد ديسك سريع مي بيند و RAID به طور كامل از ديد ماشين مخفي است. در حقيقت، هر يك از اين واحدها (كنترلرهاي خارجي ) واقعاً يك كامپيوتر درون خودشان دارند. به همراه يك پردازنده اختصاصي كه آرايه ها و فعاليت ها را مانند كانالي بين سرور و آرايه مديريت مي كند.
اجراي RAID به صورت BUS-Based ارزانتر و خيلي ساده تر از اجراي RAID به صورت اکسترنال است. محدوده قيمتي كارت هاي IDE/ATA حدود 100 دلار و در بالاترين حد با استفاده از وسايلي كه از امتيازات خاصي برخوردارند تا چند هزار دلار مي رسد.
اين در حالي است كه سيستم هاي كنترلرهاي خارجي RAID هنوز خيلي گران هستند اما از امتيازها و ويژگي هاي جذاب آن نمي توان چشم پوشيد! مثلاً قابليت توسعه زيادي نسبت به BUS-Based RAID دارند، (براي آرايه هاي بزرگ ، فضايي در حد ترابايت را نيز مي توانند پوشش دهند ) و مي توانند كارآيي بهتري ارايه كنند. اما هزينه اي كه بايد در ازاي اين سخت افزار پرداخت شود معمولاً در حدي نيست كه كاربران معمولي PCها از عهده آن برآيند يا حتي به آن فكر كنند!
توجه :
كنترلرهاي RAID خارجي نبايد با كيس هاي RAID خارجي اشتباه گرفته شود. اين كيس ها كه به Enclosure معروفند داراي Power وساختار فيزيكي خاص براي درايوهاي يك آرايه RAID هستند، اين كيس ها را بيشتر در محيط هاي بزرگ عملياتي كه با داده هاي زيادي با حجم بالا سروكار دارند مي بينيم. ضمناً مي توان تركيبي از كنترلرهاي RAID را با اين سيستم ها ايجاد كرد.در اكثر حالات تصميم گيري براي استفاده از RAID به صورت سخت افزاري مستلزم پرداخت هزينه هاي بالايي است.اگر شما از هر كدام از سطوح پيچيده و مبهم RAID مثل 1+0 مي خواهيد استفاده كنيد، قطعاً بايد به RAID سخت افزاري متوسل شويد چرا كه اين سطوح خاص در RAID نرم افزاري Support نمي شود. و نيز اگر به كارآيي بالا نياز داريد كه در زمان استفاده از سطوح محاسباتي و قدرتي RAID به دست مي آيد انتخاب RAID سخت افزاري الزامي است. به دليل اينكه RAID5 نرم افزاري ممكن است در مواردي براي شما دردسر آفرين باشد.
RAID نرم افزاري:
در مورد RAID نرم افزاري پيش از اين نكاتي گفتيم. حال نگاهي گذرا داريم به مزايا و معايب استفاده از آن:
مزاياي RAID نرم افزاري:
هزينه كم:
اگر قبلاً از سيستم عاملي استفاده كرده و مي كنيد كه RAID را پوشش مي دهد، ديگر نيازي به پرداخت هزينه هاي اضافي نيست. فقط ممكن است نيازداشته باشيد كه حافظه سيستم تان را بالا ببريد.
ساده بودن: نيازي به نصب، تنظيم و مديريت يك كنترلر سخت افزاري نيست.
Duplexing: در بخش اول اين مقاله (شماره 6 ماهنامه) Duplexing را توضيح داديم. در
سطح RAID1 نرم افزاري مي توان از اين شيوه استفاده كرد اما در سخت افزار نه. (البته بسته به نوع كنترلر)
معايب RAID نرم افزاري:
كارآيي پايين:
براي مديريت آرايه ، چرخه هايCPU ( CPU Cycles ) ربوده مي شوند و كار ساير بخش هاي نرم افزاري و سخت افزاري دچار مشكل مي شود. در اصل اين مشكل براي سطوح ساده مثل سطح 1 چندان مهم نيست اما براي سطوح پيچيده اي چون سطح 5 خيلي اهميت پيدا مي كند.
محدوديت Boot Volume:
سيستم عامل نمي تواند از طريق آرايه RAID بوت شود و به يك پارتيشن غير RAID براي بالا آوردن سيستم نياز است كه باعث افزايش زمان بالا آوردن سيستم مي شود.
عدم پوشش سطوح مختلف به طور كامل:
RAID نرم افزاري محدود است به سطح خاصي مانند 0،1 و5 و سطوح جذاب RAID، بيشتر سخت افزاري هستند. ( به جز Duplexing كه قبلاً توضيح داده شد )
عدم حمايت از ويژگي هاي پيشرفته :
اين نوع RAID، از ويژگي اي پيشرفته اي چون Hot Spares و Drive Swapping حمايت نمي كند.
ناسازگاري با سيستم عامل ها :
اگر RAID را براي يك سيستم عامل مشخص تنظيم كنيد، فقط آن سيستم عامل مي تواند به آرايه دسترسي داشته باشد و در صورت نصب ساير سيستم عامل ها قابل دسترس نخواهد بود، و مشكلاتي را براي محيط هايي با چند سيستم عامل كه مي خواهند از RAID استفاده كنند به دنبال خواهد داشت.
ناسازگاري نرم افزاري:
برخي نرم افزارهاي سودمند مثل Partition Magic و برنامه هايي از اين قبيل ممكن است با آرايه هاي نرم افزاري تداخل داشته باشند.
عدم اعتبار و قابليت اطمينان:
برخي كاربران به خاطر باگ هايي كه ممكن است ضمن استفاده از RAID پيش بيايد از آن پرهيز مي كنند، هر چند كنترلر هاي سخت افزاري RAID هم از اين مشكلات دارند اما، نسبت به RAID هاي سخت افزاري با كيفيت خوب بعضي سيستم عامل ها هم هستند كه در برابر اين مشكلات تحمل بيشتري دارند.