Tiện ích mdadm được dùng để tạo và quản lý các mảng lưu trữ bằng khả năng RAID phần mềm của Linux. Nhờ đó, quản trị viên có thể phối hợp các thiết bị lưu trữ riêng lẻ và tạo ra các thiết bị lưu trữ logic linh hoạt hơn với hiệu năng cao hơn hoặc khả năng dự phòng tốt hơn.
Trong hướng dẫn này, bạn sẽ thực hiện các cấu hình RAID trên Ubuntu.

Điều kiện tiên quyết
Để làm theo các bước trong hướng dẫn này, bạn sẽ cần:
- Một người dùng không phải root có quyền
sudotrên máy chủ Ubuntu. Để biết cách thiết lập tài khoản với các quyền này. - Hiểu biết cơ bản về thuật ngữ và khái niệm RAID. Để tìm hiểu thêm về RAID và lựa chọn cấp độ RAID phù hợp.
- Nhiều thiết bị lưu trữ thô có sẵn trên máy chủ. Các ví dụ trong hướng dẫn này minh họa cách cấu hình nhiều loại mảng khác nhau trên máy chủ. Vì vậy, bạn sẽ cần có một số ổ đĩa để cấu hình.
- Tùy thuộc vào loại mảng, bạn sẽ cần từ 2 đến 4 thiết bị lưu trữ. Không cần định dạng các ổ đĩa này trước khi thực hiện hướng dẫn.
Thông tin: Thiết lập RAID trên máy chủ riêng ảo (VPS) thường kém hiệu quả, vì vậy RAID không được khuyên dùng trên các Droplet của DigitalOcean.
Cơ chế sao chép đĩa tại trung tâm dữ liệu đã đủ mạnh, nên lợi ích của RAID gần như không đáng kể so với khi cấu hình trên phần cứng bare-metal.
Hướng dẫn này được cung cấp như một tài liệu tham khảo cho cách thiết lập RAID truyền thống.
Reset các thiết bị RAID hiện có (Tùy chọn)
Nếu chưa thiết lập bất kỳ mảng nào, bạn có thể bỏ qua phần này. Hướng dẫn này sẽ giới thiệu nhiều cấp độ RAID khác nhau. Nếu bạn muốn thực hành và hoàn thành từng cấp độ RAID với các thiết bị của mình, có thể bạn sẽ cần tái sử dụng các thiết bị lưu trữ sau mỗi phần. Phần này giúp bạn reset các thiết bị lưu trữ thành phần trước khi thử một cấp độ RAID mới.
Cảnh báo: Quy trình này sẽ xóa hoàn toàn mảng và toàn bộ dữ liệu trên đó. Do đó, trước khi xóa mảng, bạn phải kiểm tra kỹ xem đã chọn đúng mảng và đã sao chép mọi dữ liệu cần giữ lại hay chưa.
Bắt đầu bằng cách tìm các mảng đang hoạt động trong tệp /proc/mdstat:
cat /proc/mdstat
Kết quả
Personalities : [raid0] [linear] [multipath] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid0 sdc[1] sdd[0]
209584128 blocks super 1.2 512k chunks
unused devices: <none>
Tiếp theo, gỡ mảng khỏi hệ thống tệp:
sudo umount /dev/md0
Bây giờ dừng và xóa mảng:
sudo mdadm --stop /dev/md0
Tìm các thiết bị đã được sử dụng để tạo mảng với lệnh sau:
Cảnh báo: Tên /dev/sd* có thể thay đổi bất kỳ lúc nào khi bạn khởi động lại. Do đó, mỗi lần thực hiện bạn phải kiểm tra lại để thao tác đúng thiết bị.
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Kết quả
NAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G linux_raid_member disk
sdb 100G linux_raid_member disk
sdc 100G disk
sdd 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
vdb 466K iso9660 disk
Sau khi xác định được các thiết bị dùng để tạo mảng, hãy xóa superblock lưu metadata của RAID. Thao tác này loại bỏ metadata RAID và đưa các thiết bị về trạng thái bình thường:
sudo mdadm --zero-superblock /dev/sda
sudo mdadm --zero-superblock /dev/sdb
Bạn cũng nên xóa mọi tham chiếu cố định đến mảng. Mở tệp /etc/fstab và chú thích bằng cách thêm ký tự # ở đầu dòng tham chiếu đến mảng hoặc xóa dòng đó đi, sử dụng nano hoặc trình soạn thảo bạn thích:
sudo nano /etc/fstab
/etc/fstab
. . .
# /dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0
Ngoài ra, hãy chú thích hoặc xóa định nghĩa mảng trong tệp /etc/mdadm/mdadm.conf:
sudo nano /etc/mdadm/mdadm.conf
/etc/mdadm/mdadm.conf
. . .
# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=7261fb9c:976d0d97:30bc63ce:85e76e91
Cuối cùng, cập nhật lại initramfs để quá trình khởi động ban đầu bỏ qua các mảng không còn tồn tại:
sudo update-initramfs -u
Từ đây, bạn đã có thể tái sử dụng các thiết bị lưu trữ một cách riêng lẻ hoặc như thành phần của một mảng khác.
Tạo mảng RAID 0
Mảng RAID 0 hoạt động bằng cách chia dữ liệu thành các khối nhỏ và phân tán (striping) chúng trên các đĩa có sẵn. Nghĩa là mỗi đĩa sẽ chứa một phần dữ liệu và khi truy xuất thông tin, nhiều đĩa sẽ được tham chiếu cùng lúc.
- Yêu cầu: Tối thiểu 2 thiết bị lưu trữ.
- Lợi ích chính: Hiệu năng đọc/ghi và dung lượng.
- Cần lưu ý: Đảm bảo bạn có bản sao lưu đầy đủ. Chỉ cần một thiết bị hỏng là toàn bộ dữ liệu trong mảng sẽ bị mất.
Xác định các thiết bị thành phần
Đầu tiên, tìm tên định danh của các đĩa thô sẽ sử dụng:
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Kết quả
NAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk
sdb 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
vdb 466K iso9660 disk
Trong ví dụ này, có 2 đĩa không có hệ thống tệp, mỗi đĩa dung lượng 100G. Các thiết bị này được gán định danh /dev/sda và /dev/sdb trong phiên làm việc này và sẽ là các thành phần thô để xây dựng mảng.
Tạo mảng
Để tạo mảng RAID 0 từ các thành phần trên, truyền chúng vào lệnh mdadm --create. Bạn cần chỉ định tên thiết bị sẽ tạo, cấp độ RAID và số lượng thiết bị.
Trong ví dụ này, tên thiết bị là /dev/md0, với 2 đĩa:
sudo mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sda /dev/sdb
Xác nhận mảng RAID đã được tạo thành công bằng cách kiểm tra tệp /proc/mdstat:
cat /proc/mdstat
Kết quả
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid0 sdb[1] sda[0]
209584128 blocks super 1.2 512k chunks
unused devices: <none>
Kết quả này cho thấy thiết bị /dev/md0 đã được tạo với cấu hình RAID 0, sử dụng các thiết bị /dev/sda và /dev/sdb.
Tạo và gắn kết hệ thống tệp
Tiếp theo, tạo hệ thống tệp trên mảng:
sudo mkfs.ext4 -F /dev/md0
Tạo điểm gắn kết để gắn hệ thống tệp mới:
sudo mkdir -p /mnt/md0
Gắn kết hệ thống tệp với lệnh sau:
sudo mount /dev/md0 /mnt/md0
Sau đó, kiểm tra dung lượng khả dụng:
df -h -x devtmpfs -x tmpfs
Kết quả
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.4G 23G 6% /
/dev/vda15 105M 3.4M 102M 4% /boot/efi
/dev/md0 196G 61M 186G 1% /mnt/md0
Hệ thống tệp mới đã được gắn kết thành công và có thể truy cập.
Lưu cấu hình mảng
Để đảm bảo mảng tự động được ghép lại khi khởi động, bạn cần chỉnh sửa tệp /etc/mdadm/mdadm.conf. Có thể tự động quét mảng đang hoạt động và thêm vào tệp này với lệnh:
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
Sau đó, cập nhật lại initramfs hoặc hệ thống tệp RAM khởi tạo để mảng sẵn sàng trong quá trình khởi động ban đầu:
sudo update-initramfs -u
Thêm tùy chọn gắn kết hệ thống tệp mới vào tệp /etc/fstab để tự động gắn kết khi khởi động:
echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab
Mảng RAID 0 của bạn giờ sẽ tự động được lắp ghép và gắn kết mỗi khi khởi động.
Bạn đã hoàn tất bước thiết lập RAID 0. Nếu muốn thử một loại RAID khác, thì trước khi tạo mảng mới, bạn hãy làm theo hướng dẫn reset ở phần trước.
Tạo mảng RAID 1
Mảng RAID 1 được triển khai bằng cách nhân bản (mirroring) dữ liệu trên tất cả các đĩa có sẵn. Mỗi đĩa trong mảng RAID 1 sẽ chứa toàn bộ bản sao của dữ liệu, cung cấp khả năng dự phòng khi có thiết bị gặp sự cố.
- Yêu cầu: Tối thiểu 2 thiết bị lưu trữ.
- Lợi ích chính: Dự phòng dữ liệu giữa 2 thiết bị lưu trữ.
- Cần lưu ý: Vì phải duy trì 2 bản sao dữ liệu nên dung lượng đĩa được sử dụng chỉ có một nửa.
Xác định các thiết bị thành phần
Đầu tiên, tìm tên định danh của các đĩa thô sẽ sử dụng:
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Kết quả
NAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk
sdb 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
vdb 466K iso9660 disk
Trong ví dụ này, có 2 đĩa không có hệ thống tệp, mỗi đĩa dung lượng 100G. Các thiết bị này được gán định danh /dev/sda và /dev/sdb trong phiên làm việc này và sẽ là các thành phần thô dùng để xây dựng mảng.
Tạo mảng
Để tạo mảng RAID 1 từ các thành phần trên, truyền chúng vào lệnh mdadm --create. Bạn cần chỉ định tên thiết bị muốn tạo, cấp độ RAID và số lượng thiết bị.
Trong ví dụ này, tên thiết bị là /dev/md0, sử dụng 2 đĩa để xây dựng mảng:
sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb
Nếu các thiết bị thành phần không phải là phân vùng có gắn cờ boot, bạn có thể nhận cảnh báo sau. Có thể chọn y để tiếp tục:
Kết quả
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: size set to 104792064K
Continue creating array? y
Công cụ mdadm sẽ bắt đầu nhân bản dữ liệu giữa các ổ đĩa. Quá trình này có thể mất thời gian, nhưng mảng vẫn dùng được trong khi đồng bộ. Bạn có thể theo dõi tiến trình nhân bản bằng cách kiểm tra tệp /proc/mdstat:
cat /proc/mdstat
Kết quả
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb[1] sda[0]
104792064 blocks super 1.2 [2/2] [UU]
[====>................] resync = 20.2% (21233216/104792064) finish=6.9min speed=199507K/sec
unused devices: <none>
Dòng đầu tiên cho thấy thiết bị /dev/md0 đã được tạo với cấu hình RAID 1, sử dụng các thiết bị /dev/sda và /dev/sdb. Dòng thứ hai hiển thị tiến độ nhân bản. Bạn có thể đến bước tiếp theo sau khi quá trình này hoàn tất.
Tạo và gắn kết hệ thống tệp
Tiếp theo, tạo hệ thống tệp trên mảng:
sudo mkfs.ext4 -F /dev/md0
Tạo điểm gắn kết để liên kết hệ thống tệp mới:
sudo mkdir -p /mnt/md0
Gắn kết hệ thống tệp bằng lệnh:
sudo mount /dev/md0 /mnt/md0
Kiểm tra dung lượng mới đã sẵn sàng chưa:
df -h -x devtmpfs -x tmpfs
Kết quả
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.4G 23G 6% /
/dev/vda15 105M 3.4M 102M 4% /boot/efi
/dev/md0 99G 60M 94G 1% /mnt/md0
Hệ thống tệp mới đã được gắn kết và có thể truy cập.
Lưu cấu hình mảng
Để đảm bảo mảng tự động được ghép lại khi khởi động, bạn cần chỉnh sửa tệp /etc/mdadm/mdadm.conf. Có thể tự động quét mảng đang hoạt động và thêm vào tệp này với lệnh:
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
Sau đó, cập nhật lại initramfs để mảng có sẵn trong quá trình khởi động ban đầu:
sudo update-initramfs -u
Thêm tùy chọn gắn kết hệ thống tệp mới vào tệp /etc/fstab để tự động gắn kết khi khởi động:
echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab
Mảng RAID 1 của bạn giờ sẽ tự động được lắp ghép và gắn kết mỗi khi khởi động.
Bạn đã hoàn tất thiết lập RAID 1. Nếu muốn thử một loại RAID khác, thì trước khi tạo mảng mới, bạn hãy làm theo hướng dẫn reset ở phần trước.
Tạo mảng RAID 5
RAID 5 hoạt động bằng cách phân tán dữ liệu trên các thiết bị lưu trữ, trong đó mỗi dải dữ liệu có một khối parity được tính toán. Khi một thiết bị hỏng, khối parity cùng các khối còn lại sẽ được tính toán để khôi phục dữ liệu bị thiếu. Vị trí khối parity được luân phiên để để phân bổ đều thông tin parity trên các thiết bị lưu trữ.
- Yêu cầu: Tối thiểu 3 thiết bị lưu trữ.
- Lợi ích chính: Dự phòng dữ liệu với dung lượng khả dụng cao hơn.
- Cần lưu ý: Dù parity được phân tán nhưng chúng ta phải để dành dung lượng của 1 ổ đĩa để lưu trữ parity. Khi ở trạng thái suy giảm, RAID 5 có thể bị giảm hiệu năng nghiêm trọng.
Xác định các thiết bị thành phần
Đầu tiên, tìm tên định danh của các đĩa thô sẽ sử dụng:
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Kết quả
NAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk
sdb 100G disk
sdc 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
vdb 466K iso9660 disk
Bạn có 3 đĩa không có hệ thống tệp, mỗi đĩa dung lượng 100G. Các thiết bị này được gán định danh là /dev/sda, /dev/sdb và /dev/sdc trong phiên làm việc này và sẽ là các thành phần thô để xây dựng mảng.
Tạo mảng
Để tạo mảng RAID 5 với các thành phần này, truyền chúng vào lệnh mdadm --create. Bạn cần chỉ định tên thiết bị sẽ tạo, cấp độ RAID và số lượng thiết bị.
Trong ví dụ này, tên thiết bị là /dev/md0, gồm 3 đĩa:
sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc
Công cụ mdadm sẽ bắt đầu cấu hình mảng. Nó sử dụng quá trình recovery để xây dựng mảng nhằm tối ưu hiệu năng. Quá trình này có thể kéo dài, nhưng mảng vẫn sử dụng được trong khi đang xây dựng. Bạn có thể theo dõi tiến trình bằng cách kiểm tra tệp /proc/mdstat:
cat /proc/mdstat
Kết quả
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 sdc[3] sdb[1] sda[0]
209582080 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
[>....................] recovery = 0.9% (957244/104791040) finish=18.0min speed=95724K/sec
unused devices: <none>
Dòng đầu tiên cho thấy thiết bị /dev/md0 đã được tạo với cấu hình RAID 5, sử dụng các thiết bị /dev/sda, /dev/sdb và /dev/sdc.
Dòng thứ hai hiển thị tiến độ xây dựng mảng.
Cảnh báo: Do cách mdadm xây dựng mảng RAID 5, khi mảng vẫn đang được xây dựng thì số lượng thiết bị dự phòng trong mảng sẽ bị báo sai. Vì vậy, bạn phải chờ mảng xây dựng xong mới được cập nhật tệp /etc/mdadm/mdadm.conf. Nếu chỉnh sửa khi mảng chưa hoàn tất, hệ thống sẽ có thông tin sai và không thể tự động lắp ghép mảng đúng cách khi khởi động.
Bạn có thể tiếp tục theo dõi hướng dẫn trong khi quá trình xây dựng hoàn tất.
Tạo và gắn kết hệ thống tệp
Tiếp theo, tạo hệ thống tệp trên mảng:
sudo mkfs.ext4 -F /dev/md0
Tạo điểm gắn kết để liên kết hệ thống tệp mới:
sudo mkdir -p /mnt/md0
Gắn kết hệ thống tệp bằng lệnh:
sudo mount /dev/md0 /mnt/md0
Kiểm tra dung lượng mới đã sẵn sàng:
df -h -x devtmpfs -x tmpfs
Kết quả
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.4G 23G 6% /
/dev/vda15 105M 3.4M 102M 4% /boot/efi
/dev/md0 197G 60M 187G 1% /mnt/md0
Hệ thống tệp mới đã được gắn kết và có thể truy cập.
Lưu cấu hình mảng
Để đảm bảo mảng tự động được lắp ghép khi khởi động, bạn cần chỉnh sửa tệp /etc/mdadm/mdadm.conf.
Cảnh báo: Như đã đề cập, cần đảm bảo mảng đã xây dựng xong trước khi chỉnh sửa cấu hình. Nếu bạn chỉnh sửa khi mảng chưa hoàn tất, hệ thống sẽ không thể lắp ghép chính xác khi khởi động lại.
Bạn có thể theo dõi tiến độ bằng cách kiểm tra tệp /proc/mdstat:
cat /proc/mdstat
Kết quả
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 sdc[3] sdb[1] sda[0]
209584128 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
Kết quả này cho thấy quá trình rebuild đã hoàn tất. Bây giờ, bạn có thể quét mảng đang hoạt động và thêm vào tệp cấu hình:
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
Sau đó, cập nhật lại initramfs hoặc hệ thống tệp RAM khởi tạo để mảng sẵn sàng trong quá trình khởi động ban đầu:
sudo update-initramfs -u
Thêm tùy chọn gắn kết hệ thống tệp mới vào tệp /etc/fstab để tự động gắn kết khi khởi động:
echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab
Mảng RAID 5 của bạn giờ sẽ tự động được lắp ghép và gắn kết mỗi khi khởi động.
Bạn đã hoàn tất thiết lập RAID 5. Nếu muốn thử một loại RAID khác, thì trước khi tạo mảng mới, bạn hãy làm theo hướng dẫn reset ở phần trước.
Tạo mảng RAID 6
Mảng RAID 6 được triển khai bằng cách phân tán dữ liệu trên các thiết bị lưu trữ. Trong mỗi dải dữ liệu có 2 khối parity được tính toán. Nếu 1 hoặc 2 thiết bị gặp sự cố, các khối parity cùng các khối còn lại có thể được dùng để khôi phục dữ liệu bị thiếu. –
Các thiết bị chứa khối parity sẽ được luân chuyển để phân bổ đều thông tin parity. RAID 6 tương tự RAID 5 nhưng có khả năng xử lý khi 2 ổ đĩa hỏng cùng lúc.
- Yêu cầu: Tối thiểu 4 thiết bị lưu trữ.
- Lợi ích chính: Dự phòng kép với dung lượng khả dụng cao hơn.
- Cần lưu ý: Dù parity được phân tán nhưng chúng ta phải để dành dung lượng của 2 ổ đĩa để lưu trữ parity. Khi ở trạng thái suy giảm, RAID 6 có thể bị giảm hiệu năng nghiêm trọng.
Xác định các thiết bị thành phần
Đầu tiên, tìm tên định danh của các đĩa thô sẽ sử dụng:
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Kết quả
NAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk
sdb 100G disk
sdc 100G disk
sdd 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
vdb 466K iso9660 disk
Trong ví dụ này, có 4 đĩa không có hệ thống tệp, mỗi đĩa dung lượng 100G. Các thiết bị này được gán định danh là /dev/sda, /dev/sdb, /dev/sdc và /dev/sdd trong phiên làm việc này và sẽ là các thành phần thô để xây dựng mảng.
Tạo mảng
Để tạo mảng RAID 6 với các thành phần này, truyền chúng vào lệnh mdadm --create. Bạn cần chỉ định tên thiết bị sẽ tạo, cấp độ RAID và số lượng thiết bị.
Trong ví dụ này, tên thiết bị là /dev/md0 với 4 đĩa:
sudo mdadm --create --verbose /dev/md0 --level=6 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd
Công cụ mdadm sẽ bắt đầu cấu hình mảng. Nó sử dụng quá trình recovery để xây dựng mảng nhằm tối ưu hiệu năng. Quá trình này có thể kéo dài, nhưng mảng vẫn sử dụng được trong khi xây dựng. Bạn có thể theo dõi tiến trình bằng cách kiểm tra tệp /proc/mdstat:
cat /proc/mdstat
Kết quả
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid6 sdd[3] sdc[2] sdb[1] sda[0]
209584128 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
[>....................] resync = 0.6% (668572/104792064) finish=10.3min speed=167143K/sec
unused devices: <none>
Dòng đầu tiên cho thấy thiết bị /dev/md0 đã được tạo với cấu hình RAID 6, sử dụng các thiết bị /dev/sda, /dev/sdb, /dev/sdc và /dev/sdd.
Dòng thứ hai hiển thị tiến độ xây dựng mảng.
Bạn có thể tiếp tục hướng dẫn trong khi quá trình này hoàn tất.
Tạo và gắn kết hệ thống tệp
Tiếp theo, tạo hệ thống tệp trên mảng:
sudo mkfs.ext4 -F /dev/md0
Tạo điểm gắn kết để liên kết hệ thống tệp mới:
sudo mkdir -p /mnt/md0
Gắn kết hệ thống tệp bằng lệnh:
sudo mount /dev/md0 /mnt/md0
Kiểm tra dung lượng mới đã sẵn sàng:
df -h -x devtmpfs -x tmpfs
Kết quả
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.4G 23G 6% /
/dev/vda15 105M 3.4M 102M 4% /boot/efi
/dev/md0 197G 60M 187G 1% /mnt/md0
Hệ thống tệp mới đã được gắn kết và có thể truy cập.
Lưu cấu hình mảng
Để đảm bảo mảng tự động được lắp ghép khi khởi động, bạn cần chỉnh sửa tệp /etc/mdadm/mdadm.conf. Có thể tự động quét mảng đang hoạt động và thêm vào tệp này bằng lệnh:
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
Sau đó, cập nhật lại initramfs để mảng sẵn sàng trong quá trình khởi động ban đầu:
sudo update-initramfs -u
Thêm tùy chọn gắn kết hệ thống tệp mới vào tệp /etc/fstab để tự động gắn kết khi khởi động:
echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab
Mảng RAID 6 của bạn giờ sẽ tự động được lắp ghép và gắn kết mỗi khi khởi động.
Bạn đã hoàn tất thiết lập RAID 6. Nếu muốn thử một loại RAID khác, hãy tham khảo hướng dẫn reset ở phần trước trước khi tạo mảng mới.
Tạo mảng RAID 10 phức hợp
Mảng RAID 10 truyền thống thường được triển khai bằng cách tạo RAID 0 phân tán dữ liệu trên các tập hợp RAID 1. Kiểu mảng lồng nhau này mang lại cả khả năng dự phòng lẫn hiệu năng cao, nhưng tiêu tốn nhiều dung lượng đĩa.
Tiện ích mdadm cung cấp loại RAID 10 riêng với mức linh hoạt cao hơn, vẫn đảm bảo các đặc điểm và lợi ích như RAID 10 truyền thống nhưng không cần lồng các mảng.
Trong hướng dẫn này, bạn sẽ sử dụng RAID 10 của mdadm.
- Yêu cầu: Tối thiểu 3 thiết bị lưu trữ.
- Lợi ích chính: Hiệu năng và dự phòng.
- Cần lưu ý: Mức giảm dung lượng của mảng phụ thuộc vào số bản sao dữ liệu được lưu, và với RAID 10 kiểu
mdadm, số bản sao này có thể cấu hình được.
Mặc định, mỗi khối dữ liệu sẽ được lưu thành hai bản sao theo cách bố trí near. Các kiểu bố trí có thể áp dụng để xác định cách lưu từng khối dữ liệu bao gồm:
- near: Cách mặc định. Các bản sao của mỗi khối dữ liệu được ghi liên tiếp trong quá trình phân tán, nghĩa là các bản sao sẽ được ghi gần cùng vị trí trên nhiều đĩa.
- far: Bản sao đầu tiên và các bản sao tiếp theo sẽ được ghi vào các vị trí khác nhau trên thiết bị lưu trữ trong mảng.Ví dụ, khối dữ liệu đầu tiên có thể được ghi gần đầu ổ đĩa, trong khi khối thứ hai được ghi ở giữa một ổ khác. Cách bố trí này có thể cải thiện hiệu năng đọc trên ổ cứng truyền thống, nhưng phải đánh đổi bằng hiệu năng ghi.
- offset: Mỗi dải dữ liệu được sao chép và dịch chuyển sang một ổ đĩa khác. Điều này có nghĩa là các bản sao được đặt lệch nhau, nhưng vẫn nằm gần nhau trên đĩa. Cách bố trí này giúp hạn chế việc đầu đọc phải di chuyển quá nhiều trong một số khối lượng công việc.
Bạn có thể tìm hiểu thêm về các layout này trong phần RAID10 của man page:
man 4 md
Bạn cũng có thể xem man page này trực tuyến.
Xác định các thiết bị thành phần
Đầu tiên, tìm tên định danh của các đĩa thô sẽ sử dụng:
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Kết quả
NAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk
sdb 100G disk
sdc 100G disk
sdd 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
vdb 466K iso9660 disk
Trong ví dụ này, có 4 đĩa không có hệ thống tệp, mỗi đĩa dung lượng 100G. Các thiết bị này được gán định danh /dev/sda, /dev/sdb, /dev/sdc và /dev/sdd trong phiên làm việc này và sẽ là các thành phần thô để xây dựng mảng.
Tạo mảng
Để tạo mảng RAID 10 với các thành phần này, truyền chúng vào lệnh mdadm --create. Bạn cần chỉ định tên thiết bị, cấp độ RAID và số lượng thiết bị.
Trong ví dụ này, thiết bị sẽ là /dev/md0, gồm 4 đĩa:
Thiết lập 2 bản sao với layout mặc định near bằng cách không chỉ định tùy chọn layout và số bản sao:
sudo mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd
Nếu muốn dùng layout khác hoặc thay đổi số bản sao, bạn phải dùng tùy chọn --layout=, kèm theo kiểu layout và số bản sao. Các ký hiệu gồm n – near, f – far, và o – offset. Số bản sao sẽ được ghi ngay sau đó.
Ví dụ: để tạo mảng có 3 bản sao với layout offset, lệnh sẽ như sau:
sudo mdadm --create --verbose /dev/md0 --level=10 --layout=o3 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd
Công cụ mdadm sẽ bắt đầu cấu hình mảng. Nó sử dụng quá trình recovery để xây dựng mảng nhằm tối ưu hiệu năng. Quá trình này có thể kéo dài, nhưng mảng vẫn sử dụng được trong quá trình xây dựng. Bạn có thể theo dõi tiến trình bằng cách kiểm tra tệp /proc/mdstat:
cat /proc/mdstat
Kết quả
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [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]
[===>.................] resync = 18.1% (37959424/209584128) finish=13.8min speed=206120K/sec
unused devices: <none>
Dòng đầu tiên cho thấy thiết bị /dev/md0 đã được tạo với cấu hình RAID 10, sử dụng các thiết bị /dev/sda, /dev/sdb, /dev/sdc và /dev/sdd.
Dòng thứ hai hiển thị layout dùng trong ví dụ (2 bản sao theo kiểu near).
Dòng thứ ba cho thấy tiến độ xây dựng mảng.
Bạn có thể tiếp tục hướng dẫn trong khi quá trình này hoàn tất.
Tạo và gắn kết hệ thống tệp
Tiếp theo, tạo hệ thống tệp trên mảng:
sudo mkfs.ext4 -F /dev/md0
Tạo điểm gắn kết để liên kết hệ thống tệp mới:
sudo mkdir -p /mnt/md0
Gắn kết hệ thống tệp:
sudo mount /dev/md0 /mnt/md0
Kiểm tra dung lượng mới đã sẵn sàng:
df -h -x devtmpfs -x tmpfs
Kết quả
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.4G 23G 6% /
/dev/vda15 105M 3.4M 102M 4% /boot/efi
/dev/md0 197G 60M 187G 1% /mnt/md0
Hệ thống tệp mới đã được gắn kết và có thể truy cập.
Lưu cấu hình mảng
Để đảm bảo mảng tự động được lắp ghép khi khởi động, bạn cần chỉnh sửa tệp /etc/mdadm/mdadm.conf. Có thể tự động quét mảng đang hoạt động và thêm vào tệp này bằng lệnh:
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
Sau đó, cập nhật lại initramfs để mảng sẵn sàng trong quá trình khởi động ban đầu:
sudo update-initramfs -u
Thêm tùy chọn gắn kết hệ thống tệp mới vào tệp /etc/fstab để tự động gắn kết khi khởi động:
echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab
Mảng RAID 10 của bạn giờ sẽ tự động được lắp ghép và gắn kết mỗi khi khởi động.
Kết luận
Trong hướng dẫn này, bạn đã học cách tạo nhiều loại mảng khác nhau bằng tiện ích RAID phần mềm mdadm của Linux. Các mảng RAID mang lại khả năng dự phòng và cải thiện hiệu năng rõ rệt so với việc sử dụng nhiều ổ đĩa riêng lẻ.
Khi đã chọn loại mảng phù hợp với môi trường của mình và tạo thiết bị, hướng dẫn cách quản lý mảng RAID với mdadm trên Ubuntu sẽ là bước tiếp theo để bạn thực hành quản lý hằng ngày.