Skip to content

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 ổ.

Striping, mirroring và parity

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 ổ.

Bố cục khối dữ liệu của RAID 0, 1, 5, 6, 10

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 ổ.

Hardware, firmware và software RAID

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ằng mdadm) và dm-raid trê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 /boot trê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.