در این مجموعه مطلب آموزش ساخت RAID نرم افزاری در لینوکس ما بصورت تصویری و گام به گام نحوه ساختن انواع RAID نرم افزاری در لینوکس را به شما آموزش می دهیم. آموزش ایجاد RAID در لینوکسی که مشاهده می کنید کاملا بصورت واقعی در لابراتوار تست شده است و یک آموزش ترجمه ای نیست.
قبلا در خصوص انواع 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:~#
همانطور که در تصویر دستور بالا مشاهده کردید ما دو دستگاه به نام sdb و sdc با ظرفیت 21 گیگابایت داریم که در حال حاضر آماده هستند که آنها را پارتیشن بندی و تبدیل به RAID Level 1 کنیم. قبل از هر کاری باید پارتیشن بندی این دستگاه ها را انجام دهیم ، برای اینکار مشابه تصویر زیر دستور fdisk devsdb را وارد می کنیم و مراحل زیر را به ترتیب برای ایجاد کردن پارتیشن با قابلیت قرارگیری در RAID ایجاد می کنیم ، مراحل زیر را عینا انجام دهید :
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:~#
مشابه دستورات بالا را اینبار برای هارد دیسک دوم یا 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:~#
در تصویر بالا به شما هشدار داده شده است که در صورتیکه می خواهید از این دستگاه به عنوان یک 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 ما ایجاد شده است ، ما در حال حاضر یک دستگاه جدید به سیستم به نام 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 را ایجاد کردیم و یک 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 یا Mirror را آموزش دادیم ، در مطالب بعدی اگر عمری باقی باشد آموزش راه اندازی RAID های سطوح 5 و 10 را به شما آموزش خواهیم داد ، امیدوارم مورد توجه شما قرار گرفته باشد.
حساس می کنم با توجه به مطرح شدن مسائل بالا در توسینسو باید به مبحث چگونگی راه اندازی 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:~#
همانطور که در تصویر دستور بالا مشاهده کردید ما دو دستگاه به نام sdb و sdc با ظرفیت 21 گیگابایت داریم که در حال حاضر آماده هستند که آنها را پارتیشن بندی و تبدیل به RAID Level 0 کنیم. قبل از هر کاری باید پارتیشن بندی این دستگاه ها را انجام دهیم ، برای اینکار مشابه تصویر زیر دستور fdisk //dev//sdb را وارد می کنیم و مراحل زیر را به ترتیب برای ایجاد کردن پارتیشن با قابلیت قرارگیری در RAID ایجاد می کنیم ، مراحل زیر را عینا انجام دهید :
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:~#
مشابه دستورات بالا را اینبار برای هارد دیسک دوم یا 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:~#
حالا که هر دو پارتیشن با تمام ظرفیت و نوع 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 –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:~#
خوب تا اینجای کار 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:~#
تا به حال ما RAID را ایجاد کردیم و یک Virtual Partition ایجاد و آن را با فایل سیستم ext4 فرمت کردیم و در نهایت کاری که باید طبق معمول برای استفاده از آن بکنیم این است که این Virtual Directory را به یک Directory بر روی سیستم Mount کنیم تا قابل استفاده باشد ، برای اینکار کافیست دستورات زیر را وارد کنید ، ما ابتدا یک دایرکتوری به نام raid0 ایجاد می کنیم و در نهایت dev//md0// را به آن mount می کنیم :
root@itpro-debian:~# mkdir /raid0 root@itpro-debian:~# mount /dev/md0 /raid0
در این آموزش ما به شما راه اندازی کامل RAID Level 0 یا Striping Without Parity را آموزش دادیم ، در مطالب بعدی اگر عمری باقی باشد آموزش راه اندازی RAID های سطوح 1 و 5 و 10 را به شما آموزش خواهیم داد ، امیدوارم مورد توجه شما قرار گرفته باشد.
بد نیست برای خاتمه بحث 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:~#
همانطور که در تصویر دستور بالا مشاهده کردید ما سه دستگاه به نام sdb و sdc و sdd با ظرفیت 21 گیگابایت داریم که در حال حاضر آماده هستند که آنها را پارتیشن بندی و تبدیل به RAID Level 5 کنیم. قبل از هر کاری باید پارتیشن بندی این دستگاه ها را انجام دهیم ، برای اینکار مشابه تصویر زیر دستور fdisk //dev//sdb را وارد می کنیم و مراحل زیر را به ترتیب برای ایجاد کردن پارتیشن با قابلیت قرارگیری در RAID ایجاد می کنیم ، مراحل زیر را عینا انجام دهید :
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:~#
مشابه دستورات بالا را اینبار برای هارد دیسک دوم یا 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:~#
حالا که هر سه پارتیشن با تمام ظرفیت و نوع 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:~#
با استفاده از دستور 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 ما ایجاد شده است ، ما در حال حاضر یک دستگاه جدید به سیستم به نام 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 را ایجاد کردیم و یک Virtual Partition ایجاد و آن را با فایل سیستم ext4 فرمت کردیم و در نهایت کاری که باید طبق معمول برای استفاده از آن بکنیم این است که این Virtual Directory را به یک Directory بر روی سیستم Mount کنیم تا قابل استفاده باشد ، برای اینکار کافیست دستورات زیر را وارد کنید ، ما ابتدا یک دایرکتوری به نام raid5 ایجاد می کنیم و در نهایت dev//md5// را به آن mount می کنیم :
root@itpro-debian:~# mkdir /raid5 root@itpro-debian:~# mount /dev/md5 /raid5
خوشحالیم از اینکه تا اینجای آموزش با ما بودید ، در این سری مطالب آموزشی ما نحوه راه اندازی انواع RAID های مهم نرم افزاری در سیستم عامل لینوکس را با هم یاد گرفتیم. در حال حاضر شما در این آموزش یک دایرکتوری به نام raid5 خواهید داشت که هر چیزی در ان قرار بگیرید در سه هارد دیسک با قابلیت ریکاوری و Redundancy قرار گرفته است. امیدوارم مورد توجه شما عزیزان قرار گرفته باشد اگر نکته خاصی در این خصوص به نظرتان می رسد خوشحال می شویم از این نکات استفاده کنیم
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات
محمد نصیری هستم ، بنیانگذار انجمن تخصصی فناوری اطلاعات ایران و مجموعه توسینسو ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 80 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر و ناظر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود