آشنايي با فناوری کاربردی RAID
کمي تاريخچه
ایده
مجازیسازی در ابزارهای ذخیرهسازی را اولین بار David A. Patterson، Garth
A. Gibson و Randy Katz در دانشگاه کالیفرنیا، برکلی و در سال 1987 ارائه
کردند. این سیستم در آن زمان با نام آرایه قابل جایگزینی دیسکهای
ارزانقیمت Redundant Array of inexpensive Disks شناخته میشد که بعدها به
RAID تغییر پیدا کرد. هماکنون نام RAID بهعنوان یک شناسه برای معرفی
تمامی فناوريهایی که دادهها را ميان دو یا چند درایو ذخیرهسازی فیزیکی
توزیع میکنند، استفاده ميشود. این آرایه سپس توسط سیستمعامل بهعنوان یک
درایو واحد در دسترس خواهدبود.
فناوري RAID دارای پروتکلهای متعددی
است که هر یک ويژگيهاي خاصی داشته و برای استفاده در محیطهای متفاوت
طراحی شدهاند. هر پروتکل ترکیب متفاوتی از میزان اعتمادپذیری و کارایی را
در اختیار سیستم خواهدگذاشت.
تعدادی از پروتکلهای استانداردشده
بهعنوان سطوح مختلف استاندارد معرفی میشوند. در مراحل ابتدایی
استانداردسازی تنها پنج سطح برای RAID در نظر گرفته شدهبود اما از آن
زمان، تعداد بسیار بیشتری از سطوح که اغلب از طراحیهای تودرتو استفاده
میکنند نیز معرفی شدهاند. در ادامه به معرفی سطوحي خواهيمپرداخت که
بيشترين استفاده را در استاندارد RAIDدارند.
انواع فناوري RAID
RAID0 اولین سطح استاندارد RAID است که بلوکهای دادهها را بدون خطایابی و
همچنین بدون همانندسازی ميان دو درایو فیزیکی توزیع میکند. البته این سطح
به این دلیل که هیچگونه امکان جایگزینی را ارائه نکرده و از هیچ سیستم
تشخیص خطایی نيز استفاده نمیکند، جزء سطوح استاندارد اولیه RAID نبود.
RAID0 کارایی را افزایش داده و تقریباً استفاده از تمامی فضای ذخیرهسازی
هارددیسک را امکانپذير میکند. حجم ذخیرهسازی آرایه برابر با حجم
کوچکترین درایو ضربدر تعداد درایوهای موجود در آرایه است. برای مثال، در
صورت استفاده از یک درایو 120 گیگابایتی و یک درایو 100 گیگابایتی، حجم کلی
ذخیرهسازی برابر با 200 گیگابایت خواهدبود. این سطح هیچگونه محافظتی در
برابر از دست رفتن اطلاعات ارائه نمیکند. هرگونه بروز خطا در هر یک از
درایوهای موجود در آرایه به از دست رفتن تمامی اطلاعات منجر خواهدشد. به
همین دلیل، افزایش تعداد درایوهای هر آرایه به صورت بالقوهای امکان از دست
رفتن دادهها را افزایش میدهد. در صورتی که امکان خرابی هر هارددیسک در
سه سال پنج درصد باشد، در آرایهای با دو هارددیسک، احتمال خرابی در مدت
زمان مشابه دو برابر یعنی ده درصد خواهدبود. در پایینترین سطح، امکان بروز
خرابی دو برابر بیشتر از یک درایو فیزیکی واحد است که بهطور معمول شامل
یک هارددیسک ميشود. این مشکل به این دلیل اتفاق میافتد که هنگام نوشته
شدن دادهها روی درایوهای آرایه، کنترلکننده RAID دادهها را به تکههایی
با نام بلوکهای دادهای میشکند. اندازه این بلوکها را کاربر از
گزینههای موجود در بخش تنظیم کنترلکننده RAID تعیین ميکند. هر چند هر
بلوک میتواند تا اندازه یک بایت کوچک باشد اما بهطور معمول، آنها ضریبی
از اندازه 512 بایتی سکتورهای هارددیسک هستند. این موضوع به هر درایو اجازه
میدهد، در زمان خواندن یا نوشتن دادهها، به صورت مستقل به دادهها
دسترسی داشتهباشد. بلوکهای داده یکی پس از دیگری روی سکتورهای مشابه روی
درایوهای متفاوت نوشتهمیشوند. این روش به سیستم اجازه میدهد، تعداد
بیشتری از بلوکهای مربوط به یک بخش بزرگ از دادهها را به صورت همزمان از
روی هارددیسکها بازخوانی کرده و به این ترتیب پهنای باند مؤثر را افزایش
دهد. RAID0 از هیچ روش بررسی خطایی استفاده نمیکند، به همین دلیل هیچیک
از خطاها قابل تصحیح نخواهندبود. هرچه تعداد دیسکهای یک آرایه بیشتر باشد،
کارایی بالاتر خواهدبود اما از سوی دیگر، خطر از دست رفتن دادهها نیز به
همان میزان افزایش خواهدیافت. از RAID0 تنها در سیستمهایی استفاده میشود
که صرفاً برای کارایی بالا طراحی شدهاند. دادههایی که برای مدت کوتاهی
(کمتر از یک روز) روی سیستم ذخیره خواهندشد یا دادههایی که به سهولت قابل
جایگزینی هستند، بهطور معمول در سیستمهایی با فناوري RAID0 ذخیره میشوند
.

RAID 1
RAID1 دومین سطح استاندارد RAID است که
دادههای مشابه را روی دو یا چند هارددیسک مینویسد. این سطح شامل هیچگونه
توزیع دادهای نيست و درایوها، دادههایی دقیقاً مشابه را دریافت
خواهندکرد. اگرچه امکان استفاده از چندين هاردديسک در RAID1 وجود دارد اما
تقریباً تمامی پیکربندیها از دو درایو فیزیکی استفاده میکنند. سیستم تا
زمانی که یکی از درایوها در حال کار باشد، قابل استفاده خواهدبود. در صورت
استفاده از سیستمعاملهای مناسب، امکان افزایش سرعت در خواندن اطلاعات
وجود خواهدداشت، هرچند سرعت نوشتن در هر حالت، مشابه زمانی است که سیستم از
یک درایو فیزیکی منفرد استفاده میکند. اجرای RAID1 با استفاده از
کنترلکنندههای مجزا برای هر دیسک و خوانش همزمان، گاهی Multiplexing نیز
نامیده میشود. RAID0 اغلب بهعنوان امنترین و البته گرانقیمتترین
پیکربندی RAID شناختهمیشود. به این دلیل که دادههای مشابهی روی تمامی
هارددیسکهای موجود در آرایه ذخیره میشود، فضای ذخیرهسازی در دسترس فقط
به اندازه فضای ذخیرهسازی کمحجمترین درایو موجود در آرایه خواهدبود.
بهعنوان یک مثال ساده، یک آرایه RAID1 که از دو درایو هارددیسک سخت مشابه،
با ضریب خطای پنج درصد در سه سال استفاده میکند، دارای ضریب خطایي برابر
با فقط 25/. درصد در طول مدت مشابه خواهدبود. از آنجا که احتمال بروز خطا
در هر هارددیسک به صورت استاتیکی مستقل است، احتمال بروز خطا در هر دو
درایو به صورت همزمان بسيار کم خواهدبود اما در صورتی که هارددیسک سخت اول
خراب شده و تعویض نشود، احتمال از دست رفتن اطلاعات در طول سه سال، پنج
درصد خواهدبود.

RAID 2
RAID2 هر بیت
داده را (به جای هر بلوک) روی دیسکهای جداگانه مینویسد. در ضمن، این سطح،
از یک سیستم تصحیح خطای خطی به نام Hamming Code نیز استفاده میکند.
تصحیح خطای Hamming قادر است تا حداکثر دو خطای متناوب را تشخیص دهد.
هارددیسکها در RAID2 در هر زمان دارای زاویه چرخش یکسانی هستند، بنابراين
میتوانند به اندیسهای مشابه روی هر هارددیسک بهطور همزمان دسترسی پیدا
کنند. به همین دلیل دستیابی به سرعتهای انتقال بسیار بالا در این سطح
امکانپذیر است. RAID2 تنها سطح اصلی RAID است که در حال حاضر استفاده
نميشود. به دلیل استفاده از کدهای تصحیح خطای Hamming با چهار بیت داده و
سه بیت توازن، آرایههای RAID2 از هفت هاردديسک که چهار تای آنها برای
ذخیره دادهها و سه تای دیگر برای کدهای تصحیح خطا در نظر گرفته شدهاند،
استفاده میکنند. RAID2 تنها سطح استانداردی است که میتواند اطلاعات را به
صورت دقیق از یک بیت داده از دست رفته، محاسبه کند. این سطح همچنین در
بعضی موارد قادر است، دادههای از دست رفته را دوبارهسازی کند اما
نميتواند تناقضهایی را که گاهی ميان بیتهای توازن و داده به وجود
میآید، به صورت قابل اعتماد و بدون دخالت انسان تصحیح کند. به دلیل
استفاده تمامی درایوها از سیستم تصحیح خطای Humming، سطح RAID2 قابلیت
جایگزینی را برای همه آنها فراهم میکند اما در عین حال آرایه به شکل
غيرضروري پیچیده خواهدبود. شاید به همین دلیل بوده که سطح RAID2 نیز مانند
RAID3 به سرعت منسوخ شدهاست. در حال حاضر، RAID2 هیچگونه کاربرد تجاری
ندارد.

RAID 3
RAID3 دادهها را در سطح بایت روی درایوهای
آرایه تقسیم میکند. این سطح همچنین برای ذخیره دادههای توازن از یک
هاردديسک به صورت اختصاصی استفاده میکند. کاربرد RAID3 به شدت محدود است و
در عمل تنها در تعداد بسیار کمی از سیستمها استفاده ميشود. RAID3 به
دلیل مشخصات خاص خود قابلیت سرویسدهی به چند درخواست بهطور همزمان را
ندارد. اين مسئله به دليل ذخيره شدن بلوکهاي منفرد داده که روي
هاردديسکها توزيع شدهاند، در مکاني مشابه، اتفاق ميافتد، بنابراين
هرگونه عملیات خواندن و نوشتن به فعالسازی همه هارددیسکها و اغلب
همگامسازی زاویه چرخش آنها نیاز خواهدداشت. اما بهرغم همه این موارد،
برخلاف سطوح بالاتر، کارایی RAID3 بالا و باثبات است. اندازه هر بلوک داده
میتواند کمتر از اندازه یک سکتور روی هارددیسک یا اندازهای باشد که
سیستمعامل تعریف کردهاست. به همین دلیل کنترلکننده میتواند هنگام
خواندن و نوشتن به همه بخشهای داده در هر زمان دسترسی پیدا کند. کارایی
RAID3 به شکل مشخصی بالاتر از کارایی هر درایو ديگري در آرایه است. نرخ
انتقال داده در این سطح برابر خواهدبود با نرخ انتقال داده خالص هر
هارددیسک ضربدر تعداد درایوها (به جز درایو ذخیرهکننده اطلاعات توازن).
RAID3 برای کاربردهایی مانند تدوین ویدئویی که دادهها را به صورت ترتیبی
خوانده یا مینویسند، ایدهآل است اما در کاربردهایی که به صورت تصادفی به
دادهها دسترسي دارند، در صورت استفاده از RAID3 شاهد کمترین افزایش کارایی
خواهندبود.

RAID 4
RAID4 داده را در سطح بلوک روی درایوها
تقسیم میکند. این سطح نیز همچون سطح سه برای ذخیره اطلاعات توازن از یک
هارددیسک جداگانه بهره میگیرد. تقسیم دادهها در سطح بلوک به اعضای هر
ارائه اجازه میدهد، در صورت نیاز به یک بلوک داده به صورت مستقل عمل کنند.
اگر کنترلکننده RAID این اجازه را داده باشد، آرایه RAID4 قادر است، به
درخواستهای چندگانه به صورت همزمان پاسخ دهد. تنها تفاوت RAID4 با RAID3
در این است که به جای توزیع دادهها در سطح بایت، دادهها به صورت بلوک روی
درایوها توزیع میشوند. از سوی دیگر، تنها تفاوت آن با RAID5 این است که
اطلاعات توازن را روی همه درایوها توزیع نمیکند. RAID4 اغلب دادههای
توازن را با واحدی سختافزاری که به همین منظور در کنترلکننده تعبیه شده،
محاسبه میکند. این سطح RAID برای اجرا دستکم به سه درایو فیزیکی در آرایه
نیاز دارد. ایراد عمده RAID4 این است که به دلیل وجود تنها یک درایو برای
ذخیره اطلاعات توازن، هنگام نوشتن دادهها روی هر یک از درایوهای داده،
کنترلکننده باید از درایو توازن نیز به صورت همزمان استفاده کند. در صورتی
که بیش از یک درخواست و روی بیش از یک درایو در حال پردازش باشد، پهنای
باند درایو ذخیرهکننده اطلاعات توازن به یک گلوگاه در تمام آرایه تبدیل
خواهدشد. در این شرایط، بازدهی تمام آرایه به شدت کاهش خواهدیافت. RAID4
برخلاف RAID3 نیازی به همگامسازی زاویه چرخش در درایوهای متفاوت ندارد.
اگرچه در صورتی که همگامسازی فعال شود و اندازه هر بلوک داده در آرایه به
کمتر از اندازه هر بلوک تعریفشده در سیستمعامل برسد، کارایی کلی بهطور
دقیق مشابه کارایی RAID3 خواهدبود. RAID4 فقط توسط یک شرکت در سطح تجاری
استفاده شدهاست. هر دو سطح RAID3 و RAID4 امروزه با RAID5 جایگزین شدهاند
.

RAID 5
RAID5 دادهها را در سطح بلوک روی درایوهای
آرایه توزیع کرده و اطلاعات مربوط به توازن را نیز روی تمامی آنها
مینویسد. محبوبیت بالای RAID5 بیشتر به دلیل قابلیت جایگزینی ارزانقیمت
آن است. در صورت استفاده از چهار هارددیسک سخت یک ترابایتی، مجموع فضای
ذخیرهسازی در دسترس در RAID1 برابر با یک ترابایت، در RAID1+0 دو ترابایت و
در RAID5 سه ترابایت خواهدبود. اگرچه میتوان کنترلکننده RAID5 را در
کنترلکننده هارددیسک نیز به صورت سختافزاری پیادهسازی کرد و حتی واحدهای
محاسبه اطلاعات توازن را نیز در آن گنجاند، بسیاری از سیستمعاملها،
پیادهسازی آرایه RAID5 را به صورت نرمافزاری و مستقل از کنترلکننده
هارددیسک ممکن کردهاند. برای اجرای آرایه RAID5 دستکم به سه هارددیسک
نیاز خواهدبود. برخی از کنترلکنندهها نیز برای این کار به دستکم چهار
هارددیسک نیاز دارند. یک سری متقارن از بلوکهای داده که هر یک روی یکی از
درایوهای موجود در آرایه قرار گرفتهاند، به صورت انتخابی به صورت یک واحد
در نظر گرفته میشوند. اگر یک بلوک دیگر یا قسمتی از یک بلوک دوباره در
همان واحد نوشته شود، بلوک مربوط به دادههای توازن دوباره باید محاسبه و
نوشته شود. برای اینکار نخست، دادههای موجود در واحد قدیمی خوانده شده،
سپس دادههای قدیمی توازن نیز خوانده ميشود و در مرحله بعد کنترلکننده،
دادههای قدیمی را با دادههایی که درخواست نوشتن آنها داده شده، مقایسه
میکند. برای هر بیت در بلوک داده که مقدار آن تغییر کردهباشد، بیت متناظر
در بلوک توازن نیز تغییر ميکند. در نهایت، نخست بلوک داده، سپس بلوک
توازن دوبارهنویسی میشوند. تنها مشکل عمده در اینجا، عدم وجود یک مکان
ثابت برای ثبت دادههای توازن است. به همین دليل، هنگام نوشتن دادهها،
دادههای توازن مجبور هستند بهطور دائم در سکتورهای مختلف هارددیسک
جابهجا شوند. نوشتن دادهها در RAID5 منابع زیادی از درایو و کنترلکننده
را مصرف میکند و در نتیجه ممکن است به گلوگاهی بر سر راه افزایش کارایی
کلی تبدیل شود. برای افزایش کارایی هنگام خواندن دادهها، دادههای توازن
هنگام انجام عملیات خوانش خواندهنمیشوند. در حقیقت، این دادهها تنها
زمانی خوانده میشوند که کنترلکننده در خواندن هر یک از بلوکهای دادهای
دچار مشکل شود. مهمترین نقطه قوت RAID5 در این است که هنگام بروز خطا در
یکی از هارددیسکها، کنترلکننده سعی میکند بلوکهای توازن موجود در
هارددیسکهای سالم را به صورت ریاضی ترکیب کرده و دادههای موجود در
هارددیسک خراب را بدون نیاز به پیکربندی دوباره سیستم بازسازی کند. این
حالت گاهی با نام «حالت بازیابی داده» نیز شناختهمیشود. کنترلکننده
اطلاع میدهد، یکی از هارددیسکها دچار مشکل شده اما این موضوع تنها به این
دليل است که سیستمعامل باید کاربر را از وقوع اشکال مطلع کرده تا نسبت به
تعویض هارددیسک معیوب اقدام شود. نرمافزارهای مورد استفاده روی سیستم نیز
هیچیک متوجه بروز خطا نخواهندشد و فرآیند نوشتن و خواندن دادهها به شکل
سابق و تنها با اندکی کاهش در کارایی، ادامه خواهدیافت. امکان بروز خرابی
در آرایههای RAID5 به نسبت پایین است و به دلیل امکان جایگزینی خودکار،
این سطح به یکی از محبوبترین سطوح RAID برای افزایش مقاومت آرایه در برابر
خرابی تبدیل شدهاست. ممکن است کارایی در مواردی بسیار کم باشد. مانند
بسیاری از پیکربندیهای دیگر RAID، در صورتی که دادهها به صورت ترتیبی
نبوده و اندازه آنها نیز از اندازه یک واحد کمتر باشد، کارایی هنگام نوشتن
روی آرایههای RAID5 پایین خواهدآمد. این موضوع به خصوص در سیستمهایی که
بهعنوان پایگاه داده استفاده ميشوند، بیش از سایر سیستمها خودنمایی
میکند. البته راهحلهایی چون اضافه کردن یک حافظه موقت برای جمعآوری
دادهها و نوشتن یکباره آنها روی آرایه نیز ارائه شدهاند که میتوانند
مشکل را تا حدودی برطرف کنند. کارایی RAID5 هنگام نوشتن دادهها تقریباً به
خوبی کارایی RAID0 است.

RAID 6
RAID6 سعی میکند امنیت RAID5 را با افزودن
یک بلوک اضافه توازن برای هر واحد از دادهها افزایش دهد. در نتیجه RAID6
شامل توزیع دادهها در سطح بلوک به همراه دو بلوک توازن برای هر واحد از
دادهها خواهدبود. کارايي RAID6 هنگام خواندن بهطور دقیق مانند RAID5 است
اما هنگام نوشتن، به این دلیل که کنترلکننده باید دو مجموعه از دادههای
توازن را روی هارددیسکها بنویسد، حجم زیادی از پهنای باند صرف اینکار
خواهدشد. کارایی کلی RAID6 بهطور کامل به نحوه پیادهسازی آن توسط
تولیدکننده وابسته است. در صورتی که پیادهسازی به شکل بهینه انجام شود،
کارایی میتواند درست به اندازه RAID5 باشد. اجرای آرایه RAID6 همیشه به یک
هارددیسک بیش از RAID5 نیاز دارد اما حفاظت بهتری از دادهها را ارائه
میکند. در آرایههایی که تعداد درایوها در آن کم است، شاید این کاهش ظرفیت
مهم به نظر برسد اما با افزایش تعداد درایوها و کم شدن اهمیت فضای اضافی
مصرفشده، سطح بالاتر حفاظت، از RAID6 گزینه بهتری نسبت به RAID5 میسازد.

ديگر حالتهاي فناوري RAID
به غیر از سطوح ذکرشده که
بهعنوان سطوح استاندارد RAID شناخته میشوند (به جز RAID0) در حال حاضر
چند سطح دیگر نیز که ترکیبی از سطوح استاندارد هستند، استفاده ميشوند. این
سطوح با نام «سطوح تودرتو» نیز شناخته میشوند. در ادامه، به دو نمونه از
مهمترین سطوح تودرتوی RAID خواهیمپرداخت.
RAID0+1 که با نام RAID01
نیز شناختهمیشود هم حفاظت مناسبی از دادهها ارائه کرده و هم کارایی را
افزایش میدهد. کمترين تعداد هارددیسکها برای اجرای این سطح، سه عدد است
اما اغلب از دستکم چهار هارددیسک برای پیادهسازی استفاده میشود. در این
پیکربندی، دو آرایه RAID0 با هم به صورت یک آرایه RAID1 پیکربندی میشوند.
یعنی سیستم در ابتدا دو آرایه RAID0 مشابه میسازد. هر یک از این آرایهها
میتواند خود بهعنوان یک آرایه مستقل استفاده شود. سپس هر آرایه (که متشکل
از دو درایو در حالت RAID0 است) به صورت یک درایو در نظر گرفته شده و این
دو درایو مجازی به صورت RAID1 پیکربندی میشوند. امکان پیکربندی این سطح
RAID با شش درایو نيز وجود دارد. در این حالت، هر سه هارددیسک به صورت
RAID0 پیکربندی میشوند. بيشترين فضای ذخیرهسازی در دسترس برابر با حجم
کوچکترین درایو ضربدر نصف تعداد کل درایوهای آرایه خواهدبود. برای مثال،
اگر چهار درایو صد گیگابایتی استفاده شدهباشند، حجم کلی در دسترس برابر با
دويست گیگابایت است. در یک آرایه با چهار درایو، RAID0 میتواند با خرابی
حتی دو درایو نیز به کار ادامه دهد، به شرطی که این دو هارددیسک هر یک به
یک سمت آرایه تعلق داشتهباشند. در صورت خرابی دو هارددیسک از یک سمت،
دادهها از دست خواهندرفت.

RAID1+0 که گاهی RAID1&0 و RAID10 خوانده میشود، از نظر ساختاری
بسیار شبیه RAID0+1 است، با این تفاوت که مکان بهکارگیری آرایههای RAID0 و
RAID1 در آن جابهجا شدهاست. پیادهسازی این سطح به دستکم چهار درایو
نیاز دارد و ذخیرهسازی دادهها با دو حالت تقریباً مشابه امکانپذير
ميشود. اولین حالت، بررسی میکند، کدام بلوکهای داده با آدرس مشابه در
هارددیسکهای متفاوت نزدیک به یکدیگر هستند، سپس دسترسی به هر هارددیسک با
سرعت کامل به هر یک از درایوها اجرا میشود (منظور از درایو در اینجا آرایه
RAID0 است). کارایی در این حالت مشابه RAID0 خواهدبود اما کنترلکننده
تضمین نمیکند، هر بلوک داده روی هر دو درایو نوشته شود. حالت دوم، از
سیستمی تقریباً مانند RAID0 استفاده میکند که بلوکها را به صورت ترتیبی
روی هر دو درایو RAID0 مینویسد. در این حالت، هر هارددیسک حتماً دادههایی
مشابه با هارددیسک دیگر را در یک درایو منفرد ذخیره خواهدکرد. سرعت خواندن
در این حالت بسیار بالاست، به این دلیل که دادههای موجود روی یکی از
هارددیسکها در هر درایو در يک لحظه خوانده میشوند. اما در حالت نوشتن به
این دلیل که دادهها باید روی هر دو هارددیسک نوشته شوند، کارایی پایینتر
خواهدبود. این آرایه نیز مانند RAID0+1 قابلیت اجرا با بیش از چهار
هارددیسک را دارد.

انواع دیگری نیز از سطوح تودرتوی RAID در دسترس هستند که موارد استفاده مخصوص به خود را دارند و به همین دلیل شاید تنها برای کاربردهای خاصی استفاده شوند. تعداد این سطوح در موارد خاص حتی به بیش از ده عدد میرسد.
دوستان عزیز که از این وبلاگ دیدن میکنید لطفا یه نظر هم بدین یا این که اگر نرم افزاری در نظر دارید بگید که بذارم . دمتون قیژ