Điểm:1

Xây dựng lại RAID5 với các cung không thể sửa được trên nhiều đĩa

lá cờ cn

Hệ thống RAID5 (mdadm) phần mềm của tôi bao gồm năm đĩa.Gần đây, tôi gặp lỗi I/O khi đọc một số tệp nhất định. Hầu hết các tệp khác vẫn có thể đọc được.

Lúc đầu, tôi định tìm xem đĩa nào bị hỏng (sử dụng smartctl) và nhanh chóng thay thế đĩa bị lỗi để xây dựng lại mảng trước khi các đĩa khác cũng bị lỗi. Tuy nhiên, smartctl cho thấy rằng số ba đĩa có lỗi không thể sửa chữa.

Tôi nghĩ rằng mdadm vẫn có thể xây dựng lại miễn là các thành phần xấu của ba đĩa này không giao nhau, cho phép tôi tùy chọn hoán đổi và xây dựng lại từng cái một.

Hay thực tế là tôi có lỗi I/O đã chỉ ra rằng tính chẵn lẻ bị mất và cùng một khu vực trên nhiều đĩa không thể đọc được? Có cách nào để tìm hiểu xem có bất kỳ khu vực bị lỗi nào giao nhau hay không và do đó thông tin bị mất không thể phục hồi?

Michael Hampton avatar
lá cờ cz
Bạn dường như không có bản sao lưu. Đó nên là ưu tiên hàng đầu của bạn.
Nikita Kipriyanov avatar
lá cờ za
@CIA Ý tưởng thứ hai về dd rất hấp dẫn nhưng không rõ ràng. Khi một khối không thể đọc được, MD sẽ thấy điều này và khôi phục dữ liệu chính xác từ các đĩa khác. Mặt khác, `dd` sẽ lấp đầy không gian này bằng các số 0 và khối sẽ có thể đọc được từ thiết bị mới và lớp RAID sẽ không biết cách nào tốt hơn để khôi phục, điều này sẽ dẫn đến hỏng dữ liệu. // Ngoài ra, bạn không cần đầu tư vào phần mềm "giúp xác định cách thiết lập các khối". Phần mềm này được gọi là `mdadm`, nó sẽ cho bạn biết nếu bạn hỏi chính xác, và nguồn và tài liệu nhân Linux sẽ giải thích chi tiết câu trả lời của nó.
Điểm:3
lá cờ ru

Các thủ tục tiêu chuẩn là:

  1. Luôn luôn có một tốt, up-to-date sao lưu (ít nhất hai bản sao độc lập ở những nơi khác nhau, ít nhất là trên các phương tiện truyền thông khác nhau)
  2. liên tục màn hình RAID của bạn cho các vấn đề. RAID là vô giá trị khi các lỗi được phép tích lũy.
  3. chà đĩa ít nhất hàng tháng. Điều này tránh lỗi để tích lũy và để ngăn chặn việc xây dựng lại.
  4. Xem xét ĐỘT KÍCH 6 với hai đĩa dự phòng.

Bạn dường như đã không thực hiện điều này một cách nghiêm túc. Cố gắng phục hồi những gì vẫn còn đó hiện nay. Cố gắng xây dựng lại mảng gần như bị lỗi đó có thể gây ra nhiều thiệt hại hơn bạn mong đợi.

Nếu dữ liệu đủ giá trị, hãy tìm một dịch vụ khôi phục dữ liệu đáng tin cậy và có khả năng. Đặt một lượng tiền mặt từ bốn đến năm chữ số sang một bên. Nếu không, hãy rửa sạch & lặp lại - thay thế đĩa, định dạng lại, cài đặt lại và thực hiện các quy trình tiêu chuẩn một cách nghiêm túc hơn.

Điểm:2
lá cờ za
  1. Bạn đúng ở chỗ nếu các cung không thể đọc được "không giao nhau", tức là nằm ở các sọc khác nhau, MD RAID có thể khôi phục dữ liệu bằng cách sử dụng tính chẵn lẻ. Nhưng nó có thể loại bỏ một số ổ đĩa trong quá trình phục hồi, và sau đó cơ hội sẽ giảm đáng kể.

  2. Có một quy tắc chung về phục hồi dữ liệu: luôn bắt đầu với một kết xuất thô. Điều này đảm bảo cho bạn số lần thử không giới hạn: nếu bạn làm hỏng thứ gì đó, bạn có thể bắt đầu lại với kết xuất.Vì vậy, nói chung, bạn có thể sao chép tất cả các đĩa sắp chết sang một số đĩa đang hoạt động, đọc qua các lỗi và sau đó tập hợp RAID từ các đĩa mới.

  3. Bạn có thể bắt đầu với việc sao chép từng ổ đĩa theo từng khu vực để thay thế bằng giải cứu (I E. không phải bằng cách sử dụng quy trình khôi phục MD RAID). Ngoài việc sao chép thông qua các lỗi, nó tạo ra cái mà nó gọi là tệp nhật ký, đây thực sự là bản đồ khu vực xấu. Khi bạn sao chép cả ba bản đồ đó, bạn có thể so sánh các bản đồ đó và tìm xem có giao điểm nào không. Đừng vứt chúng đi, những bản đồ này có thể giúp ích cho bạn trong quá trình khôi phục.

  4. Tuy nhiên, RAID5 là một con quái vật rất khó chịu theo nghĩa của những bãi chứa như vậy. Điều gì có thể đi sai? Nếu khu vực ổ đĩa của bạn hoàn toàn không đọc được lỗi I/O, lớp RAID sẽ khôi phục dữ liệu đó từ các đĩa khác; đó sẽ là trường hợp cho các đĩa cũ. Nhưng nếu nó đọc không có lỗi, nhưng trả về dữ liệu sai, RAID sẽ không cố khôi phục nó từ tính chẵn lẻ và thay vào đó trả lại dữ liệu sai đó. giải cứu sẽ lấp đầy các khu vực không thể đọc được bằng số không, số này sẽ được đọc lại nếu bạn lắp ráp mảng bằng thiết bị nhân bản này sau đó, do đó, điều này sẽ chuyển thành số không đọc (dữ liệu bị hỏng) khi có khả năng khôi phục dữ liệu gốc. RAID không đảm bảo dữ liệu sự chính trực. Và đây là vấn đề thực sự đối với tất cả các biến thể ngoại trừ RAID6 có hai hội chứng chẵn lẻ hoặc RAID1 có nhiều hơn hai máy nhân bản. Và, bạn có thể đã đoán được, vấn đề này thể hiện theo cách gây rối nhất trong trường hợp RAID5. (Có sự cân nhắc bổ sung đối với nó, điều gì đó về kích thước đĩa hiện đại và tỷ lệ lỗi bit của chúng.)

  5. Trong bất kỳ thao tác nhân bản nào, đĩa có thể chết hoàn toàn. Sau đó, bạn bị mắc kẹt. Có khả năng phục hồi sau thời điểm này, nhưng bạn sẽ phải trả giá nhiều. Có những dịch vụ là "phòng sạch" và chúng có thể, ví dụ: thay thế các đầu bên trong đĩa cứng và thử đọc lại; nó chậm, dễ bị lỗi và họ có thể tính phí bạn khá cao. Hãy xem xét điều này nếu dữ liệu của bạn rất có giá trị.

  6. Do đó, thật khôn ngoan khi sao chép các đĩa gốc, nhưng sau đó bỏ các bản sao đi, lắp ráp mảng từ nguyên đĩa và cố gắng sao chép từ chính mảng đó (/dev/mdX). Nếu xảy ra sự cố (đĩa chết), hãy thay thế nó bằng bản sao và khôi phục các sọc bị hỏng theo cách thủ công (đọc p.4) sau đó, tham khảo các tệp nhật ký (p.3) Đây là công việc khá khó khăn. Cũng lưu ý rằng bạn cần dự phòng hai lần không gian ban đầu để thực hiện khôi phục. Hoặc đừng tự mình làm bất cứ điều gì, hãy thuê ngoài toàn bộ công việc cho các chuyên gia. Đây là cái giá bạn phải trả cho việc bảo trì mảng và dữ liệu không đúng cách.

  7. Và, bây giờ, bạn có kinh nghiệm quý giá này. Đừng đổ lỗi cho mảng, hãy tự trách mình, rút ​​ra bài học và quản lý chúng một cách chính xác:

  • Hãy suy nghĩ ba lần trước khi sử dụng RAID5. Sau đó nói "không" và chuyển sang cấp độ RAID khác.
  • Chà mảng thường xuyên. Điều này có nghĩa là MD RAID sẽ đọc và so sánh dữ liệu trên các ổ đĩa và nó sẽ rung chuông nếu có gì đó không ổn (khối không khớp, không thể đọc được). Sau đó, bạn có thể thay thế hành vi xấu bằng các triệu chứng ban đầu. Các bản phân phối tốt có sẵn cấu hình này (ít nhất là Debian).
  • Giám sát các đĩa và mảng, để không bỏ sót các dấu hiệu quan trọng của sự cố.
  • Cuối cùng, chào mừng bạn đến với câu lạc bộ quản trị viên thường xuyên sao lưu dữ liệu của họ.
user9517 avatar
lá cờ cn
Điểm cuối cùng của bạn nên là điểm đầu tiên của bạn.
Nikita Kipriyanov avatar
lá cờ za
Câu hỏi không phải là "làm thế nào để quản lý mảng đúng cách", mà là "làm thế nào để khôi phục mảng". Vì vậy, về mặt kỹ thuật, điểm cuối cùng là *lạc đề*. Nhưng nó rất hữu ích, đây là lý do tại sao tôi đưa nó vào.
user9517 avatar
lá cờ cn
Sẽ không hại gì nếu củng cố thói quen tốt sớm và thường xuyên.
Nikita Kipriyanov avatar
lá cờ za
O.k., vậy đây là điểm *cuối cùng*, nơi tốt nhất để củng cố. Tôi đang cố gắng giúp đỡ, không phải để kết liễu người hỏi, người có lẽ đã vò đầu bứt tóc vì không sao lưu.
lá cờ cn
@NikitaKipriyanov Giới thiệu về p.1: Tại sao MD RAID lại 'khởi động' một ổ đĩa trong quá trình khôi phục? 'Đuổi ra ngoài' nghĩa là gì theo nghĩa này? Tôi đã mong đợi điều này sẽ dễ dàng hơn để giải quyết t.b.h. Ít nhất là miễn là các thành phần xấu không giao nhau. Tôi nghĩ rằng tôi có thể chỉ cần 1) hoán đổi đĩa bị lỗi đầu tiên 2) xây dựng lại RAID và 3) lặp lại quá trình này cho cả ba lần. Giả sử rằng tôi thay đĩa số 1, khả năng đĩa số 2 bị 'đá ra' trong quá trình xây dựng lại RAID có cao không?
Nikita Kipriyanov avatar
lá cờ za
1. MD RAID có trạng thái "fail" của đĩa. Đó là trạng thái khi đĩa được tính là một phần của mảng, nhưng không tham gia vào hoạt động I/O. MD có thể chuyển một đĩa sang trạng thái này nếu nó hoạt động "quá tệ", chẳng hạn như chậm (không đúng thời hạn), đưa ra nhiều lỗi I/O, v.v. 2. Ngay cả trên lý thuyết, bằng cách thực hiện cách "dễ dàng" này, bạn thực sự đánh mất cơ hội khôi phục tất cả các thành phần xấu của tất cả các đĩa khác. Bởi vì nó yêu cầu dữ liệu trong các cung trực tiếp của đĩa cũ đầu tiên mà bạn đã tráo đổi. Điều này một mình sẽ không thể chấp nhận được với tôi. Nhưng đây không phải là cảnh báo duy nhất.
Nikita Kipriyanov avatar
lá cờ za
(2. tiếp) Vấn đề chính là hoạt động của quá trình đồng bộ lại MD RAID khi nó gặp lỗi I/O. Tôi chưa bao giờ thực hiện quy trình này cho RAID5, nhưng trong trường hợp đồng bộ lại RAID1, tôi đã thấy như sau: nếu nó gặp phải khối không thể đọc được trên nguồn (ổ đĩa duy nhất hiện có bản sao hoàn chỉnh), nó sẽ khởi động lại quá trình đồng bộ lại từ bắt đầu. Và sau đó, nó tiếp tục cho đến khối xấu đầu tiên đó và khởi động lại. Nó không bao giờ vượt qua khối xấu đầu tiên. Chúng tôi đã từng giải quyết vấn đề này bằng cách bắt buộc ánh xạ lại khu vực xấu đó (`hdparm -w` nếu tôi nhớ, ouch). Đây là lý do tại sao kịch bản "dễ dàng" của bạn dường như hoàn toàn sai đối với tôi.
lá cờ cn
Tôi hiểu quan điểm của bạn: Khi xóa đĩa bị lỗi #1, tôi cũng đang xóa thông tin cần thiết một cách hiệu quả để xây dựng lại các khu vực không thể đọc được của đĩa bị lỗi #2. Tuy nhiên, giả sử tôi _add_ một đĩa mới vào mảng của mình, về mặt lý thuyết có thể lấp đầy đĩa đó bằng thông tin dư thừa để tôi có thể trao đổi và xây dựng lại từng đĩa bị lỗi không? Vấn đề 'chỉ' là không có công cụ để làm như vậy, tôi hoàn toàn không hiểu tại sao điều này về cơ bản là không thể?
Nikita Kipriyanov avatar
lá cờ za
Có, không có giải pháp tự động cho lỗi nhiều đĩa và không có bảo trì nhất quán nội tại, như tôi mô tả trong trang 4. Đó là RAID5, bạn nên biết điều này khi triển khai nó. Quy trình tôi đã mô tả trong trang 6 (nhân bản dữ liệu từ mảng đã lắp ráp) là cách giải quyết nó, dựa trên giả định trong trang 1). P.3 là cần thiết để đề phòng những trường hợp xấu nhất, bởi vì p.6 nói chung có thể là một hoạt động căng thẳng.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.