کلن Raid چیه و به چه دردی می خورد ؟
به زبان ساده، Raid که مخفف (Redundant Array of Independent Disks) هستش، یک تکنولوژی برای مدیریت اطلاعات روی چند دیسک هستش. با توجه به نیازی که وجود داره و حساسیت اطلاعات، ممکنه لازم باشه که اطلاعات سیستم در چند جا ذخیره بشه که در صورت از بین رفتن یکی از دیسکها، اطلاعات همچنان در دسترس باشد. خوبه که بدونیم هدف Raid فقط جلوگیری از نابودی اطلاعات نیست و می تونیم ازش برای بالا بردن سرعت خوندن نوشتن بر روی دیسکها و پخش متوازن اطلاعات بر روی دیسکها هم استفاده کنیم.
Raid در لول های (levels) مختلفی پیکربندی میشه که این زیر پرکاربرد ترین هاشونو با هم بررسی میکنیم.
لول صفر: در این لول، اطالاعات روی تمامی دیسکها به صورت یکنواخت و متوازن نوشته می شوند. در این حالت در صورتی که یکی از دیسکها به مشکل بخورن، به هیچ عنوان امکان بازیابی وجود ندارد. این مدل از Raid تنها برای بالا بردن سرعت استفاده می شود.
لول ۱: در این لول، اطلاعات به صورت یکسان در دو جا نوشته می شه (از هر بیت که بر روی یه دیسک نوشته میشه، یک کپی روی یه دیسک دیگه نوشته میشه). در صورتی که لازم دارین اطلاعات رو جوری ذخیره کنید که در صورت بروز مشکل برای یکی از دیسکها همچنان اطلاعات در دسترس باشد، این حالت از Raid، یکی از بهترین گزینه ها برای شماست. این موضوع رو هم در نظر داشته باشید که چون اطلاعات باید در دو جا نوشته بشن، عملکرد سیستم کمی پایین میاد.
لول ۵: در این لول، اطلاعات به صورت نوبتی و متوازن بر روی تمامی دیسکها نوشته می شن. حالا فرقش با لول صفر اینه که در این لول، یک دیسک به عنوان parity در نظر گرفته می شه که داخلش یک سری اطلاعات از دیتای موجود در دیسکهای دیگه وجود داره. این دیسک به شما این امکان را می دهد که در صورتی که یکی از دیسکها به طور کامل از بین برود، اطلاعات همچنان در دسترس باشند. در این حالت، عملکرد سیستم بسیار بهتر از لول ۱ هستش اما نه به خوبی لول صفر.برای پیاده سازی این لول حداقل ۳ دیسک نیاز است.
لول ۱+۰: در این لول که بسیار هم مرسوم هست، شما دیسکهاتون رو به دو گروه تقسیم می کنید
و بین این دو گروه Raid لول صفر ایجاد می شود که یعنی دیتا به صورت نوبتی و متوازن به سمت گروهها می رود. اما داخل هر گروه Raid ۱ خاهیم داشت، یعنی وقتی اطلاعات به سمت یک گروه میره، اونجا روی ۲ دیسک نوشته می شه. به این شکل اطلاعات هم در دو جا نوشته میشن و هم سرعت بسیار خوبی خاهد داشت.
چجوری روی سیستم Raid داشته باشیم ؟
برای پیکربندی Raid شما می تونید از ۲ راه کلی استفاده کنید:
Raid سخت افزاری: این حالت بهترین عملکرد رو برای شما داره چون سیستم عامل سرور به هیچ شکلی از نظر پردازشی در گیر نیست. اما در نظر داشته باشین که سخت افزار مورد نیاز برای این کار هزینه زیادی دارد.
Raid نرم افزاری: ساده ترین حالت، استفاده از یک نرم افزار برای پیکربندی Raid بر روی سیستم هستش. در این حالت بخشی از توان سیستم در اختیار این نرم افزار قرار می گیرد و باعث کاهش عملکرد سیستم می شود.
در ادامه این مقاله، می بینیم که چطور با استفاد از یک نرم افزار متن باز، میتونیم روی سیستمتون Raid داشته باشیم.
مرحله ۱: وضعیت دیسکهای موجود روی سیستم رو بررسی کنید. در اینجا ما از ۵ دیسک استفاده کردیم که هرکدوم ۵ پارتیشن دارن. با استفاده از نرم افزار LVM، از تمامی پارتیشنها یک دیسک فیزیکی ساختیم که در شکل زیر می تونید تمامی دیسکهای فیزیکی موجود بر روی سیستم رو مشاهده کنید.
$ pvs
از هر دیسک یک پارتیشن را انتخاب کردیم و در یک گروه قرار دادیم.
نکته: اگر دقت کنید در اینجا ما بدون استفاده از هیچ نرم افزار مخصوصی یک Raid صفر روی دیسکها ایجاد کردیم.
(دیتا رو روی هر ۵ دیسک پخش کردیم)
$ vgs
در نهایت ما ۲۰ دیسک منطقی ایجاد کردیم که برای پیکربندی Raid بتونیم ازشون استفاده کنیم.
$ lvs
مرحله ۲: در این مقاله ما از نرم افزار mdadm استفاده می کنیم. چون کار باهاش آسونه، متن بازه و به صورت رایگان در اختیار همه هستش. برای شروع کار با این نرم افزار، اول لازمه که اون روی سیستم نصبش کنید.
$ apt-get install mdadm
مرحله ۳: بدون نیاز به انجام هیچ کار اضافهای، می تونید پیکربندی Raid سیستمتون رو شروع کنید.
برای ایجاد Raid صفر می تونید از دستور زیر استفاده کنید
$ sudo mdadm --create --verbose /dev/md2 --level=0 --raid-devices=2 /dev/group2/lvol-8 /dev/group5/lvol-20
برای ایجاد Raid یک می تونید از دستور زیر استفاده کنید
$ sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/group1/lvol-1 /dev/group5/lvol-5
برای ایجاد Raid پنج می تونید از دستور زیر استفاده کنید.
$ sudo mdadm -- create -- verbose /dev/md2 --level=5 --raid-devices=3 /dev/group2/lvol-6 /dev/group5/lvol-7 /dev/group5/lvol-17
مرحله ۴: به شکل زیر می تونید ریز اطلاعات Raid هایی که ایجاد کردین رو مشاهده کنید.
$ mdadm --query --detail /dev/md0
مرحله ۴: حالا به شکل زیر یک دایرکتوری جدید می تونید ایجاد کنید که فضای ساخت شده رو بهش اختصاص بدیم.
در نظر داشته باشید که می تونید فضا رو به هر جایی که دوست دارید اختصاص بدین و لازم نیست که حتما یک دایرکتوری جدید ایجاد کنید. (در اینجا ما ۳ دایرکتوری جدید ایجاد کردیم)
$ mkdri /mnt/Hello
مرحله ۵: در این مرحله لازمه فایل سیستم فضایی که ایجاد کردین رو مشخص کنید.
$ mkfs.ext4 /dev/md0
مرحله ۵: در این مرحله می تونید به راحتی فضای ایجاد شده رو به سیستم مونت کنید و ازش استفاده کنید.
$ mount /dev/md0 /mnt/Hello
مرحله ۶: می تونید به شکل زیر فضایی که به سیستم اضافه کردین رو مشاهده کنید.
نکته: توجه کنید که در Raid صفر (md2) ما دقیقا ۱۰ گیگابایت فضا در اختیار داریم(۵+۵=۱۰). در Raid یک (md0) ما فقط ۵ گیگ فضا داریم (۵+۵=۵). در Raid پنج (md1) ما ۱۰ گیگابایت فضا داریم (۵+۵+۵=۱۰).
$ df -h
مرحله ۷: اگر دوست داشته باشید می تونید به شکل زیر وضعیت تمامی دیسکهای متصل به سیستم رو ببینید.
$ lsblk