RAID¶
RAID (Redundant Array of Independent Disks) gộp nhiều ổ đĩa thành một khối lưu trữ logic để tăng hiệu năng, độ tin cậy hoặc cả hai.
Bản khung
Trang này mới là khung, sẽ bổ sung nội dung. Nền tảng về ổ đĩa nằm ở Storage: HDD và SSD.
1. Ý tưởng chính¶
- Striping: chia dữ liệu thành các stripe rải đều lên nhiều ổ, tăng băng thông.
- Mirroring: ghi cùng dữ liệu lên nhiều ổ, chịu được lỗi ổ.
- Parity: lưu thông tin chẵn lẻ (XOR) để dựng lại dữ liệu khi mất một ổ.
2. Các mức RAID¶
Mỗi mức RAID là một cách kết hợp ba kỹ thuật trên. Hình dưới cho thấy các khối dữ liệu (A1, A2, ...) và khối parity (P, Q, màu đỏ nhạt) nằm trên từng ổ.
| Mức | Kỹ thuật | Số ổ tối thiểu | Chịu lỗi | Dung lượng khả dụng |
|---|---|---|---|---|
| RAID 0 | Striping | 2 | Không | N |
| RAID 1 | Mirroring | 2 | N-1 ổ | 1 ổ |
| RAID 5 | Striping + parity | 3 | 1 ổ | N-1 |
| RAID 6 | Striping + 2 parity | 4 | 2 ổ | N-2 |
| RAID 10 | Mirror rồi stripe | 4 | 1 ổ mỗi cặp mirror | N/2 |
3. Vấn đề cần lưu ý¶
- Write penalty của RAID 5/6 (read-modify-write).
- Write hole và cách xử lý (journal, bitmap).
- Rebuild: thời gian dựng lại và rủi ro lỗi ổ thứ hai.
- RAID không thay thế sao lưu.
4. Hardware RAID và software RAID¶
Ba cách triển khai RAID khác nhau ở chỗ ai thực hiện việc chia stripe, tính parity và xử lý lỗi ổ.
Hình trên chỉ ra tầng nào đảm nhiệm RAID (khối đỏ) và việc đó chạy trên CPU nào.
4.1. Hardware RAID¶
Một RAID controller chuyên dụng (card PCIe hoặc chip trên mainboard server) có CPU và RAM riêng để làm toàn bộ công việc RAID. Hệ điều hành chỉ thấy một ổ logic (virtual disk), không biết phía sau là bao nhiêu ổ vật lý.
- Tính parity trên controller: CPU của host không phải tính XOR hay Reed-Solomon cho RAID 5/6.
- Cache có pin hoặc supercapacitor (BBU/CacheVault): controller báo "đã ghi xong" ngay khi dữ liệu vào cache. Đây là write-back cache, giảm đáng kể write penalty của RAID 5/6. Nếu mất điện, pin hoặc tụ giữ dữ liệu trong cache cho tới khi ghi xong xuống ổ, nhờ đó giảm nguy cơ write hole.
- Boot dễ: BIOS/UEFI thấy ngay ổ logic, không cần driver RAID riêng của OS lúc khởi động.
- Hot-swap, báo lỗi: thay ổ nóng, đèn LED báo ổ hỏng, rebuild chạy nền trên controller.
Nhược điểm:
- Phụ thuộc controller: array thường chỉ đọc được bằng controller cùng hãng (đôi khi cùng dòng). Controller hỏng phải tìm controller tương thích để lấy lại dữ liệu.
- Giá cao và cần quản lý firmware, công cụ riêng của hãng (
storcli,perccli,ssacli). - Controller trở thành điểm hỏng đơn, và là lớp bạn phải tin tưởng, nhất là với cache.
4.2. Software RAID¶
Chính OS làm RAID bằng CPU của host: stripe, mirror và tính parity nằm trong kernel. Các ổ vật lý nối thẳng vào HBA hoặc cổng SATA/NVMe thông thường.
- Linux:
md(quản lý bằngmdadm) vàdm-raidtrên device-mapper. Chi tiết ở mục 5. - Khác: ZFS (RAID-Z), Btrfs RAID, Windows Storage Spaces, macOS Software RAID.
Ưu điểm:
- Không tốn tiền controller, không bị khoá vào một hãng. Array đọc được trên bất kỳ máy Linux nào, chỉ cần gắn ổ sang máy khác.
- Linh hoạt: tạo RAID trên partition, trộn ổ khác dung lượng, đổi mức RAID, mở rộng array khi đang chạy.
- Với CPU hiện đại, tính XOR và parity gần như không đáng kể, hiệu năng thường ngang hoặc tốt hơn hardware RAID tầm trung, nhất là với SSD/NVMe.
Nhược điểm:
- Tốn CPU và băng thông bộ nhớ của host, rõ nhất ở RAID 6 và khi rebuild.
- Không có cache bền vững như BBU. Muốn tránh write hole phải dùng journal hoặc bitmap (xem mục 3).
- Bootloader phải hỗ trợ đọc từ array. Với GRUB, thường đặt
/boottrên RAID 1 hoặc một phân vùng riêng (xem GRUB).
4.3. Firmware RAID (fake RAID)¶
Chipset (Intel RST/VROC, AMD RAID...) hoặc card RAID rẻ cung cấp cấu hình RAID trong BIOS/UEFI, nhưng phần tính toán vẫn do driver trong OS làm, tức về bản chất là software RAID. Metadata theo định dạng của hãng (ví dụ Intel IMSM).
- Ưu điểm: cho phép boot từ array và dùng chung metadata với Windows khi dual-boot.
- Nhược điểm: không có cache phần cứng và bị gắn với chipset như hardware RAID, nhưng lại tốn CPU như software RAID.
- Trên Linux,
mdadmđọc được nhiều định dạng này (IMSM, DDF), nên array dùng được mà không cần driver riêng.
4.4. So sánh¶
| Tiêu chí | Hardware RAID | Firmware RAID | Software RAID |
|---|---|---|---|
| Ai tính RAID | Controller | Driver của OS (CPU host) | Kernel (CPU host) |
| Chi phí | Cao (card + BBU) | Thấp (có sẵn trên chipset) | Không có thêm |
| Cache bền vững | Có (BBU/supercap) | Không | Không (dùng journal) |
| Phụ thuộc phần cứng | Cao, cần controller cùng hãng | Cao, cần chipset cùng hãng | Thấp, đổi máy vẫn đọc được |
| Tải CPU host | Thấp | Cao hơn | Cao hơn |
| Công cụ quản lý | Của hãng (storcli...) |
BIOS + mdadm |
mdadm, dm-raid, ZFS... |
| Dùng điển hình | Server doanh nghiệp | Desktop, workstation | Server Linux, NAS, hệ thống nhúng |
Chọn cách nào?
- Server cần write-back cache và quản lý tập trung bằng công cụ của hãng: hardware RAID.
- Muốn linh hoạt, không bị khoá phần cứng, hoặc dùng SSD/NVMe: software RAID. Với NVMe, phần lớn hệ thống dùng software RAID, vì hardware RAID dễ thành nút cổ chai khi băng thông ổ rất lớn.
- Fake RAID chỉ nên dùng khi cần dual-boot với Windows hoặc cần boot từ array mà BIOS yêu cầu.
- Trong hệ thống nhúng, RAID thường là software RAID bằng
md, hoặc NBD kết hợp RAID (xem Network Block Device).
5. RAID trên Linux¶
TODO: md/mdadm, dm-raid, ví dụ tạo và theo dõi array (/proc/mdstat). RAID kết hợp NBD xem Network Block Device.