Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

การกำหนดค่า Software RAID บน Linux ด้วย MDADM

MDADM เป็นเครื่องมือที่ช่วยสร้างและจัดการ software RAID บน Linux ในบทความนี้เราจะแสดงวิธีใช้ mdadm (multiple disks admin) เพื่อสร้างอาร์เรย์ RAID จัดเก็บข้อมูล เพิ่มและจัดการดิสก์ เพิ่ม hot-spare และอื่นๆ

mdadm: วิธีติดตั้งเครื่องมือจัดการ Software Raid

เพื่อติดตั้ง mdadm ให้รันคำสั่งติดตั้ง:

  • สำหรับ CentOS/Red Hat (ใช้ yum/dnf): yum install mdadm
  • สำหรับ Ubuntu/Debian: apt-get install mdadm

mdadm และไลบรารีที่เกี่ยวข้องจะถูกติดตั้ง:

Running transaction Installing : libreport-filesystem-2.1.11-43.el7.centos.x86_64 1/2 Installing : mdadm-4.1-1.el7.x86_64 2/2 Verifying : mdadm-4.1-1.el7.x86_64 1/2 Verifying : libreport-filesystem-2.1.11-43.el7.centos.x86_64 2/2 Installed: mdadm.x86_64 0:4.1-1.el7 Dependency Installed: libreport-filesystem.x86_64 0:2.1.11-43.el7.centos Complete! 

การสร้าง RAID 1 (Mirror) โดยใช้ 2 ดิสก์บน Linux

ผมมีดิสก์เพิ่มเติม 2 ตัวติดตั้งบนเซิร์ฟเวอร์ Linux และต้องการสร้าง software mirror บนดิสก์เหล่านั้น (RAID1) ดิสก์ว่างเปล่า ก่อนอื่น ต้องล้าง superblock ทั้งหมดบนดิสก์ที่จะเพิ่มเข้า RAID:

# mdadm --zero-superblock --force /dev/vd{b,c}

ผมมีดิสก์สะอาด 2 ตัว: vdb และ vdc

การกำหนดค่า Software RAID บน Linux ด้วย MDADM

mdadm: Unrecognised md component device - /dev/vdb mdadm: Unrecognised md component device - /dev/vdc

รายการนี้หมายความว่าดิสก์ทั้งสองไม่เคยถูกเพิ่มเข้าไปในอาร์เรย์มาก่อน

เพื่อสร้าง software RAID1 จาก 2 ดิสก์ไปยังอุปกรณ์ /dev/md0 ใช้คำสั่ง:

# mdadm --create --verbose /dev/md0 -l 1 -n 2 /dev/vd{b,c}

ที่ '-l 1' คือประเภทอาร์เรย์ (RAID1 ในกรณีนี้)

และ '-n 2' คือจำนวนดิสก์ที่เพิ่มเข้าไปในอาร์เรย์

หากต้องการสร้าง RAID0 (Stripe) เพื่อเพิ่มความเร็วอ่าน/เขียนจากการขนานคำสั่งระหว่างดิสก์ทางกายภาพหลายตัว ใช้คำสั่ง:

# mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/vdb /dev/vdc

สำหรับ RAID 5 ของ 3 ดิสก์ขึ้นไป:

# mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/vdb /dev/ vdc /dev/vdd

หลังจากใส่คำสั่ง ยืนยันการกระทำ และ software RAID จะถูกสร้าง:

การกำหนดค่า Software RAID บน Linux ด้วย MDADM

หากแสดงรายการข้อมูลเกี่ยวกับดิสก์ของคุณ จะเห็นดิสก์ RAID md0:

# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 253:0 0 20G 0 disk ├─vda1 253:1 0 512M 0 part /boot └─vda2 253:2 0 19.5G 0 part / vdb 253:16 0 20G 0 disk └─md0 9:0 0 20G 0 raid1 vdc 253:32 0 20G 0 disk └─md0 9:0 0 20G 0 raid1

เพื่อสร้างระบบไฟล์ ext4 บนดิสก์ RAID1 ให้รันคำสั่ง:

# mkfs.ext4 /dev/md0

การกำหนดค่า Software RAID บน Linux ด้วย MDADM

สร้างไดเรกทอรีสำรองและ mount อุปกรณ์ RAID:

# mkdir /backup
# mount /dev/md0 /backup/
# df -h

Filesystem Size Used Avail Use% Mounted on ............. ............. /dev/md0 20G 45M 19G 1% /backup

อาร์เรย์ถูก mount โดยไม่มีข้อผิดพลาด เพื่อไม่ต้อง mount อุปกรณ์ด้วยตนเองทุกครั้ง ให้ทำการเปลี่ยนแปลงต่อไปนี้ใน fstab:

# nano /etc/fstab

/dev/md0 /backup ext4 defaults 1 2

การกำหนดค่า Software RAID บน Linux ด้วย MDADM

วิธีดูสถานะหรือตรวจสอบความสมบูรณ์ของอาร์เรย์ RAID

เพื่อตรวจสอบความสมบูรณ์ของข้อมูลในอาร์เรย์ ใช้คำสั่งต่อไปนี้:

#echo 'check' > /sys/block/md0/md/sync_action

จากนั้นดูเอาต์พุตของไฟล์ต่อไปนี้:

#cat /sys/block/md0/md/mismatch_cnt

หากได้ 0 อาร์เรย์ของคุณปกติ:

การกำหนดค่า Software RAID บน Linux ด้วย MDADM

เพื่อหยุดการตรวจสอบ ให้รัน:

#echo 'idle' > /sys/block/md0/md/sync_action

เพื่อตรวจสอบสถานะของ RAID ทั้งหมดบนเซิร์ฟเวอร์ ใช้คำสั่ง:

# cat /proc/mdstat

Personalities : [raid1] md0 : active raid1 vdc[1] vdb[0] 20954112 blocks super 1.2 [2/2] [UU]

คุณสามารถดูข้อมูลโดยละเอียดของ RAID เฉพาะได้ด้วยคำสั่ง:

# mdadm -D /dev/md0

การกำหนดค่า Software RAID บน Linux ด้วย MDADM

รายการหลักในเอาต์พุตคำสั่ง:

  • Version – รุ่นข้อมูลเมตา
  • Creation Time – วันที่และเวลาที่สร้าง RAID
  • Raid Level – ระดับของอาร์เรย์ RAID
  • Array Size – ขนาดพื้นที่ดิสก์ RAID
  • Used Dev Size – ขนาดพื้นที่ที่อุปกรณ์ใช้
  • Raid Device – จำนวนดิสก์ใน RAID
  • Total Devices – จำนวนดิสก์ที่เพิ่มเข้า RAID
  • State – สถานะปัจจุบัน (clean — ปกติ)
  • Active Devices – จำนวนดิสก์ที่ทำงานอยู่ใน RAID
  • Working Devices – จำนวนดิสก์ที่ทำงานปกติใน RAID
  • Failed Devices – จำนวนอุปกรณ์ที่ล้มเหลวใน RAID
  • Spare Devices – จำนวนดิสก์สำรองใน RAID
  • Consistency Policy – พารามิเตอร์ตั้งค่าประเภทการซิงโครไนซ์หลังล้มเหลว (rsync คือการซิงโครไนซ์เต็มรูปแบบหลังกู้คืน RAID bitmap, journal, ppl modes พร้อมใช้งาน)
  • UUID – ตัวระบุอาร์เรย์ RAID

คุณสามารถดูข้อมูลสรุปได้ด้วย fdisk:

# fdisk -l /dev/md0

Disk /dev/md0: 21.5 GB, 21457010688 bytes, 41908224 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

การกู้คืนจากความล้มเหลวของดิสก์ใน RAID, การเปลี่ยนดิสก์

หากดิสก์หนึ่งใน RAID ล้มเหลวหรือเสียหาย คุณอาจเปลี่ยนด้วยอีกตัวหนึ่ง ก่อนอื่น ตรวจสอบว่าดิสก์เสียหายและต้องเปลี่ยนหรือไม่

# cat /proc/mdstat

Personalities : [raid1] md0 : active raid1 vdb[0] 20954112 blocks super 1.2 [2/1] [U_]

จากคำสั่งก่อนหน้า คุณเห็นว่ามีเพียงดิสก์เดียวที่ทำงานอยู่ [U_] ก็หมายความว่ามีปัญหา เมื่อดิสก์ทั้งสองปกติ ผลลัพธ์คือ [UU]

ข้อมูลโดยละเอียดของ RAID ก็แสดงว่ามีปัญหา:

# mdadm -D /dev/md0

/dev/md0: Version : 1.2 Creation Time : Tue Dec 31 12:39:22 2020 Raid Level : raid1 Array Size : 20954112 (19.98 GiB 21.46 GB) Used Dev Size : 20954112 (19.98 GiB 21.46 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Tue Dec 31 14:41:13 2020 State : clean, degraded Active Devices : 1 Working Devices : 1 Failed Devices : 1 State : clean, degraded

– บรรทัดสุดท้ายแสดงว่าดิสก์หนึ่งใน RAID เสียหาย

ในกรณีนี้ /dev/vdc ต้องเปลี่ยน ในการกู้คืนอาร์เรย์ ต้องลบดิสก์ที่เสียและเพิ่มดิสก์ใหม่

ลบดิสก์ที่ล้มเหลว:

# mdadm /dev/md0 --remove /dev/vdc

เพิ่มดิสก์ใหม่เข้าไปในอาร์เรย์:

# mdadm /dev/md0 --add /dev/vdd

การกู้คืนดิสก์จะเริ่มอัตโนมัติหลังจากเพิ่มดิสก์ใหม่:

# mdadm -D /dev/md0

/dev/md0: Version : 1.2 Creation Time : Tue Dec 31 12:39:22 2020 Raid Level : raid1 Array Size : 20954112 (19.98 GiB 21.46 GB) Used Dev Size : 20954112 (19.98 GiB 21.46 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Tue Dec 31 14:50:20 2020 State : clean, degraded, recovering Active Devices : 1 Working Devices : 2 Failed Devices : 0 Spare Devices : 1 Consistency Policy : resync Rebuild Status : 48% complete Name : host1:0 (local to host host1) UUID : 9d59b1fb:7b0a7b6d:15a75459:8b1637a2 Events : 42 Number Major Minor RaidDevice State 0 253 16 0 active sync /dev/vdb 2 253 48 1 spare rebuilding /dev/vdd rebuild Status : 48% complete shows the current array recovery state. spare rebuilding /dev/vdd shows which disk is being added to the array. After rebuilding the array, check its state: State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0

วิธีเพิ่มหรือลบดิสก์ไปยัง Software RAID บน Linux

หากต้องการลบอุปกรณ์ RAID mdadm ที่สร้างไว้ก่อนหน้านี้ ให้ unmount:

# umount /backup

จากนั้นรันคำสั่ง:

# mdadm -S /dev/md0

mdadm: stopped /dev/md0

หลังจากทำลายอาร์เรย์ RAID มันจะไม่ถูกตรวจจับเป็นอุปกรณ์ดิสก์แยกต่างหาก:

# mdadm -S /dev/md0

mdadm: error opening /dev/md0: No such file or directory

คุณสามารถสแกนดิสก์ที่เชื่อมต่อทั้งหมดและสร้างอุปกรณ์ RAID ที่ลบไปก่อนหน้านี้ (ล้มเหลว) ใหม่ตามข้อมูลเมตาบนดิสก์ทางกายภาพ รันคำสั่ง:

# mdadm --assemble —scan

การกำหนดค่า Software RAID บน Linux ด้วย MDADM

หากต้องการลบดิสก์ที่ทำงานอยู่ออกจากอาร์เรย์และเปลี่ยนใหม่ ให้ทำเครื่องหมายดิสก์ว่าเป็นดิสก์ที่ล้มเหลวก่อน:

# mdadm /dev/md0 --fail /dev/vdc

จากนั้นลบได้ด้วยคำสั่ง:

# mdadm /dev/md0 --remove /dev/vdc

คุณสามารถเพิ่มดิสก์ใหม่ได้เช่นเดียวกับกรณีดิสก์ล้มเหลว:

# mdadm /dev/md0 --add /dev/vdd

วิธีเพิ่มดิสก์ Hot-Spare ไปยังอาร์เรย์ MDADM

คุณสามารถเพิ่มดิสก์ hot-spare เพิ่มเติมเพื่อ rebuild อาร์เรย์ RAID อย่างรวดเร็วหากดิสก์ที่ทำงานอยู่ล้มเหลว เพิ่มดิสก์ว่างเข้าไปในอุปกรณ์ md ที่คุณต้องการ:

# mdadm /dev/md0 --add /dev/vdc

เมื่อตรวจสอบสถานะ RAID เราจะเห็นดิสก์เป็น spare:

การกำหนดค่า Software RAID บน Linux ด้วย MDADM

เพื่อให้แน่ใจว่า hot-swap ทำงาน ให้ทำเครื่องหมายดิสก์ใดดิสก์หนึ่งว่า failed และตรวจสอบสถานะ RAID:

# mdadm /dev/md0 --fail /dev/vdb

หลังจากตรวจสอบ คุณจะเห็นว่าการ rebuild อาร์เรย์เริ่มต้นขึ้น

การกำหนดค่า Software RAID บน Linux ด้วย MDADM

ดิสก์ /dev/vdb ถูกทำเครื่องหมายว่า failed และดิสก์ hot-spare กลายเป็นดิสก์ RAID ที่ทำงานอยู่หนึ่งดิสก์ กระบวนการ rebuild เริ่มต้น

เพื่อเพิ่มดิสก์ที่ทำงานได้เพิ่มเติมเข้าไปใน RAID คุณต้องทำตาม 2 ขั้นตอนนี้

เพิ่มดิสก์ว่างเข้าไปในอาร์เรย์:

# mdadm /dev/md0 --add /dev/vdb

ตอนนี้ดิสก์นี้จะแสดงเป็น hot-spare เพื่อทำให้มัน active ให้ขยายอุปกรณ์ md RAID:

# mdadm -G /dev/md0 —raid-devices=3

จากนั้นอาร์เรย์จะถูก rebuild:

การกำหนดค่า Software RAID บน Linux ด้วย MDADM

หลังจาก rebuild เสร็จ ดิสก์ทั้งหมดจะกลายเป็น active:

Number Major Minor RaidDevice State 3 253 32 0 active sync /dev/vdc 2 253 48 1 active sync /dev/vdd 4 253 16 2 active sync /dev/vdb

วิธีลบอาร์เรย์ MDADM RAID

หากต้องการลบ software RAID drive ของคุณอย่างถาวร ให้ใช้แผนผังต่อไปนี้:

# umount /backup – unmount อาร์เรย์จากไดเรกทอรี

# mdadm -S /dev/md0 — หยุดอุปกรณ์ RAID

จากนั้นล้าง superblock ทั้งหมดบนดิสก์ที่สร้างขึ้น:

# mdadm --zero-superblock /dev/vdb
# mdadm --zero-superblock /dev/vdc

Mdmonitor: การตรวจสอบสถานะ RAID และการแจ้งเตือนทางอีเมล

ดีมอน mdmonitor สามารถใช้ตรวจสอบสถานะของ RAID ได้ ก่อนอื่น คุณต้องสร้างไฟล์ /etc/mdadm.conf ที่มีการกำหนดค่าอาร์เรย์ปัจจุบัน:

# mdadm –detail –scan > /etc/mdadm.conf

ไฟล์ mdadm.conf ไม่ถูกสร้างโดยอัตโนมัติ คุณต้องสร้างและอัปเดตด้วยตนเอง

เพิ่มที่อยู่อีเมลของผู้ดูแลที่ต้องการรับการแจ้งเตือนในกรณีปัญหา RAID ไปที่ท้ายไฟล์ /etc/mdadm.conf:

MAILADDR raidadmin@woshub.com

จากนั้นรีสตาร์ทบริการ mdmonitor ด้วย systemctl:

# systemctl restart mdmonitor

ระบบจะแจ้งเตือนคุณทางอีเมลหากมีข้อผิดพลาด mdadm หรือดิสก์เสียหาย

MDADM RAID ที่ Inactive

ในกรณีของความล้มเหลวของฮาร์ดแวร์หรือการปิดเครื่องฉุกเฉิน อาร์เรย์ RAID แบบซอฟต์แวร์อาจกลายเป็น inactive ดิสก์ทั้งหมดถูกทำเครื่องหมายว่า inactive แต่ไม่มีข้อผิดพลาด

# cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : inactive vdc[1] vdb[0] 20954112 blocks super unused devices: <none>

ในกรณีนี้ ต้องหยุดอาร์เรย์ด้วยคำสั่ง:

# mdadm --stop /dev/md0

และประกอบใหม่:

# mdadm --assemble --scan –force

หากอุปกรณ์ md ลงทะเบียนใน /etc/fstab ให้ mount ใหม่ด้วยคำสั่ง:

# mount -a

มีหลายวิธีในการสร้าง software RAID ในระบบปฏิบัติการที่ติดตั้งอยู่แล้ว ในกรณีนี้ คุณจะต้องคัดลอกตารางพาร์ติชันทั้งหมดไปยังดิสก์ใหม่ด้วยตนเอง และย้ายเนื้อหาของดิสก์ระบบไปยัง RAID ที่ประกอบด้วยดิสก์เดียวด้วยตนเอง จากนั้นล้างดิสก์แรกและเพิ่มเข้า RAID แก้ไข initramfs และโหลดบูต GRUB ดังนั้น จึงดีกว่าที่จะเลือกโหมดการติดตั้ง CentOS บน software RAID ระหว่างการปรับใช้เซิร์ฟเวอร์

mdadm ทำให้การจัดการ software RAID บน Linux ง่ายขึ้น ในบทความนี้ผมอธิบายสิ่งสำคัญเมื่อทำงานกับเครื่องมือนี้ และครอบคลุมคำถามทั่วไปที่เกิดขึ้นเมื่อทำงานกับ RAID โดยใช้ mdadm