Làm Chủ Software RAID trên Linux với mdadm: Kinh Nghiệm Thực Chiến Từ Lab Đến Production

Linux tutorial - IT technology blog
Linux tutorial - IT technology blog

Tại sao lại là Software RAID thay vì Hardware RAID?

Ngày đầu làm Sysadmin, mình từng cãi nhau nảy lửa với sếp về việc chọn card RAID rời hay dùng RAID phần mềm. Lúc đó, mình tin rằng phần cứng chuyên dụng luôn áp đảo. Tuy nhiên, sau một lần “hú hồn” vì card RAID bị cháy và không có linh kiện thay thế ngay lập tức, mình đã thay đổi hoàn toàn quan điểm.

Hardware RAID giúp giảm tải CPU nhưng lại khiến bạn rơi vào cái bẫy “Vendor lock-in”. Nếu card hỏng, bạn buộc phải tìm đúng model đó để cứu dữ liệu. Với mdadm trên Linux, bạn chỉ cần cắm ổ cứng sang bất kỳ máy Linux nào khác là có thể truy cập dữ liệu ngay. Thực tế, với các CPU hiện đại, việc tính toán parity cho RAID 5/6 chỉ chiếm dưới 3-5% tài nguyên hệ thống.

Bảng so sánh nhanh các lựa chọn RAID phổ biến

  • RAID 1 (Mirroring): Cần tối thiểu 2 ổ. Dữ liệu được sao chép y hệt nhau. Cho phép hỏng 1 ổ. Đây là lựa chọn số 1 cho phân vùng cài OS hoặc Database quan trọng.
  • RAID 5 (Striping with Parity): Cần tối thiểu 3 ổ. Cho phép hỏng 1 ổ. Dung lượng khả dụng là (n-1). Đây là sự cân bằng giữa tốc độ đọc và chi phí lưu trữ.
  • RAID 6 (Double Parity): Cần tối thiểu 4 ổ. Cho phép hỏng đồng thời 2 ổ. Cực kỳ an toàn cho các Storage Server lưu trữ hàng chục TB dữ liệu.

Chuẩn bị trước khi triển khai

Trước khi gõ lệnh, bạn cần xác định chính xác các ổ đĩa đang có. Đừng bao giờ nhầm lẫn tên ổ đĩa nếu không muốn xóa sạch dữ liệu của hệ thống đang chạy.

lsblk

Giả sử mình có hai ổ đĩa trống là /dev/sdb/dev/sdc (mỗi ổ 20GB). Mục tiêu của chúng ta là ghép chúng thành một mảng RAID 1 thống nhất.

Cảnh báo: Mọi dữ liệu trên ổ đĩa đích sẽ bị xóa sạch. Hãy đảm bảo bạn đã backup những gì quan trọng trước khi nhấn Enter.

Triển khai tạo mảng RAID 1 với mdadm

Đầu tiên, hãy cài đặt công cụ quản lý nếu server của bạn chưa có sẵn:

# Ubuntu/Debian
sudo apt update && sudo apt install mdadm -y

# CentOS/AlmaLinux/RHEL
sudo yum install mdadm -y

Bước 1: Khởi tạo mảng RAID

Câu lệnh sau sẽ tạo thiết bị /dev/md0 từ hai ổ đĩa vật lý:

sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

Thông số cần lưu ý:

  • --level=1: Xác định kiểu RAID 1.
  • --raid-devices=2: Số lượng ổ tham gia vào mảng.

Bước 2: Định dạng File System và Mount

Sau khi tạo xong, mảng RAID sẽ xuất hiện như một ổ đĩa đơn. Bạn cần định dạng nó để bắt đầu sử dụng:

sudo mkfs.ext4 /dev/md0
sudo mkdir -p /mnt/raid1
sudo mount /dev/md0 /mnt/raid1

Bước 3: Cấu hình tự động nhận diện (Cực kỳ quan trọng)

Nhiều bạn quên bước này khiến RAID bị đổi tên thành /dev/md127 hoặc mất mount sau khi reboot. Hãy lưu cấu hình vào file hệ thống để đảm bảo tính ổn định.

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u  # Chỉ áp dụng cho dòng Ubuntu/Debian

Giám sát sức khỏe mảng RAID

Vận hành hệ thống không được phép lười biếng. Đừng đợi đến khi server báo lỗi mới kiểm tra. Trong thực tế, mình luôn theo dõi file /proc/mdstat để nắm bắt tình hình sức khỏe của ổ cứng.

cat /proc/mdstat

Ký hiệu [UU] nghĩa là mọi thứ đang hoàn hảo. Nếu bạn thấy [_U] hoặc [U_], đó là tín hiệu báo động một ổ đĩa đã ngưng hoạt động.

Kịch bản phục hồi khi ổ đĩa bị hỏng

Khi ổ /dev/sdb gặp sự cố vật lý, quy trình thay thế an toàn sẽ gồm 3 bước dưới đây.

1. Loại bỏ ổ lỗi khỏi mảng

Bạn cần thông báo cho hệ thống biết ổ đĩa đó đã hỏng để gỡ bỏ nó ra khỏi mảng logic:

sudo mdadm /dev/md0 --fail /dev/sdb
sudo mdadm /dev/md0 --remove /dev/sdb

2. Thay ổ mới và tái thiết lập

Sau khi cắm ổ mới (giả sử vẫn là /dev/sdb), bạn chỉ cần add nó vào lại mảng cũ:

sudo mdadm /dev/md0 --add /dev/sdb

3. Theo dõi quá trình Rebuild

Linux sẽ tự động đồng bộ dữ liệu. Với ổ HDD dung lượng lớn, quá trình này có thể kéo dài vài tiếng đồng hồ.

watch -n 1 cat /proc/mdstat

Lưu ý: Trong lúc rebuild, hãy hạn chế các tác vụ I/O nặng như backup hay xuất file lớn. Nếu ổ còn lại duy nhất bị quá tải và hỏng nốt, toàn bộ dữ liệu sẽ biến mất.

Mở rộng cho RAID 5 và RAID 6

Việc quản lý RAID 5 hay 6 cũng tương tự, chỉ khác ở bước khởi tạo ban đầu. Ví dụ với RAID 5 sử dụng 3 ổ đĩa:

sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd

RAID 5 cho tốc độ đọc rất nhanh nhưng tốc độ ghi sẽ chậm hơn do phải tính toán parity. Nếu bạn cần bảo vệ dữ liệu ở mức tối đa, RAID 6 là lựa chọn sáng suốt vì nó cho phép hỏng tới 2 ổ cùng lúc.

Tổng kết kinh nghiệm vận hành

Sau 6 tháng chạy mdadm trên môi trường production, mình thấy nó cực kỳ tin cậy. Vấn đề không nằm ở việc công nghệ nào đắt tiền hơn, mà là cách bạn làm chủ công cụ đó.

Lời khuyên cuối cùng: Hãy thiết lập cảnh báo Email ngay khi có sự cố và thường xuyên kiểm tra thông số SMART của ổ cứng. RAID giúp hệ thống hoạt động liên tục khi hỏng phần cứng, nhưng nó không phải là giải pháp thay thế Backup. Đừng bao giờ chủ quan với dữ liệu của mình!

Share: