RAID مخفف کلمات Redundant Array of Inexpensive disks یا آرایه ای افزونه از دیسک های ارزان بوده است. اما امروز این کلمه اشاره ای است به Redundant Array of Independent drives یا آرایه ای افزونه از دیسک های مستقل که در واقع دسته ای از دیسک هایی هستند که در یک pool و به عنوان Logical volume فعالیت می کنند.

برای داشتن RAID Drive در ساده ترین نوع آن به حداقل دو دیسک نیاز است. در لحظه فقط یکی از RAID Level ها را میتوان بر گروهی از دیسک ها اعمال نمود. هر RAID Level میتواند به نوعی در افزایش Performance، افزایش میزان امنیت داده ها، Fault tolerance و High availability تاثیر داشته باشند.
Software RAID and Hardware RAID
RAID نرم افزاری و سخت افزاری
RAID نرم افزاری دارای Performance کمتری نسبت به نوع سخت افزای آن خواهد بود چرا که نیاز خود به منابع را از منابع Host یا میزبان تامین خواهد کرد و وابسته به سیستم عامل است. یعنی ابتدا سیستم عامل باید بوت شود، سپس RAID کنترلر نرم افزاری لود شود تا امکان دسترسی به داده ها فراهم شود. اما مزیت آن عدم نیاز به صرف هزینه برای تهیه سخت افزار جداگانه است.
RAID سخت افزاری دارای Performance به مراتب بیشتری نسبت به RAID نزم افزاری است. چرا که از منابع سیستم میزبان استفاده نمی نماید و از NVRAM جهت کش کردن داده های خوانده شده و نوشته شده استفاده می کند. به لطف وجود باتری در این نوع رید ها حتی در هنگام بروز قطعی برق، امکان ذخیره سازی داده های درون کش نیز فراهم است. دارای هزینه بالاتری نسبت به RAID نرم افزاری است ولی جهت استفاده در محیط های بزرگ و مهم مانند مراکز داده کاربردی تر هستند.
نمونه ای از RAID سخت افزاری را میتوانید در تصویر زیر مشاهده کنید.

مفاهیم اصلی RAID
- Parity: روشی است که بازگشت اطلاعات و بازیابی آنها را گارانتی می کند. رید های 5 و 6 بر پایه این روش ایجاد شده اند.
- Stripe: تقسیم تصادفی داده ها بر روی دیسک ها می باشد. بدین صورت که کل داده ها بر روی یک دیسک ذخیره نمی شود اگر از دو دیسک استفاده کرده باشیم نصف داده های ما بر روی یک دیسک و نصف دیگر آن بر روی دیسکی دیگر ذخیره می شود.
- Mirroring: در رید های 1 و 10 مورد استفاده قرار میگیرد. در این روش یک کپی از داده های یک دیسک بر روی یک دیسک دیگر نگه داری خواهد شد.
- Hot Spare: دیسکی است که به عنوان دیسک ذخیره در سیستم نگهداری میگردد تا به صورت خودکار با دیسک دارای مشکل جایگزین شود. اگر دیسکی دچار مشکل شود، دیسک Hot spare جایگزین آن شده و داده های دیسک fail شده در آن بازسازی خواهد شد.
- chunks: سایز داده های روی دیسک است که از حداقل 4KB شروع میشود و میتواند مقادیری بیشتر نیز داشته باشد. تعیین میزان chunk size میتواند به بهبود وضعیت I/O نیز کمک کند.
RAID Level های مختلف:
رید دارای level های مختلفی است که پنج level مورد استفاده در محیط های واقعی به شرخ زیر است که در ادامه توضیح بیشتری از عملکرد هر کدام ارائه خواهیم کرد.
- RAID0 = Striping
- RAID1 = Mirroring
- RAID5 = Single Disk Distributed Parity
- RAID6 = Double Disk Distributed Parity
- RAID10 = Combine of Mirror & Stripe. (Nested RAID)
RAID 0 (یا) Striping
این level دارای performance بسیار خوبی می باشد. در این روش داده ها بر دوی دیسک با متد اشتراکی نوشته می شوند. یعنی نصف داده ها بر روی یک دیسک و نصف دیگ بر روی دیسک دیگر نوشته می شوند.
فرض کنید ما دو دیسک با RAID Level 0 داریم و قصد داریم آرایه ای (string) مانند maaleki رو بر روی آن ذخیره کنیم. پس m بر روی دیسک اول و a بر روی دیسک دوم و a دوم مجددا بر روی دیسک اول ذخیره خواهد شد. این شکل توزیع داده ها به صورت round-robin تا اتمام آرایه ادامه پیدا خواهد کرد.
ایراد این روش این است که اگر یکی ار دیسک ها به هر دلیلی fail شود ما داده ها خود را از دست خواهیم داد. چرا که با استفاده از نصف داده های موجود امکان باز سازی کل داده ها وجود نخواهد داشت. در واقع داده های موجود بر روی دیسک دوم عملا داده هایی بلا استفاده خواهند بود. اما از نظر سرعت نوشتن داده ها بر روی دیسک و همچین Performance این Level بسیار عالی است. برای ایجاد level 0 حداقل به دو دیسک نیاز خواهد بود. توجه داشته باشید که برای داده های با ارزش خود از این level استفاده نکنید.
خصوصیت های این Level به صورت خلاصه به شرح زیر است.
- Performance بالا
- استفاده از کل ظرفیت دیسک ها
- عدم وجود fault tolerance
- Performance خوب در نوشتن و خواندن داده ها از روی دیسک ها
RAID 1 (یا) Mirroring
این Level دارای performance خوبی است و میتواند یک کپی از از داده های موجود را نگه داری نماید. تصور کنید ما دو دیسک هر کدام با ظرفیت یک ترابایت داریم. در مجموع ما دارای دو ترابایت ظرفیت هستیم اما در Level 1 ما تنها از یک ترابایت از ظرفیت موجود برای نوشتن داده می توانیم استفاده نمایئم و یک ترابایت باقی مانده برای نگه داری یک نسخه از داده های ذخیره شده در دیسک اول مورد استفاه قرار می گیرد.
در این روش وقتی دیسکی fail شود،داده ای نیز از دست نخواهد رفت چرا که کپی ای از داده ها در دیسکی دیگر موجود است و با جایگزین کردن دیسک معیوب میتوان داده ها را از دیسک دیگر در دیسک جایگزین کپی کرد.
خصوصیات این روش به شرح زیر است.
- Performance بالا
- Fault tolerance کامل
- عدم امکان استفاده از ظرفیت تمام دیسک ها ( نصف ظرفیت برای نگه داری کپی داده ها مصرف می شود )
- بازسازی داده ها در دیسک جایگزین با سرعت خوبی انجام میگیرد.
- سرعت نوشتن داده ها کند تر خواهد شد.
- سرعت خوب در خواندن اطلاعات
- امکان استفاده برای سیستم های عامل و دیتابیس هایی در وسعت کم.
RAID 5 (یا) Distributed Parity
این Level دارای گسترده استفاده زیادی خصوصا در مpیط ها enterprise است. در این روش از توزیع parity استفاده می شود از parity برای باز سازی اطلاعات استفاده خواهد شد. در واقع با استفاده از اطلاعات باقی مانده بر روی سایر دیسک های سالم توان داده های دیسک fail شده را بازسازی کرد.
تصور کنید چهار دیسک 1 ترابایتی داریم و از RAID 5 برای ایجاد یک Array استفاد شده باشد. در این روش اطلاعات parity در هر چهار دیسک ذخیره خواهد شد. فضای مورد استفاده برای parity برای هر دیسک برابر با 256 مگابایت خواهد بود و از باقی فضا به میزان 750 مگابایت برای دخیره داده ها استفاده خواهد شد. در RAID 5 در صورت fail شدن یک دیسک داده ای از بین نخواهد رفت و با جایگزینی دیسک جدید با استفاده از داده های parity موجود بر سایر دیسک ها داده های آن نیز بازسازی خواهد شد اما اگر دو دیسک در این Level دچار مشکل شوند کل داده ها از بین خواهند رفت.
خلاصه خصوصیت های این level به شرح زیر است:
- Performance بسیار بالا
- سرعت بسیار بالا در خواندن اطلاعات
- سرعت متوسط در نوشتن داده ها ( اگر از کنتلر سخت افزاری استفاده نشود سرعت نوشتن بسیار کند خواهد شد)
- امکان بازسازی اطلاعات از طریق Parity موجود بر روی سایر دیسک ها
- Fault tolerance کامل
- عملا فضای قابل استفاده در این روش برابر با n-1 خواهد بود
- برای محیط هایی مانند فایل سرور ها، وب سرور ها و backup storage ها مناسب خواهد بود.
RAID 6 Two Parity Distributed Disk
Level 6 همانند Level 5 می باشد با این تفاوت که به جای یک parity از دو parity استفاده خواهد شد. برای این روش حداقل 4 دیسک نیاز است. حتی اگر دو دیسک در این Level دچار مشکل شوند، با جایگزین کردن دیسک های جدید و استفاده از parity های موجود میتوان داده ها را بازسازی کرد.
این روش هم همانند Level 5 در صورتی که از RAID Controller سخت افزاری استفاده نشود دارای سرعت بسیار پائینی خواهد بود. اما در کل این روش از Level 5 دارای سرعت پائین تری است چرا که داده ها می بایست روی چهار دیسک ذخیره گردد.
تصور کنید که 6 دیسک 1 ترابایتی داریم در نهایت با ایجاد RAID 6 ظریفیت چهار دیسک برای ذخیره داده ها مورد استفاده قرار خواهد گرفت و ظرفیت دو دیسک برای ذخیره parity استفاده خواهد شد.
خلاصه خصوصیات این روش به شرح زیر می باشد.
- Performance پائین ( تقریبا 30 درصد کمتر از RAID 5)
- سرعت خوب در خواندن اطلاعات
- سرعت پائین در نوشتن اطلاعات در صورت عدم استفاده از کنترلر سخت افزاری
- امکان باز سازی اطلاعات با استفاده از دو parity
- fault tolerance کامل
- ظرفیت نهایی در RAID 6 برابر با n-2 می باشد.
- در array های با تعداد بالای دیسک قابل استفاده خواهد بود.
- قابل استفاده برای backup، video streaming و در محیط هایی با وسعت زیاد.
RAID 10 (یا) Mirror & Stripe
RAID 10 که با نام RAID 1+0 هم شناخته می شود، تلفیقی از Level های 1 و 0 می باشد. در این روش ابتدا از روش mirror سپس از روش stripe استفاده می شود.
به عنوان نمونه تصور کنید 4 عدد دیسک داریم و با Level 10 ارایه ای از آنها ایجاد کرده ایم.
ازنظر منطقی داده ها بین دو دیسک به صورت round-robin تقسیم خواهد شد. ابتدا قسمتی از داده بر روی یک دیسک و mirror آن نوشته میشود. (در شکل زیر اول با استفاده از Mirror ابتدا A1 بر روی دیسک 0 و دیسک 1 نوشته می شود) سپس قسمت دوم اطلاعات با استفاده از stripe بر روی دیسک دوم نوشته می شود. ( A2 در دیسک 2 و mirror آن در دیسک 3). این عملیات برای نوشتن کل اطلاعات بر روی دیسک ادامه خواهد داشت.
- خلاصه خصوصیت های این روش به شرح زیر است:
- سرعت خوب در خواندن و نوشتن
- از کل ظرفیت فقط نصف آن برای نوشتن داده ها قابل استفاده خواهد بود.
- وجود Fault tolerance
- بازسازی سریع داده های دارای مشکل با توجه به وجود کپی ای از دیتای هر دیسک
- قابل استفاده برای دیتابیس جهت اطمینان از performance بالا و availability
در این پست ما مفاهیم اولیه RAID را به همراه هم مرور کردیم و با Level های پر کاربرد آن را آشنا شدیم. امیدوارم مفید واقع شده باشد. در پست های بعدی سعی میکنم به نحوه پیکربندی level های مختلف RAID بپردازیم.
دیدگاهتان را بنویسید