1. Tổng quan.
RAID md (Multiple Devices) là một công nghệ trong Linux cho phép bạn kết hợp nhiều ổ đĩa cứng vật lý thành một hệ thống lưu trữ duy nhất. RAID md cung cấp các cấp độ RAID khác nhau, bao gồm RAID 0, RAID 1, RAID 5, RAID 6 và RAID 10, mỗi cấp độ có các đặc điểm và lợi ích riêng.
- RAID 0 (Striping): Dữ liệu được chia thành các phần nhỏ và ghi trên tất cả các ổ đĩa. Tốc độ đọc/ghi tăng lên nhưng không có sự dự phòng nên nếu một ổ đĩa hỏng, dữ liệu sẽ mất hết.
- RAID 1 (Mirroring): Dữ liệu được ghi đồng thời trên tất cả các ổ đĩa. Nếu một ổ đĩa hỏng, dữ liệu vẫn còn trên các ổ đĩa khác.
- RAID 5 (Striping with Parity): Dữ liệu và thông tin parity (dùng để phục hồi dữ liệu) được phân tán trên tất cả các ổ đĩa. Nếu một ổ đĩa hỏng, dữ liệu có thể được phục hồi từ các ổ đĩa còn lại.
- RAID 6 (Striping with Double Parity): Tương tự như RAID 5 nhưng có thêm một bit parity nữa, cho phép hệ thống chịu được việc hỏng của hai ổ đĩa cùng lúc.
- RAID 10 (Striped Mirrors): Kết hợp của RAID 0 và RAID 1, cung cấp cả tốc độ và sự dự phòng.
2. Cài đặt.
mdadm
không phải lúc nào cũng được cài đặt sẵn trên tất cả các bản phân phối Linux. Tuy nhiên, bạn có thể cài đặt nó dễ dàng thông qua trình quản lý gói của hệ điều hành.
Ví dụ, nếu bạn đang sử dụng Ubuntu hoặc một bản phân phối Linux khác dựa trên Debian, bạn có thể cài đặt mdadm
bằng cách sử dụng lệnh sau trong terminal:
sudo apt-get update
sudo apt-get install mdadm
Đối với CentOS, Fedora hoặc các bản phân phối Linux khác dựa trên Red Hat, bạn có thể sử dụng lệnh sau:
sudo yum install mdadm
Sau khi cài đặt, bạn có thể kiểm tra phiên bản mdadm
bằng cách sử dụng lệnh sau:
shell> mdadm --version
mdadm - v4.1 - 2018-10-01
3. Hướng dẫn sử dụng.
Dưới đây là một số cách cơ bản để sử dụng mdadm
để quản lý RAID:
Tạo một mảng RAID mới:
Để tạo một mảng RAID mới, bạn sẽ cần sử dụng lệnh mdadm --create
. Ví dụ, để tạo một mảng RAID 1 với hai ổ đĩa /dev/sdb và /dev/sdc, bạn có thể sử dụng lệnh sau:
sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
Kiểm tra trạng thái của mảng RAID:
Bạn có thể kiểm tra trạng thái của mảng RAID bằng cách sử dụng lệnh mdadm --detail
. Ví dụ:
sudo mdadm --detail /dev/md0
Thêm ổ đĩa vào mảng RAID:
Để thêm một ổ đĩa vào mảng RAID, bạn có thể sử dụng lệnh mdadm --add
. Ví dụ, để thêm ổ đĩa /dev/sdd vào mảng /dev/md0, bạn có thể sử dụng lệnh sau:
sudo mdadm --add /dev/md0 /dev/sdd
Loại bỏ ổ đĩa khỏi mảng RAID:
Để loại bỏ một ổ đĩa khỏi mảng RAID, bạn có thể sử dụng lệnh mdadm --remove
. Ví dụ, để loại bỏ ổ đĩa /dev/sdd khỏi mảng /dev/md0, bạn có thể sử dụng lệnh sau:
sudo mdadm --remove /dev/md0 /dev/sdd
Dừng mảng RAID:
Để dừng một mảng RAID, bạn có thể sử dụng lệnh mdadm --stop
. Ví dụ:
sudo mdadm --stop /dev/md0
Khởi động lại mảng RAID:
Để khởi động lại một mảng RAID, bạn có thể sử dụng lệnh mdadm --assemble
. Ví dụ:
sudo mdadm --assemble /dev/md0
Lưu ý rằng bạn cần thay thế /dev/md0
, /dev/sdb
, /dev/sdc
và /dev/sdd
với các tên thiết bị phù hợp trong hệ thống của bạn.
4. Ví dụ thực hành.
Mình sử dụng lệnh lsblk kiểm tra danh sách ổ đĩa và mình có danh sách các ổ đĩa và phân vùng như dưới. Mình sử dụng 3 ổ đĩa nvme0n2, nvme0n3 và nvme0n4 và tạo Raid5 cho nó.
shell> lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 91.9M 1 loop /snap/lxd/24065
loop1 7:1 0 34M 1 loop /snap/snapd/21185
loop2 7:2 0 57.9M 1 loop /snap/core20/1614
loop3 7:3 0 61M 1 loop /snap/lxd/22761
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 50G 0 disk
├─nvme0n1p1 259:1 0 1.1G 0 part /boot/efi
├─nvme0n1p2 259:2 0 2G 0 part /boot
└─nvme0n1p3 259:3 0 47G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 47G 0 lvm /
nvme0n2 259:4 0 30G 0 disk
nvme0n3 259:5 0 30G 0 disk
nvme0n4 259:6 0 30G 0 disk
Để tạo một mảng RAID 5 với ba ổ đĩa nvme0n2, nvme0n3 và nvme0n4, bạn có thể sử dụng lệnh sau:
shell> sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/nvme0n2 /dev/nvme0n3 /dev/nvme0n4
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 31439872K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
Lệnh trên sẽ tạo một mảng RAID 5 mới tên là /dev/md0 với ba ổ đĩa nvme0n2, nvme0n3 và nvme0n4. Kết quả khi bạn sử dụng lại lệnh lsblk sẽ có khác đôi chút về 3 ổ đĩa vừa Raid5 như dưới.
shell> lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 91.9M 1 loop /snap/lxd/24065
loop1 7:1 0 34M 1 loop /snap/snapd/21185
loop2 7:2 0 57.9M 1 loop /snap/core20/1614
loop3 7:3 0 61M 1 loop /snap/lxd/22761
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 50G 0 disk
├─nvme0n1p1 259:1 0 1.1G 0 part /boot/efi
├─nvme0n1p2 259:2 0 2G 0 part /boot
└─nvme0n1p3 259:3 0 47G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 47G 0 lvm /
nvme0n2 259:4 0 30G 0 disk
└─md0 9:0 0 60G 0 raid5
nvme0n3 259:5 0 30G 0 disk
└─md0 9:0 0 60G 0 raid5
nvme0n4 259:6 0 30G 0 disk
└─md0 9:0 0 60G 0 raid5
Bạn có thể kiểm tra trạng thái của mảng RAID bằng cách sử dụng lệnh mdadm --detail
.
shell> sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed May 1 05:46:17 2024
Raid Level : raid5
Array Size : 62879744 (59.97 GiB 64.39 GB)
Used Dev Size : 31439872 (29.98 GiB 32.19 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Wed May 1 05:48:56 2024
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : ubuntu2004:0 (local to host ubuntu2004)
UUID : dca0024e:090ddbd3:e0bdbf63:fff3c058
Events : 18
Number Major Minor RaidDevice State
0 259 4 0 active sync /dev/nvme0n2
1 259 5 1 active sync /dev/nvme0n3
3 259 6 2 active sync /dev/nvme0n4
Sau khi tạo mảng RAID, để sử dụng bạn cần định dạng lại md0. Bạn có thể sử dụng mkfs
để định dạng, ví dụ:
shell> sudo mkfs.ext4 /dev/md0
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 15719936 4k blocks and 3932160 inodes
Filesystem UUID: 6f9c98ad-b058-40d4-b407-aeb5b319d324
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done
Cuối cùng, bạn cần mount mảng mdo vào một thư mục để sử dụng. Đầu tiên, tạo một thư mục mount.
sudo mkdir /mnt/myraid
Sau đó, mount mảng RAID vào thư mục mới:
sudo mount /dev/md0 /mnt/myraid
Kết quả khi sử dụng lệnh df.
shell> df -hT
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 392M 1.2M 391M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4 46G 6.3G 38G 15% /
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/nvme0n1p2 ext4 2.0G 107M 1.7G 6% /boot
/dev/nvme0n1p1 vfat 1.1G 5.1M 1.1G 1% /boot/efi
/dev/loop1 squashfs 35M 35M 0 100% /snap/snapd/21185
/dev/loop0 squashfs 92M 92M 0 100% /snap/lxd/24065
/dev/loop2 squashfs 58M 58M 0 100% /snap/core20/1614
/dev/loop3 squashfs 62M 62M 0 100% /snap/lxd/22761
tmpfs tmpfs 392M 0 392M 0% /run/user/1000
/dev/md0 ext4 59G 24K 56G 1% /mnt/myraid
Để đảm bảo mảng RAID được mount tự động sau khi khởi động, bạn cần thêm nó vào file /etc/fstab.
Để thêm mảng RAID vào file /etc/fstab
để nó tự động mount khi khởi động, bạn cần biết UUID (Universal Unique Identifier) của mảng RAID.
Bạn có thể lấy UUID bằng cách sử dụng lệnh blkid
:
shell> sudo blkid /dev/md0
/dev/md0: UUID="6f9c98ad-b058-40d4-b407-aeb5b319d324" TYPE="ext4"
Sau đó, bạn mở file /etc/fstab
và thêm một dòng mới với thông tin sau:
UUID=6f9c98ad-b058-40d4-b407-aeb5b319d324 /mnt/myraid ext4 defaults 0 0
Trong đó, 6f9c98ad-b058-40d4-b407-aeb5b319d324
là UUID của mảng RAID, /mnt/myraid
là thư mục mount, ext4
là định dạng phân vùng và defaults 0 0
là các tùy chọn mount.
Sau khi thêm dòng mới, lưu và đóng file. Mảng RAID sẽ tự động mount khi bạn khởi động lại hệ thống.