آموزش مدیریت RAID Arrays با mdadm روی Ubuntu 22.04

به اشتراک بگذارید

how-to-manage-raid-arrays-with-mdadm-on-ubuntu-22-04

فهرست مطالب

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 برای رمزنگاری دیسک‌ها را کاوش کنید.