Tìm hiểu về RAID trên ổ cứng máy tính chủ
- Raid có mục đích ban đầu là kết hợp hai hoặc nhiều ổ đĩa cứng vật lý để rồi sau đó tạo ra một thiết bị lưu trữ ảo duy nhất trên hệ thống máy chủ.
Khi nói đến việc bảo vệ dữ liệu, người ta thường nghĩ đến việc backup dữ liệu và rồi điều đầu tiên mà bạn hay liên tưởng ngay đến đó là RAID. Tôi cũng xin thưa ngay từ đầu – backup không phải là RAID. Có chăng chúng dính dáng nhau một chút trong mục đích bảo vệ dữ liệu mà thôi, còn ngoài ra thì chúng hoàn toàn khác nhau.
Trước tiên tôi xin nói một chút về backup (hai chữ backup luôn viết liền nhau) là gì.
Backup là quá trình sao chép và lưu trữ dữ liệu máy tính để nó có thể phục hồi về bản gốc tại thời điểm trước khi có sự cố mất mát dữ liệu. Xin xem thêm bài viết “Tôi đã bảo vệ dữ liệu của mình như thế nào” để biết về mất dữ liệu là như thế nào. Backup có 2 mục đích rõ ràng:
Thứ nhất, phục hồi các dữ liệu bị mất (vì bất cứ lý do gì).
Thứ hai, phục hồi dữ liệu về trạng thái tại một thời điểm trước đó mà mình muốn.
Bởi vì, như định nghĩa nói, hệ thống sao lưu chứa ít nhất một bản sao của tất cả các dữ liệu quý giá mà nó copy được nên yêu cầu về nơi lưu trữ dữ liệu là rất quan trọng. Việc tổ chức nơi có đủ dung lượng lưu trữ cũng như việc quản lý sao lưu sao cho hiệu quả là cả một quá trình phức tạp. Và chính điều này đã tạo ra sự khác biệt đáng kể so với RAID.
Để được gọi là backup đúng nghĩa nó phải đáp ứng 2 tiêu chí: Offline và offsite.
Offline – Quá trình backup được thực thi cũng như bản backup phải nằm ngoài hệ thống mà nó đang sao lưu dữ liệu. Nói cách khác bình dân cho dễ hiểu. Dữ liệu được sao lưu nằm ở một máy, còn backup phải chạy trên máy khác. Chứ nếu không giả sử như thằng PSU nó chết thì không nói, nghe lời bạn bè làm viên thuốc lắc khiến nó cà giựt làm điện trồi sụt rồi toi cả đám hdd vừa dữ liệu vừa backup thì ta chỉ có nước cắn lưỡi.
Offsite – Máy chạy backup phải nằm ngoài khu vực các máy chủ mà nó đang backup dữ liệu như khác lầu, khác building và nói chung càng xa càng tốt. Việc này nhằm tránh các tình huống thiên tai địch họa cháy nổ làm sụp toàn hệ thống một lúc.
Nhìn chung backup thường được áp dụng cho các doanh nghiệp lớn, nhà băng, cơ quan nhà nước những nơi có những dữ liệu nhiều và quan trọng cần phải bảo vệ (vấn đề bảo mật dữ liệu nằm ngoài phạm vi bài này). Tôi có làm việc với một vài đồng nghiệp (chung công việc nhưng khác bộ phận). Họ phụ trách việc sao lưu và lưu trữ dữ liệu thông tin của cả quốc gia. Mỗi lần làm backup xong (với các dữ liệu đặc biệt quan trọng nhưng không thay đổi thường xuyên), tôi thấy họ có các nhân viên vũ trang đưa xe bọc thép chở các tape dữ liệu vào các hầm chứa ở một nơi ít người được phép biết để cất giữ. Sau này vì lý do an ninh, họ xây hẳn một trung tâm backup và backup qua hệ thống network cáp quang nội bộ (fiber cables 10Gb). Dĩ nhiên backup còn rất nhiều điều lý thú khác như các mức độ backup, các hình thức backup, các phương tiện backup, các vấn đề về nén dữ liệu, encryption, …. Một lần nữa nó lại nằm ngoài phạm vi bài viết nên ai có hứng thú, thì sẽ trao đổi thêm sau.
Tôi cố tình nói hơi kỹ về backup để chúng ta có thể hiểu và sau này dễ dàng phân biệt với Raid.
Ưu điểm của backup thì hầu như ai cũng biết rồi, vậy những điểm yếu của nó là gì?
- Tốn kém thiết bị lưu trữ. Thật vậy, nếu bạn có 1TB mà muốn backup nó thì phải có 1TB nữa để chứa (backup) cái 1TB gốc. Có nén lắm cũng chỉ tiết kiệm chút đỉnh, mà càng nén nhiều thì tỉ lệ thất bại khi giải nén trong quá trình restore càng cao, do đó càng hồi hộp, nguy hiểm.
- Thời điểm backup bị hạn chế. Khi chúng ta phục hồi dữ liệu thì đó chính là dữ liệu tại thời điểm mà chúng ta làm backup mà thôi. Còn các thay đổi dữ liệu ngay sau khi backup được thực thi sẽ không được lưu giữ lại (cái này quan trọng và nên nhớ).
- Thời gian thực hiện backup thường kéo dài so với Raid (thời gian thực).
- Phiền phức, tốn kém thêm khi lưu trữ các backup.
Trở về đề tài chính đó là RAID. Ai cũng biết RAID là tên viết tắt của Redundant Array of Inexpensive Disks hoặc sau này nghe kỹ thuật hơn là Redundant Array of Independent Disks.
Theo trang tài liệu Wiki, Raid lần đầu tiên được phát triển bởi các nhà khoa học máy tính thuộc trường Đại học California tại Berkeley vào năm 1987. Mục đích ban đầu là họ muốn kết hợp hai hoặc nhiều ổ đĩa cứng vật lý để rồi sau đó tạo ra một thiết bị lưu trữ ảo duy nhất trên hệ thống máy chủ. Nói khác đi, OS của máy chủ lúc này chỉ có thể thấy một ổ duy nhất được dựng từ 2 hay nhiều HDD có trong máy.
Qua quá trình nghiên cứu và sử dụng, phương pháp mới này được bổ sung làm cho nó có thêm 2 khả năng hay hơn so với một ổ HDD đơn độc thông thường.
Thứ nhất: Giải quyết được lỗi hỏng hóc của một (sau này là nhiều hơn) ổ HDD trong RAID.
Thứ hai: tăng hiệu suất đọc/ chép trên RAID.
Nói cách khác, RAID được cải tiến nhằm giúp tăng khả năng chịu lỗi và nâng mức thông lượng I/O throughput cao hơn so với một ổ cứng duy nhất hoặc một nhóm các ổ đĩa cứng độc lập.
Nhớ hồi xưa khi tập làm quen với máy tính, nghe tới Raid ai cũng xanh mặt run tay vì tính chất lưu trữ phức tạp và tương đối đặc biệt của nó. Ngày nay tôi chắc là phần nhiều trong chúng ta nếu cứng tay một chút thì chí ít cũng một vài lần set up một cái Raid cho riêng mình, đặc biệt là khi mức độ lưu trữ ngày càng được nâng lên về dung lượng và cần thiết cho một loạt các ứng dụng client / server.
Có hai khái niệm chính mà ta nên nhớ khi nói về Raid.
1, Parity
Yếu tố cơ bản để giúp cho ta có thể phục hồi dữ liệu trực tuyến (tức lúc máy chủ vẫn đang vận hành) trong trường hợp một đĩa cứng bị hư hỏng bằng cách sử dụng một hình thức dự phòng được gọi là parity. Để nói cho bình dân đơn giản hơn , parity là phần bổ sung của tất cả các ổ đĩa được sử dụng trong cái Raid đó. Khi ta muốn tạm đọc dữ liệu từ một HDD bị hư nào đó (tôi nói tạm là vì khi ấy tốc độ truy xuất dữ liệu của toàn mảng Raid sẽ rất chậm, chúng chỉ được phục hồi tốc độ khi đã được thay bằng một ổ cứng mới), Raid sẽ thực hiện bằng cách đọc các dữ liệu tốt còn lại và kiểm tra nó bằng cách đối chiếu lại với dữ liệu pairty được lưu trữ trong mảng.
Tôi lấy ví dụ đơn giản để các bạn đễ hình dung Raid đã tính parity như thế nào.
Giả sử ta có 4 ổ cứng tạo nên Raid và lần lượt các ổ cứng này chứa các dữ liệu mang giá trị cũng lần lượt là 1, 2, 3, và 4. Khi đó Raid sẽ gán giá trị của parity là 10 (giả sử thôi chứ thực tế không phải vậy đâu)
1 + 2 + 3 + 4 = 10
Khi ổ thứ 3 bị toi thì ta sẽ có
1 + 2 + X + 4 = 10
Để biết cái ổ cứng thứ 3 trước đó có chứa dữ liệu gì, khi đó Raid sẽ tính
7 + X = 10 hay X = 10 -7 hay X = 3.
Cũng vì tính toán dài dòng như vậy nên, nếu các bạn để ý, khi một ổ bị tèo trong Raid 5 chẳng hạn, đồng ý là vẫn không có một dữ liệu nào bị mất, nhưng tốc độ truy xuất bị chậm hẳn đi.
Lưu ý parity chỉ được sử dụng ở các cấp độ RAID 2 , 3, 4 , và 5.
RAID 1 không sử dụng parity bởi vì tất cả dữ liệu là hoàn toàn sao chép ( nhân đôi).
Còn RAID 0 chỉ được sử dụng để tăng hiệu suất truy xuất. Vì không trang bị chức năng dự phòng dữ liệu nên nó không có parity .
Một câu hỏi gợi mở đối với các bạn nè. Các bạn đã bao giờ set up một cái Raid 5 trên Windows hay Linux chưa? Nếu có thì có bao giờ gặp một trường hợp là 1 ổ cứng bị hư chưa? Khả năng thành công khi phụ hồi dữ liệu trở lại (sau khi thay ổ cứng mới) là bao nhiêu phần trăm?
2, Khả năng chịu lỗi hỏng hóc ổ cứng
Ngày nay người ta vẫn còn đang tranh luận gay gắt liệu công nghệ RAID có thật sự bảo vệ dữ liệu hay không? Có ngăn ngừa các lỗi hư ổ đĩa không. Gần đây thôi trên diễn đàn này cũng có vài ý kiến bài bác thẳng thừng Raid. Ví dụ như ở Raid 5, nếu chẳng may có từ 2 ổ cứng rù nhau cùng về chầu Diêm vương thì toàn bộ dữ liệu chết sạch, không cách gì cứu vãn được. Theo ý kiến cá nhân, thì tôi cũng cho là Raid không bảo vệ dữ liệu hoàn hảo như backup, nhưng.... Vâng nhưng RAID cung cấp sự bảo hiểm an toàn nhất định khi nó có thể chống đỡ sự hỏng hóc của ổ đĩa (nhiều hay í thì còn tùy loại Raid) bằng cách cho phép kéo dài thời gian để phục hồi dữ liệu.
Các khả năng chịu lỗi của các Raid cũng có thể được tăng cường đáng kể bằng cách chọn loại Raid lưu trữ đúng đắn (sẽ nói ở sau).
Ở trên ta đã biết parity được Raid tạo ra và tính toán ra sao, thì khi nhìn vào cách phân bố parity trong một Raid, ta có thể biết khả năng chịu lỗi hỏng hóc HDD của Raid đó dư lào ngay, ví dụ:
- Raid 5, các phần tử parity Ap, Bp, Cp, Dp,... được phân bố tuần tự lần lượt trên từng HDD trong Raid. Nếu cộng tất cả lại ta sẽ thấy chúng chiếm vừa đứng dung lượng (nhỏ nhất) của một ở cứng trong Raid đó. Đó là lý do tại sao ta thấy ở các Raid 5, chúng ta phải hy sinh 1 ổ cho Raid và Raid thường bắt (hay nói đúng hơn nó chỉ bảo kê) chúng ta sử dụng các HDD có cùng dung lượng. Thằng HDD nào lớn chuẩn sẽ bị nó vạc bớt ráng chịu. Và cũng từ đây ta có thể biết rằng, trong Raid 5, nó chỉ cho phép 1 HDD toi mạng mà thôi, còn hơn nữa thì khi đó chính người dùng ... toi mạng.
- Raid 6, cũng tương tợ như Raid 5 thôi, nhưng lần này ta để ý thấy có xuất hiện thêm Aq, Bq, Cq, Dq,... mà nếu ngồi cộng tổng chúng lại sẽ vừa bằng 2 HDD trong Raid. Vâng giống như trên, ta biết dung sai cho phép hard drive chết tối đa chỉ là 2 thôi. Dễ ẹt phải không các bạn?
Vì đề tài về Raid rất rộng, trong bài này tôi không thể nói cụ thể Raid là gì, nguyên lý họat động của nó ra sao, có mấy cấp độ Raid và chúng khác nhau thế nào, hy vọng đến đây bạn vẫn chưa bị “bơi”. Mà muốn biết có đang bị “bơi” hay không dễ lắm. Nếu bạn trả lời được những câu hỏi này thì bạn có thể an tâm đi tiếp phần còn lại của bài:
Backup và Raid 1 giống và khác nhau ở điểm nào?
Tại sao nói Raid ngày nay có khả năng chịu được mức độ hư hỏng của một đến vài ổ cứng trong mảng Raid?
Cái gì làm cho Rai có khả năng đọc/ chép nhanh hơn là các ổ cứng độc lập?
Các yếu tố làm gia tăng sự phát triển của Raid trong giai đoạn hiện nay
Các bạn cũng biết, các ứng dụng hiện nay tạo ra các tập tin lớn hơn do đó nhu cầu lưu trữ mạng đã tăng lên tương ứng. Ngoài ra, sự tăng tốc của tốc độ CPU đã vượt xa tốc độ truyền tải dữ liệu để lưu trữ, tạo ra tắc nghẽn trong hệ thống hiện nay. Vì thế giải pháp lưu trữ RAID vượt qua những thách thức này bằng cách cung cấp một sự kết hợp của tính sẵn sàng dữ liệu , hiệu suất nổi bật, khả năng mở rộng, năng suất cao và phục hồi mà không làm mất dữ liệu hoặc gián đoạn truy cập của người dùng.
Các loại RAID
Các bạn biết hiện nay có bao nhiêu loại Raid không? Có người sẽ nhau nhẩu nói ngay Raid 0, Raid 1, Raid 5, v.. v… Không phải bạn ơi, đó chỉ là cấp độ Raid mà thôi và tùy theo nhu cầu lưu trữ và sử dụng mà người ta quyết định chọn lựa cho mình cấp độ Raid nào cho phù hợp.
Còn Raid hiện nay thì tựu chung có 3 loại: Software RAID, Fake RAID và Hardware RAID.
Như đã nói, RAID là mảng đề tài quá lớn, quá rộng, nếu mà nói cho hết, cho đủ thì có lẽ bài viết sẽ phải kéo dài lê thê. Do đó, tôi chỉ nói tóm gọn đặc điểm của từng loại RAID này là gì để sau này bạn cũng có cái cơ sở để phân biệt, không bị người khác chê… ‘Hai lúa”!
Các bạn nên nhớ một điều cho dù là loại RAID gì, chúng đều có chung một đặc điểm là chạy trên các mã RAID viết dựa trên phần mềm. Sự khác biệt giữa các loại RAID là nơi mà các mã phần mềm này được thực thi hoặc trên bộ xử lý (CPU) máy chủ (như software RAID, Fake RAID ) hoặc ‘bán cái’ lại cho một bộ xử lý on-board ( Hardwar RAID).
1, Software RAID
Cái này thì dễ rồi, sau khi cài xong HĐH, bạn tiến hành dùng luôn Windows để thiết lập RAID (0, 1, 5, gì đó) tùy ý bạn muốn – Windows based RAID. Còn bạn nào sử dụng Linux thì có sẵn mdadm utility không cần suy nghĩ nhiều cho nặng đầu. Ngày nay, đã và đang có khá nhiều software RAID được viết trên nền Linux và ngày càng chứng tỏ khả năng vượt trội so với hai anh kia. Chỉ gói gọn trong một câu như thế này, tôi không nghĩ các bạn sẽ hiểu hết. Vì sự hạn chế độ dài của bài, nên tôi chỉ có thể nói ngắn là basic RAID sẽ dần chết và bị thay thế bởi các software RAID viết dựa trên các mã nguồn mở.
Các software RAID dựa trên phần mềm chủ yếu được sử dụng với các máy lưu trữ gia đình, các máy chủ entry-level . Điểm chủ yếu để nhận diện là nó thực hiện tất cả các lệnh I / O và các thuật toán toán học RAID chuyên sâu trực tiếp trên các CPU của máy chủ lưu trữ. Chính điều này làm chậm hiệu suất hệ thống bằng cách tăng lưu lượng truy cập máy chủ qua PCI bus , sử dụng vào ngay luôn tài nguyên của hệ thống CPU, memory, .... Ưu điểm chính của software RAID là giá thành rẻ hơn (nhiều software RAID cho free luôn) so với các lựa chọn thay thế RAID khác như hardware RAID có mức giá cao hơn nhiều.
2, Fake RAID hay Host RAID
Tôi không hiểu lắm tại sao người ta lại nói là fake RAID, mà nếu dịch ra tiếng Việt cho sát nghĩa thì nghe nó trớt quớt. Trong khi tôi ưa thích từ Host RAID vì nó sát thực tế hơn. Vậy Fake RAID (RAID giả) là gì?
Tôi chắc rằng có 80 – 90% trong số các bạn không biết gì về nó, thậm chí mới nghe lần đầu trong khi mình xài nó hà rầm mỗi ngày.
Khi bạn mới mua một cái mainboard mới toanh về, trong lúc cài Windows, ta nhấn F6 để cài driver (chắc các bạn vẫn còn nhớ) nhằm để thiết lập RAID trong BIOS bên ngoài Windows. Rõ ràng đâu có gì dính đến software nào đâu vì ngay cả OS còn chưa có huống là. Do đó nó rõ ràng là hardware RAID (hardware là motherboard đó!)
Cũng vậy, khi bạn mới mua một cái card Sata rời 4 hoặc 8 cổng Sata. Ta set up RAID trên những ổ cứng gắn trên nó và cũng chả có cái software tên là A hay B nào can thiệp vào đây. Vâng, rõ ràng nó cũng chính là một hardware RAID.
Không phải thật sự như vậy đâu các bạn ạ. Một lần nữa ta phải bám chắc vào một nguyên lý đơn giản nhưng cơ bản là: Cho dù cái RAID đó được hình thành (xuất sứ) từ đâu một khi nó vẫn còn sử dụng nguồn tài nguyên là chính cái CPU và bộ nhớ memory của máy chủ để hoạt động (tính toán RAID, truy xuất dữ liệu,...) thì nó vẫn bị coi là software RAID như thường. Tuy nhiên vì ở đây nó có liên quan chút đỉnh tới mobo hoặc card rời. Nó sử dụng firmware nhận diện/ đánh giá ổ cứng trước khi HĐH được khởi động. Và sau khi HĐH khởi động xong (lấy quyền kiểm soát lại từ Bios) thì khi đó nó giao quyền điều khiển RAID cho OS luôn. Vì lẽ đó mà nó có tên gọi Host RAID là vậy. Trời, khó quá, thế thì như thế nào mới được gọi là hardware RAID, mặt mũi nó như thế nào?
3, Hardware RAID
Nó thường ở dưới hình thức là một dạng card add-in. Loại card RAID controller này cắm vào một khe cắm bus chủ PCI. Giảm tải hệ thống máy chủ trong một số hoặc tất cả các lệnh I / O, dành các hoạt động tính toán RAID cho một hoặc nhiều bộ vi xử lý thứ cấp mà nó có.
Ngoài việc cung cấp những lợi ích chịu lỗi của một RAID thông thường , bộ điều khiển hardware RAID còn thực hiện các chức năng kết nối tương tự như bộ điều khiển trên máy chủ tiêu chuẩn. Và cũng bởi nhờ nó có riêng cho mình tài nguyên (CPU, memory,...) , nên chúng thường cung cấp hiệu suất cao nhất cho tất cả các loại RAID. Hardware RAID cũng cung cấp tính năng chịu lỗi mạnh mẽ hơn đa dạng hơn software RAID. Ví dụ như RAID 0/1/5/6/10/50/60. Thế bạn thường gặp hardware RAID ở đâu? Có phần nhiều các bạn sẽ ít có cơ hội mua chúng vì giá quá chát hoặc thấy chúng (vì thường được trang bị để xây dựng các siêu hệ thống lưu trữ dung lượng cao nơi các máy chủ cao cấp) .
Theo tôi biết, vài cái tên nổi tiếng được các tay có máu mặt trang bị cho các file servers tại gia là 3ware, Areca, Intel, LSI vì chúng đem lại hiệu suất thực sự. Còn giá thì vô chừng từ vài trăm đến cả ngàn USD tùy theo con chip đi theo nhanh hay chậm, dung lượng memory tích hợp, số cổng Sata có thể kết nối, v..v...
Ví dụ như em này: 3ware 9650SE-8LPML PCI Express SATA II Controller Card RAID
Tóm lại, đứng dưới góc nhìn của dân lưu trữ HD, khi mà dung lượng phim ảnh nhạc nhẽo ngày càng phình to ra thì nhu cầu tìm hiểu về RAID để trợ giúp cho việc lưu trữ trở nên một chủ đề nóng và nó quan trọng hơn bao giờ hết.
Đáng tiếc bài này không thể dài hơn nên chỉ cho ta một cái nhìn tổng quan bao gồm tất cả hóa thân của RAID thôi chứ không bao gồm chiều sâu trong chúng. Một đều an ủi là, chí ít qua bài này, bạn hiểu được phần nào về RAID để từ đó có quyết định đúng đắn khi lựa chọn một phương pháp bảo vệ cho kho lưu trữ dữ liệu HD của mình.