intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Hệ thống lưu trữ tin cậy

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:3

7
lượt xem
5
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài viết Hệ thống lưu trữ tin cậy thảo luận về một giải pháp nâng cao độ tin cậy của hệ thống lưu trữ. Để đảm bảo tính khả thi, giải pháp này sẽ không đòi hỏi quá nhiều về phần cứng và chủ yếu được thực hiện bằng phần mềm.

Chủ đề:
Lưu

Nội dung Text: Hệ thống lưu trữ tin cậy

  1. Tuyển tập Hội nghị Khoa học thường niên năm 2016. ISBN: 978-604-82-1980-2 HỆ THỐNG LƯU TRỮ TIN CẬY Phạm Thanh Bình1, Nguyễn Thị Phương Thảo1 1 Trường Đại học Thuỷ lợi, email: binhpt@tlu.edu.vn 1. GIỚI THIỆU CHUNG khả thi, giải pháp này sẽ không đòi hỏi quá nhiều về phần cứng và chủ yếu được thực Thiết bị lưu trữ là một bộ phận quan trọng hiện bằng phần mềm. trên các hệ thống máy tính. Độ an toàn của nó có ý nghĩa quyết định đối với sự tồn tại 2. PHƯƠNG PHÁP NGHIÊN CỨU của cả hệ thống. Nếu thiết bị lưu trữ bị hỏng thì hậu quả của nó còn nghiêm trọng hơn Sau khi nghiên cứu và phân tích ưu nhược nhiều so với việc các bộ phận khác của máy điểm của các giải pháp đã có, chúng tôi đã tính bị phá huỷ. Đối với người sử dụng, việc tổng hợp và đưa ra một giải pháp lưu trữ toàn bộ dữ liệu của họ (bao gồm các tài liệu đáng tin cậy. Giải pháp này sẽ dựa trên cá nhân, các công trình nghiên cứu khoa học, nguyên tắc của disk mirroring, tức là sử dụng các cơ sở dữ liệu về khách hàng, hay các kế một cặp đĩa giống hệt nhau, kết hợp với các hoạch kinh doanh…) ra đi mãi mãi quả là phương pháp đọc ghi đĩa đặc biệt. Một hệ một thảm hoạ! thống lưu trữ tin cậy phải đảm bảo được yêu Do đó, nhiều giải pháp để đảm bảo độ an cầu: đã ghi là phải chính xác, hoặc không ghi toàn của dữ liệu đã được đặt ra, như sao lưu gì cả (nếu không thể ghi đúng dữ liệu thì dữ liệu [1], disk mirroring, RAID [4]… đừng làm hỏng dữ liệu cũ trên sector đĩa). nhưng tất cả các giải pháp đó đều không giải 2.1. Nguyên tắc đọc ghi đĩa từ quyết được tình huống dữ liệu bị hỏng ngay từ khi đang ghi. Giả sử trong lúc quá trình Bề mặt đĩa từ được chia thành các vòng ghi dữ liệu đang diễn ra thì CPU bị hỏng, đầu tròn đồng tâm gọi là track. Mỗi track được đọc ghi bị lỗi (chẳng hạn do bị bám bụi), chia thành nhiều cung tròn gọi là sector. Sector sector đĩa bị lỗi, hoặc đơn giản là bị mất điện chính là đơn vị nhỏ nhất để đọc ghi đĩa từ [3]. đột ngột… hậu quả sẽ ra sao? Nếu đó là quá Mỗi sector đĩa thường có dạng như sau: trình cập nhật dữ liệu mới vào một sector trên đĩa, có thể xảy ra các trường hợp sau: Dữ liệu Header Data ECC đang ghi dở thì bị ngừng đột ngột (dữ liệu Hình 1. Cấu trúc một sector đĩa [2] mới thì chưa ghi xong, còn dữ liệu cũ trên sector thì bị phá hỏng), dữ liệu đã ghi xong Trong đó phần Header dùng để chứa các nhưng sector bị lỗi vật lý (gây mất toàn bộ dữ thông tin như số hiệu sector, số hiệu đầu đọc liệu vì không thể đọc sector sau đó), dữ liệu ghi, và số hiệu track chứa sector này... Phần đã ghi xong nhưng đầu đọc ghi bị lỗi (làm Data thường có độ dài là 512 byte, dùng để cho dữ liệu bị sai lệch)… chứa dữ liệu được ghi lên sector. ECC (Error Nhằm ứng phó với các tình huống nêu Correcting Code) chứa các thông tin dùng để trên, trong khuôn khổ bài viết này chúng ta sẽ kiểm tra độ chính xác của dữ liệu, và có thể thảo luận về một giải pháp nâng cao độ tin giúp sửa lỗi dữ liệu trong một phạm vi nhất cậy của hệ thống lưu trữ. Để đảm bảo tính định. Độ dài của ECC tuỳ thuộc vào từng nhà 166
  2. Tuyển tập Hội nghị Khoa học thường niên năm 2016. ISBN: 978-604-82-1980-2 sản xuất và độ phức tạp của thuật toán sửa lỗi hưởng nhiều tới tốc độ đọc ghi, nhưng có một mà nhà sản xuất ấy áp dụng. hạn chế là không có nhiều sector dự phòng để Việc kiểm tra và sửa lỗi dữ liệu sẽ do disk làm việc đó. Giải pháp đơn giản hơn chỉ cần controller (bộ điều khiển đĩa) thực hiện khi chọn một sector còn trống trên đĩa để thay sector được đọc vào một vùng đệm trên disk thế, nhưng có thể sẽ tốn thêm thời gian để di controller. Trong trường hợp dữ liệu bị hỏng chuyển đầu đọc ghi. nhiều và không thể sửa lỗi nhờ ECC, disk Nếu sector thay thế cũng bị hỏng thì lại controller sẽ tiến hành đọc lại sector đó từ chuyển sang một sector khác nữa… quá đĩa. Đôi khi lỗi đọc đĩa chỉ là tạm thời (do bụi trình đó sẽ lặp đi lặp lại cho tới khi ghi thành bám trên đầu đọc và sẽ biến mất trong lần công, mà không cần quan tâm tới số sector đọc thứ hai). Nhưng nếu sau N lần đọc lại cần sử dụng. sector mà vẫn thất bại, disk controller sẽ đánh - Sau khi ghi thành công lên sector của ổ dấu nó là sector hỏng, và thay thế nó bằng đĩa thứ nhất, dữ liệu đó sẽ lại được ghi lên một sector dự phòng (nếu có). sector tương ứng trên ổ đĩa thứ hai. Quá trình đọc lại để kiểm tra và ghi lại (nếu phát hiện 2.2. Giải pháp đảm bảo độ tin cậy của đĩa lỗi) cũng sẽ được lặp lại như đối với ổ đĩa thứ Trước hết ta cần đưa ra một số giả thiết để nhất cho tới khi ghi thành công. thu hẹp phạm vi của bài toán, vì việc phát Tóm lại, khi hàm ghi đĩa hoàn thành công hiện và khắc phục được 100% các lỗi phát việc ta sẽ thu được hai sector chứa dữ liệu sinh là điều không thể. Đầu tiên ta giả thiết giống hệt nhau trên hai ổ đĩa, và dữ liệu đó là rằng với trường ECC đủ dài, disk controller chính xác. sẽ luôn phát hiện được các lỗi dữ liệu (nếu b) Hàm đọc đĩa có) trong quá trình đọc đĩa. Giả thiết thứ hai Đầu tiên sẽ tiến hành đọc sector trên đĩa là sẽ không bao giờ xảy ra tình huống hai thứ nhất, rồi tiến hành kiểm tra lỗi nhờ vào sector tương ứng trên cả hai ổ đĩa cùng bị ECC. Nếu phát hiện ra lỗi thì phải đọc lại cho hỏng một lúc. Tất nhiên tình huống đó có thể tới khi thành công, hoặc sau N lần thất bại thì xảy ra, nhưng với xác suất nhỏ và có thể bỏ phải chuyển sang đọc sector tương ứng trên ổ qua. Với một cặp đĩa như vậy ta sẽ xây dựng đĩa thứ hai. Do ta đã giả thiết không xảy ra các hàm thao tác với đĩa như sau: tình huống hai sector tương ứng trên hai ổ đĩa a) Hàm ghi đĩa cùng hỏng, nên quá trình đọc sector từ đĩa sẽ Khi cần ghi dữ liệu lên một sector đĩa, hàm luôn thành công. này sẽ tạo ra hai bản sao giống hệt nhau của Trong tình huống phát hiện ra một trong dữ liệu đó trên cả hai ổ đĩa, tại hai vị trí sector hai sector bị hỏng thì phải gọi hàm sửa lỗi để giống hệt nhau, để đảm bảo rằng nếu có một khắc phục. sector bị hỏng thì vẫn còn sector kia để dự c) Hàm sửa lỗi phòng. Quá trình đó được thực hiện như sau: Nếu quá trình ghi dữ liệu lên đĩa bị dừng - Dữ liệu được ghi vào sector trên ổ đĩa đột ngột (do CPU bị hỏng, hoặc do mất thứ nhất. Sau khi ghi xong lại tiến hành đọc điện…), ta sẽ phải chạy hàm sửa lỗi để khôi nó để kiểm tra xem quá trình ghi có chính phục dữ liệu bị hỏng. Hàm này sẽ kiểm tra độ xác không. Nếu phát hiện ra lỗi thì phải tiến chính xác của dữ liệu nhờ sử dụng trường hành ghi lại và đọc lại để kiểm tra, cứ như ECC, và so sánh dữ liệu trên hai sector. Nếu vậy cho tới khi thành công, hoặc sau N lần dữ liệu trên cả hai sector đều giống nhau và thất bại (tức là sector đó bị hỏng và không không bị lỗi thì không cần làm gì cả. Còn nếu thể khắc phục) thì phải chuyển sang dùng dữ liệu của một trong hai sector bị sai lệch một sector khác. Có thể ánh xạ sector bị hỏng (so với ECC), nó sẽ bị ghi đè bởi dữ liệu trên tới một sector dự phòng nằm trên cùng một sector còn lại. Nếu dữ liệu của cả hai sector track. Giải pháp này rất tiện lợi vì không ảnh đều chính xác (so với ECC) nhưng nội dung 167
  3. Tuyển tập Hội nghị Khoa học thường niên năm 2016. ISBN: 978-604-82-1980-2 của chúng lại khác nhau thì dữ liệu trên lỗi sẽ lấy dữ liệu từ sector trên đĩa thứ nhất sector của đĩa thứ nhất sẽ được ghi đè lên ghi đè lên đĩa thứ hai. Quá trình ghi đĩa được sector của đĩa thứ hai. hoàn thành. Vấn đề là ở chỗ làm sao xác định được Như vậy, trong tất cả các tình huống, với sector nào bị lỗi khi quá trình ghi bị dừng đột giả thiết về khả năng xuất hiện lỗi đặt ra ở ngột? Không thể kiểm tra tất cả các sector đầu bài viết, hệ thống lưu trữ này đã thoả mãn trên đĩa vì như thế tốn rất nhiều thời gian. yêu cầu của một hệ thống lưu trữ tin cậy (đã Cách đơn giản nhất là lưu lại số hiệu của ghi là phải chính xác, hoặc không ghi gì cả). sector trước khi tiến hành ghi dữ liệu lên cặp sector đó, và sau khi ghi thành công thì xoá 4. KẾT LUẬN số hiệu đó đi. Nhờ vậy ta có thể dễ dàng biết Về mặt kỹ thuật, giải pháp này có tính khả được số hiệu của sector đang bị ghi dở dang. thi vì chỉ cần trang bị thêm một ổ đĩa, sửa lại Nhưng sẽ lưu số hiệu sector đó vào đâu? Nếu các hàm đọc ghi đĩa của hệ điều hành, và viết lưu trên đĩa từ thì trước mỗi lần ghi sector sẽ thêm một hàm sửa lỗi đĩa. Tuy nhiên, ngoài phải tiến hành ghi số hiệu sector vào một vị ưu điểm chính là giúp đảm bảo an toàn cho trí quy ước sẵn trên đĩa, rồi lại đọc và kiểm dữ liệu lưu trữ trên đĩa từ, nó cũng làm chậm tra, lặp lại như vậy đối với ổ đĩa thứ hai… sẽ đáng kể tốc độ ghi dữ liệu lên đĩa. Mỗi lần phải tốn thêm rất nhiều thao tác đĩa và làm ghi dữ liệu lên đĩa phải tốn ít nhất bốn lần chậm tốc độ ghi dữ liệu của hệ thống. Một thao tác với đĩa (một lần ghi và một lần đọc giải pháp đơn giản hơn là lưu số hiệu sector để kiểm tra với mỗi đĩa), chưa kể tới các tình trên CMOS RAM, như vậy sẽ ít ảnh hưởng huống gặp lỗi khi ghi thì tốc độ còn bị chậm tới tốc độ ghi dữ liệu, và trên các máy tính hơn nhiều lần. Do đó việc áp dụng đại trà giải hiện nay lại thường có sẵn CMOS RAM. pháp này trên thực tế gặp nhiều khó khăn. Cũng có thể khắc phục hạn chế về tốc độ 3. KẾT QUẢ NGHIÊN CỨU bằng cách sử dụng các chuẩn giao tiếp đĩa tốc Để đánh giá kết quả nghiên cứu, ta sẽ độ cao như SAS hay SATA 3 (có tốc độ gấp phân tích các tình huống có thể xảy ra khi nhiều lần các đĩa thông thường), hoặc áp quá trình ghi dữ liệu bị dừng lại đột ngột, và dụng giải pháp ghi song song trên hai đĩa tác dụng của giải pháp nêu trên đối với từng (tương tự như RAID). Nhưng nếu sử dụng tình huống. các đĩa đắt tiền như vậy, và lại dùng tới hai - Tình huống 1: Quá trình ghi bị dừng khi đĩa cứng đồng thời thì giá thành của phần đang ghi dữ liệu vào sector trên đĩa thứ nhất. cứng sẽ bị tăng lên nhiều. Do đó giải pháp Dữ liệu trên sector đó sẽ bị hỏng. Hàm sửa này có lẽ chỉ áp dụng được đối với các hệ lỗi sẽ lấy dữ liệu từ sector trên đĩa thứ hai ghi thống lưu trữ đặc biệt đòi hỏi độ an toàn dữ đè lên đĩa thứ nhất. Như vậy dữ liệu được liệu cao. khôi phục về trạng thái trước khi ghi. - Tình huống 2: Quá trình ghi bị dừng khi 5. TÀI LIỆU THAM KHẢO đã ghi xong dữ liệu vào sector trên đĩa thứ [1] A. Tanenbaum, 2001, Modern Operating nhất, nhưng chưa kịp ghi lên đĩa thứ hai. Dữ Systems, Prentice Hall. liệu trên cả hai sector đều chính xác khi so [2] Michael Tischer, 2000, Cẩm nang lập trình với ECC, nhưng chúng lại không giống nhau. hệ thống, NXB Giáo dục. Hàm sửa lỗi sẽ lấy dữ liệu từ sector trên đĩa [3] Nguyễn Lê Tín, 1997, Hỗ trợ kỹ thuật cho thứ nhất ghi đè lên đĩa thứ hai. Quá trình ghi lập trình hệ thống, NXB Đà Nẵng. đĩa được hoàn thành. [4] Patterson, Gibson and Katz, 1988, A Case - Tình huống 3: Quá trình ghi bị dừng khi for Redundant Arrays of Inexpensive Disks đang ghi dữ liệu vào sector trên đĩa thứ hai. (RAID), ACM SIGMOD Conference on Management of Data. Dữ liệu trên sector đó sẽ bị hỏng. Hàm sửa 168
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2