RAID Arrays با ترکیب دیسکهای جداگانه به دستگاههای ذخیرهسازی مجازی، عملکرد و redundancy را بهبود میبخشند. ابزار mdadm در لینوکس امکان ایجاد و مدیریت آرایههای نرمافزاری RAID را فراهم میکند. این آموزش به شما نشان میدهد چگونه آرایههای RAID را روی سرور Ubuntu 22.04 مدیریت کنید، از بررسی اطلاعات آرایه تا افزودن دیسکهای اضافی یا حذف آرایهها. این راهنما برای کاربرانی طراحی شده که قبلاً آرایههای RAID را ایجاد کردهاند و میخواهند آنها را بهطور مؤثر مدیریت کنند. توجه: برای سرورهای مجازی، به دلیل replication دیسک در دیتاسنترها، استفاده از RAID ممکن است مزایای محدودی داشته باشد.
پیشنیازهای مدیریت RAID Arrays
برای شروع، به موارد زیر نیاز دارید:
- سرور Ubuntu 22.04 با کاربر sudo غیرروت.
- حداقل یک آرایه RAID فعال که با mdadm ایجاد شده است.
- دانش پایه درباره دیسکها و فایلسیستمهای لینوکس.
اطمینان حاصل کنید که آرایههای RAID شما فعال هستند تا بتوانید دستورات این آموزش را اعمال کنید.
گام 1: بررسی اطلاعات آرایههای RAID
برای مدیریت مؤثر، باید اطلاعات آرایهها مانند ساختار، دیسکهای تشکیلدهنده و وضعیت آنها را بررسی کنید.
دریافت اطلاعات دقیق آرایه
برای مشاهده جزئیات یک آرایه RAID، از گزینه -D یا –detail استفاده کنید:
sudo mdadm -D /dev/md0
خروجی شامل اطلاعاتی مانند RAID level، اندازه آرایه، وضعیت دیسکها و UUID آرایه است:
/dev/md0:
Version : 1.2
Creation Time : Thu Sep 29 17:07:10 2022
Raid Level : raid10
Array Size : 209582080 (199.87 GiB 214.61 GB)
Used Dev Size : 104791040 (99.94 GiB 107.31 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Thu Sep 29 17:08:24 2022
State : clean, resyncing
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : raid2:0 (local to host raid2)
UUID : 8069bcc7:72e7b49f:fba1c780:560a85e0
Events : 35
Number Major Minor RaidDevice State
0 8 0 0 active sync set-A /dev/sda
1 8 16 1 active sync set-B /dev/sdb
2 8 32 2 active sync set-A /dev/sdc
3 8 48 3 active sync set-B /dev/sdd
دریافت اطلاعات خلاصه
برای اطلاعات خلاصه و مناسب برای فایل پیکربندی، از گزینه –brief یا -b استفاده کنید:
sudo mdadm -Db /dev/md0
خروجی:
ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=8069bcc7:72e7b49f:fba1c780:560a85e0
برای خلاصهای خوانا، از گزینه -Q استفاده کنید:
sudo mdadm -Q /dev/md0
خروجی:
/dev/md0: 199.88GiB raid10 4 devices, 0 spares. Use mdadm --detail for more detail.
بررسی دیسکهای تشکیلدهنده
برای اطلاعات درباره دیسکهای تشکیلدهنده آرایه، از -Q با دیسک استفاده کنید:
sudo mdadm -Q /dev/sdc
خروجی:
/dev/sdc: is not an md array /dev/sdc: device 2 in 4 device active raid10 /dev/md0. Use mdadm --examine for more detail.
برای جزئیات بیشتر، از گزینه -E یا –examine استفاده کنید:
sudo mdadm -E /dev/sdc
خروجی شامل اطلاعات دیسک در آرایه است:
/dev/sdc:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 8069bcc7:72e7b49f:fba1c780:560a85e0
Name : RAID2204:0 (local to host RAID2204)
Creation Time : Wed Oct 5 15:56:03 2022
Raid Level : raid10
Raid Devices : 4
Avail Dev Size : 209582080 sectors (99.94 GiB 107.31 GB)
Array Size : 209582080 KiB (199.87 GiB 214.61 GB)
Data Offset : 133120 sectors
Super Offset : 8 sectors
Unused Space : before=132968 sectors, after=0 sectors
State : clean
Device UUID : 027f74c5:6d488509:64844c7a:add75d88
Update Time : Wed Oct 5 16:13:57 2022
Bad Block Log : 512 entries available at offset 136 sectors
Checksum : 98edf3ae - correct
Events : 35
Layout : near=2
Chunk Size : 512K
Device Role : Active device 2
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
گام 2: بررسی اطلاعات /proc/mdstat
برای اطلاعات دقیق درباره آرایههای فعال، فایل /proc/mdstat را بررسی کنید:
cat /proc/mdstat
خروجی:
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0]
209584128 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
unused devices:
توضیحات خروجی:
- Personalities: RAID levelهای پشتیبانیشده توسط کرنل.
- md0: نام آرایه، وضعیت active و RAID 10، با دیسکهای sda، sdb، sdc و sdd.
- 209584128 blocks: اندازه آرایه، نسخه metadata و chunk size.
- [4/4] [UUUU]: نشاندهنده تعداد دیسکهای سالم و وضعیت آنها (U برای سالم).
اگر آرایه در حال resync یا recovery باشد، پیشرفت آن نمایش داده میشود:
[>....................] resync = 0.9% (2032768/209584128) finish=15.3min speed=225863K/sec
گام 3: توقف آرایه RAID
برای توقف آرایه، ابتدا باید آن را unmount کنید. از دایرکتوری مانتشده خارج شوید:
cd ~
سپس آرایه را unmount کنید:
sudo umount /mnt/md0
برای توقف همه آرایههای فعال:
sudo mdadm --stop --scan
یا برای توقف یک آرایه خاص:
sudo mdadm --stop /dev/md0
آرایه اکنون متوقف شده و برای دسترسی دوباره باید reassemble شود.
گام 4: راهاندازی آرایه RAID
برای راهاندازی همه آرایههای تعریفشده در فایل پیکربندی یا /proc/mdstat:
sudo mdadm --assemble --scan
برای راهاندازی یک آرایه خاص:
sudo mdadm --assemble /dev/md0
اگر تعریف آرایه در فایل پیکربندی موجود نباشد، دیسکها را بهصورت دستی مشخص کنید:
sudo mdadm --assemble /dev/md0 /dev/sda /dev/sdb /dev/sdc /dev/sdd
پس از راهاندازی، آرایه را مانت کنید:
sudo mount /dev/md0 /mnt/md0
آرایه اکنون در نقطه مانت قابل دسترسی است.
گام 5: افزودن دیسک اضافی به آرایه
دیسکهای اضافی (spare) را میتوان به آرایههای با redundancy مانند RAID 1، 5، 6 یا 10 اضافه کرد.
افزودن دیسک به آرایه RAID 1، 5، 6 یا 10
برای افزودن دیسک اضافی:
sudo mdadm /dev/md0 --add /dev/sdd
دیسک بهعنوان spare اضافه میشود. برای افزایش تعداد دیسکهای فعال:
sudo mdadm --grow --raid-devices=4 --backup-file=/root/md0_grow.bak /dev/md0
خروجی نشان میدهد که بخش critical پشتیبانگیری میشود:
mdadm: Need to backup 3072K of critical section..
برای بررسی پیشرفت sync:
cat /proc/mdstat
پس از اتمام، فایلسیستم را گسترش دهید:
sudo resize2fs /dev/md0
افزودن دیسک به آرایه RAID 0
RAID 0 از دیسکهای spare پشتیبانی نمیکند. باید دیسک جدید را همزمان با افزایش تعداد دیسکها اضافه کنید. ابتدا تعداد دیسکهای فعلی را بررسی کنید:
sudo mdadm --detail /dev/md0
خروجی:
/dev/md0:
Version : 1.2
Creation Time : Wed Aug 10 19:17:14 2020
Raid Level : raid0
Array Size : 209584128 (199.88 GiB 214.61 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
...
دیسک جدید را اضافه و تعداد دیسکها را افزایش دهید:
sudo mdadm --grow /dev/md0 --raid-devices=3 --add /dev/sdc
خروجی:
mdadm: level of /dev/md0 changed to raid4 mdadm: added /dev/sdc
آرایه موقتاً به RAID 4 تغییر میکند و پس از توزیع دادهها به RAID 0 بازمیگردد. پیشرفت را بررسی کنید:
cat /proc/mdstat
پس از اتمام، فایلسیستم را گسترش دهید:
sudo resize2fs /dev/md0
گام 6: حذف دیسک از آرایه
برای حذف دیسک معیوب یا تعویض آن، ابتدا باید آن را بهعنوان faulty علامتگذاری کنید. وضعیت آرایه را بررسی کنید:
sudo mdadm --detail /dev/md0
خروجی:
/dev/md0:
Version : 1.2
Creation Time : Wed Aug 10 21:42:12 2020
Raid Level : raid5
Array Size : 209584128 (199.88 GiB 214.61 GB)
Used Dev Size : 104792064 (99.94 GiB 107.31 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Thu Aug 11 14:10:43 2020
State : clean, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
Name : mdadmwrite:0 (local to host mdadmwrite)
UUID : bf7a711b:b3aa9440:40d2c12e:79824706
Events : 144
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 0 1 active sync /dev/sda
2 8 16 2 active sync /dev/sdb
0 8 32 - faulty /dev/sdc
برای علامتگذاری دستی دیسک بهعنوان faulty:
sudo mdadm /dev/md0 --fail /dev/sdc
خروجی:
mdadm: set /dev/sdc faulty in /dev/md0
دیسک را حذف کنید:
sudo mdadm /dev/md0 --remove /dev/sdc
خروجی:
mdadm: hot removed /dev/sdc from /dev/md0
دیسک جدید را اضافه کنید:
sudo mdadm /dev/md0 --add /dev/sdd
خروجی:
mdadm: added /dev/sdd
آرایه شروع به بازسازی دادهها روی دیسک جدید میکند.
گام 7: حذف کامل آرایه RAID
برای حذف آرایه و دادههای آن، ابتدا آن را unmount کنید:
cd ~ sudo umount /mnt/md0
آرایه را متوقف کنید:
sudo mdadm --stop /dev/md0
آرایه را حذف کنید:
sudo mdadm --remove /dev/md0
سوپربلاک md را از دیسکها پاک کنید:
lsblk --fs
خروجی:
NAME FSTYPE LABEL UUID MOUNTPOINT … sda linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706 sdb linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706 sdc linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706 sdd vda ├─vda1 ext4 DOROOT 4f8b85db-8c11-422b-83c4-c74195f67b91 / └─vda15
سوپربلاک را حذف کنید:
sudo mdadm --zero-superblock /dev/sda /dev/sdb /dev/sdc
ارجاعات آرایه را از /etc/fstab حذف یا کامنت کنید:
sudo nano /etc/fstab
مثال:
. . . # /dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0
ارجاعات را از /etc/mdadm/mdadm.conf حذف یا کامنت کنید:
nano /etc/mdadm/mdadm.conf
مثال:
# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=bf7a711b:b3aa9440:40d2c12e:79824706
فایل initramfs را بهروزرسانی کنید:
sudo update-initramfs -u
نتیجهگیری
در این آموزش، نحوه مدیریت RAID Arrays با mdadm روی Ubuntu 22.04 را آموختید، از بررسی اطلاعات آرایه و دیسکها تا توقف، راهاندازی، افزودن دیسک و حذف آرایه. این راهنما وظایف روزمره مدیریت RAID را پوشش میدهد. برای گسترش دانش، میتوانید ابزارهایی مانند LVM برای مدیریت حجم یا LUKS برای رمزنگاری دیسکها را کاوش کنید.