Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Cấu hình Software RAID trên Linux bằng MDADM

MDADM là công cụ cho phép tạo và quản lý software RAID trên Linux. Trong bài viết này, chúng tôi sẽ chỉ cách dùng mdadm (multiple disks admin) để tạo mảng lưu trữ RAID, thêm và quản lý đĩa, thêm hot-spare và nhiều hơn nữa.

mdadm: Cách cài đặt công cụ quản lý Software RAID?

Để cài đặt mdadm, chạy lệnh cài đặt:

  • Cho CentOS/Red Hat (dùng yum/dnf): yum install mdadm
  • Cho Ubuntu/Debian: apt-get install mdadm

mdadm và thư viện phụ thuộc sẽ được cài đặt:

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!

Tạo RAID 1 (Mirror) dùng 2 ổ đĩa trên Linux

Tôi có hai ổ đĩa thêm trên máy chủ Linux, và muốn tạo software mirror trên chúng (RAID1). Các ổ đĩa trống. Trước hết, bạn phải zero tất cả superblock trên các ổ đĩa sẽ thêm vào RAID:

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

Tôi có hai ổ sạch: vdb và vdc.

Cấu hình Software RAID trên Linux bằng MDADM

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

Danh sách này có nghĩa là không ổ nào từng được thêm vào mảng.

Để tạo software RAID1 từ hai ổ đĩa vào thiết bị /dev/md0, dùng lệnh:

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

Trong đó '-l 1' là loại mảng (RAID1 trong trường hợp của chúng ta,

và '-n 2' là số ổ đĩa thêm vào mảng.

Nếu bạn muốn tạo RAID0 (Stripe) để cải thiện tốc độ đọc/ghi nhờ song song hóa lệnh giữa nhiều ổ vật lý, dùng lệnh:

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

Cho RAID 5 từ ba ổ trở lên:

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

Sau khi nhập lệnh, xác nhận hành động và software RAID sẽ được tạo:

Cấu hình Software RAID trên Linux bằng MDADM

Nếu liệt kê thông tin ổ đĩa, bạn sẽ thấy ổ 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

Để tạo hệ thống tệp ext4 trên ổ RAID1, chạy lệnh:

# mkfs.ext4 /dev/md0

Cấu hình Software RAID trên Linux bằng MDADM

Tạo thư mục backup và mount thiết bị RAID vào nó:

# mkdir /backup
# mount /dev/md0 /backup/
# df -h
Filesystem Size Used Avail Use% Mounted on
............. .............
/dev/md0 20G 45M 19G 1% /backup

Mảng đã được mount không lỗi. Để không phải mount thủ công mỗi lần, hãy thay đổi sau trong fstab:

# nano /etc/fstab
/dev/md0 /backup ext4 defaults 1 2

Cấu hình Software RAID trên Linux bằng MDADM

Cách xem trạng thái hoặc kiểm tra tính toàn vẹn của mảng RAID?

Để kiểm tra tính toàn vẹn dữ liệu trong mảng, dùng lệnh sau:

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

Sau đó xem đầu ra file sau:

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

Nếu bạn nhận được 0, mảng của bạn OK:

Cấu hình Software RAID trên Linux bằng MDADM

Để dừng kiểm tra, chạy:

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

Để kiểm tra trạng thái tất cả RAID trên máy chủ, dùng lệnh:

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

Bạn có thể xem thông tin chi tiết hơn về RAID cụ thể bằng lệnh:

# mdadm -D /dev/md0

Cấu hình Software RAID trên Linux bằng MDADM

Hãy xem xét các mục chính trong danh sách lệnh:

  • Version — phiên bản metadata
  • Creation Time — ngày giờ tạo RAID
  • Raid Level — cấp độ mảng RAID
  • Array Size — kích thước không gian đĩa RAID
  • Used Dev Size — kích thước không gian dùng bởi thiết bị
  • Raid Devices — số ổ đĩa trong RAID
  • Total Devices — số ổ đĩa thêm vào RAID
  • State — trạng thái hiện tại (clean — OK)
  • Active Devices — số ổ hoạt động trong RAID
  • Working Devices — số ổ hoạt động trong RAID
  • Failed Devices — số thiết bị lỗi trong RAID
  • Spare Devices — số ổ dự phòng trong RAID
  • Consistency Policy — tham số đặt loại đồng bộ sau lỗi, resync là đồng bộ đầy đủ sau khôi phục RAID (có chế độ bitmap, journal, ppl)
  • UUID — định danh mảng RAID

Bạn có thể xem thông tin tóm tắt bằng 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

Khôi phục từ lỗi ổ đĩa trong RAID, thay thế ổ đĩa

Nếu một ổ trong RAID lỗi hoặc hỏng, bạn có thể thay bằng ổ khác. Trước hết, tìm xem ổ có hỏng và cần thay thế không.

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

Từ lệnh trước, bạn thấy chỉ có một ổ hoạt động. [U_] cũng có nghĩa là có vấn đề. Khi cả hai ổ khỏe, đầu ra là [UU].

Thông tin chi tiết về RAID cũng cho thấy có vấn đề:

# 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

— dòng cuối cho thấy một ổ trong RAID bị hỏng.

Trong trường hợp này, /dev/vdc phải được thay thế. Để khôi phục mảng, bạn phải xóa ổ hỏng và thêm ổ mới.

Xóa ổ lỗi:

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

Thêm ổ mới vào mảng:

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

Khôi phục ổ sẽ bắt đầu tự động sau khi thêm ổ mới:

# 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 hiển thị trạng thái khôi phục mảng hiện tại.
spare rebuilding /dev/vdd cho thấy ổ nào đang được thêm vào mảng.
Sau khi rebuild xong, kiểm tra trạng thái:
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Cách thêm hoặc xóa ổ đĩa vào Software RAID trên Linux?

Nếu cần xóa thiết bị mdadm RAID đã tạo trước, umount nó:

# umount /backup

Sau đó chạy lệnh:

# mdadm -S /dev/md0
mdadm: stopped /dev/md0

Sau khi phá hủy mảng RAID, nó sẽ không được phát hiện như thiết bị đĩa riêng:

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

Bạn có thể quét tất cả ổ đĩa kết nối và tạo lại thiết bị RAID đã xóa (lỗi) trước đó theo metadata trên ổ vật lý. Chạy lệnh:

# mdadm --assemble --scan

Cấu hình Software RAID trên Linux bằng MDADM

Nếu bạn muốn xóa ổ đang hoạt động khỏi mảng và thay thế, trước hết đánh dấu ổ là lỗi:

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

Sau đó xóa nó bằng lệnh:

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

Bạn có thể thêm ổ mới, giống như trường hợp ổ lỗi:

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

Cách thêm ổ Hot-Spare vào mảng MDADM?

Bạn có thể thêm ổ hot-spare dự phòng để rebuild nhanh mảng RAID nếu một ổ hoạt động lỗi. Thêm ổ trống vào thiết bị md bạn muốn:

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

Khi kiểm tra trạng thái RAID, chúng ta sẽ thấy ổ như spare:

Cấu hình Software RAID trên Linux bằng MDADM

Để chắc chắn hot-swap hoạt động, đánh dấu bất kỳ ổ nào là lỗi và kiểm tra trạng thái RAID:

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

Sau kiểm tra, bạn thấy rebuild mảng đã bắt đầu.

Cấu hình Software RAID trên Linux bằng MDADM

Ổ /dev/vdb bị đánh dấu lỗi, và ổ hot-spare trở thành một ổ RAID hoạt động. Vậy quá trình rebuild đã bắt đầu.

Để thêm ổ hoạt động bổ sung vào RAID, bạn phải làm theo hai bước.

Thêm ổ trống vào mảng:

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

Bây giờ ổ này sẽ hiển thị là hot-spare. Để làm cho nó hoạt động, mở rộng thiết bị md RAID:

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

Sau đó mảng sẽ được rebuild:

Cấu hình Software RAID trên Linux bằng MDADM

Sau rebuild, tất cả ổ trở thành 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

Cách xóa mảng RAID MDADM?

Nếu bạn muốn xóa vĩnh viễn ổ RAID phần mềm, dùng sơ đồ sau:

# umount /backup – umount mảng khỏi thư mục
# mdadm -S /dev/md0 — dừng thiết bị RAID

Sau đó xóa tất cả superblock trên các ổ nó được xây dựng:

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

Mdmonitor: Giám sát trạng thái RAID & Thông báo Email

Daemon mdmonitor có thể dùng để giám sát trạng thái RAID. Trước hết, bạn phải tạo file /etc/mdadm.conf chứa cấu hình mảng hiện tại:

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

File mdadm.conf không được tạo tự động. Bạn phải tạo và cập nhật thủ công.

Thêm vào cuối /etc/mdadm.conf địa chỉ email quản trị viên để nhận thông báo nếu có vấn đề RAID:

MAILADDR raidadmin@woshub.com

Sau đó khởi động lại dịch vụ mdmonitor bằng systemctl:

# systemctl restart mdmonitor

Sau đó hệ thống sẽ thông báo cho bạn qua email nếu có bất kỳ lỗi mdadm hoặc ổ lỗi nào.

MDADM RAID không hoạt động (Inactive)

Trong trường hợp lỗi phần cứng hoặc tắt máy khẩn cấp, mảng RAID phần mềm có thể trở thành inactive. Tất cả ổ được đánh dấu inactive, nhưng không có lỗi.

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

Trong trường hợp này, bạn cần dừng mảng bằng lệnh:

# mdadm --stop /dev/md0

Và lắp ráp lại:

# mdadm --assemble --scan --force

Nếu thiết bị md được đăng ký trong /etc/fstab, mount lại bằng lệnh:

# mount -a

Có một số cách tạo software RAID trong OS đã cài đặt. Trong trường hợp này, bạn sẽ phải thủ công copy tất cả bảng phân vùng sang ổ mới, và thủ công di chuyển nội dung ổ hệ thống sang RAID gồm một ổ. Sau đó dọn dẹp ổ đầu tiên và thêm vào RAID, chỉnh sửa initramfs và GRUB loader. Vì vậy, tốt hơn nên chọn chế độ cài đặt CentOS trên software RAID khi triển khai máy chủ.

mdadm giúp quản lý software RAID trên Linux dễ dàng hơn. Trong bài này tôi đã mô tả các điều chính khi làm việc với công cụ, và bao phủ các câu hỏi điển hình khi làm việc với RAID bằng mdadm.