به مجموعه ای از هاردها که با الگوریتم ها و روش های خاصی یک دیتا را ذخیره می کنند. هدف از ساخت و ایجاد RAID را میتوان به شرح زیر مطرح کرد :
- امنیت دیتا یا همان تحمل خطا (Fault tolerance)
- افزایش سرعت Read/Write و در نتیجه افزایش Performance
انواع روش های ایجاد RAID :
- نرم افزاری : در روش نرم افزاری از ابزارهایی که سیستم عامل دارد برای ایجاد RAID استفاده می شود بنابراین در این نوع نیاز به سیستم عاملی می باشد که بتواند این قابلیت را به ما بدهد. معایب : چون در این روش خود سیستم عامل وظیفه اجرا و مدیریت RAID ها را بر عهده دارد طبیعتا به دلیل استفاده از منابع سیستم باعث کندی و کاهش کارایی می شود که البته این کاهش کارایی تا حد زیادی به نوع RAID که استفاده می کنیم هم بستگی دارد. مزایا : در این روش نیازی به خریداری سخت افزار مجزا نیست که طبیعتا کاهش هزینه را به همراه دارد و البته برای محیط تست و تمرین و موارد آموزشی میتواند مناسب باشد.
- سخت افزاری : نیاز به تهیه یک قطعه سخت افزاری مجزا به نام RAID Controller داریم تا کار ایجاد و مدیریت RAID را برایمان انجام دهد. البته این Controller های سخت افزاری معمولا روی سرورهای سخت افزاری وجود دارد به عنوان مثال سرورهای شرکت HP برای خود یک کنترلر دارند که بعضا با استفاده از نرم افزاری به نام HP Smart Start در Boot سیستم و حتی قبل از نصب سیستم عامل راه اندای می شوند.مزایا : RAID های سخت افزاری قابل اعتماد تر از RAID های نرم افزاری هستند. و وابستگی به نرم افزار یا همان سیستم عامل ندارند. در روش نرم افزاری ابتدا نیاز به نصب سیستم عامل و در گام بعد راه اندازی RAID هست ولی در سخت افزاری قبل از راه اندازی سیستم عامل میتوان RAID ایجاد نمود.در سخت افزاری چون خود ریدکنترلر ( به وسیله منابع پردازشی که دارد) امور مربوط به RAID و نحوه تقسیم دیتا را برعهده دارد طبیعتا سیستم عامل و منابع سیستم را درگیر نمی کند و در نتیجه باعث کاهش کارایی سیستم نمی شود.معایب: برخلاف RAID نرم افزاری ، RAID سخت افزاری نیاز به سخت افزار خاص دارد که متعاقبا افزایش هزینه را دربر دارد.
در تصویر زیر یک نمونه RAID Controller محصول شرکت Fujitsu را مشاهده می کنید.
چند نکته: در نوع سخت افزاری وقتی RAID انجام می دهیم در نهایت خروجی به عنوان یک Disk به سیستم عامل معرفی می شود. و سیستم عامل یک دیسک می بیند که عملیات پارتیشن بندی را روی این دیسک انجام می دهد و برای نوشتن دیتایش را تحویل کنترلر داده و بقیه امور توسط کنترلر انجام می شود. اگر تنظیمات Disk Management در سیستم عامل را ببینید این قضیه را مشاهده خواهید کرد.Storage Controller : چیپستی که روی مادربرد pc ها قرار دارد و با اتصال هارد ها به این چیپست امکان استفاده از هاردها فراهم می شود. به نوعی واسط بین هارد و سیستم عامل است.
انواعRAID
معرفی RAID 0
این نوع با نام striped volume هم شناخته می شود . در اینجا حد اقل نیاز به دو عدد دیسک داریم . اگر تعداد دیسک ها را n در نظر بگیریم در این روش وقتی دیتایی به دست RAID Controller میرسد آن را به n قسمت تقسیم می کند و هر قسمت را داخل یک دیسک ذخیره می کند.مزایا : سرعت بسیار بالایی دارد این RAID به Crazy raid معروف است. معایب : اصلا تحمل خطا ندارد یعنی این که اگر یک دیسک Fail شود کل دیتا ناقص میشود. کاربرد : در جایی که به سرعت بالا نیاز داریم و مانایی دیتا برایمان اهمیتی ندارد مثلا در Cache server ها و در محیط تست و لابراتور های آموزشی. سوال: چرا در RAID 0 اگر حتی یک دیسک از بین برود کل دیتا تحت تاثیر قرار می گیرد و قابل استفاده نمی باشد؟ جواب این سوال را با یک مثال شرح می کنم. در زمان فرمت volume قسمتی به نام Allocation unit size داریم مقداری که در اینجا تعریف می کنیم مثلا ۶۴k سیتم عامل برای ذخیره سازی دیتا روی این volume دیتا را به تکه های ۶۴ تایی تقسیم و تحویل کنترلر می دهد.حالا فرض کنید فایل a.mp3 با حجم ۱۲۸k را میخواهیم روی دیسک ذخیره نمائیم ، سیستم عامل این فایل را به دو تکه ۶۴ تایی تقسیم می کند (به این تکه ها بلاک می گوئیم) به نام فرضی A1 , A2 و به کنترلر تحویل می دهد حالا خود کنترلر طبق مکانیسم هایی که دارد هر کدام از این A1 , A2 را به n قسمت تقسیم کرده و هر قسمت را روی یک دیسک می نویسد مثلا اگر دو دیسک داشته باشیم A1-1 , A2-1 روی دیسک اول و A1-2 , A2-2 هم روی دیسک دوم. پس کنترلر عملیات تقسیم را به ازای هر بلاک انجام میدهد از اینرو اگر دیسکی از بین برود تمامی فایلها قسمتی از بلاک هایشان را از دست داده اند.بهتر است در انتخاب تعداد دیسک هد در RAID 0 طبق قاعده باینری عمل کنیم مثلا ۲ , ۴ , ۸ ,۱۶ … این کار باعث افزایش کارایی خواهد شد.
معرفی RAID 1
در این نوع نیاز به دو عدد دیسک داریم دیتا به صورت mirror دقیقا روی هر دو دیسک نوشته میشوند بنابراین سرعت نوشتن کم میشود.این نوع بهترین برای نصب سیستم عامل است.
معرفی RAID 5
برای جبران معایب صفر و یک ساخته شد. مکانیسم عملکرد به این صورت است که کنترلر دیتا را به N-1 قسمت تقسیم میکند و هر قسمت را روی یک دیسک مینویسد وروی دیسک باقیمانده Parity مربوط به آن n قسمت را مینویسد.Parity : یک فرمول به دست آمده از بخش های دیتا است که سایزش اندازه دیگر بخش هاست.مثال: با ۳ دیسک رید ۵ راه اندازی کرده ایم بلاک A به n-1 قسمت که میشود ۲ قسمت تقسیم میشود که میدهد A1 , A2 حالا A1 روی دیسک اول و A2 روی دیسک دوم و Parity(A1A2) روی دیسک سوم ذخیره میشود با تلفیق A1 با Parity به A2 و با تلفیق A2 با Parity به A1 میرسیم. کنترلر برای ذخیره این قسمت ها روی دیسک به صورت چرخشی عمل می کند یعنی Parity را به ترتیب هر بار روی یک دیسک می نویسد.تحمل خطا در این روش یک دیسک است.یعنی اگر دو دیسک همزمان از بین بروند دیتا را از دست میدهیم. اگر یک دیسک از بین برود دو حالت پیش می آید یا اینکه Parity بوده که خب مشکلی برای دیتا ایجاد نمی شود یا اینکه یک قسمت از دیتا بوده که باز با تلفیق سایر قسمت ها با Parity کنترل به آن قسمت می رسد و Recovery انجام میدهد. مثلا برای بلاک A در رید ۵ با ۴ دیسک داریم:
A1 + A2 + Parity a = A3
A1 + A3 + Parity a = A2
A3 + A2 + Parity a = A1
کاربرد: رید ۵ کاربرد عمومی دارد مثلا برای File server , Web server
معرفی RAID 6
مشابه رید ۵ می باشد منتها دوبار Parity دارد. در روش چون دوتا Parity داریم دیتا به n-2 قسمت تقسیم می شود.در این رید نیاز به حداقل ۴ دیسک داریم.نحوه ایجاد Parity : یک بار برای قسمت های دیتا Parity محاسبه می کند و یک بار هم برای مجموع Parity قبلی و دیتا Parity محاسبه می کند. چون دو تا Parity داریم تحمل خطا به دو دیسک افزایش می یابد. برای بلاک A در رید ۶ با ۴ دیسک داریم:
A1 + Parity (A) = A2
A2 + Parity (A) = A1
A1 + Parity (A, Parity (A)) = A2 , Parity (A)
A2 + Parity (A, Parity (A)) = A1 , Parity (A)
Parity (A) + Parity (A, Parity (A)) = A1 , A2
معرفی RAID 10
از ترکیب RAID 0 با RAID 1 حاصل می شود. در این مدل ما یک Parent raid داریم و یک Sub raid . به این صورت میباشد که parent از نوع RAID 0 و SUB از نوع RAID 1 .نیاز به حداقل ۴ دیسک داریم (D1 , D2 , D3 , D4 ) که دو دیسک ، دو دیسک باهم RAID 1 می شوند و نتیجه حاصله باهم RAID0 می شوند.عملکرد: اگر تعداد Subraid ها را n در نظر بگیریم وقتی بلاک A به کنترلر میرسد کنترلر ابتدا آن را به n قسمت تقسیم میکند و هر قسمت را به یک Subraid میدهد در مرحله بعد در هر Subraid هر قسمت دقیقا روی دو دیسک نوشته می شود.
تحمل خطا در این نوع رید به شانس ما هم بستگی دارد مثلا فرض کنید ۸ تا هارد داریم که میشود ۴ تا رید ۱ و یک رید صفر که ۴ عضو دارد . حالا اگر همزمان از هر subraid یک هارد بسوزد ۴ تا هارد سوخته داریم ولی هیچ اتفاقی برای دیتا نیافتاده . اما اگر در یک subraid همزمان دو تا هاردش بسوزد یعنی اینکه یک رید ۱ را از دست داده ایم که می شود یکی از اعضای رید صفر از دست رفته و با توجه به خاصیت رید صفر که در بالا توضیح داده شد کل اطلاعات مان از دست میرود و بی استفاده می شود.کاربرد : از آنجایی که در کار با دیتابیس ها بیشتر عملیات خواندن داریم این نوع رید برای استفاده در دیتابیس کاربرد دارد.
معرفی RAID 50
از ترکیب RAID 0 با RAID 5 حاصل می شود. در این مدل ما یک Parent raid داریم و یک Sub raid . به این صورت میباشد که parent از نوع RAID 0 و SUB از نوع RAID 5 .اگر تعداد Subraid ها را n و تعداد دیسک های هر رید۵ را m در نظر بگیریم . بلاک A ابتدا به دلیل وجود رید صفر به n قسمت تقسیم میشود و هر قسمت به یک subraid تعلق می گیرد. سپس هر قسمت به m-1 قسمت دیگر تقسیم شده و در دیسک ها نوشته می شود.برای RAID 50 با توجه به تعداد دیسک ها میتوان هم بندی های متفاوتی در نظر گرفت . مثلا برای ۲۴ عدد هارد حالت های زیر را داریم:
تحمل خطا و سرعت در هر هم بندی متفاوت است هر چه تعداد subraid ها بیش تر شود سرعت و حجم کمتری داریم ولی تحمل خطا بیشتر میشود.
معرفی RAID 60
از ترکیب RAID 0 با RAID 6 حاصل می شود. ویژگی های RAID 50 را دارد با این تفاوت که subraid در اینجا RAID 6 است.
نکته قاعده کلی در مورد RAID :
ظرفیت و نوع هاردها باید یکی باشد.