RAID

**RAID** *(Redundant Arrays of Inexpensive Disks hoặc Redundant Arrays of Independent Disks)* là hình thức ghép nhiều ổ đĩa cứng vật lý thành một hệ thống ổ đĩa cứng có chức năng gia tăng tốc độ đọc/ghi dữ liệu hoặc nhằm tăng thêm sự an toàn của dữ liệu chứa trên hệ thống đĩa hoặc kết hợp cả hai yếu tố trên.

## Lịch sử phát triển
Lần đầu tiên RAID được phát triển năm 1987 tại trường Đại học California tại Berkeley (Hoa Kỳ) với những đặc điểm chỉ ghép các phần đĩa cứng nhỏ hơn thông qua phần mềm để tạo ra một hệ thống đĩa dung lượng lớn hơn thay thế cho các ổ cứng dung lượng lớn giá đắt thời bấy giờ.

Mặc dù hiện nay không tồn tại nữa, nhưng Hội đồng tư vấn phát triển RAID  *(RAID Advisory Board: Viết tắt là RAB)* đã ra thành lập tháng 7 năm 1992 để định hướng, lập ra các tiêu chuẩn, định dạng cho RAID. RAB đã phân ra các loại cấp độ RAID *(level)*, các tiêu chuẩn phần cứng sử dụng RAID. RAB đã phân ra bảy loại cấp độ RAID từ cấp độ 0 đến cấp độ 6.

## Phân loại
Theo RAB thì RAID được chia thành 7 cấp độ (level 0, 1, 2, 3, 4, 5, 6), mỗi cấp độ có các tính năng riêng, hầu hết chúng được xây dựng từ hai cấp độ cơ bản là RAID 0 và RAID 1.

### RAID 0
RAID 0 cần ít nhất 2 ổ đĩa (có thể sử dụng 1 ổ đĩa). Tổng quát ta có n đĩa (n >= 2) và các đĩa là cùng loại.

Dữ liệu sẽ được chia ra nhiều phần bằng nhau. Ví dụ ta dùng 02 ổ cứng 80GB thì hệ thống đĩa của chúng ta là 160GB.

* **Ưu điểm**: Tăng tốc độ đọc / ghi đĩa: mỗi đĩa chỉ cần phải đọc / ghi \dfrac{1}{n} lượng dữ liệu được yêu cầu. Lý thuyết thì tốc độ sẽ tăng n lần.
* **Nhược điểm**: Tính an toàn thấp. Nếu một đĩa bị hư thì dữ liệu trên tất cả các đĩa còn lại sẽ không còn sử dụng được. Xác suất để mất dữ liệu sẽ tăng n lần so với dùng ổ đĩa đơn.

### RAID 1
Đây là dạng RAID cơ bản nhất có khả năng đảm bảo an toàn dữ liệu. Cũng giống như RAID 0, RAID 1 đòi hỏi ít nhất hai đĩa cứng để làm việc. Dữ liệu được ghi vào 2 ổ giống hệt nhau (Mirroring).

Hệ thống chạy RAID 1 yêu cầu chỉ còn cần 1 ổ đĩa toàn vẹn dữ liệu thì dữ liệu sẽ không bị ảnh hưởng. Người dùng có thể thay thế ổ đĩa bị hỏng mà không phải lo lắng đến vấn đề thông tin thất lạc. Đối với RAID 1, hiệu năng không phải là yếu tố hàng đầu nên chẳng có gì ngạc nhiên nếu nó không phải là lựa chọn số một cho những người say mê tốc độ. Tuy nhiên đối với những nhà quản trị mạng hoặc những ai phải quản lý nhiều thông tin quan trọng thì hệ thống RAID 1 là thứ không thể thiếu. Dung lượng cuối cùng của hệ thống RAID 1 bằng dung lượng của ổ đơn (hai ổ 80GB chạy RAID 1 sẽ cho hệ thống nhìn thấy duy nhất một ổ RAID 80GB).
### RAID 2
Đây là cấp độ RAID duy nhất không sử dụng một hoặc nhiều kỹ thuật "tiêu chuẩn" như mirror, stripe và/hoặc parity (tính chẵn lẻ – là dữ liệu bổ sung được sử dụng cho việc khôi phục).

RAID 2 sử dụng một thứ tương tự như stripe có parity, nhưng không giống như cách được dùng trong các cấp độ RAID 3, 4, 5, 6, 
Dữ liệu của RAID 2 được stripe ở cấp độ bit, phân bố qua nhiều ổ đĩa dữ liệu và ổ đĩa dự phòng. Các bit dự phòng được tính toán bằng mã Hamming, một dạng Mã Sửa Lỗi (ECC – Error Correcting Code hoặc Error Checking & Correcting).

Khi có hoạt động stripe dữ liệu, những mã này được tính toán và ghi cùng với dữ liệu lưu vào ổ đĩa ECC riêng biệt. Khi có hoạt động đọc dữ liệu, những mã ECC cũng được đọc để xác nhận rằng không có lỗi xảy ra kể từ lúc ghi dữ liệu.

Nếu một lỗi đơn xảy ra, nó sẽ được sửa ngay tức thì. Cấp độ này có khả năng chịu lỗi một ổ đĩa.

RAID 2 đòi hỏi một bộ điều khiển phức tạp, chuyên dụng và đắt tiền. Loại RAID này hiếm khi được sử dụng bởi chi phí triển khai quá lớn (một hệ thống điển hình yêu cầu đến 10 ổ đĩa dữ liệu, 4 ổ đĩa ECC), và có hiệu suất không cao (do stripe ở cấp độ bit).

### RAID 3
Rất hiếm khi sử dụng trong thực tế. Dữ liệu được stripe qua nhiều ổ đĩa ở cấp độ byte (byte-level); số lượng byte của mỗi stripe có thể thay đổi nhưng thông thường dưới 1.024 byte (tức 1KB). Parity được tính toán và lưu vào một ổ đĩa riêng biệt, nhưng có khả năng chịu lỗi khi sự cố xảy ra với một ổ đĩa bất kỳ. RAID 3 về cơ bản không thể thực hiện nhiều tác vụ đọc/ghi đồng thời vì các block dữ liệu được chia ra trên các sector phân tán trên các ổ đĩa trong mảng.

RAID 3 phù hợp cho việc đọc ghi các dữ liệu có dung lượng lớn trong thời gian dài. Ví dụ như: giải nén các tệp tin nén lớn, chuyển đổi định dạng các video có thời lượng dài.

### RAID 4
Nhiều người đôi khi nhầm lẫn giữa RAID 3. RAID 4 cải thiện hiệu suất bằng cách stripe dữ liệu qua nhiều ổ đĩa theo khối và có khả năng chịu lỗi thông qua ổ đĩa parity riêng biệt. Điều này làm cho RAID 4 mang nhiều tương đồng với RAID 3 và RAID 5. Nó giống RAID 3 ngoại trừ việc sử dụng các khối thay vì các byte khi phân bố dữ liệu, và giống RAID 5 ngoại trừ việc sử dụng ổ đĩa parity riêng biệt thay vì phân bố parity. Do đó RAID 4 cho phép tối đa có 1 ổ cừng chết tại một thời điểm.

### RAID 5
RAID 5 là dạng RAID thông dụng nhất hiện nay và là sự cải tiến của RAID 0, cung cấp cơ chế khôi phục dữ liệu, các Parity dùng để khôi phục dữ liệu được phân bố đồng đều trên tất cả các ổ đĩa cứng.

Giả sử dữ liệu A được phân tách thành 3 phần A1, A2, A3, khi đó dữ liệu được chia thành 3 phần chứa trên các ổ đĩa cứng 0, 1, 2 (giống như RAID 0). Phần ổ đĩa cứng thứ 3 chứa Parity (Ap) của A1 A2 A3 để khôi phục dữ liệu có thể sẽ mất ở ổ đĩa cứng 0, 1, 2.

Dữ liệu B được chia thành B1 B2 B3 và Parity của nó là Bp, theo thứ tự B1 B2 B3 được lưu trữ tại ổ 0 1 3, và Bp được lưu trữ tại ổ 2. Các Parity được lưu trữ tuần tự trên các ổ đĩa cứng. RAID 5 cho phép tối đa có 1 ổ cứng bị chết tại một thời điểm, nếu có nhiều hơn 1 ổ cứng bị chết tại một thời điểm thì toàn bộ dữ liệu coi như mất hết. RAID 5 cũng yêu cầu các ổ cứng tham gia RAID phải có dung lượng bằng nhau.

Dung lượng chính xác cuối cùng của RAID 5 được tính bằng cách: 
 (Dung lượng của 1 ổ cứng) x [(Số lượng các ổ cứng tham gia RAID) - 1]
Yêu cầu tối thiểu của RAID 5 là có ít nhất 3 ổ đĩa cứng.

### RAID 6
Là dạng RAID thường được sử dụng trong các doanh nghiệp. Tương tự như RAID 5, nhưng RAID 6 vượt trội hơn bởi khả năng sử dụng đến hai khối parity và yêu cầu tối thiểu 4 ổ đĩa. Nếu bạn có hai ổ đĩa chết cùng một lúc, hệ thống vẫn có thể tiếp tục hoạt động. Về mặt hiệu suất, RAID 6 có tốc độ ghi không bằng RAID 5 do phải tính toán nhiều khối parity phức tạp hơn, nhưng có tốc độ đọc ngẫu nhiên nhanh hơn do dữ liệu được stripe qua nhiều ổ đĩa hơn. Giống như RAID 5, hiệu suất RAID 6 có thể được điều chỉnh bằng cách thay đổi kích thước stripe.

### Bảng tóm tắt

***Với:***

* ***m là số lượng đĩa trong mảng***
* ***n là tốc độ đọc/ghi của 1 đĩa trong mảng (giả định tốc độ đọc/ghi của các đĩa thành phần không bằng nhau, ta sẽ lấy n là tốc độ đọc/ghi của ổ đĩa có thông số thấp nhất)***

## Các dạng RAID kết hợp
Ngoài ra, RAID còn có dạng kết hợp khác ngoài 7 cấp độ tiêu chuẩn:

### RAID 7
Khác với những dạng RAID trên, RAID 7 không phải là một chuẩn công nghiệp; nó là thuật ngữ thương mại của Storage Computer Corporation (SCC), được dùng để miêu tả cho thiết kế RAID độc quyền của họ.

RAID 7 dựa trên RAID 3 và RAID 4, nhưng được cải tiến để khắc phục một số hạn chế của hai dạng RAID này. RAID 7 kết hợp một bộ nhớ đệm (cache memory) được sắp xếp theo nhiều cấp và một bộ xử lý thời gian thực (real-time) chuyên dụng để quản lý mảng theo kiểu bất đồng bộ. Với việc sử dụng truy cập bất đồng bộ, RAID 7 phá vỡ kiến trúc kỹ thuật trước đây của RAID chuẩn, giảm đáng kể tình trạng nghẽn cổ chai trong quá trình ghi dữ liệu.

Nhờ sự hỗ trợ của phần cứng - đặc biệt là bộ nhớ đệm - cho phép mảng RAID 7 xử lý nhiều hoạt động cùng một lúc, giúp cải thiện đáng kể hiệu suất trong khi vẫn duy trì khả năng chịu lỗi. Cụ thể, RAID 7 cung cấp tốc độ đọc và ghi ngẫu nhiên tốt hơn nhiều so với RAID 3 hoặc RAID 4, bởi khi có phần cứng hỗ trợ, hoạt động đọc truy xuất dữ liệu từ bộ nhớ đệm thay vì truy cập các ổ đĩa trong mảng, còn hoạt động ghi giảm bớt sự lệ thuộc vào ổ đĩa parity riêng biệt.

Chi phí để triển khải RAID 7 khá cao, ngoài ra khách hàng phải tốn thêm khoản phí bản quyền cho SCC. RAID 7 chỉ thích hợp với những doanh nghiệp, tổ chức lớn, yêu cầu công việc có đặc thù riêng.

### RAID 10
Là sự kết hợp giữa RAID 0 và RAID 1 tạo thành RAID 10, mang lại hiệu năng cao hơn RAID 1, bù lại chi phí triển khai cao. Đối với RAID 10 chúng ta cần tối thiểu là 4 ổ đĩa cứng.

### RAID 50
Tương tự RAID 10, RAID 50 là kết hợp giữa RAID 0 và RAID 5. Để triển khai RAID 50 cần có ít nhất 2 mảng đĩa (disk array) và 6 ổ đĩa.

### RAID 60
Tương tự RAID 10, RAID 60 là kết hợp giữa RAID 0 và RAID 6. Để triển khai RAID 60 cần có ít nhất 2 mảng đĩa (disk array) và 8 ổ đĩa.
***Với:***
* ***p là số lượng mảng đĩa***

## Sách tham khảo
* **Scott Mueller**, *Upgrading and Repairing Pcs, 17th Edition*. .

## Tham khảo

## Liên kết ngoài

* 
* "Empirical Measurements of Disk Failure Rates and Error Rates", by Jim Gray and Catharine van Ingen, December 2005
* The Mathematics of RAID-6, by H. Peter Anvin
* Does Fake RAID Offer Any Advantage Over Software RAID? – Discussion on superuser.com
* [ftp://ftp.dell.com/app/3q03-Dum.pdf Comparing RAID Implementation Methods] – Dell.com
* BAARF: Battle Against Any Raid Five (RAID&nbsp;3, 4 and 5 versus RAID&nbsp;10)
* A Clean-Slate Look at Disk Scrubbing