← Về danh sách
Hạ tầng & Đám mây
#RAID#스트라이핑#패리티#미러링#소거코딩
Cập nhật lần cuối · 2026-09-03

RAID (Redundant Array of Independent Disks)

1. Tổng quan

A. Định nghĩa

Công nghệ lưu trữ gộp nhiều đĩa vật lý thành một thiết bị lưu trữ logic, bố trí dữ liệu theo phương thức phân tán (Striping)·nhân bản (Mirroring)·chẵn lẻ (Parity) để đồng thời đạt được nâng cao hiệu năng và khả năng chịu lỗi (Fault Tolerance).

Bản chất của RAID là "gộp nhiều đĩa rẻ tiền, độ tin cậy thấp bằng các kỹ thuật bố trí phần mềm·phần cứng, khiến chúng trông như một đĩa duy nhất nhanh và ổn định". Ban đầu chữ "I" có nghĩa là Inexpensive (giá rẻ), nhưng ngày nay được dùng với nghĩa Independent (độc lập) bao hàm cả đĩa cấp doanh nghiệp. Ý tưởng cốt lõi có hai trục là tính song song thông qua phân tán và năng lực khôi phục thông qua dư thừa (redundancy), và các mức RAID được định nghĩa bằng khác biệt trong cách kết hợp hai trục này.

B. Bối cảnh ra đời và sự cần thiết

Một đĩa đơn lẻ có giới hạn cả về hiệu năng (độ trễ quay·tìm kiếm) lẫn độ tin cậy (MTBF). Đặc biệt, khi dung lượng và số lượng đĩa tăng lên, xác suất hỏng của toàn bộ mảng tăng nhanh — dù tỷ lệ hỏng hằng năm (AFR) của một đĩa chỉ là 1%, gộp 100 đĩa lại thì các sự kiện hỏng hóc xét ở góc độ mảng xảy ra thường xuyên hơn nhiều. Do đó, trên tiền đề từng đĩa sớm muộn chắc chắn sẽ hỏng, phát sinh yêu cầu phải tiếp tục dịch vụ mà không mất dữ liệu dù một hai đĩa bị hỏng. Đồng thời, để nâng thông lượng (throughput) của dữ liệu dung lượng lớn, phải phân tán I/O song song trên nhiều đĩa. RAID ra đời để giải quyết một cách kinh tế yêu cầu "đồng thời hiệu năng và tính sẵn sàng" này bằng tổ hợp các đĩa giá rẻ.

2. Nguyên lý cốt lõi và phương thức cấu hình

RAID có thể được hiểu như tổ hợp của ba kỹ thuật bố trí cơ bản. Striping chia nhỏ một dữ liệu trên nhiều đĩa (theo đơn vị stripe) để đọc ghi song song, nâng hiệu năng nhưng tự thân không có dư thừa. Mirroring nhân bản cùng một dữ liệu thành hai bản trở lên, một bên hỏng thì lập tức khôi phục từ bên kia nhưng hiệu suất dung lượng giảm còn một nửa. Parity lưu thông tin sửa lỗi tạo bằng phép XOR, khôi phục được việc mất một (hoặc hai) đĩa bất kỳ với chi phí phụ trội dung lượng nhỏ.

flowchart TB
  R["Kỹ thuật bố trí RAID"] --> S["Striping<br/>hiệu năng↑, không dư thừa"]
  R --> M["Mirroring<br/>tính sẵn sàng↑, hiệu suất dung lượng 50%"]
  R --> P["Parity (XOR)<br/>khôi phục tiết kiệm không gian"]
  S --> L0["RAID 0"]
  M --> L1["RAID 1"]
  P --> L5["RAID 5 (chẵn lẻ đơn)"]
  P --> L6["RAID 6 (chẵn lẻ kép)"]
  S --> L10["RAID 10 (kết hợp 0+1)"]
  M --> L10

Nguyên lý của parity rất đơn giản. Với các khối dữ liệu D1, D2, D3, nếu lưu sẵn parity P = D1 ⊕ D2 ⊕ D3 (XOR), thì dù một khối bất kỳ (ví dụ: D2) bị mất vẫn khôi phục được bằng D2 = D1 ⊕ D3 ⊕ P. RAID 6 dùng hai parity độc lập khác nhau (P, Q — Q dựa trên phép toán trường Galois) để chịu được đến hai đĩa hỏng đồng thời. Nhờ nguyên lý này, RAID 5 chỉ dùng dung lượng của 1 đĩa trong N đĩa, RAID 6 chỉ dùng dung lượng của 2 đĩa làm dư thừa mà vẫn bảo đảm năng lực khôi phục.

3. So sánh các mức RAID chính

Mỗi mức chọn một điểm khác nhau trên sự đánh đổi giữa hiệu năng·tính sẵn sàng·hiệu suất dung lượng. RAID 0 chỉ striping không dư thừa nên hiệu năng cao nhất·dung lượng tối đa, nhưng chỉ cần một đĩa hỏng là toàn bộ dữ liệu bị mất — tức là độ tin cậy còn tệ hơn cả một đĩa đơn. Ngược lại, RAID 1 có tính sẵn sàng vượt trội nhờ mirroring và hiệu năng đọc tốt nhưng dung lượng khả dụng chỉ một nửa. RAID 5 là điểm cân bằng giữa hiệu suất dung lượng và tính sẵn sàng nên được dùng như tiêu chuẩn trong thời gian dài, còn RAID 6 thực tế trở thành bắt buộc khi rủi ro hỏng thứ hai trong quá trình tái tạo (rebuild) tăng lên ở thời đại đĩa dung lượng lớn.

Mức Số đĩa tối thiểu Phương thức dư thừa Chịu lỗi Dung lượng khả dụng Đặc điểm
RAID 0 2 Không (striping) 0 đĩa 100% Hiệu năng cao nhất·dung lượng tối đa, không bảo vệ
RAID 1 2 Mirroring 1 đĩa (mỗi cặp) 50% Đọc vượt trội·khôi phục đơn giản
RAID 5 3 Chẵn lẻ đơn phân tán 1 đĩa (N-1)/N Dạng cân bằng, gánh nặng parity khi ghi
RAID 6 4 Chẵn lẻ kép phân tán 2 đĩa (N-2)/N Dung lượng lớn·an toàn khi tái tạo
RAID 10 4 Mirror+stripe 1 đĩa mỗi nhóm 50% Hiệu năng cao·sẵn sàng cao, ưa dùng cho DB

Write Penalty (hình phạt ghi) và hàm ý hiệu năng

Điểm thực tiễn quan trọng nhất của RAID dựa trên parity là write penalty. Trong RAID 5, để cập nhật một khối bất kỳ cần 4 lần I/O: (1) đọc dữ liệu cũ, (2) đọc parity cũ, (3) ghi dữ liệu mới, (4) ghi parity mới. RAID 6 có hai parity nên tăng lên 6 lần I/O. Ngược lại, RAID 1/10 chỉ cần 2 lần ghi dữ liệu lên hai bên. Vì vậy, với cơ sở dữ liệu OLTP có nhiều ghi ngẫu nhiên, RAID 10 được khuyến nghị hơn RAID 5/6. Trong thực tế, hình phạt này được giảm nhẹ bằng bộ nhớ đệm ghi (NVRAM) của bộ điều khiển và ghi toàn stripe (full-stripe write).

4. Luồng hoạt động: Bình thường → Hỏng → Tái tạo

sequenceDiagram
  participant App as Ứng dụng/OS
  participant Ctrl as Bộ điều khiển RAID
  participant Disks as Mảng đĩa
  App->>Ctrl: Yêu cầu đọc/ghi tới volume logic
  Ctrl->>Disks: I/O phân tán song song theo đơn vị stripe
  Note over Disks: Xảy ra hỏng 1 đĩa
  Ctrl->>Disks: Khôi phục thời gian thực bằng đĩa còn sống+parity (chế độ suy giảm hiệu năng)
  Ctrl->>Disks: Bắt đầu tái tạo (rebuild) dữ liệu lên hot spare
  Disks-->>Ctrl: Hoàn tất tái tạo → quay lại chế độ bình thường

Ở trạng thái bình thường, bộ điều khiển chia yêu cầu theo đơn vị stripe để xử lý song song trên nhiều đĩa. Khi một đĩa hỏng, mảng chuyển sang chế độ suy giảm (degraded), tính toán thời gian thực các khối bị mất từ các đĩa còn lại và parity để cung cấp — dữ liệu vẫn còn nhưng mỗi lần truy cập đều kèm phép khôi phục nên chậm hơn. Lúc này, quá trình tái tạo tự động bắt đầu lên đĩa hot spare được chuẩn bị sẵn. Vấn đề là việc tái tạo đĩa dung lượng lớn (vài chục TB) mất vài giờ~vài ngày, và nếu trong thời gian đó một đĩa khác hỏng thêm thì RAID 5 mất hoàn toàn dữ liệu. Rủi ro "cửa sổ (window) tái tạo" này đã sinh ra nhu cầu về RAID 6 và RAID phân tán sẽ trình bày sau.

5. Chuyên sâu: Giới hạn và xu hướng mới

RAID truyền thống đã vấp phải giới hạn trong môi trường dung lượng lớn·quy mô lớn. Thứ nhất, thời gian tái tạo kéo dài tỷ lệ với dung lượng đĩa nên rủi ro hỏng kép tăng. Thứ hai, tải tái tạo tập trung vào một đĩa dự phòng cụ thể nên trở thành điểm nghẽn. Các xu hướng giải quyết như sau.

  • RAID phân tán (Declustered RAID): Rải không gian parity·dự phòng trên toàn bộ đĩa để khi tái tạo mọi đĩa cùng tham gia song song. Rút ngắn đáng kể thời gian tái tạo (vài lần~vài chục lần) để thu hẹp cửa sổ rủi ro. Được áp dụng trong NetApp RAID-DP, IBM, v.v.
  • Mã xóa (Erasure Coding): Dùng mã toán học như Reed-Solomon để phân tán dữ liệu thành n mảnh+k parity, khôi phục được việc mất k mảnh bất kỳ. Có thể xem là tổng quát hóa của RAID 6, được dùng rộng rãi cho khả năng chịu lỗi theo đơn vị địa lý (geo) trong lưu trữ đối tượng·hệ thống tệp phân tán (ví dụ: Ceph, HDFS EC).
  • Dạng tích hợp hệ thống tệp (ZFS RAID-Z, Btrfs): Tích hợp trình quản lý volume·hệ thống tệp·RAID để loại bỏ tận gốc "lỗ ghi (write hole)" (vấn đề mất điện khi parity và dữ liệu chưa nhất quán), và bảo đảm tính toàn vẹn bằng checksum theo đơn vị khối.
  • RAID phần cứng vs phần mềm: Bộ điều khiển chuyên dụng (kèm bộ nhớ đệm có pin dự phòng) có lợi về hiệu năng·giảm tải CPU nhưng có rủi ro phụ thuộc nhà cung cấp·điểm hỏng đơn lẻ ở bộ điều khiển, còn RAID phần mềm (mdadm, Storage Spaces) linh hoạt·chi phí thấp nhưng sử dụng CPU của máy chủ.

6. Những điểm cần xem xét và hàm ý

  • RAID ≠ sao lưu: RAID chỉ là biện pháp tính sẵn sàng trước hỏng hóc vật lý của đĩa, không bảo vệ được dữ liệu khỏi lỗi người dùng·ransomware·hư hỏng logic·thảm họa tại địa điểm. Bắt buộc phải triển khai song song với sao lưu·snapshot·nhân bản từ xa (DR) riêng. Điều này phải được thiết kế cùng nguyên tắc sao lưu 3-2-1.
  • Thiết kế phù hợp tải công việc: Tải ghi ngẫu nhiên (OLTP DB) có lợi với RAID 10 không có write penalty, còn đọc tuần tự·lưu trữ lâu dài·dung lượng lớn có lợi với RAID 6/EC có hiệu suất dung lượng tốt. Lựa chọn sự đánh đổi bốn chiều hiệu năng·dung lượng·chi phí·tính sẵn sàng phù hợp với đặc tính tải công việc là cốt lõi của phán đoán ở tầm Kỹ sư chuyên nghiệp (Professional Engineer).
  • Quản lý rủi ro tái tạo: Trong xu hướng đĩa ngày càng dung lượng lớn, RAID 5 có rủi ro hỏng kép·URE (lỗi đọc không thể khôi phục) cao trong khi tái tạo nên cần tránh, và phải quản lý cửa sổ rủi ro bằng RAID 6·RAID phân tán·bố trí nhiều hot spare.
  • Mở rộng sang lưu trữ định nghĩa bằng phần mềm (SDS)·đám mây: RAID truyền thống lấy bộ điều khiển làm trung tâm đang tiến hóa thành lưu trữ phân tán (SDS·lưu trữ đối tượng) kết hợp nhân bản theo đơn vị nút·địa điểm với mã xóa, và ranh giới của khả năng chịu lỗi đang mở rộng từ đĩa sang nút·region. Thiết kế lưu trữ trong tương lai sẽ dịch chuyển theo hướng ưu tiên xem xét kiến trúc dựa trên dư thừa phân tán·mã xóa hơn là RAID của một mảng đơn lẻ.

Tóm tắt một câu: RAID là công nghệ gộp nhiều đĩa bằng tổ hợp striping·mirroring·parity để đồng thời đạt hiệu năng và khả năng chịu lỗi, cần lựa chọn mức có xét đến đánh đổi theo tải công việc (đặc biệt là write penalty·rủi ro tái tạo) và bắt buộc phải triển khai song song với sao lưu.