محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

آموزش راه اندازی RAID نرم افزاری در سیستم عامل لینوکس

در این مجموعه مطلب آموزش ساخت RAID نرم افزاری در لینوکس ما بصورت تصویری و گام به گام نحوه ساختن انواع RAID نرم افزاری در لینوکس را به شما آموزش می دهیم. آموزش ایجاد RAID در لینوکسی که مشاهده می کنید کاملا بصورت واقعی در لابراتوار تست شده است و یک آموزش ترجمه ای نیست.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

آموزش ایجاد RAID سطح 1

قبلا در خصوص انواع RAID در انجمن تخصصی فناوری اطلاعات ایران در قالب سه مقاله بصورت مفصل صحبت کردیم و قبل از آن هم در خصوص اینکه LVM چیست و چگونه در لینوکس LVM را پیاده سازی کنیم نیز صحبت کردیم. احساس می کنم با توجه به مطرح شدن مسائل بالا در توسینسو باید به مبحث چگونگی راه اندازی RAID های مختلف در سیستم عامل لینوکس نیز باید پرداخته شود.

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

این RAID دارای صد در صد افزونگی یا Redundancy است و به هر دلیلی اگر مشکلی برای یکی از هارد دیسک ها پی بیاید مشکلی برای سایر آنها پیش نخواهد آمد .برای پیاده سازی این نوع RAID ما حداقل به دو عدد هارد دیسک نیاز داریم که ما در اینجا در یک Virtual Machine دو عدد هارد دیسک 20 گیگابایتی را برای پیاده سازی این نوع RAID به سیستم عامل اضافه کرده ایم.

برای پیاده سازی RAID در سیستم عامل لینوکس ما از ابزاری به نام mdadm استفاده می کنیم که از قبل بایستی بر روی سیستم عامل شما نصب شده باشد. با توجه به اینکه ما در این سری آموزشی از سیستم عامل Debian برای انجام سناریوها استفاده می کنیم پیشنهاد می کنیم قبل از اینکه به ادامه مطلب بروید دو دستور زیر برای نصب شدن ابزار parted و ابزار mdadm را وارد کنید و سپس به ادامه ماجرا بروید :


root@itpro-debian:~# apt-get install parted
root@itpro-debian:~# apt-get install mdadm


برای اینکه بدانید دو عدد دیسکی که به سیستم اضافه کرده اید با چه اسامی به سیستم معرفی شده اند ابتدا با استفاده از دستور fdisk –l گزارشی از تمامی دیسک ها و پارتیشن های سیستم به شکل زیر دریافت می کنیم ، همانطور که در خروجی دستور زیر مشاهده می کنیم ما دو عدد هارد دیسک به نامهای dev//sdb// و dev//sdc// هر کدام با ظرفیت 21 گیگابایت را مشاهده می کنیم :

root@itpro-debian:~# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    40136703    20067328   83  Linux
/dev/sda2        40138750    41940991      901121    5  Extended
/dev/sda5        40138752    41940991      901120   82  Linux swap / Solaris

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
213 heads, 34 sectors/track, 5791 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x359ec6e3

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   83  Linux

Disk /dev/sdc: 21.5 GB, 21474836480 bytes
213 heads, 34 sectors/track, 5791 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x61281ca9

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    41943039    20970496   83  Linux
root@itpro-debian:~# 


تصویر اول خروجی دستور fdisk



همانطور که در تصویر دستور بالا مشاهده کردید ما دو دستگاه به نام sdb و sdc با ظرفیت 21 گیگابایت داریم که در حال حاضر آماده هستند که آنها را پارتیشن بندی و تبدیل به RAID Level 1 کنیم. قبل از هر کاری باید پارتیشن بندی این دستگاه ها را انجام دهیم ، برای اینکار مشابه تصویر زیر دستور fdisk devsdb را وارد می کنیم و مراحل زیر را به ترتیب برای ایجاد کردن پارتیشن با قابلیت قرارگیری در RAID ایجاد می کنیم ، مراحل زیر را عینا انجام دهید :

  1. دستور fdisk devsdb را وارد کنید و Enter را بزنید
  2. در قسمت command حرف n به معنی new partition را وارد کنید و Enter را بزنید
  3. در قسمت Select حرف p به معنی primary partition را وارد کنید و Enter را بزنید
  4. در قسمت partition number عدد 1 و سپس کلید Enter را بزنید
  5. در قسمت First Sector کلید Enter را بزنید
  6. در قسمت Last Sector با توجه به اینکه ما می خواهیم همه دیسک مورد استفاده قرار بگیرد Enter بزنید
  7. اینبار در قسمت command حرف t برای تعیین type یا نوع پارتیشن را وارد کنید
  8. در قسمت Hex Code حروف fd را وارد کنید ، fd به پارتیشن قابلیت RAID می دهد
  9. در قسمت command اینبار حرف w برای write شدن اطلاعات را وارد و Enter کنید


root@itpro-debian:~# fdisk /dev/sdb

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 
Using default value 41943039

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
root@itpro-debian:~# 


تصویر مربوط به ایجاد اولین پارتیشن در دیسک اول با قابلیت RAID



مشابه دستورات بالا را اینبار برای هارد دیسک دوم یا dev//sdc// اجرا کنید و در نهایت بعد از انجام شدن همه مراحل شما دو عدد پارتیشن با قابلیت قرار گرفتن در RAID به نامهای dev//sdb1// و dev//sdc1// خواهید داشت که می توانید آنها را در کنار هم قرار داده و RAID Level 1 خود را ایجاد کنید. برای اینکه جدول پارتیشن ها بروز رسانی شود و نیازی به Reboot کردن سیستم عامل نباشد دستور partprobe را به شکل زیر وارد کنید و در نهایت با استفاده از دستور fdisk –l مجددا لیست دستگاه ها و پارتیشن های ایجاد شده را مشابه تصاویر پایین مشاهده کنید :

root@itpro-debian:~# partprobe

root@itpro-debian:~# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    40136703    20067328   83  Linux
/dev/sda2        40138750    41940991      901121    5  Extended
/dev/sda5        40138752    41940991      901120   82  Linux swap / Solaris

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
213 heads, 34 sectors/track, 5791 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x359ec6e3

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   fd  Linux raid autodetect

Disk /dev/sdc: 21.5 GB, 21474836480 bytes
213 heads, 34 sectors/track, 5791 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x61281ca9

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    41943039    20970496   fd  Linux raid autodetect
root@itpro-debian:~# 


حالا که هر دو پارتیشن با تمام ظرفیت و نوع fd که مشخص کننده Linux RAID است آماده هستند تا تبدیل به RAID شوند. برای ایجاد کردن RAID Level 1 با استفاده از دستور mdadm از روش زیر استفاده می کنیم. در دستور زیر ما با استفاده از mdadm دو عدد هارد دیسک یا device را تبدیل به RAID Level 1 می کنیم که این دو هارد دیسک در انتها با فاصله مشخص شده اند ، در دستور پایین در نهایت هر دو پارتیشن ما به نامهای dev//sdb1// و dev//sdc1// تبدیل به یک پارتیشن RAID سطح 1 به نام dev//md1// خواهند شد :

root@itpro-debian:~# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? 
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
root@itpro-debian:~#


آموزش راه اندازی RAID Level 1 در لینوکس

در تصویر بالا به شما هشدار داده شده است که در صورتیکه می خواهید از این دستگاه به عنوان یک Boot Device استفاده کنید ممکن است دچار مشکل شوید ، در قسمت Continue Creating Array ? کلید Enter و در قسمت Continue Creating Array اینبار حرف y به معنی تایید ایجاد RAID را وارد کنید.

با استفاده از دستور mdadm –detail devmd1 می توانید جزئیات RAID ایجاد شده را مشاهده کنید ، همانطور که در تصویر زیر مشاهده می کنید RAID Level 1 ما با استفاده از دو هارد دیسک 21 گیگابایتی با ظرفیت 21 گیگابایت ایجاد شده است اما هنوز بصورت کامل قادر به استفاده از آن نمی باشیم :

root@itpro-debian:~# mdadm --detail /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Sat Apr 25 04:37:56 2015
     Raid Level : raid1
     Array Size : 20953984 (19.98 GiB 21.46 GB)
  Used Dev Size : 20953984 (19.98 GiB 21.46 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Sat Apr 25 04:37:56 2015
          State : clean, resyncing (PENDING) 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : itpro-debian:1  (local to host itpro-debian)
           UUID : eb0c4cd2:f72dd7b5:62efec5b:10a60eab
         Events : 0

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
root@itpro-debian:~# 


راه اندازی RAID Level 1 یا Mirror در لینوکس

خوب تا اینجای کار RAID ما ایجاد شده است ، ما در حال حاضر یک دستگاه جدید به سیستم به نام dev//md1// اضافه کرده ایم که دارای 21 گیگابایت ظرفیت است و تشکیل شده از دو عدد هارد دیسک به نام های dev//sdc1// و dev//sdb1// است .

اما این دیسک واقعی نیست و همه ما می دانیم که از دو عدد دیسک ایجاد شده است و به همین دلیل dev//md1// را به عنوان Virtual Disk می شناسیم. حالا طبق معمول ما باید این Virtual Disk را فرمت و پارتیشن بندی کنیم و فایل سیستم آن را بر حسب علاقه انتخاب کنیم ، طبق دستور زیر ما فایل سیستم ext4 را برای این پارتیشن مجازی انتخاب می کنیم :

root@itpro-debian:~# mkfs.ext4 /dev/md1
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5238496 blocks
261924 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

root@itpro-debian:~#


آموزش راه اندازی RAID Mirror در لینوکس

تا به حال ما RAID را ایجاد کردیم و یک Virtual Partition ایجاد و آن را با فایل سیستم ext4 فرمت کردیم و در نهایت کاری که باید طبق معمول برای استفاده از آن بکنیم این است که این Virtual Directory را به یک Directory بر روی سیستم Mount کنیم تا قابل استفاده باشد ، برای اینکار کافیست دستورات زیر را وارد کنید ، ما ابتدا یک دایرکتوری به نام raid1 ایجاد می کنیم و در نهایت dev//md1// را به آن mount می کنیم :

root@itpro-debian:~# mkdir /raid1
root@itpro-debian:~# mount /dev/md1 /raid1


آموزش راه اندازی RAID Level 1 در لینوکس



در این آموزش ما به شما راه اندازی کامل RAID Level 1 یا Mirror را آموزش دادیم ، در مطالب بعدی اگر عمری باقی باشد آموزش راه اندازی RAID های سطوح 5 و 10 را به شما آموزش خواهیم داد ، امیدوارم مورد توجه شما قرار گرفته باشد.

آموزش ایجاد RAID سطح 0

حساس می کنم با توجه به مطرح شدن مسائل بالا در توسینسو باید به مبحث چگونگی راه اندازی RAID های مختلف در سیستم عامل لینوکس نیز باید پرداخته شود. در این مقاله می خواهیم در خصوص چگونگی راه اندازی RAID Level 0 صحبت کنیم.

RAID ای که قبلا هم اشاره کردیم می توانیم از آن به عنوان AID به دلیل نداشتن Redundancy یاد کنیم و فقط برای بالا بردن سرعت خواندن و نوشتن اطلاعات استفاده می شود. برای پیاده سازی این نوع RAID ما حداقل به دو عدد هارد دیسک نیاز داریم که ما در اینجا در یک Virtual Machine دو عدد هارد دیسک 20 گیگابایتی را برای پیاده سازی این نوع RAID به سیستم عامل اضافه کرده ایم.

برای پیاده سازی RAID در سیستم عامل لینوکس ما از ابزاری به نام mdadm استفاده می کنیم که از قبل بایستی بر روی سیستم عامل شما نصب شده باشد. با توجه به اینکه ما در این سری آموزشی از سیستم عامل Debian برای انجام سناریوها استفاده می کنیم پیشنهاد می کنیم قبل از اینکه به ادامه مطلب بروید دو دستور زیر برای نصب شدن ابزار parted و ابزار mdadm را وارد کنید و سپس به ادامه ماجرا بروید :


root@itpro-debian:~# apt-get install parted
root@itpro-debian:~# apt-get install mdadm


برای اینکه بدانید دو عدد دیسکی که به سیستم اضافه کرده اید با چه اسامی به سیستم معرفی شده اند ابتدا با استفاده از دستور fdisk –l گزارشی از تمامی دیسک ها و پارتیشن های سیستم به شکل زیر دریافت می کنیم ، همانطور که در خروجی دستور زیر مشاهده می کنیم ما دو عدد هارد دیسک به نامهای dev//sdb// و dev//sdc// هر کدام با ظرفیت 21 گیگابایت را مشاهده می کنیم :

root@itpro-debian:~# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    40136703    20067328   83  Linux
/dev/sda2        40138750    41940991      901121    5  Extended
/dev/sda5        40138752    41940991      901120   82  Linux swap / Solaris

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
213 heads, 34 sectors/track, 5791 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x359ec6e3

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   83  Linux

Disk /dev/sdc: 21.5 GB, 21474836480 bytes
213 heads, 34 sectors/track, 5791 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x61281ca9

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    41943039    20970496   83  Linux
root@itpro-debian:~# 


آموزش راه اندازی RAID در لینوکس


همانطور که در تصویر دستور بالا مشاهده کردید ما دو دستگاه به نام sdb و sdc با ظرفیت 21 گیگابایت داریم که در حال حاضر آماده هستند که آنها را پارتیشن بندی و تبدیل به RAID Level 0 کنیم. قبل از هر کاری باید پارتیشن بندی این دستگاه ها را انجام دهیم ، برای اینکار مشابه تصویر زیر دستور fdisk //dev//sdb را وارد می کنیم و مراحل زیر را به ترتیب برای ایجاد کردن پارتیشن با قابلیت قرارگیری در RAID ایجاد می کنیم ، مراحل زیر را عینا انجام دهید :

  1. دستور fdisk //dev//sdb را وارد کنید و Enter را بزنید
  2. در قسمت command حرف n به معنی new partition را وارد کنید و Enter را بزنید
  3. در قسمت Select حرف p به معنی primary partition را وارد کنید و Enter را بزنید
  4. در قسمت partition number عدد 1 و سپس Enter را بزنید
  5. در قسمت First Sector کلید Enter را بزنید
  6. در قسمت Last Sector با توجه به اینکه ما می خواهیم همه دیسک مورد استفاده قرار بگیرد Enter بزنید
  7. اینبار در قسمت command حرف t برای تعیین type یا نوع پارتیشن را وارد کنید
  8. در قسمت Hex Code حروف fd را وارد کنید ، fd به پارتیشن قابلیت RAID می دهد
  9. در قسمت command اینبار حرف w برای write شدن اطلاعات را وارد و Enter کنید


root@itpro-debian:~# fdisk /dev/sdb

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 
Using default value 41943039

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
root@itpro-debian:~# 



تصویر مربوط به ایجاد اولین پارتیشن در دیسک اول با قابلیت RAID

مشابه دستورات بالا را اینبار برای هارد دیسک دوم یا dev//sdc// اجرا کنید و در نهایت بعد از انجام شدن همه مراحل شما دو عدد پارتیشن با قابلیت قرار گرفتن در RAID به نامهای dev//sdb1// و dev//sdc1// خواهید داشت که می توانید آنها را در کنار هم قرار داده و RAID Level 0 خود را ایجاد کنید. برای اینکه جدول پارتیشن ها بروز رسانی شود و نیازی به Reboot کردن سیستم عامل نباشد دستور partprobe را به شکل زیر وارد کنید و در نهایت با استفاده از دستور fdisk –l مجددا لیست دستگاه ها و پارتیشن های ایجاد شده را مشابه تصاویر پایین مشاهده کنید :

root@itpro-debian:~# partprobe


root@itpro-debian:~# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    40136703    20067328   83  Linux
/dev/sda2        40138750    41940991      901121    5  Extended
/dev/sda5        40138752    41940991      901120   82  Linux swap / Solaris

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
213 heads, 34 sectors/track, 5791 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x359ec6e3

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   fd  Linux raid autodetect

Disk /dev/sdc: 21.5 GB, 21474836480 bytes
213 heads, 34 sectors/track, 5791 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x61281ca9

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    41943039    20970496   fd  Linux raid autodetect
root@itpro-debian:~#


تصویر fdisk بعد از ایجاد پارتیشن های fd

حالا که هر دو پارتیشن با تمام ظرفیت و نوع fd که مشخص کننده Linux RAID است آماده هستند تا تبدیل به RAID شوند. برای ایجاد کردن RAID Level 0 با استفاده از دستور mdadm از روش زیر استفاده می کنیم. در دستور زیر ما با استفاده از mdadm دو عدد هارد دیسک یا device را تبدیل به RAID Level 0 می کنیم که این دو هارد دیسک در انتها با فاصله مشخص شده اند ، در دستور پایین در نهایت هر دو پارتیشن ما به نامهای dev//sdb1// و dev//sdc1// تبدیل به یک پارتیشن RAID سطح 0 به نام dev//md0// خواهند شد :

root@itpro-debian:~# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.


تصویر دستور mdadm برای ایجاد کردن RAID در لینوکس

با استفاده از دستور mdadm –detail //dev//md0 می توانید جزئیات RAID ایجاد شده را مشاهده کنید ، همانطور که در تصویر زیر مشاهده می کنید RAID Level 0 ما با استفاده از دو هارد دیسک 21 گیگابایتی با ظرفیت 42 گیگابایت ایجاد شده است اما هنوز بصورت کامل قادر به استفاده از آن نمی باشیم :

root@itpro-debian:~# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sun Apr 19 06:05:29 2015
     Raid Level : raid0
     Array Size : 41939968 (40.00 GiB 42.95 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Sun Apr 19 06:05:29 2015
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

     Chunk Size : 512K

           Name : itpro-debian:0  (local to host itpro-debian)
           UUID : 126028f8:e400722a:e7dca217:17308a02
         Events : 0

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
root@itpro-debian:~# 


تصویر خروجی mdadm برای details


خوب تا اینجای کار RAID ما ایجاد شده است ، ما در حال حاضر یک دستگاه جدید به سیستم به نام dev//md0// اضافه کرده ایم که دارای 42 گیگابایت ظرفیت است و تشکیل شده از دو عدد هارد دیسک به نام های dev//sdc1// و dev//sdb1// است .

اما این دیسک واقعی نیست و همه ما می دانیم که از دو عدد دیسک ایجاد شده است و به همین دلیل dev//md0// را به عنوان Virtual Disk می شناسیم. حالا طبق معمول ما باید این Virtual Disk را فرمت و پارتیشن بندی کنیم و فایل سیستم آن را بر حسب علاقه انتخاب کنیم ، طبق دستور زیر ما فایل سیستم ext4 را برای این پارتیشن مجازی انتخاب می کنیم :

root@itpro-debian:~# mkfs.ext4 /dev/md0
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
2621440 inodes, 10484992 blocks
524249 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

root@itpro-debian:~# 


تصویر استفاده از فرمت ext4

تا به حال ما RAID را ایجاد کردیم و یک Virtual Partition ایجاد و آن را با فایل سیستم ext4 فرمت کردیم و در نهایت کاری که باید طبق معمول برای استفاده از آن بکنیم این است که این Virtual Directory را به یک Directory بر روی سیستم Mount کنیم تا قابل استفاده باشد ، برای اینکار کافیست دستورات زیر را وارد کنید ، ما ابتدا یک دایرکتوری به نام raid0 ایجاد می کنیم و در نهایت dev//md0// را به آن mount می کنیم :

root@itpro-debian:~# mkdir /raid0
root@itpro-debian:~# mount /dev/md0 /raid0


تصویر آماده mkdir و mount



در این آموزش ما به شما راه اندازی کامل RAID Level 0 یا Striping Without Parity را آموزش دادیم ، در مطالب بعدی اگر عمری باقی باشد آموزش راه اندازی RAID های سطوح 1 و 5 و 10 را به شما آموزش خواهیم داد ، امیدوارم مورد توجه شما قرار گرفته باشد.

آموزش ایجاد RAID سطح 5

بد نیست برای خاتمه بحث RAID ها در لینوکس در خصوص نحوه پیاده سازی RAID Level 5 در سیستم عامل لینوکس هم صحبت کنیم.

RAID Level 5 که ما آن را به عنوان Striping With Parity هم می شناسیم RAID ای است که از مجموعه حداقل سه عدد هارد دیسک ایجاد می شود و ضمن اینکه سرعت بالایی برای خواندن و نوشتن به ما ارائه می دهد توانایی Redundancy و Fail Over شدن را نیز دارد. برای پیاده سازی این RAID در سیستم عامل های مختلف اعم از لینوکس و ویندوز ما به سه عدد هارد دیسک نیاز داریم که در اینجا ما سه عدد هارد دیسک 20 گیگابایتی به سیستم عامل لینوکس Debian خود اضافه کرده ایم.

برای پیاده سازی RAID در سیستم عامل لینوکس ما از ابزاری به نام mdadm استفاده می کنیم که از قبل بایستی بر روی سیستم عامل شما نصب شده باشد. با توجه به اینکه ما در این سری آموزشی از سیستم عامل Debian برای انجام سناریوها استفاده می کنیم پیشنهاد می کنیم قبل از اینکه به ادامه مطلب بروید دو دستور زیر برای نصب شدن ابزار parted و ابزار mdadm را وارد کنید و سپس به ادامه ماجرا بروید :


root@itpro-debian:~# apt-get install parted
root@itpro-debian:~# apt-get install mdadm


برای اینکه بدانید سه عدد دیسکی که به سیستم اضافه کرده اید با چه اسامی به سیستم معرفی شده اند ابتدا با استفاده از دستور fdisk –l گزارشی از تمامی دیسک ها و پارتیشن های سیستم به شکل زیر دریافت می کنیم ، همانطور که در خروجی دستور زیر مشاهده می کنیم ما سه عدد هارد دیسک به نامهای dev//sdb// و dev//sdc// و dev//sdd// هر کدام با ظرفیت 21 گیگابایت را مشاهده می کنیم :

root@itpro-debian:~# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ee2b1

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    40136703    20067328   83  Linux
/dev/sda2        40138750    41940991      901121    5  Extended
/dev/sda5        40138752    41940991      901120   82  Linux swap / Solaris

Disk /dev/sdc: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdc doesn't contain a valid partition table

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

Disk /dev/sdd: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdd doesn't contain a valid partition table
root@itpro-debian:~# 


تصویر اول خروجی دستور fdisk

همانطور که در تصویر دستور بالا مشاهده کردید ما سه دستگاه به نام sdb و sdc و sdd با ظرفیت 21 گیگابایت داریم که در حال حاضر آماده هستند که آنها را پارتیشن بندی و تبدیل به RAID Level 5 کنیم. قبل از هر کاری باید پارتیشن بندی این دستگاه ها را انجام دهیم ، برای اینکار مشابه تصویر زیر دستور fdisk //dev//sdb را وارد می کنیم و مراحل زیر را به ترتیب برای ایجاد کردن پارتیشن با قابلیت قرارگیری در RAID ایجاد می کنیم ، مراحل زیر را عینا انجام دهید :

  1. دستور fdisk //dev//sdb را وارد کنید و Enter را بزنید
  2. در قسمت command حرف n به معنی new partition را وارد کنید و Enter را بزنید
  3. در قسمت Select حرف p به معنی primary partition را وارد کنید و Enter را بزنید
  4. در قسمت partition number عدد 1 و سپس Enter را بزنید
  5. در قسمت First Sector کلید Enter را بزنید
  6. در قسمت Last Sector با توجه به اینکه ما می خواهیم همه دیسک مورد استفاده قرار بگیرد Enter بزنید
  7. اینبار در قسمت command حرف t برای تعیین type یا نوع پارتیشن را وارد کنید
  8. در قسمت Hex Code حروف fd را وارد کنید ، fd به پارتیشن قابلیت RAID می دهد
  9. در قسمت command اینبار حرف w برای write شدن اطلاعات را وارد و Enter کنید


root@itpro-debian:~# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xf2736f55.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 
Using default value 41943039

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
root@itpro-debian:~# 


آموزش گام به گام نصب و راه اندازی RAID Level 5 در سیستم عامل لینوکس


مشابه دستورات بالا را اینبار برای هارد دیسک دوم یا dev//sdc// و هارد دیسک سوم یا dev//sdd// اجرا کنید و در نهایت بعد از انجام شدن همه مراحل شما سه عدد پارتیشن با قابلیت قرار گرفتن در RAID به نامهای dev//sdb1// و dev//sdc1// و dev//sdd1// خواهید داشت که می توانید آنها را در کنار هم قرار داده و RAID Level 5 خود را ایجاد کنید.

برای اینکه جدول پارتیشن ها بروز رسانی شود و نیازی به Reboot کردن سیستم عامل نباشد دستور partprobe را به شکل زیر وارد کنید و در نهایت با استفاده از دستور fdisk –l مجددا لیست دستگاه ها و پارتیشن های ایجاد شده را مشابه تصاویر پایین مشاهده کنید :

root@itpro-debian:~# partprobe
-----------------------------------------------


root@itpro-debian:~# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ee2b1

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    40136703    20067328   83  Linux
/dev/sda2        40138750    41940991      901121    5  Extended
/dev/sda5        40138752    41940991      901120   82  Linux swap / Solaris

Disk /dev/sdc: 21.5 GB, 21474836480 bytes
213 heads, 34 sectors/track, 5791 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd88d1926

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    41943039    20970496   fd  Linux raid autodetect

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
213 heads, 34 sectors/track, 5791 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf2736f55

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   fd  Linux raid autodetect

Disk /dev/sdd: 21.5 GB, 21474836480 bytes
213 heads, 34 sectors/track, 5791 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x5f68cfdf

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048    41943039    20970496   fd  Linux raid autodetect
root@itpro-debian:~# 


آموزش گام به گام نصب و راه اندازی RAID Level 5 در سیستم عامل لینوکس

حالا که هر سه پارتیشن با تمام ظرفیت و نوع fd که مشخص کننده Linux RAID است آماده هستند تا تبدیل به RAID شوند. برای ایجاد کردن RAID Level 5 با استفاده از دستور mdadm از روش زیر استفاده می کنیم. در دستور زیر ما با استفاده از mdadm سه عدد هارد دیسک یا device را تبدیل به RAID Level 5 می کنیم که این سه هارد دیسک در انتها با فاصله مشخص شده اند ، در دستور پایین در نهایت هر سه پارتیشن ما به نامهای dev//sdb1// و dev//sdc1// و dev//sdd1// تبدیل به یک پارتیشن RAID سطح 5 به نام dev//md5// خواهند شد :

root@itpro-debian:~# mdadm --create /dev/md5 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
root@itpro-debian:~# 


آموزش گام به گام نصب و راه اندازی RAID Level 5 در سیستم عامل لینوکس


با استفاده از دستور mdadm --detail //dev//md5 می توانید جزئیات RAID ایجاد شده را مشاهده کنید ، همانطور که در تصویر زیر مشاهده می کنید RAID Level 5 ما با استفاده از سه هارد دیسک 21 گیگابایتی با ظرفیت 42 گیگابایت ایجاد شده است اما هنوز بصورت کامل قادر به استفاده از آن نمی باشیم :

root@itpro-debian:~# mdadm --detail /dev/md5
/dev/md5:
        Version : 1.2
  Creation Time : Sun May  3 06:15:18 2015
     Raid Level : raid5
     Array Size : 41907200 (39.97 GiB 42.91 GB)
  Used Dev Size : 20953600 (19.98 GiB 21.46 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Sun May  3 06:15:18 2015
          State : clean, degraded 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 512K

           Name : itpro-debian:5  (local to host itpro-debian)
           UUID : 0b43d52a:d02f24eb:90bf3049:1b449130
         Events : 0

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       2       0        0        2      removed

       3       8       49        -      spare   /dev/sdd1
root@itpro-debian:~# 


آموزش گام به گام نصب و راه اندازی RAID Level 5 در سیستم عامل لینوکس

خوب تا اینجای کار RAID ما ایجاد شده است ، ما در حال حاضر یک دستگاه جدید به سیستم به نام dev//md5// اضافه کرده ایم که دارای 42 گیگابایت ظرفیت است و تشکیل شده از سه عدد هارد دیسک به نام های dev//sdc1// و dev//sdb1// و dev//sdd1// است . اما این دیسک واقعی نیست و همه ما می دانیم که از سه عدد دیسک ایجاد شده است و به همین دلیل dev//md5// را به عنوان Virtual Disk می شناسیم. حالا طبق معمول ما باید این Virtual Disk را فرمت و پارتیشن بندی کنیم و فایل سیستم آن را بر حسب علاقه انتخاب کنیم ، طبق دستور زیر ما فایل سیستم ext4 را برای این پارتیشن مجازی انتخاب می کنیم :

root@itpro-debian:~# mkfs.ext4 /dev/md5
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
2621440 inodes, 10476800 blocks
523840 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

root@itpro-debian:~# 


آموزش گام به گام نصب و راه اندازی RAID Level 5 در سیستم عامل لینوکس

تا به حال ما RAID را ایجاد کردیم و یک Virtual Partition ایجاد و آن را با فایل سیستم ext4 فرمت کردیم و در نهایت کاری که باید طبق معمول برای استفاده از آن بکنیم این است که این Virtual Directory را به یک Directory بر روی سیستم Mount کنیم تا قابل استفاده باشد ، برای اینکار کافیست دستورات زیر را وارد کنید ، ما ابتدا یک دایرکتوری به نام raid5 ایجاد می کنیم و در نهایت dev//md5// را به آن mount می کنیم :

root@itpro-debian:~# mkdir /raid5
root@itpro-debian:~# mount /dev/md5 /raid5


آموزش گام به گام نصب و راه اندازی RAID Level 5 در سیستم عامل لینوکس

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


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

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

نظرات