RAID (آرایه چندگانه دیسک‌های مستقل و به عبارت دیگر، آرایه چندگانه از دیسک‌های ارزان قیمت)، روشی است برای ذخیره داده‌های یکسان در مکان‌های مختلف، در چندین دیسک سخت تا از داده‌ها در صورت خرابی درایو محافظت نماید. با این حال، این افزونگی را تمام سطوح RAID ارائه نمی‌دهد.

 

تاریخچه RAID

اصطلاح RAID در سال 1987 توسط David Patterson، Randy Katz و Garth A. Gibson  ابداع شد. در گزارش فنی آن‌ها در سال 1988 با عنوان "موردی برای آرایه‌های چندگانه از دیسک‌های ارزان قیمت" (RAID)  اعلام شد؛ که آرایه‌ای از دیسک‌های ارزان قیمت می‌تواند از لحاظ عملکرد بسیار برتر از دیسک‌های موجود در آن زمان عمل کنند. با استفاده از این افزونگی، یک آرایه RAID می‌تواند از هر دیسک معمولی قابل اطمینان تر عمل نماید.

این گزارش اولین گزارشی بود که نام این مفهوم را بیان کرد و قبل از آن نیز استفاده از دیسک‌های چندگانه توسط دیگران مورد بحث قرار گرفته بود. Gus German و Ted Grunau از شرکت ،Geac Computer Corp اولین بار از این ایده به عنوان MF-100 یاد کردند. Norman Ken Ouchi از IBM نیز در سال 1977 حق ثبت اختراع را برای یک فناوری مشابه با آن ثبت كرد؛ كه بعداً به RAID 4 نامگذاری شد. در سال 1983، Digital Equipment Corp نیز درایوهایی را با نام RAID 1 به بازار عرضه کرد و در سال 1986، حق ثبت اختراع برای IBM دیگری به منظور RAID 5 ارائه شد. Patterson، Katz  و Gibson نیز در جهت تحقیقاتی که در شركت‌هایی مانند Tandem Computer ،Thinking Machines و Maxstor انجام شده بود یک طبقه بندی از RAID ارائه دادند.

اگرچه سطوح RAID ذکر شده در گزارش سال 1988در واقع برروی فناوری‌هایی که از قبل استفاده شده بودند تنها نام گذاری کرد، این گزارش با ارائه اصطلاحات رایج برای این مفهوم به شبیه سازی بازار ذخیره داده برای توسعه بیشتر محصولات آرایه RAID کمک نمود.
به گفته Katz، اصطلاح ارزان (inexpensive) در کلمه اختصار RAID، به زودی با اصطلاح مستقل (independent) به دلیل پیامدهای کم بودن هزینه توسط فروشندگان صنعت جایگزین خواهد شد.

 

نحوه عملکر RAID

RAID با قرار دادن داده‌ها بر روی چندین دیسک و اجازه اجرای عملیات‌های ورودی/خروجی (I/O) بصورت همزمان و متعادل، باعث بهبود عملکرد می‌شود. از آنجا که استفاده از دیسک‌های متعدد، میانگین زمان بین خطاها و خرابی‌ها (MTBF) را افزایش می‌دهد، ذخیره چندگانه داده‌ها نیز تحمل خطا را افزایش می‌دهد.

آرایه‌های RAID به عنوان یک دیسک سخت منطقی واحد برای سیستم عامل (OS) ظاهر می‌شوند. RAIDهای مختلف از تکنیک‌های disk mirroring یا disk striping  استفاده می‌کنند. در disk mirroring، داده‌های یکسان روی بیش از یک درایو کپی می‌شود. در تقسیم بندی disk striping، فضای ذخیره سازی هر درایو به واحدهای مختلفی از یک بخش (512 بایت) تا چندین مگابایت تقسیم بندی می‌شود. بخش‌های تمام دیسک‌ها به ترتیب کنار هم قرار گرفته و آدرس دهی شده اند.

در سیستم تک کاربره که در آن رکوردهای بزرگی مانند تصاویر پزشکی یا سایر تصاویر ذخیره شده است، اندازه این بخش‌ها به طور معمول کوچک (مثلا 512 بایت) تنظیم شده است؛ به گونه ای که یک رکورد تنها شامل تمام دیسک‌ها می‌شود و به سرعت می‌توان با خواندن همه دیسک‌ها به صورت همزمان به آنها دسترسی داشت.

در یک سیستم چند کاربره، عملکرد بهتر مستلزم ایجاد بخش‌های به اندازه کافی بزرگ برای نگه داشتن رکوردهای با اندازه معمولی یا اندازه حداکثر است. این اجازه دسترسی چندگانه و همزمان به دیسک‌های I/O را می‌دهد.

Disk mirroring و disk striping می‌توانند در یک آرایه RAID ترکیب شوند. به عنوان مثال هر دو با هم در RAID 01 و RAID 10 استفاده می‌شوند.


کنترل کننده RAID

یک کنترلر RAID می‌تواند به عنوان یک سطح انتزاعی که چندین دیسک را به عنوان واحدهای منطقی معرفی می‌کند، بین سیستم عامل و دیسک‌های فیزیکی استفاده شود. استفاده از یک کنترلر RAID می‌تواند عملکرد را بهبود بخشد و در صورت خرابی به محافظت از داده کمک کند.
یک کنترلر RAID در هر دو آرایه RAID مبتنی بر سخت افزار و نرم افزار قابل استفاده است. در یک محصول RAID مبتنی بر سخت افزار، یک کنترلر فیزیکی آرایه را مدیریت می‌کند. هنگامی‌که در قالب یک کارت اتصال به قطعات جانبی یا کارت PCI Express باشد، کنترلر می‌تواند برای پشتیبانی از قالب‌های درایو مانند SATA و SCSI طراحی شود. یک کنترلر فیزیکی RAID همچنین می‌تواند بخشی از مادربرد باشد.

با استفاده از RAID مبتنی بر نرم افزار، کنترلر از منابع سیستم سخت افزاری استفاده می‌کند. اگرچه این نوع RAID فعالیت‌های مشابه یک کنترلر RAID مبتنی بر سخت افزار را دارد، کنترلرهای RAID مبتنی بر نرم افزار ممکن است به همان میزان افزایش عملکرد را ارائه نکنند.

اگر اجرای RAID مبتنی بر نرم افزار با فرآیند بوت شدن سیستم سازگار نباشد و کنترلرهای RAID مبتنی بر سخت افزار بسیار پرهزینه باشند، کنترلر RAID مبتنی بر میان افزار یا مبتنی بر درایور نیز می‌تواند یکی دیگر از گزینه‌های اجرا باشد.

یک چیپ کنترلر RAID مبتنی بر میان افزار بر روی مادربرد قرار دارد و مشابه RAID مبتنی بر نرم افزار کلیه عملیات‌ها توسط CPU انجام می‌شود. با این حال، با میان افزار، سیستم RAID فقط در ابتدای فرایند بوت اجرا می‌شود. پس از بارگیری سیستم عامل، درایور کنترلر عملکرد RAID را بر عهده می‌گیرد. یک کنترلر RAID مبتنی بر میان افزار به اندازه RAID مبتنی بر سخت افزاری پر هزینه نیست، اما فشار بیشتری به CPU کامپیوتر وارد می‌نماید. RAID مبتنی بر میان افزار به نرم افزار RAID کمک-سخت افزار، مدل ترکیبی RAID و RAID جعلی نیز مشهور است.

سطوح RAID

در مقاله 1988 كه اصطلاح RAID را به جهان معرفی نمود، نویسندگان شش سطح متمایز RAID را از 0 تا 5 تعریف كردند. این سیستم شماره گذاری شده، برای آنها امکان تمایز نسخه‌ها و فهم چگونگی افزونگی و پخش داده‌ها در آرایه را ارائه داد. تعداد سطوح از آن زمان گسترش یافته و اکنون می‌توان آن را به طور کلی به سه دسته تقسیم بندی نمود: سطح‌های RAID استاندارد، تو در تو و غیر استاندارد.

سطح‌های RAID استاندارد

RAID 0: این پیکربندی از تکنیک Striping استفاده می‌نماید، اما افزونگی داده را ندارد. این سطح بهترین عملکرد را ارائه می‌دهد؛ اما تحمل خطایی ندارد.


RAID 1: به عنوان disk mirroring نیز شناخته می‌شود، این پیکربندی شامل حداقل دو دیسک است؛ که داده‌های ذخیره شده را کپی می‌کنند. مکانیزم striping به هیچ وجه در آن استفاده نمی‌شود. کارایی خواندن بدلیل امکان خواندن همزمان از هر دو دیسک بهبود می‌یابد. ولیکن کارایی نوشتن در آن مانند دیسک‌های معمولی است.


RAID 2: این پیکربندی از مکانیزم striping در دیسک‌ها استفاده می‌کند و دیسک‌هایی را برای دخیره سازی اطلاعات خطا در هنگام بررسی و تصحیح خطا (ECC) همراه دارد. این دسته هیچ مزیتی نسبت به RAID 3 ندارد و دیگر مورد استفاده قرار نمی‌گیرد.


RAID 3: این سبک از مکانیزم striping استفاده می‌کند و یک دیسک را برای ذخیره اطلاعات Parity  اختصاص می‌دهد. اطلاعات ECC تعبیه شده نیز برای تشخیص خطاها استفاده می‌شود و بازیابی داده‌ها با محاسبه OR (XOR) انحصاری اطلاعات ذخیره شده در درایوهای دیگر انجام می‌شود. از آنجا که یک عملیات I/O از همه درایوها به طور همزمان استفاده می‌نماید، RAID 3 نمی‌تواند همپوشانی I/O را ساپورت کند. به همین دلیل، RAID 3 برای سیستمهای تک کاربره با کاربردهای ذخیره سازی‌های بالا بهترین گزینه است.


RAID 4: در این سطح از بخش‌های با حجم بالا استفاده می‌شود، به این معنی که می‌توان رکوردها را از هر درایو منفرد خواند. این به شما امکان می‌دهد از I/O همپوشانی شده برای عملیات خواندن استفاده کنید. اما از آنجا که همه عملیات‌های نوشتن باید درایو parity  را به روز کنند، هیچ همپوشانی I/O در آن امکان پذیر نیست. RAID 4 هیچ مزیتی نسبت به RAID 5 ندارد.


RAID 5: این سطح از مکانیزم striping مبتنی بر سطح بلوک به همراه قابلیت parity استفاده می‌نماید. اطلاعات parity در هر درایو به صورت مجزا ذخیره شده است، به این ترتیب امکان فعالیت آرایه را حتی درصورت خراب بودن یک درایو فراهم می‌کند. معماری آرایه اجازه استفاده از چندین درایور را در عملیات‌های خواندن و نوشتن می‌دهد. در نتیجه از نظر عملکردی معمولاً بهتر از یک درایو واحد است، اما به اندازه نوع آرایه RAID 0 کارا نیست. RAID 5 حداقل به سه دیسک نیاز دارد، اما اغلب به دلایل عملکردی توصیه می‌شود حداقل از پنج دیسک استفاده شود.
آرایه‌های RAID 5 به دلیل تأثیر عملکرد مرتبط با نوشتن اطلاعات parity، معمولاً گزینه مناسبی برای استفاده در سیستم‌های مخصوص نوشتن محسوب نمی‌شوند. هنگامی‌که یک دیسک از کار می‌افتد، ممکن است مدت زیادی طول بکشد تا یک آرایه RAID 5  بازسازی شود. عملکرد معمولاً در زمان بازسازی کاهش یافته و آرایه تا زمانی که بازسازی کامل شود، نسبت به خرابی دیسک های دیگر آسیب پذیر است.


RAID 6: این دسته شبیه به RAID 5 است، اما شامل یک طرح parity دوم است که در کل درایوهای موجود در آرایه توزیع می‌شود. استفاده از parity دوم اجازه می‌دهد، آرایه همچنان به فعالیت خود ادامه دهد؛ حتی اگر دو دیسک به طور همزمان خراب شوند. با این حال، این حفاظت اضافی با هزینه ای همراه است. آرایه‌های RAID 6 هزینه بیشتری برای هر گیگ (GB) داشته و اغلب عملکرد نوشتن کندتری نسبت به آرایه‌های RAID 5 دارند.

 

سطح‌های RAID تو در تو

برخی از سطوح RAID با عنوان RAID  تودرتو نامیده می‌شوند؛ زیرا آن‌ها بر اساس ترکیبی از دیگر سطوح RAID است. در اینجا چند نمونه‌هایی از سطوح RAID تو در تو شرح داده می شود.

RAID 10 (RAID 1 + 0): ترکیب RAID 1 و RAID 0 است؛ که اغلب با RAID 10 نامیده می‌شود و عملکرد بالاتری نسبت به RAID 1 ارائه می‌دهد، اما با هزینه ای بسیار بالاتر. در RAID 1 + 0، ابتدا مکانیزم mirroring برروی داده‌ها صورت گرفته و سپس خروجی‌های این مکانیزم stripe می‌شوند.


RAID 01 (RAID 0 + 1) :RAID 0 + 1 مشابه RAID 1 + 0 است، به جز روش سازماندهی داده‌ها که کمی با هم متفاوت است. بدین صورت که در RAID 0 + 1 ابتدا داده ها stripe می شوند و سپس بروی مجموعه خروجی mirroring انجام می‌شود.

RAID 03 (RAID 0 + 3 / RAID 53 / RAID 5+3): این سطح، از مکانیزم striping برای بلوک‌های دیسک مجازی RAID 3 استفاده می‌کند(مشابه سبک RAID 0). این دسته عملکرد بالاتر از RAID 3 را ارائه می‌دهد، اما با هزینه ای بسیار بالاتر.

RAID 50 (RAID 5 + 0): این پیکربندی parity توزیع شده در  RAID 5 و مکانیزم striping استفاده شده در RAID 0  را برای بهبود عملکرد RAID 5 بدون کاهش حفاظت از داده ترکیب می‌کند.

سطوح RAID غیر استاندارد

RAID 7: این سطح RAID مبتنی بر RAID 3 و RAID 4 است، اما ذخیره سازی در حافظه پنهان را نیز به آن‌ها اضافه می‌کند. این طرح شامل یک سیستم عامل تعبیه شده بصورت زمان واقعی، به عنوان یک کنترلر است؛ که ذخیر سازی در حافظه پنهان را از طریق یک باس بسیار سریع و سایر موردهای مخصوص یک کامپیوتر انجام می‌دهد. این سطح RAID یک سطح غیر استاندارد و تجاری است؛ که متعلق به شرکت Storage Computer Corp می‌باشد.

Adaptive RAID: این نوع RAID  به کنترلر RAID اجازه می‌دهد؛ که در مورد چگونگی ذخیره parity روی دیسک‌ها تصمیم بگیرد؛ بدین صورت که بسته به اینکه کدام نوع مجموعه RAID با نوع داده نوشته شده روی دیسک‌ها عملکرد بهتری دارد، از بین RAID 3 و RAID 5 انتخاب می‌نماید.

RAID S (Parity RAID): این یک روش اختصاصی برای RAID دارای Parity از EMC Symmetrix است؛ که دیگر در تجهیزات فعلی استفاده نمی‌شود. به نظر می‌رسد این دسته، مشابه RAID 5 است، با این تفاوت که برخی از بهبودهای عملکرد و همچنین پیشرفتهای حاصل از داشتن حافظه پنهان دیسک بسیار سریع  برروی آرایه دیسک را اضافه تر داراست.

Linux MD RAID 10: این سطح که توسط هسته لینوکس ارائه شده است، از ایجاد آرایه‌های RAID تو در تو و غیر استاندارد پشتیبانی می‌کند. نرم افزار RAID لینوکس می‌تواند از ایجاد دسته‌های استاندارد RAID 0، RAID 1، RAID 4، RAID 5 و RAID 6 نیز پشتیبانی کند.

مزایای RAID

عملکرد، مقاومت و هزینه از مزایای اصلی RAID هستند. با قرار دادن چندین درایو سخت، RAID می‌تواند کار یک دیسک سخت را بهبود ببخشد و بسته به نحوه پیکربندی آن، می‌تواند سرعت و قابلیت اطمینان کامپیوتر را بعد از خرابی افزایش دهد.

در RAID 0، اطلاعات در درایوهای مختلف تقسیم و توزیع شده و با همدیگر برروی یک فایل واحد فعالیت می‌نمایند. به همین ترتیب، خواندن و نوشتن می‌تواند سریعتر از یک درایو واحد انجام شود. RAID 5 داده‌ها را به بخشهایی تقسیم می‌کند، اما درایو دیگری را نیز به parity اختصاص می‌دهد. این درایو parity می‌تواند فعالیت درایورهای دیگر را در هنگام عدم موفقیت مشاهده نماید و می‌تواند تشخیص دهد که در آن درایو خراب چه رخ داده است. این عملکرد به RAID، امکان دسترسی بیشتر را ارائه می‌دهد. با استفاده از مکانیزم mirroring، آرایه‌های RAID می‌توانند دو درایو حاوی داده‌های یکسان داشته باشند؛ که تضمین می‌نماید در صورت عدم موفقیت یکی از درایوها، درایوهای دیگر به کار خود ادامه می‌دهند.

اگرچه اصطلاح ارزان از کلمه اختصار حذف شده است، اما RAID هنوز هم می‌تواند با استفاده از دیسک‌های ارزان قیمت زیادی، منجر به هزینه کمتری شود.

معایب استفاده از RAID

سطوح RAID تو در تو در مقایسه با سطوح RAID سنتی بسیار گران تر هستند؛ زیرا به تعداد بیشتری دیسک نیاز دارند. هزینه برای هر گیگابایت ذخیره سازی نیز برای RAIDهای تو درتو بالاتر است؛ زیرا بسیاری از درایوها برای افزونگی داده استفاده می‌شوند. RAEDهای تودرتو علیرغم هزینه‌های خود، محبوبیت زیادی پیدا کرده اند؛ زیرا به غلبه بر برخی از مشکلات قابلیت اطمینان مرتبط با سطوح RAID استاندارد کمک می‌کنند.

در ابتدای کار، تمام درایوهای موجود در یک آرایه RAID به طور همزمان نصب می‌شوند. این باعث می‌شود درایوها قدمت یکسان داشته و تحت شرایط کارکردی یکسان و میزان ساییدگی مشابه قرار گیرند. بنابراین، وقتی یک درایو خراب شود، احتمال زیاد وجود دارد که به زودی درایو دیگر در آرایه نیز خراب شود.

برخی از سطوح RAID (مانند RAID 5 و RAID 1) می‌توانند تنها یک خرابی درایو را تحمل کنند، اگرچه برخی از اجرای‌های RAID 1  شامل چندین کپی هستند و بنابراین می‌توانند چندین خرابی را حفظ کنند. مشکل این است که آرایه RAID و داده‌های موجود در آن، در وضعیت آسیب پذیر قرار می‌گیرند؛ تا اینکه یک درایو خراب جایگزین شود و دیسک جدید با داده جمع گردد. از آنجا که امروزه درایوها از ظرفیت بسیار بیشتری نسبت به زمان اجرای اولیه RAID برخوردار هستند، برای ساخت مجدد درایوهای خراب به زمان بسیار بیشتری نیاز است. زمان‌های بازسازی طولانی تر، این احتمال را افزایش می‌دهد؛ که درایو دوم قبل از بازسازی درایو اول خراب شود.

حتی اگر در هنگام تعویض دیسک خراب، دیسک دوم خراب نشود، این احتمال وجود دارد؛ که دیسک‌های باقی مانده حاوی سکتورهای بد یا داده‌های غیرقابل خواندن باشند. این نوع شرایط ممکن است بازسازی کامل آرایه را غیرممکن سازد.

سطوح RAID تو در تو با ارائه درجه بیشتری از افزونگی، این مشکلات را برطرف می‌کند و احتمال شکست سطح آرایه را به دلیل خرابی همزمان دیسک بسیار کاهش می‌دهد.

 

 

منبع:

searchstorage.techtarget