RAID 0، 1، 5، 6 و 10: مقایسه و انتخاب
مقایسهی RAID 0، 1، 5، 6 و 10؛ ظرفیت، تحمل خرابی، write penalty، خطر rebuild روی دیسک بزرگ و انتخاب برای سیستم عامل، ماشین مجازی، دیتابیس و فایل سرور.
در این صفحه
برای ماشینهای مجازی و دیتابیس RAID 10، برای فایل سرور و آرشیو با هارد بزرگ RAID 6، و برای دیسک سیستم عامل RAID 1. RAID 5 روی هاردهای چندترابایتی دیگر انتخاب امنی نیست و RAID 0 فقط برای دادهای که از دست رفتنش مهم نیست. بقیهی این مقاله دلیل هر کدام را توضیح میدهد.
مقایسهی سطحهای RAID
در جدول، N تعداد دیسکها و C ظرفیت هر دیسک است.
| سطح | حداقل دیسک | ظرفیت قابل استفاده | تحمل خرابی | write penalty | کاربرد مناسب |
|---|---|---|---|---|---|
| RAID 0 | 2 | N × C | هیچ | 1 | دادهی موقت و scratch |
| RAID 1 | 2 | C | یک دیسک | 2 | سیستم عامل، بوت |
| RAID 5 | 3 | (N − 1) × C | یک دیسک | 4 | SSD، آرشیو کوچک |
| RAID 6 | 4 | (N − 2) × C | دو دیسک | 6 | فایل سرور و آرشیو با هارد بزرگ |
| RAID 10 | 4 | (N ÷ 2) × C | یک دیسک در هر جفت | 2 | ماشین مجازی، دیتابیس |
مثال با ۸ دیسک ۴ ترابایتی:
| سطح | ظرفیت قابل استفاده |
|---|---|
| RAID 5 | 28 TB |
| RAID 6 | 24 TB |
| RAID 10 | 16 TB |
هر سطح چطور کار میکند؟
RAID 0 (striping): داده به قطعههایی تقسیم و بین دیسکها پخش میشود. سریعترین و پرظرفیتترین حالت است، ولی خرابی یک دیسک یعنی از دست رفتن همهی داده.
RAID 1 (mirroring): هر داده روی دو دیسک نوشته میشود. نصف ظرفیت هدر میرود، ولی ساده، قابل اعتماد و مستقل از کنترلر است.
RAID 5 (striping با parity): در کنار داده، اطلاعات parity هم بین دیسکها پخش میشود. با خرابی یک دیسک، داده از روی parity بازسازی میشود. ظرفیت فقط یک دیسک صرف parity میشود.
RAID 6 (double parity): مثل RAID 5 ولی با دو parity مستقل؛ دو دیسک همزمان میتوانند خراب شوند.
RAID 10 (mirror و بعد stripe): دیسکها جفت جفت mirror میشوند و داده بین جفتها stripe میشود. نوشتن سریع و rebuild سریع، به قیمت نصف ظرفیت. تا وقتی دو دیسکِ یک جفت با هم خراب نشوند، آرایه سالم میماند.
write penalty: چرا RAID 5 در نوشتن کند است
در RAID 5، تغییر یک بلوک یعنی چهار عمل روی دیسک: خواندن دادهی قدیمی، خواندن parity قدیمی، نوشتن دادهی جدید و نوشتن parity جدید. در RAID 6 این عدد به شش میرسد و در RAID 10 فقط دو (نوشتن روی هر دو دیسک یک جفت).
برای بارهایی که نوشتن تصادفی زیاد دارند (دیتابیس، ماشینهای مجازی زیاد روی یک آرایه)، همین تفاوت تعیین کننده است. به همین دلیل RAID 10 برای این بارها پیشنهاد میشود، با این که ظرفیت کمتری میدهد.
خطر rebuild روی دیسکهای بزرگ
وقتی یک دیسک در RAID 5 خراب میشود، کنترلر برای بازسازی باید همهی دیسکهای باقی مانده را از اول تا آخر بخواند. دو مشکل پیش میآید:
- زمان: بازسازی آرایهای از هاردهای چندترابایتی ممکن است یک یا چند روز طول بکشد و در این مدت آرایه هیچ تحملی در برابر خرابی بعدی ندارد.
- خطای خواندن غیرقابل بازیابی (URE): سازندهها برای هر هارد یک نرخ URE اعلام میکنند، معمولاً یک خطا در هر 10^14 بیت برای هاردهای ردهی مصرفی و 10^15 یا بهتر برای ردهی سازمانی. در یک rebuild که دهها ترابایت باید خوانده شود، احتمال برخورد با یک URE کم نیست؛ در RAID 5 این یعنی بازسازی ناموفق.
RAID 6 با parity دوم این ریسک را پوشش میدهد. برای SSDها زمان rebuild بسیار کوتاهتر است و RAID 5 روی SSD همچنان قابل قبول است.
RAID پشتیبان نیست
برای طراحی بکاپ، قاعدهی بکاپ 3-2-1 را ببینید.
چند نکتهی عملی
- hot spare: یک دیسک اضافه که کنترلر به محض خرابی یک دیسک، rebuild را خودکار روی آن شروع میکند. در آرایههای بزرگ و سرورهایی که کسی کنارشان نیست، ارزشش را دارد.
- cache کنترلر: کنترلرهای RAID سخت افزاری با cache محافظت شده (باتری یا flash) نوشتن را بسیار سریعتر میکنند. بدون محافظت، cache نوشتن را روشن نکنید؛ قطع برق یعنی از دست رفتن داده.
- دیسکهای هممدل: دیسکهای آرایه را از یک مدل و ظرفیت انتخاب کنید. آرایه به اندازهی کوچکترین و کندترین دیسک رفتار میکند.
- RAID 50 و RAID 60: چند آرایهی RAID 5 یا 6 که با هم stripe شدهاند؛ برای آرایههای خیلی بزرگ که هم ظرفیت و هم کارایی نوشتن مهم است.
اگر آرایه را روی NAS میسازید، Synology یا QNAP را هم ببینید.
کدام RAID را انتخاب کنیم؟
| سناریو | پیشنهاد |
|---|---|
| دیسک سیستم عامل یا hypervisor | RAID 1 با دو SSD |
| ماشینهای مجازی و دیتابیس | RAID 10 |
| فایل سرور و آرشیو با هارد بزرگ | RAID 6 |
| آرایهی تمام SSD با بار عمدتاً خواندنی | RAID 5 |
| دادهی موقت که از جای دیگر قابل بازسازی است | RAID 0 |
انتخاب نوع دیسک برای هر سناریو در HDD، SSD SATA، SAS و NVMe در سرور آمده است.
منابع
- Standard RAID levels (Wikipedia) en.wikipedia.org
- Nested RAID levels (Wikipedia) en.wikipedia.org