RAID چیست؟
RAID روشی برای ترکیب چند دیسک فیزیکی است تا بتوان به هدفهایی مثل افزایش کارایی، افزایش تحمل خرابی یا مدیریت بهتر ذخیرهسازی رسید.
تعریف
اگر داخل یک سرور چند هارد یا SSD وجود داشته باشد، میتوان آنها را طوری کنار هم قرار داد که:
- یا سریعتر کار کنند
- یا اگر یکی از دیسکها خراب شد، دادهها از بین نروند
- یا هر دو
به این روش کلی، RAID گفته میشود.
RAID مخفف Redundant Array of Independent Disks است.
RAID یک مکانیزم در سطح ذخیرهسازی است که چند Physical Disk را با استفاده از تکنیکهایی مثل Striping، Mirroring و Parity به یک یا چند Logical Drive / Virtual Disk تبدیل میکند.
این کار میتواند با یکی از روشهای زیر انجام شود:
- Hardware RAID توسط RAID Controller
- Software RAID توسط سیستمعامل، مانند
mdadmدر لینوکس - Hybrid / Fake RAID در برخی سیستمها و مادربردها
چرا از RAID استفاده میشود؟
RAID فقط برای «یکی کردن چند دیسک» نیست. هدف اصلی آن، طراحی بهتر ذخیرهسازی است.
| مزیت | توضیح ساده | توضیح فنی |
|---|---|---|
| افزایش تحمل خرابی | اگر یک دیسک خراب شود، سرویس ممکن است همچنان فعال بماند | بسته به RAID Level، داده از طریق Mirror یا Parity قابل بازیابی است |
| بهبود کارایی | خواندن و نوشتن میتواند سریعتر شود | Striping و Parallel I/O باعث افزایش Throughput میشوند |
| استفاده بهتر از چند دیسک | چند دیسک بهصورت یک فضای واحد مدیریت میشوند | Controller یا OS آنها را به یک ساختار منطقی تبدیل میکند |
| سادهتر شدن مدیریت | سیستمعامل معمولاً بهجای چند دیسک، یک یا چند دیسک منطقی میبیند | RAID خروجی خود را بهصورت Logical Drive ارائه میدهد |
RAID جای Backup نیست.
RAID ممکن است شما را در برابر خرابی دیسک محافظت کند، اما در برابر این موارد محافظت کامل ایجاد نمیکند:
- حذف اشتباهی فایلها
- خراب شدن فایلسیستم
- باجافزار
- خطای انسانی
- آتشسوزی یا از دست رفتن کامل سرور
پس حتی اگر RAID دارید، همچنان به Backup واقعی نیاز دارید.
RAID چگونه کار میکند؟
در سادهترین حالت، چند دیسک فیزیکی وارد یک لایه RAID میشوند و خروجی آن به شکل یک دیسک منطقی به سیستمعامل نمایش داده میشود.
در این مسیر:
- دیسکهای فیزیکی داخل سرور قرار دارند
- RAID Controller یا Software RAID آنها را مدیریت میکند
- خروجی این لایه معمولاً یک Logical Drive است
- سیستمعامل این خروجی را مثل یک دیسک عادی میبیند
- سپس روی آن Partition، LVM یا File System ساخته میشود
مفاهیم پایه در RAID
برای درک RAID، باید سه مفهوم اصلی را بشناسید:
1) Striping
در Striping، داده بین چند دیسک پخش میشود.
این کار باعث میشود چند دیسک همزمان روی داده کار کنند و کارایی بهتر شود.
- مزیت اصلی: Performance
- محدودیت اصلی: معمولاً بهتنهایی Fault Tolerance ایجاد نمیکند
2) Mirroring
در Mirroring، یک کپی یکسان از داده روی دیسک دیگر نوشته میشود.
- مزیت اصلی: تحمل خرابی
- محدودیت اصلی: بخشی از ظرفیت برای کپی داده مصرف میشود
3) Parity
Parity نوعی اطلاعات اضافه است که به RAID کمک میکند در صورت خرابی یک یا چند دیسک، داده را بازسازی کند.
- مزیت اصلی: تعادل بین ظرفیت و تحمل خرابی
- محدودیت اصلی: محاسبه Parity روی کارایی نوشتن اثر میگذارد
Parity را میتوان نوعی «اطلاعات کمکی برای بازسازی داده» در نظر گرفت.
به کمک این اطلاعات، RAID در بعضی Levelها میتواند بعد از خرابی دیسک، داده را دوباره محاسبه و بازیابی کند.
RAID Levelهای رایج
همه RAIDها شبیه هم نیستند. هر RAID Level برای نیاز خاصی مناسب است.
مقایسه سریع
| RAID Level | حداقل تعداد دیسک | ظرفیت قابل استفاده | تحمل خرابی | کارایی | کاربرد متداول |
|---|---|---|---|---|---|
| RAID 0 | 2 | مجموع کل دیسکها | ❌ هیچ | بسیار بالا | داده موقت، Cache، Workload غیرحیاتی |
| RAID 1 | 2 | حدود 50٪ | ✅ خرابی یک دیسک در هر Mirror | خواندن خوب، نوشتن عادی | سیستمعامل، Boot Volume |
| RAID 5 | 3 | مجموع دیسکها منهای 1 دیسک | ✅ خرابی 1 دیسک | خواندن خوب، نوشتن متوسط | فایلسرور، ظرفیتمحور |
| RAID 6 | 4 | مجموع دیسکها منهای 2 دیسک | ✅ خرابی 2 دیسک | خواندن خوب، نوشتن ضعیفتر از RAID 5 | آرشیو، ظرفیت با ایمنی بیشتر |
| RAID 10 | 4 | حدود 50٪ | ✅ حداقل 1 دیسک و در بعضی چیدمانها بیشتر | بسیار خوب | VM، Database، Workload پرترافیک |
هر RAID Level به زبان ساده
RAID 0
در RAID 0 داده بین چند دیسک تقسیم میشود، اما هیچ کپی یا Parity وجود ندارد.
- مزیت: بسیار سریع
- ضعف: اگر فقط یک دیسک خراب شود، کل Array از دست میرود
RAID 0 فقط برای سناریوهایی مناسب است که از دست رفتن داده قابل قبول باشد یا داده در جای دیگری نگهداری شود.
RAID 1
در RAID 1 داده روی دو دیسک بهصورت آینهای نوشته میشود.
- مزیت: خرابی یک دیسک معمولاً باعث از دست رفتن سرویس نمیشود
- ضعف: نیمی از ظرفیت صرف Mirror میشود
کاربرد رایج:
- دیسک سیستمعامل
- Boot Volume
- سرورهای کوچک با تمرکز بر سادگی و پایداری
RAID 5
در RAID 5 داده و Parity بین دیسکها توزیع میشود.
- مزیت: ظرفیت قابل استفاده بهتر از RAID 1 و RAID 10
- ضعف: در عملیات نوشتن، محاسبات Parity باعث افت کارایی میشود
- تحمل خرابی: خرابی 1 دیسک
کاربرد رایج:
- فایلسرور
- Workloadهایی که خواندن بیشتر از نوشتن دارند
RAID 6
RAID 6 شبیه RAID 5 است، اما بهجای یک Parity، از دو Parity استفاده میکند.
- مزیت: تحمل خرابی 2 دیسک
- ضعف: نوشتن کندتر از RAID 5
- کاربرد: آرشیو، حجمهای بزرگ، جایی که ریسک Rebuild طولانی مهم است
RAID 10
RAID 10 ترکیبی از Mirroring + Striping است.
- مزیت: Performance بالا + Fault Tolerance مناسب
- ضعف: فقط حدود 50٪ ظرفیت قابل استفاده است
- کاربرد: زیرساخت مجازیسازی، پایگاهداده، VM Storage
در بسیاری از زیرساختهای حرفهای، RAID 10 برای Workloadهای حساس و پرترافیک یکی از بهترین گزینهها است، چون نسبت به RAID 5/6 در نوشتن و Rebuild رفتار بهتری دارد.
مثال با 4 دیسک 1 ترابایتی
فرض کنید 4 دیسک 1TB دارید.
| RAID Level | ظرفیت قابل استفاده | تحمل خرابی |
|---|---|---|
| RAID 0 | 4TB | 0 دیسک |
| RAID 1 | معمولاً 2TB در صورت دو جفت Mirror | خرابی 1 دیسک در هر جفت Mirror |
| RAID 5 | 3TB | 1 دیسک |
| RAID 6 | 2TB | 2 دیسک |
| RAID 10 | 2TB | خرابی 1 دیسک در هر جفت Mirror |
در RAID 10 نمیتوان بهسادگی گفت «همیشه 2 دیسک قابل خرابی است».
اگر هر دو دیسک خرابشده در یک جفت Mirror باشند، کل Array از دست میرود.
پس تحمل خرابی RAID 10 به الگوی خرابی دیسکها هم بستگی دارد.
Hardware RAID و Software RAID
RAID را میتوان به دو روش اصلی پیادهسازی کرد.
مقایسه
| ویژگی | Hardware RAID | Software RAID |
|---|---|---|
| محل پیادهسازی | RAID Controller | سیستمعامل |
| مدیریت | از طریق BIOS/Controller Utility | با ابزارهایی مثل mdadm |
| وابستگی به OS | کمتر | بیشتر |
| قابلیت Boot | معمولاً سادهتر | بسته به پیکربندی |
| Cache اختصاصی | معمولاً دارد | معمولاً ندارد |
| هزینه | بیشتر | کمتر |
| انعطافپذیری | وابسته به Vendor | در لینوکس بسیار بالا |
چه زمانی از Hardware RAID استفاده میشود؟
- سرورهای Enterprise
- زمانی که Controller حرفهای با Cache و Battery/FBWC وجود دارد
- زمانی که میخواهید سیستمعامل فقط خروجی نهایی RAID را ببیند
چه زمانی از Software RAID استفاده میشود؟
- سرورهای لینوکسی بدون RAID Controller حرفهای
- محیطهایی که سادگی سختافزار یا استقلال از Vendor مهم است
- سناریوهایی که مدیریت با ابزارهای استاندارد لینوکس ترجیح داده میشود
در بسیاری از سناریوهای سازمانی، وقتی از اصطلاح RAID در لایه سرور صحبت میکنیم، منظور معمولاً Hardware RAID است؛ مگر اینکه صراحتاً از Software RAID نام برده شود.
RAID و Logical Drive چه رابطهای دارند؟
یکی از مهمترین نکات این است که RAID خودش همان دیسکی نیست که سیستمعامل میبیند.
خروجی RAID معمولاً یک Logical Drive است.
RAID یک روش برای سازماندهی و محافظت از چند دیسک است، اما Logical Drive خروجی نهایی آن برای سیستمعامل است.
- RAID = مکانیزم یا ساختار
- Logical Drive = دیسکی که سیستمعامل مشاهده میکند
مفاهیم مهم عملیاتی در RAID
Rebuild
وقتی یک دیسک خراب میشود و با دیسک جدید جایگزین میشود، RAID شروع به بازسازی داده روی دیسک جدید میکند. به این فرآیند Rebuild گفته میشود.
- در زمان Rebuild معمولاً کارایی کاهش مییابد
- در Arrayهای بزرگ، Rebuild ممکن است زمانبر باشد
- در این بازه، ریسک خرابی دوم اهمیت بیشتری پیدا میکند
Hot Spare
Hot Spare دیسکی است که بهصورت آماده در سیستم وجود دارد اما فعال نیست.
اگر یکی از دیسکهای Array خراب شود، RAID میتواند بهصورت خودکار Rebuild را روی Hot Spare شروع کند.
Cache
بعضی RAID Controllerها دارای Write Cache / Read Cache هستند.
این Cache میتواند کارایی را بسیار بهتر کند، اما باید وضعیت ایمنی آن نیز بررسی شود.
اگر Write Cache فعال باشد اما حفاظت مناسب مثل Battery Backup یا Flash-Backed Write Cache وجود نداشته باشد، در زمان قطع برق ممکن است داده از دست برود.
چگونه RAID مناسب انتخاب کنیم؟
انتخاب RAID به این پرسشها بستگی دارد:
| سؤال | اثر روی انتخاب RAID |
|---|---|
| آیا کارایی مهمتر است یا ظرفیت؟ | اگر کارایی مهم باشد، RAID 10 معمولاً بهتر است |
| آیا نوشتن زیاد داریم یا خواندن زیاد؟ | RAID 5/6 در نوشتن ضعیفتر از RAID 10 هستند |
| آیا خرابی دو دیسک باید تحمل شود؟ | RAID 6 مناسبتر از RAID 5 است |
| آیا هزینه مهم است؟ | RAID 5/6 ظرفیت بهتری نسبت به RAID 10 میدهند |
| آیا Rebuild طولانی نگرانکننده است؟ | روی دیسکهای بزرگ، RAID 10 یا RAID 6 معمولاً منطقیتر از RAID 5 است |
جمعبندی انتخاب سریع
| سناریو | RAID پیشنهادی |
|---|---|
| Boot / OS | RAID 1 |
| VM Storage / Database | RAID 10 |
| Archive / Capacity-Focused Storage | RAID 6 |
| Read-Heavy General File Storage | RAID 5 یا RAID 6 |
| Temp / Scratch Data | RAID 0 فقط در صورت قابل قبول بودن ریسک |
نقش RAID در پلایوید
در معماری پلایوید، RAID بخشی از طراحی صحیح لایه ذخیرهسازی است، مخصوصاً وقتی از Local Storage استفاده میشود.
الگوی متداول میتواند به این شکل باشد:
| بخش | RAID رایج | دلیل |
|---|---|---|
| OS | RAID 1 | سادگی، پایداری، Boot امنتر |
| VAR / Log | RAID 1 یا بخشی از Storage سیستمی | جداسازی دادههای متغیر |
| DATA / VM Workloads | RAID 10 | کارایی بهتر و رفتار مناسبتر در Write |
| Backup Local | RAID 6 یا RAID 10 | بسته به اولویت ظرفیت یا Performance |
اگر پلایوید روی Storage اشتراکی مثل SAN، NAS یا Distributed Storage اجرا میشود، انتخاب RAID ممکن است در لایه پایینتر و خارج از خود سرور انجام شده باشد.
اشتباههای رایج درباره RAID
1) RAID یعنی Backup
خیر. RAID فقط بخشی از High Availability و Fault Tolerance است، نه جایگزین Backup.
2) هرچه RAID پیچیدهتر باشد بهتر است
خیر. RAID مناسب باید با Workload، تعداد دیسکها، بودجه و هدف طراحی هماهنگ باشد.
3) چند Logical Drive روی یک Array یعنی کارایی کاملاً جدا
خیر. اگر چند Logical Drive از همان مجموعه دیسکها ساخته شوند، همچنان در پشت صحنه از همان I/O مشترک استفاده میکنند.
4) RAID 5 همیشه انتخاب اقتصادی و خوب است
نه لزوماً. در دیسکهای بزرگ و Workloadهای سنگین، زمان Rebuild و ریسک خطا میتواند RAID 5 را به گزینه ضعیفتری تبدیل کند.
نکات مهم برای کارشناسان آیتی
- از دیسکهای هماندازه و همنوع استفاده کنید؛ معمولاً کوچکترین دیسک مبنای ظرفیت قرار میگیرد
- Firmware کنترلر و دیسکها را با دقت مدیریت کنید
- وضعیت Predictive Failure، Media Error و Battery/Cache را مانیتور کنید
- روی Arrayهای بزرگ، اثر URE و زمان Rebuild را جدی بگیرید
- برای Workloadهای سنگین، Stripe Size و Alignment فایلسیستم را بررسی کنید
- قبل از Production، سناریوی Disk Failure / Rebuild / Controller Failure را تست کنید
- در صورت استفاده از Software RAID، ابزارهای مانیتورینگ مثل
mdadm --detailو Alerting را فعال کنید
برای زیرساختهای مجازیسازی و Workloadهای حساس، معمولاً باید علاوه بر RAID مناسب، روی Monitoring، Spare Disk، Backup و تست Recovery نیز برنامهریزی شود.
جمعبندی
RAID روشی برای ترکیب چند دیسک است تا بتوان بین کارایی، ظرفیت و تحمل خرابی تعادل ایجاد کرد.
اگر خیلی ساده بخواهیم بگوییم:
- RAID 0 = سریع، اما بدون حفاظت
- RAID 1 = ساده و مطمئن برای سیستمعامل
- RAID 5 = ظرفیت بهتر، تحمل خرابی یک دیسک
- RAID 6 = ایمنتر برای ظرفیتهای بزرگ
- RAID 10 = انتخاب قدرتمند برای VM و Workloadهای پرترافیک
و مهمتر از همه:
- RAID با Logical Drive فرق دارد
- RAID با Backup فرق دارد
- انتخاب RAID باید بر اساس نیاز واقعی زیرساخت انجام شود، نه فقط ظرفیت خام