درود به همگی ، با تشکر از همکار عزیز جناب محمدجواد توانا و شرکت ایران سرور جهت ارائه این آموزش جامع .
RAID چیست؟
RAID مخفف عبارت Redundant Array of Inexpensive Disksو تکنولوژی برای ترکیب چندین هارد دیسک به یک واحد با هدف افزایش سرعت، کارایی و امنیت وسایل ذخیره سازی میباشد. بدین صورت که چندین هارد دیسک به یکدیگر متصل شده و یک واحد را تشکیل میدهند، بسته به اینکه در چه سطحی از تکنیک RAID پیاده سازی شده باشند، باعث افزایش کارایی سیستم میگردد. این تکنولوژی معمولا در سرورها و کامپیوترهایی که دارای کارایی بالا هستند، مورد استفاده قرار میگیرد.
در سالهای اخیر، با توجه به مشکلات متعددی که باعث از دست رفتن اطلاعات هارد دیسکها و در نتیجه خسارات مالی فراوان میشود، استفاده از تکنولوژی که بتواند از وقوع این گونه مشکلات جلوگیری کند، از اهمیت بالایی برای کاربران برخوردار است.
در سال ۱۹۸۷ سه محقق دانشگاه کالیفرنیا به نامهای David Patterson، Garth A. Gibson و Randy Katz برای اولین بار اصطلاح RAID را که عنوان مقاله A Case for Redundant Arrays of Inexpensive Disks (RAID) بود، مطرح کردند. آنها نظریه خود را با این عنوان که ذخیره و بازیابی اطلاعات بر روی هارد دیسکهای گوناگون میتواند باعث افزایش کارایی سیستم، کاهش هزینه و همچنین کم کردن میزان انرژی مصرفی برای انجام کار شود، مطرح نمودند.
تولیدکنندگان تکنولوژی RAID بعدها نام آن را به Redundant Array of Inexpensive Disks تغییر دادند.
RAID در ابتدا برای استفاده در دیسکهای SCSI مطرح شد، با گذشت زمان و پیشرفت فناوری استفاده از این تکنولوژی در دیسکهای IDE ناموفق بود. اما بعد از آن در دیسکهای SATA به اوج خود رسید.
وسایل ذخیره سازی قدیمیتر، معمولا از یک هارد دیسک برای ذخیره اطلاعات استفاده میکردند. ولی پس از بوجود آمدن این تکنولوژی، سیستمها قادر بودند تا اطلاعات را بر روی چندین هارد دیسک ذخیره نمایند. به این ترتیب اطلاعات به صورت پشت سرهم به بخشهایی شکسته و در چندین هارد دیسک ذخیره میشوند. این نحوه ذخیره سازی این امکان را فراهم می کرد که در کنار بهبود ساختن کارایی سیستم، ظرفیت ذخیره سازی اطلاعات نیز افزایش پیدا کند.
امروزه این تکنولوژی تقریبا در همه وسایل ذخیره سازی به کار رفته است. با این وجود باز هم وسایلی هستند که از این تکنولوژی استفاده نمیکنند. سیستمعامل و کاربران به این حقیقت که وسیله ذخیره سازی از چندین هارد دیسک تشکیل شدهاست پی نمیبرند، و با آن مانند یک دیسک مستقل رفتار میکنند. به کمک RAID اطلاعات میتوانند به صورت موازی بر روی یک یا چند هارد دیسک ذخیره شوند؛ بنابراین اگر یکی از دیسکها با مشکل مواجه شود، اطلاعات باز در دسترس خواهد بود.
پیاده سازی RAID همچون بسیاری دیگر از تکنولوژیها، به دو صورت سختافزاری و نرمافزاری امکان پذیر است که مسلما مدل سخت افزاری دارای سرعت و پایداری بیشتری است. مدل نرمافزاری تنها در شرایطی پیشنهاد میشود که با کمبود امکانات و بودجه مواجه هستیم، و یا اینکه قرار است بر روی یک سیستم پشتیبان و نه سیستم اصلی پیاده سازی شود.
در روش نرمافزاری سیستمعامل یا BIOS مسول پیاده سازی آن خواهد بود، و در روش سختافزاری کنترل کنندههایی به نام Raid Controller این وظیفه را بر عهده دارند. ولی از آنجایی که کنترل کنندههای سخت افزاری قابلیتهای بیشتری نسبت به روش نرمافزاری دارند، لذا کارایی این نوع به مراتب بهتر از نوع نرمافزاری است.
دیسکهای متصل شده به یکدیگر همانند یک آرایه میباشند. به هر کدام از این هارد دیسکها یک عضو آرایه گفته می شود و بسته به اینکه چگونه به یکدیگر متصل شدهباشند در سطحی قرار می گیرند که با عنوان RAID level شناخته میشود. به عنوان مثال RAID 0 یا RAID 1امروزه از فناوری RAID برای سه هدف افزایش کارایی، ظرفیت و امنیت استفاده میگردد.
افزایش ظرفیت معمولا در هر سیستم RAID مورد توجه قرار گرفته میشود. به عنوان مثال دو هارد دیسک میتواند به هم متصل شده و یک واحد ذخیره سازی با ظرفیت بالا را بوجود آورد. افزایش کارایی دلیل دیگری برای استفاده از این تکنولوژی میباشد. در مثال مشابه، دو هارد دیسک به هم متصل شده و یک حافظه را تشکیل میدهد. در این حالت کنترلر میتواند دادهها را به دو قسمت تقسیم کرده و هر قسمت را در یک هارد دیسک قرار دهد؛ با این عمل، کارایی سیستم ذخیره سازی برای خواندن ونوشتن اطلاعات دو برابر میگردد. مورد سوم امنیت را برای اطلاعات کاربران فراهم میسازد. بدین صورت که اطلاعات بر روی دو ویا چند هارد دیسک نوشته شده و در صورتی که یکی از دیسکها با مشکل مواجه گردد، همچنان اطلاعات توسط هارد دیسک دیگر، قابل دسترس خواهده بود.
تکنیک RAID چگونه سازماندهی میشود؟
می توان دو جنبه مستقل برای سازماندهی RAID در نظر گرفت: ۱. قرار دادن اطلاعات در آرایه با استفاده از تکنیکهای parity، striping و mirroring. ۲. پیاده سازی تکنولوژی RAID که شامل پیاده سازی نرمافزاری و سختافزاری میشود.
تکنیکهای ذخیره سازی RAID:
Striping: تقسیم اطلاعات به بخشهایی با اندازههای مشخص، سپس نوشتن این اطلاعات به ترتیب در هارد دیسکها. این تکنیک باعث افزایش فضای سیستم ذخیره سازی میگردد.
Mirroring: تکنیکی برای نوشتن یک کپی از اطلاعات به طور همزمان بر روی چندین هارد دیسک است. این تکنیک باعث جلوگیری در از بین رفتن اطلاعات میشود.
Parity: در این تکنیک همانند تکنیک Striping اطلاعات به بخشهای مساوی شکسته میشوند. همچنین یک کد parity (توازن) تولید و در یک یا چند هارد دیسک ذخیره میگردد. اطلاعات parity به سیستم RAID اجازه میدهد در صورتی که اطلاعات هارد دیسک دچار مشکل شده باشد، آنها را شناسایی و بازسازی کند.
تمام تکنیکهای دیگر RAID، بر اساس این سه تکنیک striping، mirroring، parity و یا ترکیبی از این سه عمل میکنند. برای کسب اطلاعات بیشتر مقاله انواع RAID را مطالعه نمایید.
انواع RAID
پیش از این در ارتباط با اینکه RAID چیست؟ صحبت کردیم، در این مقاله سعی داریم انواع RAID را از دیگاه پیادهسازی بررسی کنیم. بهطور کلی دو پیکربندی برای RAID وجود دارد، که عبارتند از RAID نرمافزاری و RAID سختافزاری.
RAID سختافزاری یا Hardware RAID:
RAID سختافزاری بیشتر برای سرورهای سازمانی، تجاری و همچنین هنگامی که میزان تحمل خطا و بهینه شدن کارایی سیستم بسیار مورد اهمیت کاربراست، مورد استفاده قرار میگیرد.
کارایی سیستم در هنگام خواندن و نوشتن اطلاعات با استفاده از کنترلرهای مختلف میتواند متفاوت باشد.
در اینRAID سختافزاری از یک کنترلر هوشمند (RAID Controller) و آرایه ای از دیسکها برای از بین نرفتن اطلاعات و بهبود کارایی خواندن/نوشتن اطلاعات استفاده میشود.
RAID Controller، وظیفه مدیریت و کنترل دیسکهای متصل شده به هم را بر عهده دارد. این کنترلر هوشمند در دو مدل داخلی و خارجی طراحی شدهاست.
مدل داخلی آن در داخل سرور و به برد اصلی سرور متصل میشود و مدل دیگر آن که به صورت خارجی است، در RAIDهای سطح و مقیاس بالا به کار میرود.
بسته به پیکربندیهای صورت گرفته،RAID سختافزاری کاراییهای متفاوتی را فراهم میکند.
علاوه بر اینکه مدیریت دیسکهای گوناگون را آسان، این قابلیت را فراهم میکند تا کاربر آرایهای از دیسکها را فقط به صورت یک دیسک تنها مشاهده و مدیریت نمایید.
یکی ازنکات مثبتی که در این نوع RAID وجود دارد این است که در بعضی موارد، کاربر حتی میتواند بدون خاموش کردن سیستم، دیسک معیوب را جدا کرده و دیسک جدیدی را به سیستم اضافه نماید.
استفاده از روش ذخیره سازی به صورت آرایهای از دیسکهای متصل به هم، معمولا برای کامپیوترهایی با دیتابیسهای بزرگ موثر میباشد.
معایب RAID سختافزاری:
۱. افزایش هزینه، به این معنی که در کنار دیسک موجود، یک یا چند دیسک دیگر نیز مورد نیاز است.
۲. در صورتی که RAID Controller با مشکل مواجه شود، تا زمان رفع مشکل و یا جایگزین کردن کنترلر جدید، دسترسی به اطلاعات دیسکها نیز امکانپذیر نخواهد بود.
۳. در صورتی که RAID Controller با مشکل مواجه شود، برای بازگردانی اطلاعات، باید جایگزین دقیقی برای کنترلر، تهیه و استفاده شود.
مزایای RAID سختافزاری:
۱. در RAID سختافزاری نیازی نیست که CPU درگیر محاسبات کد Parity شود و این عملیات توسط کنترلر Raid انجام میشود.
۲. اغلب RAID Controllerها جایی برای افزودن باتری دارند که درهنگام قطع ناگهانی برق، اطلاعات از دست نرود.
۳. کنترلرها دارای ویژگیهایی میباشند که در نوع Raid نرمافزاری این ویژگیها وجود ندارند. مانند hot-plugging drives، که میتوان با استفاده از این قابلیت، بهصورت آنلاین ظرفیت سیستم را با افزودن دیسک دیگری، افزایش داد.
RAIDنرمافزاری یا Software RAID:
یک راه ساده برای تشریح RAID نرمافزاری بیان این موضوع است که اجرای کارها، وظایف و همچنین مدیریت پارتیشنها، همگی توسط CPU صورت میپذیرد.
قطعه کدی که ویژگیهای RAID را فراهم میکند، توسط CPU اجرا میشود و در کنار آن قدرت پردازش CPU را با همه برنامهها و سیستمعامل به اشتراک میگذارد.
در Software Raid چنانچه برد اصلی و یا کنترلر RAID با مشکل مواجه شود، میتوان دیسک را به سیستم دیگری منتقل نمود و همانند سیستم قبل به اطلاعات دسترسی پیدا کرد. مهمترین مزیت RAID نرمافزاری نسبت به سختافزاری، هزینه کم آن میباشد که در نوع سختافزاری علاوه بر دیسک موجود، به یک یا چند دیسک دیگر نیز احتیاج داریم.
نوع نرمافزاری مسلما نسبت به نوع سختافزاری دارای قابلیت اعتماد کمتری میباشد و میتواند تحمل خطای سادهتری نسبت به نوع سختافزاری ارائه دهد. اما قطعا اقتصادیتر میباشد وباعث کاهش هزینه مصرفی در سیستم میگردد.
محدودیتی که در RAID نرمافزاری وجود دارد این است که کاربر نمیتواند پیکربندی پیچیده ای همانند نوع سختافزاری اعمال کند. اما در صورتی که فقط بخواهیم از تکنیک mirroring، برای کپی یک نمونه از اطلاعات بر روی دیسک دیگر، استفاده کنیم، این روش هم ارزانتر است و هم دارای پیچیدگی کمتری میباشد.
در مقایسه با نوع سختافزاری RAID، به جای استفاده از آرایهای از هارددیسکها و یک کنترلر، RAID نرمافزاری راهحل بهتری برای مدیریت چندین پارتیشن منطقی در یک دیسک ارائه میدهد. اما بهدلیل ارزانتر بودن و قابلیت اعتماد پایینتر، در صورتی که دیسک به طور کامل با مشکل مواجه شود، اطلاعات از بین خواهند رفت.
امروزه در CPUهای جدید ارائه شده، کارایی RAID نرمافزاری در مقابل RAID سختافزاری بهبود قابل ملاحظهای پیدا کردهاست. در کل، میتوان گفت که کارایی RAID نرمافزاری وابسته به کارایی CPU و میزان لود آن میباشد.
برخی از ویژگیهای مثبتی RAID نرمافزاری:
۱. پیکربندی بر اساس هسته سیستمعامل.
۲. قابلیت حمل پارتیشنهای ایجاد شده به سیستمعاملهای دیگر لینوکس، بدون نیاز به ایجاد مجددا آنها.
۳. پشتیبانی از دیسکهای Hot-swappable.
معایب RAID نرمافزاری:
۱. RAID نرم افزاری سرعت کمتری نسبت به نوع سخت افزاری دارد.
۲. سیستم RAID نرمافزاری محدود به سیستم عاملی که استفاده میکنیم میشود، یعنی اگر بخواهیم دو سیستمعامل را همزمان بارگذاری کنیم، سیستمعامل دوم، آرایه RAIDی که ایجاد شدهاست را شناسایی و پشتیبانی نخواهد کرد.
۳. درصورتی که RAID نرمافزاری توسط mainboard پیادهسازی شود و برد اصلی با مشکل مواجه شود، برای بازگردانی اطلاعات باید دقیقا همان مدل از برد اصلی در سیستم جایگزین گردد.
سطوح مختلف RAID
تا کنون در ارتباط با اینکه RAID چیست؟ و انواع RAID صحبت کردیم، در این مقاله قصد داریم به بررسی سطوح مختلف RAID بپردازیم. RAID دارای چندین سطح میباشد که نوع آن معمولا به وسیله یک عدد مشخص میشود. وقتی که صحبت از سطوح RAID میشود منظور کیفیت ذخیره اطلاعات نیست، بلکه نحوه ذخیرهسازی اطلاعات در آرایهای از دیسکها میباشد. تا کنون ۹ سطح متفاوت RAID پیادهسازی شدهاست که عبارتند از:
RAID 0 RAID 1 RAID 2 RAID 3 RAID 4 RAID 5 RAID 6 RAID 10 یا RAID 1+0 RAID 01 یا RAID 0+1
RAID 0: در این سطح، اطلاعات به بلوکهایی با اندازههای مساوی تقسیم و هر بلوک به یک دیسک منتقل میگردد. به عنوان مثال اطلاعات به بلوکهای A و B با اندازههای مساوی تقسیم و به دیسکها منتقل میشوند. این روش اغلب توسط تکنیک striping استفاده میگردد و باعث افزایش سرعت خواندن و نوشتن اطلاعات میشود.
پیش از استفاده توجه داشته باشید، RAID 0 روشی برای مقابله با از دست رفتن اطلاعات نیست. بهعبارتی در این روش هیچگونه کپی از اطلاعات تهیه نمیشود و هنگامی که یکی از دیسکها با مشکل برخورد کند، اطلاعات کاملا از دست خواهد رفت که البته میتوان با پرداخت هزینه اطلاعات را تا حدودی بازیابی نمود.
RAID 1: این نوع RAID با نام Mirroring نیز شناخته میشود و اطلاعات یکسان بر روی چندین دیسک نوشته میشود. در این روش حداقل دو دیسک لازم است که یک کپی از اطلاعات بهصورت مجزا در هر دیسک ذخیره میشود. در این حالت کارایی خواندن اطلاعات از هر دو دیسک افزایش پیدا میکند و میتوان اطلاعات را همزمان از هر دو دیسک خواند.
همچنین کارایی عمل نوشتن همانند حالتی میباشد که فقط یک دیسک بر روی سیستم وجود دارد.
در RAID 1 چنانچه یکی از دیسکها با مشکل مواجه شود، تا زمانی که دیسک جدید جایگزین دیسک معیوب شود، سیستم میتواند همچنان به کار خود ادامه دهد. این سطح سادهترین و آسانترین روش برای ایجاد یک کپی اطلاعات بر روی دیسک دیگر میباشد. اما معایبی در این روش وجود دارد و آن این است که هزینه دو دیسک توسط کاربر پرداخت میشود ولی فقط یک دیسک (۵۰ درص) آن قابل استفاده خواهد بود. بهعنوان مثال وقتی ۲ دیسک ۱ ترابایتی برای سیستم تهیه شود، با این روش فقط ۱ ترابایت آن توسط سیستم قابل استفاده خواهد بود.
RAID 2: این سطح RAID اطلاعات را با استفاده از تکنیک striping به دو قسمت تقسیم کرده و روی ۲ دیسک مینویسد. همچنین اطلاعات کنترلی خطا (ECC) را روی دیسک دیگر، در قالب بیتهای داده ذخیره میکند. برای محاسبه اطلاعات کنترل خطا از الگوریتم هامر (Hammer Code) استفاده میشود. در هنگام خواندن، داده با اطلاعات کنترلی تطابق داده میشود و اگر خطایی وجود داشتهباشد، تصحیح.
در سطح ۲ RAID سرعت خواندن اطلاعات با توجه به استفاده از روش striping افزایش یافته، اما به دلیل نیاز به خواندن اطلاعات ECC مقداری کاهش پیدا میکند.
RAID 3: دراین سطح پبکربندی RAID، روشStriping سطح بایت را با کیک دیسک Parity اختصاصی فراهم میکند.
یکی از اثرهای جانبی پیکربندی آرایه بهصورت RAID 3 این است که بهطور همزمان نمیتواند به درخواستهای متعددی سرویس دهد. زیرا که هر بلوک واحد از دادهها بر اساس تعریف در بین تمام دیسکهای عضور آرایه تقسیم شده و بر روی موقعیت یکسانی از آنها قرار میگیرد. به این ترتیب، هر عملیات I/O به فعالیت روی هر یک از دیسکها نیاز خواهد داشت که معمولا مستلزم چرخش هماهنگ آنها است. این پیکربندی برای برنامههایی که نیازمند نرخ بالایی برای خواندن و نوشتن اطلاعات به صورت ترتیبی می باشند، مناسب است.
RAID 4: این سطح از RAID از striping بلوک داده با یک دیسک parity اختصاصی استفاده میکند. اطلاعات دیسک parity برای بازگردانی اطلاعات از دست رفته به کار میرود؛ یعنی هنگامی که اطلاعات یک دیسک با مشکل مواجه شود، میتوان با استفاده از دیسک parity، دادههای از دست رفته را بازگردانی نمود.
RAID 4 حداقل ۳ دیسک لازم دارد که ۲ دیسک آن برای اطلاعات و یک دیسک برای parity استفاده میشود. در این سطح به دلیل اینکه دادهها به صورت striping ذخیره شدهاند سرعت خواندن اطلاعات افزایش پیدا میکند. ولی به دلیل اینکه دادههای parity نیز باید در یک دیسک مجزا ذخیره شوند، نوشتن اطلاعات کمی زمانبر خواهد بود.
RAID 5: در این سطح از RAID حداقل به ۳ دیسک نیاز است. همانند RAID 1 اطلاعات بهصورت Mirroring در دیسکها ذخیره میشود. همچنین یک کد parity در بین دیسکها پخش میشود که باعث افزایش کارایی میگردد و در هنگام بروز مشکل میتوان اطلاعات از دست رفته را توسط آن بازیابی کرد. در مقایسه با RAID 1 این سطح، سرعت کمتری در نوشتن اطلاعات دارد. زیرا زمانی هم برای نوشتن اطلاعات parity مورد نیاز است.
بیشترین استفاده از RAID 5 در سرورها و شبکهها است چون فضای ذخیره سازی و تحمل خطا برای آنها مهم است.
RAID 6: تا حدودی مشابه RAID 5 میباشد، با این تفاوت که دادهها را با استفاده از تکنیک striping به بخشهایی تبدیل کرده و دو مجموعه از اطلاعات parity را برای هر بلوک داده ذخیره میکند.
هدف از این کار بهبود تحمل خطای سیستم در هنگام مواجه با مشکلات احتمالی است. کارایی RAID 6 بهدلیل ایجاد سربار درهنگام محاسبه اطلاعات parity و همچنین نوشتن اطلاعات، کمی پایینتر از RAID 5 است ولی بهدلیل اینکه اطلاعات در بین چند دیسک تقسیم شدهاند، خواندن اطلاعات به صورت تصادفی کارایی را کمی افزایش میدهد.
RAID 10 (RAID 1+0): این نوع از RAID ترکیبی از RAID 0 و RAID 1 است. بهعبارتی هم عمل اشتراک اطلاعات و هم تکثیر آن انجام میگردد.
ترکیب دیسکها در RAID 10 کمی پیچیدهتر از سطح ۰ و ۱ است، همچنین کنترلر برای انجام این کار حداقل نیاز به ۴ هارد دیسک دارد.
ابتدا striping دادهها بین مجموعه دیسکها صورت گرفته و سپس Mirroring بین آنها اانجام میشود، بهعبارتی دیگر ابتدا RAID 0 بر روی دادهها اعمال میگردد و سپس بر روی هر بلوک از دادهها عمل Mirroring. تقسیم بلوکهای اطلاعات بین زوج درایوها انجام میگردد و عملیات Mirroring در هر زوج از درایوها صورت میگیرد، میتوان گفت درایو یک و درایو دو RAID 1 شدهاند و Mirror هستند، درایو سه و چهار نیز Mirror یکدیگر. این دو مجموعه درایو به صورت Strip تنظیم شده و با هم کار میکنند.
RAID 01 (RAID 0+1): در این سطح RAID نیز حداقل به ۴ دیسک نیازمندیم. عملکرد این سطح از RAID، برخلاف RAID 10 است. بدین صورت که در ابتدا اطلاعات بهصورت Mirroring به هرمجموعه دیسک منتقل میشود، هر مجموعه دارای یک جفت دیسک میباشد، سپس اطلاعات در این مجموعه به صورت striping بر روی دیسکها دخیره میشود.
منبع آموزش : ایران سرور - خریدهاست، سرور مجازی، هاست حرفه ای، سرور اختصاصی در ایران، هاست امن، هاست لینوکس و هاست ویندوز