RAID روشی برای کنار هم گذاشتن چند دیسک است تا سیستمعامل آنها را یک دیسک ببیند. بسته به سطحی که انتخاب میکنید، RAID میتواند سرعت را بالا ببرد، خرابی یک یا دو دیسک را بدون از دست رفتن داده تحمل کند، یا هر دو. هر سطح برای این مزیتها بهایی میگیرد، معمولاً به شکل فضایی که صرف نسخه تکراری یا Parity میشود.
در سرورها RAID تقریباً همیشه استفاده میشود، چون خرابی دیسک رایجترین خرابی سختافزاری است و سرور نباید با از کار افتادن یک دیسک متوقف شود. ولی RAID فقط در برابر خرابی دیسک محافظت میکند و جای بکاپ را نمیگیرد؛ این موضوع را پایینتر توضیح دادهایم.
مفاهیم پایه: Striping، Mirroring و Parity
همه سطحهای RAID از سه ایده ساخته شدهاند. در Striping داده به تکههای کوچک تقسیم میشود و هر تکه روی یک دیسک نوشته میشود، پس چند دیسک همزمان کار میکنند و سرعت بالا میرود. در Mirroring هر داده عیناً روی دو دیسک نوشته میشود. در Parity از دادهها یک مقدار محاسباتی ساخته میشود که اگر یکی از دیسکها از دست برود، داده آن را از روی بقیه بازسازی میکند.
انواع RAID و کاربرد هر سطح
RAID 0
داده بین همه دیسکها Stripe میشود و هیچ نسخه اضافهای وجود ندارد. سرعت خواندن و نوشتن با تعداد دیسکها بالا میرود و همه فضا قابل استفاده است، ولی خرابی فقط یک دیسک یعنی از دست رفتن کل داده آرایه. RAID 0 فقط برای داده موقت و قابل بازسازی مناسب است، مثل فضای رندر یا کش.
RAID 1
هر داده روی دو دیسک (یا بیشتر) کپی میشود. فضای قابل استفاده برابر یک دیسک است و آرایه تا وقتی یک دیسک سالم بماند کار میکند. RAID 1 رایجترین انتخاب برای دیسک سیستمعامل سرور است: دو SSD کوچک که سیستمعامل روی آنها نصب میشود.
RAID 5
داده و Parity بین حداقل سه دیسک پخش میشوند و فضای یک دیسک صرف Parity میشود. آرایه خرابی یک دیسک را تحمل میکند. RAID 5 از نظر فضا بهصرفه است، ولی نوشتن در آن کندتر است، چون هر نوشتن چهار عمل روی دیسک لازم دارد: خواندن داده و Parity قبلی و نوشتن داده و Parity جدید.
RAID 6
شبیه RAID 5 است، با دو Parity مستقل. حداقل چهار دیسک لازم دارد، فضای دو دیسک صرف Parity میشود و آرایه خرابی همزمان دو دیسک را تحمل میکند. برای آرایههای بزرگ با دیسکهای پرظرفیت، RAID 6 امنتر از RAID 5 است، چون در طول بازسازی هم یک لایه محافظت باقی میماند.
RAID 10
ترکیب Mirroring و Striping است: دیسکها دوتادو آینه میشوند و داده بین این جفتها Stripe میشود. حداقل چهار دیسک و همیشه تعداد زوج لازم دارد و نیمی از فضا قابل استفاده است. آرایه دستکم خرابی یک دیسک را تحمل میکند و اگر دیسکهای خراب در جفتهای متفاوت باشند، تا نیمی از دیسکها. RAID 10 سریعترین گزینه برای نوشتن تصادفی است و برای دیتابیس و ماشینهای مجازی انتخاب معمول است.
RAID 50 و RAID 60
در آرایههای بزرگ چند گروه RAID 5 یا RAID 6 ساخته و داده بین آنها Stripe میشود. RAID 50 حداقل شش دیسک و RAID 60 حداقل هشت دیسک لازم دارد. این سطحها بیشتر در استوریجها و سرورهای با تعداد دیسک زیاد دیده میشوند.
مقایسه انواع RAID در یک جدول
| سطح | حداقل دیسک | فضای قابل استفاده | تحمل خرابی | Write Penalty | کاربرد معمول |
|---|---|---|---|---|---|
| RAID 0 | 2 | همه دیسکها | هیچ | 1 | داده موقت |
| RAID 1 | 2 | یک دیسک | همه بهجز یکی | 2 | سیستمعامل |
| RAID 5 | 3 | n منهای 1 | یک دیسک | 4 | فایلسرور با SSD یا دیسک کوچک |
| RAID 6 | 4 | n منهای 2 | دو دیسک | 6 | آرشیو و فایلسرور بزرگ |
| RAID 10 | 4 | نصف دیسکها | حداقل یک دیسک | 2 | دیتابیس و مجازیسازی |
عدد Write Penalty نشان میدهد هر نوشتن چند عمل روی دیسکها میسازد و مستقیماً روی سرعت نوشتن اثر دارد. برای اینکه فضای دقیق، تحمل خرابی و IOPS تقریبی چیدمان خودتان را ببینید، از ماشین حساب RAID استفاده کنید.
RAID سختافزاری یا RAID نرمافزاری؟
در RAID سختافزاری یک کارت کنترلر، مثل Dell PERC یا HPE Smart Array، آرایه را میسازد و سیستمعامل فقط یک دیسک میبیند. کنترلرهای خوب حافظه کش دارند که با باتری یا حافظه Flash محافظت میشود. این کش اجازه میدهد نوشتنها سریع تأیید شوند بدون اینکه با قطع برق از دست بروند. مدیریت و هشدار خرابی دیسک هم از طریق iDRAC یا iLO انجام میشود. عیب اصلی این است که آرایه به همان خانواده کنترلر وابسته است و اگر کنترلر خراب شود، برای خواندن دیسکها کنترلر سازگار لازم دارید.
در RAID نرمافزاری خود سیستمعامل آرایه را میسازد: mdadm در لینوکس، Storage Spaces در ویندوز سرور و RAIDZ در ZFS. پردازندههای امروزی بار محاسبه Parity را بدون مشکل تحمل میکنند، و دیسکها را میتوان به سرور دیگری برد و آرایه را همانجا بالا آورد. ZFS علاوه بر این، خرابی خاموش داده را با Checksum تشخیص میدهد. مستندات Proxmox VE و TrueNAS توصیه میکنند ZFS روی کنترلر سختافزاری در حالت RAID اجرا نشود و دیسکها مستقیم در اختیارش قرار بگیرند.
یک گزینه سوم هم هست که بهتر است از آن دوری کنید: RAID داخلی مادربرد که به آن Fake RAID میگویند. کار واقعی را درایور سیستمعامل انجام میدهد و در عمل مزیت هیچکدام از دو روش بالا را ندارد.
ساخت RAID نرمافزاری با mdadm در لینوکس
مثال زیر روی Ubuntu یک RAID 1 از دو دیسک خالی sdb و sdc میسازد. این دستورها هر دادهای را که روی این دو دیسک باشد پاک میکنند، پس نام دیسکها را پیش از اجرا با lsblk دوباره چک کنید.
sudo apt install mdadm
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
cat /proc/mdstat
sudo mkfs.ext4 /dev/md0برای اینکه آرایه بعد از ریاستارت با همین نام بالا بیاید، تنظیمات آن را ذخیره کنید:
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -uوضعیت آرایه را با sudo mdadm --detail /dev/md0 ببینید. در فایل mdadm.conf یک آدرس ایمیل جلوی MAILADDR بگذارید تا اگر دیسکی از آرایه خارج شد، باخبر شوید. آرایهای که یک دیسکش خراب شده و کسی متوجه نشده، دیگر افزونگی ندارد و خرابی دیسک بعدی دادهها را از بین میبرد.
بازسازی آرایه و خطری که کمتر دیده میشود
وقتی دیسکی خراب میشود، آرایه در حالت Degraded به کار ادامه میدهد. بعد از گذاشتن دیسک جدید، کنترلر یا mdadm داده دیسک از دست رفته را از روی بقیه بازسازی میکند. در RAID 5 و RAID 6 این کار یعنی خواندن کامل همه دیسکهای باقیمانده. با دیسکهای چند ترابایتی بازسازی ساعتها و گاهی بیش از یک روز طول میکشد، سرعت سرور در این مدت پایین میآید و فشار روی دیسکهای قدیمی زیاد میشود.
در RAID 5 اگر در طول بازسازی دیسک دومی خراب شود یا روی یکی از دیسکها بخشی خواندنی نباشد، بازسازی شکست میخورد. به همین دلیل برای دیسکهای بزرگ، RAID 6 یا RAID 10 انتخاب امنتری است. یک دیسک Hot Spare هم کمک میکند بازسازی بلافاصله بعد از خرابی شروع شود، بدون اینکه منتظر رسیدن کسی به سرور بمانید.
RAID جای بکاپ را نمیگیرد
RAID فقط در برابر خرابی فیزیکی دیسک محافظت میکند. فایلی که اشتباهی پاک شود، فایلهایی که باجافزار رمزگذاری کند، دادهای که نرمافزار خراب کند یا آتشسوزی اتاق سرور، همه در لحظه روی همه دیسکهای آرایه اثر میگذارند. برای این اتفاقها نسخه جدا لازم است، ترجیحاً با قاعده ۳-۲-۱: سه نسخه از داده، روی دو نوع رسانه، که یکی بیرون از محل سرور باشد. مراحل طراحی چنین بکاپی در بکاپ گیری سرور و بازیابی بحران آمده است.
کدام RAID را انتخاب کنم؟
- دیسک سیستمعامل سرور: RAID 1 روی دو SSD.
- دیتابیس و ماشینهای مجازی: RAID 10، یا ZFS با Mirror در Proxmox.
- فایلسرور و آرشیو با دیسکهای مکانیکی بزرگ: RAID 6.
- RAID 5: با SSD یا دیسکهای کمظرفیت، وقتی سرعت نوشتن اهمیت کمتری دارد.
- RAID 0: فقط برای دادهای که از دست رفتنش مهم نیست.
سرور هرچقدر هم آرایه مناسبی داشته باشد، بدون جای مناسب زود خراب میشود. دمای بالا عمر دیسکها را کوتاه میکند؛ شرایطی که اتاق سرور باید داشته باشد را در استاندارد اتاق سرور نوشتهایم.
سوالات متداول
RAID 1 چیست و چه زمانی کافی است؟
RAID 1 یعنی نگهداری دو نسخه یکسان از داده روی دو دیسک. برای سیستمعامل و سرورهای کوچک با حجم داده کم کافی است. اگر به فضای بیشتر یا سرعت نوشتن بالاتر نیاز دارید، با چهار دیسک به RAID 10 بروید.
آیا میتوان سطح RAID را بعداً تغییر داد؟
بعضی کنترلرهای سختافزاری و mdadm تبدیل بعضی سطحها به هم یا اضافه کردن دیسک را بدون پاک کردن داده پشتیبانی میکنند، مثلاً تبدیل RAID 1 به RAID 5. این عملیات طولانی و پرریسک است و پیش از آن حتماً بکاپ کامل و آزمایششده لازم است.
برای SSD هم RAID لازم است؟
بله. SSD هم خراب میشود و معمولاً ناگهانی، بدون نشانههایی مثل صدای دیسک مکانیکی. بازسازی آرایه SSD خیلی سریعتر است و به همین دلیل RAID 5 با SSD خطر کمتری از RAID 5 با دیسک مکانیکی بزرگ دارد.
JBOD چه فرقی با RAID دارد؟
JBOD یعنی دیسکها جدا از هم یا پشت سر هم به سیستمعامل داده شوند، بدون Striping و بدون نسخه اضافه. ZFS و Storage Spaces دیسکها را به همین شکل از کنترلر میگیرند و خودشان افزونگی را مدیریت میکنند.





