RAID: محافظت از داده با پخش آن روی چند دیسک

یک درایو ذخیره‌سازی واحد می‌تواند در هر لحظه خراب شود، و به‌طور بالقوه داده ارزشمند را بدون هیچ هشداری نابود کند. این مقاله توضیح می‌دهد RAID چگونه چند دیسک را ترکیب می‌کند تا قابلیت اطمینان، کارایی، یا هر دو را بهبود بخشد، و مبادلات بین رویکردهای mirroring، striping، و مبتنی بر پریتی را پوشش می‌دهد.

RAID, Mirroringدیسکذخیره‌سازی مبتنی بر پریتی

~4 دقیقه مطالعه · آخرین به‌روزرسانی ۱۵ شهریور ۱۴۰۵

چرا یک دیسک واحد پایه خطرناکی است

دستگاه‌های ذخیره‌سازی پایدار، که پیش‌تر در این مجموعه به‌عنوان سطح سلسله‌مراتب حافظه زیر حافظه اصلی بحث شد، می‌توانند به‌طور غیرمنتظره‌ای به‌دلیل فرسودگی مکانیکی یا نقص‌های الکترونیکی خراب شوند. برای اپلیکیشن‌هایی که از دست دادن داده غیرقابل‌قبول است، تکیه بر یک درایو فیزیکی واحد بسیار پرخطر است، صرف‌نظر از اینکه هر درایو منفرد به‌طور میانگین چقدر قابل‌اعتماد باشد.

ایده اصلی پشت RAID

RAID (Redundant Array of Inexpensive Disks) چند دیسک فیزیکی را در یک واحد ذخیره‌سازی منطقی واحد ترکیب می‌کند، با استفاده از افزونگی، توزیع داده کارایی‌محور، یا هر دو، تا سطحی از قابلیت اطمینان یا سرعت را به دست آورد که هیچ دیسک منفردی نمی‌توانست به‌تنهایی فراهم کند.

RAID 0: Striping برای سرعت، بدون افزونگی

RAID 0 داده را به‌طور یکنواخت در چند دیسک پخش می‌کند، تکنیکی به نام Striping، که اجازه می‌دهد چند دیسک به‌طور هم‌زمان خوانده یا نوشته شوند، و توان عملیاتی را به‌طور قابل‌توجهی افزایش می‌دهد. با این حال، RAID 0 هیچ افزونگی‌ای فراهم نمی‌کند: اگر هر دیسک منفردی در آرایه خراب شود، تمام داده در سراسر کل آرایه از دست می‌رود، چون هر دیسک بخشی از هر فایل را نگه می‌دارد نه یک کپی کامل از هر چیزی.

RAID 1: Mirroring برای قابلیت اطمینان

RAID 1 رویکرد مخالف را اتخاذ می‌کند، به نام Mirroring: هر قطعه داده به‌طور یکسان روی دو دیسک جداگانه نوشته می‌شود. اگر یک دیسک خراب شود، دیگری همچنان یک کپی کامل و آسیب‌ندیده از تمام داده را نگه می‌دارد، و سیستم می‌تواند بدون هیچ از دست دادن داده‌ای به کار خود ادامه دهد. مبادله هزینه است، چون دو برابر ظرفیت ذخیره‌سازی فیزیکی برای ذخیره همان مقدار قابل‌استفاده داده مورد نیاز است.

RAID 4 و RAID 5: دستیابی به افزونگی کارآمدتر با پریتی

Mirroring امنیت را تضمین می‌کند اما نیمی از کل ظرفیت ذخیره‌سازی را هدر می‌دهد. RAID 4 و RAID 5 به‌جای آن از Parity استفاده می‌کنند، مفهومی مشابه با تکنیک تشخیص خطا که پیش‌تر در این مجموعه درباره حافظه قابل‌اعتماد بحث شد، تا افزونگی را بسیار کارآمدتر به دست آورند. یک بلوک پریتی اضافه، که از داده روی دیسک‌های دیگر محاسبه می‌شود، همراه با داده واقعی ذخیره می‌شود؛ اگر هر دیسک منفردی خراب شود، داده ازدست‌رفته‌اش می‌تواند با ترکیب دیسک‌های داده باقی‌مانده با اطلاعات پریتی بازسازی شود.

مثال با 3 دیسک داده و 1 دیسک پریتی:
دیسک A: 1010
دیسک B: 0110
دیسک C: 1100
پریتی (XOR از A، B، C): 0000

اگر دیسک B خراب شود، داده آن می‌تواند
از دیسک A، دیسک C، و پریتی بازسازی شود

RAID 5 نسبت به RAID 4 بهبود یافته با توزیع اطلاعات پریتی در سراسر همه دیسک‌های آرایه به‌جای اختصاص یک دیسک به‌طور کامل به پریتی، و از یک گلوگاه کارایی که در غیر این صورت هر بار که هر داده‌ای نوشته می‌شد رخ می‌داد اجتناب می‌کند.

چرا سطوح مختلف RAID برای نیازهای مختلف مناسب‌اند

انتخاب بین این رویکردها به‌شدت به این بستگی دارد که برای یک اپلیکیشن مشخص چه چیزی بیشترین اهمیت را دارد: RAID 0 سرعت خام را بدون هیچ محافظتی ترجیح می‌دهد، RAID 1 حداکثر امنیت و سادگی را به قیمت کارایی ذخیره‌سازی ترجیح می‌دهد، و سطوح RAID مبتنی بر پریتی به‌دنبال یک میانه عملی هستند، و محافظت قوی در برابر خرابی یک دیسک را با استفاده کارآمدتر از ظرفیت ذخیره‌سازی نسبت به mirroring کامل ارائه می‌دهند.

چرا RAID برای سیستم‌های دنیای واقعی اهمیت دارد

زیرساخت سرور و مراکز داده به‌شدت به پیکربندی‌های RAID برای محافظت در برابر این تقریباً-قطعیت که در سراسر تعداد زیادی درایو، برخی دیسک منفرد در نهایت خراب خواهد شد، متکی هستند — و آنچه در غیر این صورت یک رویداد از‌دست‌دادن‌داده روی یک درایو منفرد بود را به یک کار نگهداری روتین و بدون اختلال تبدیل می‌کنند، صرفاً با جایگزین کردن دیسک خراب‌شده و اجازه دادن به آرایه برای بازسازی.

نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

تصورات غلط رایج درباره محاسبات موازی و درس‌های نهایی کتاب

پس از پوشش هر چیزی از موازی‌سازی سطح رشته تا محاسبات در مقیاس انبار، ارزش دارد تصورات غلط پایداری درباره سیستم‌های موازی که حتی مهندسان باتجربه هم گاهی به آن‌ها دارند را اصلاح کنیم. این مقاله به مغالطات رایج درباره مقیاس‌پذیری و سخت‌افزار موازی می‌پردازد، سپس فصل پردازش موازی را با پیوند دادن مسیر کامل از یک دستور منفرد تا یک ساختمان پر از ماشین‌های همکار به پایان می‌رساند.

ادامه

واقعیت‌های عملی: بنچمارک CPU در مقابل GPU و ضرب ماتریس چندپردازنده‌ای

مقایسه منصفانه یک CPU و یک GPU نیازمند مدلی است که هم توان عملیاتی محاسباتی و هم محدودیت‌های پهنای باند حافظه را با هم در نظر بگیرد. این مقاله مدل roofline مورد استفاده برای مقایسه سخت‌افزار واقعی مانند Intel Core i7 و NVIDIA Tesla GPU را معرفی می‌کند، سپس نشان می‌دهد ضرب ماتریس چگونه در سراسر چند پردازنده تسریع می‌شود، به‌عنوان کاربرد عملی نهایی مفاهیم موازی این فصل.

ادامه

بنچمارک کردن چندپردازنده‌ها و مدل‌سازی کارایی موازی

سنجش کارایی یک سیستم موازی نیازمند ابزارها و سنجه‌های متفاوتی نسبت به سنجش یک پردازنده تک‌هسته‌ای است. این مقاله بنچمارک‌های تخصصی مورد استفاده برای ارزیابی سیستم‌های چندپردازنده را پوشش می‌دهد، توضیح می‌دهد چگونه رفتار مقیاس‌پذیری را با افزودن پردازنده‌های بیشتر مدل‌سازی کنیم، و قانون آمدال را در زمینه سنجش کارایی دنیای واقعی بازبینی می‌کند.

ادامه

شبکه‌سازی کلاستر: ارتباط با دنیای بیرون

یک کلاستر از ماشین‌ها فقط زمانی مفید است که بتواند به‌طور کارآمد هم داخلی و هم با دنیای بیرون ارتباط برقرار کند. این مقاله لایه‌های شبکه‌سازی درگیر در ارتباط کلاستر، مبادلات بین تأخیر و پهنای باند در مقیاس، و اینکه کلاسترها چگونه به شبکه‌های خارجی و کاربران متصل می‌شوند را پوشش می‌دهد.

ادامه

کلاسترها، کامپیوترهای در مقیاس انبار، و توپولوژی‌های شبکه

فراتر از یک تراشه واحد، موازی‌سازی به کل ساختمان‌های پر از کامپیوترهای مستقلی که با هم کار می‌کنند گسترش می‌یابد. این مقاله گذار از چندپردازنده‌سازی حافظه مشترک به کلاسترهایی از ماشین‌های جداگانه را توضیح می‌دهد، مفهوم محاسبات در مقیاس انبار را معرفی می‌کند، و توپولوژی‌های شبکه که این ماشین‌های مستقل را به‌طور کارآمد متصل می‌کنند را پوشش می‌دهد.

ادامه

مقدمه‌ای بر GPU: موازی‌سازی عظیم برای بارهای کاری سنگین از نظر داده

یک GPU ایده SIMD که پیش‌تر در این مجموعه پوشش داده شد را به یک مقیاس افراطی می‌برد، و هزاران رشته سبک را به‌طور هم‌زمان اجرا می‌کند تا حجم عظیمی از داده مستقل را پردازش کند. این مقاله توضیح می‌دهد چرا GPU ها از نظر معماری این‌قدر با CPU متفاوت‌اند، مدل اجرای رشته آن‌ها چگونه کار می‌کند، و چه نوع بارهای کاری بیشترین بهره را از این طراحی می‌برند.

ادامه