Điểm:14

Why is mdadm unable to deal with an "almost failed" disk?

lá cờ gb

Multiple times in my career now I've come across mdadm RAID sets (RAID1+0, 5, 6 etc) in various environments (e.g. CentOS/Debian boxes, Synology/QNAP NASes) which appear to be simply unable to handle failing disk. That is a disk that is not totally dead, but has tens of thousands of bad sectors and is simply unable to handle I/O. But, it isnt totally dead, it's still kind of working. The kernel log is typically full of UNC errors.

Sometimes, SMART will identify the disk as failing, other times there are no other symptoms other than slow I/O.

The slow I/O actually causes the entire system to freeze up. Connecting via ssh takes forever, the webGUI (if it is a NAS) stops working usually. Running commands over ssh takes forever as well. That is until I disconnect / purposely "fail" the disk out of the array, then things go back to "normal" - that is as normal as they can be with a degraded array.

I'm just wondering, if a disk is taking so long to read/write from, why not just knock it out of the array, drop a message in the log and keep going? It seems making the whole system grind to a halt because one disk is kinda screwy totally nullifies one of the main benefits of using RAID (fault tolerance - the ability to keep running if a disk fails). I can understand that in a single-disk scenario (e.g. your system has as single SATA disk connected and it is unable to execute read/writes properly) this is catastrophic, but in a RAID set (especially the fault tolerant "personalities") it seems not only annoying but also contrary to common sense.

Is there a very good reason the default behavior of mdadm is to basically cripple the box until someone remotes in and fixes it manually?

lá cờ in
Một phần lỗi này không phải do `mdadm` mà do nhân Linux. Việc đóng băng tương tự cũng được biết là xảy ra với các lần gắn kết NFS không thành công, v.v. Nguyên nhân sâu xa là Linux, không giống như Windows, chủ yếu là đồng bộ. Với I/O không đồng bộ, hạt nhân đưa ra yêu cầu và có thể thực hiện những việc khác trong khi phần cứng thực hiện I/O. Mdadm thậm chí không nên ở vị trí có thể ảnh hưởng đến SSH, chứ đừng nói đến việc đóng băng nó.
Điểm:13
lá cờ in

Nhìn chung, mục đích của một đột kích, tùy thuộc vào cấp độ Đột kích đã chọn, mang lại sự cân bằng khác nhau giữa các mục tiêu chính dữ liệu dự phòng, khả dụng, hiệu suấtdung tích.

Căn cứ vào yêu cầu cụ thể, trách nhiệm của chủ kho để quyết định sự cân bằng của các yếu tố khác nhau là phù hợp với mục đích nhất định, để tạo ra một đáng tin cậy giải pháp.

Công việc của giải pháp Raid đã chọn (ở đây trong trường hợp này chúng ta nói về phần mềm mdadm) là để đảm bảo bảo vệ dữ liệu trước hết. Với ý nghĩ đó, rõ ràng rằng nhiệm vụ của giải pháp đột kích không phải là coi tính liên tục của doanh nghiệp cao hơn tính toàn vẹn của dữ liệu.

Nói cách khác: Công việc của mdadm là tránh một cuộc đột kích thất bại. Miễn là một "đĩa hoạt động kỳ lạ" không bị hỏng hoàn toàn, nó vẫn góp phần vào cuộc đột kích.

Vậy tại sao không loại bỏ một đĩa hoạt động kỳ lạ ra khỏi mảng, bỏ một thông báo vào nhật ký và tiếp tục? Bởi vì làm như vậy sẽ làm tăng nguy cơ mất dữ liệu.

Ý tôi là, bạn đúng, trong thời điểm hiện tại, từ góc độ kinh doanh, có vẻ như giải pháp tốt hơn là tiếp tục.Tuy nhiên, trên thực tế, thông báo đã được đưa vào nhật ký có thể vẫn không bị phát hiện, vì vậy trạng thái xuống cấp của cuộc đột kích vẫn không bị phát hiện. Một thời gian sau, cuối cùng một đĩa khác trong cùng một cuộc đột kích cũng bị lỗi, dẫn đến dữ liệu được lưu trữ trong cuộc đột kích thất bại cuối cùng cũng biến mất.


Thêm vào đó: Thật khó để xác định chính xác "đĩa hoạt động kỳ lạ" là gì. Thể hiện theo cách khác: Điều gì vẫn là hành vi vận hành có thể chấp nhận được của một đĩa đơn, được vận hành trong một mảng đĩa?

Một số người trong chúng ta có thể trả lời "đĩa hiển thị một số lỗi". Những người khác có thể trả lời: "Miễn là lỗi có thể được sửa chữa, tất cả đều ổn". Những người khác có thể trả lời: "Miễn là đĩa trả lời tất cả các lệnh trong một thời gian nhất định, tất cả đều ổn". Những người khác nói "trong trường hợp nhiệt độ đĩa chênh lệch hơn 5°C so với nhiệt độ trung bình của tất cả các đĩa trong cùng một mảng". Một câu trả lời khác có thể là "miễn là quá trình xóa không hiển thị lỗi" hoặc "miễn là SMART không hiển thị lỗi".

Những gì được viết không dài và cũng không phải là một danh sách đầy đủ.

Vấn đề là định nghĩa về "hành vi chấp nhận được của đĩa" là vấn đề diễn giải và do đó cũng là trách nhiệm của chủ sở hữu bộ nhớ chứ không phải là điều mà mdadm phải tự quyết định.

Điểm:7
lá cờ ca

Vấn đề chính là ổ đĩa SATA bị lỗi đôi khi có thể đóng băng toàn bộ bus trong suốt thời gian quy trình khôi phục lỗi nội bộ của nó. Vì lý do này, người ta nên sử dụng kích hoạt TLER chỉ ổ đĩa trong mảng RAID (và tốt nhất là kiểu cấp doanh nghiệp).

Các ổ đĩa SAS ít bị vấn đề này hơn, nhưng cũng không hoàn toàn thoát khỏi vấn đề này.

Michael Hampton avatar
lá cờ cz
Điểm tốt về TLER. Rất dễ quên điều này.
Điểm:3
lá cờ za

Ngoài những gì đã nói, tôi muốn thêm xu của mình, nhưng đây là điều quan trọng cần cân nhắc.

một ổ đĩa không khi khu vực là chậm để đọc?

Các ổ đĩa được cho là được thiết kế để hoạt động một mình, e. g. ổ đĩa "máy tính để bàn" thông thường, cho rằng không có cách nào khác để truy xuất dữ liệu được lưu trữ trong khu vực xấu đó. Họ sẽ cố gắng truy xuất dữ liệu bằng mọi giá, lặp đi lặp lại nhiều lần trong một khoảng thời gian dài. Tất nhiên, họ cũng sẽ đánh dấu khu vực đó là không thành công, vì vậy họ sẽ ánh xạ lại khu vực đó vào lần tới khi bạn viết thư cho nó, nhưng bạn phải viết cho điều đó. Cho đến khi bạn viết lại nó, họ sẽ nghẹt thở mỗi khi bạn đọc từ chỗ đó. Trong cài đặt RAID, điều này có nghĩa là đối với RAID, ổ đĩa vẫn hoạt động và không có lý do gì để loại bỏ nó, nhưng đối với ứng dụng, mảng sẽ chậm lại khi thu thập dữ liệu.

Mặt khác, các ổ đĩa "doanh nghiệp", đặc biệt là ổ đĩa "có thương hiệu", thường cho rằng chúng luôn được sử dụng trong cài đặt RAID. Bộ điều khiển "thương hiệu", nhìn thấy ổ đĩa "có thương hiệu", thậm chí có thể thông báo phần sụn của họ về sự hiện diện của RAID. Vì vậy, ổ đĩa sẽ ngừng hoạt động sớm và báo cáo lỗi I/O, ngay cả khi có thể thực hiện thêm vài lần nữa và đọc khu vực này. Sau đó, bộ điều khiển có cơ hội trả lời nhanh hơn, phản chiếu hướng dẫn đọc tới ổ đĩa anh chị em (và loại bỏ ổ đĩa xấu ra khỏi mảng). Khi bạn rút ra và khám phá/kiểm tra kỹ lưỡng ổ đĩa đã kích hoạt đó, bạn sẽ thấy không có vấn đề rõ ràng nào — chỉ bị chậm lại trong giây lát và điều đó đủ để ngừng sử dụng nó, theo logic của bộ điều khiển.

Tôi suy đoán đây có thể là duy nhất sự khác biệt giữa ổ đĩa "máy tính để bàn" và ổ đĩa NL-SAS và SATA "có thương hiệu"/"doanh nghiệp". Đây có lẽ là lý do tại sao bạn phải trả gấp ba lần khi mua ổ đĩa "HPE" do Toshiba thực sự sản xuất, so với việc mua ổ đĩa mang nhãn hiệu "Toshiba".


Tuy nhiên, một số ổ đĩa hỗ trợ một số điều khiển chung về điều này. Nó được gọi là SCT ERC mà shands cho Kiểm soát khôi phục lỗi vận chuyển lệnh SMART. Đây là cách nó nhìn vào thông minh:

không được hỗ trợ

# smartctl --all /dev/sda
=== BẮT ĐẦU ĐỌC PHẦN DỮ LIỆU THÔNG MINH ===
Khả năng SCT: (0x3037) Hỗ trợ trạng thái SCT.
                                        Hỗ trợ kiểm soát tính năng SCT.
                                        Bảng dữ liệu SCT được hỗ trợ.

hỗ trợ

=== BẮT ĐẦU ĐỌC PHẦN DỮ LIỆU THÔNG MINH ===
...
Khả năng SCT: (0x003d) Hỗ trợ trạng thái SCT.
                                        Hỗ trợ kiểm soát khôi phục lỗi SCT.
                                        Hỗ trợ kiểm soát tính năng SCT.
                                        Bảng dữ liệu SCT được hỗ trợ.

Nếu may mắn, bạn có thể điều khiển tính năng này bằng thông minh. Bạn có thể truy xuất hoặc đặt hai thời gian chờ, thời gian cố gắng đọc lại và thời gian cố gắng viết lại:

# smartctl -l scterc /dev/sda
Kiểm soát khôi phục lỗi SCT:
           Đọc: 70 (7,0 giây)
          Viết: 70 (7,0 giây)

# smartctl -l scterc /dev/sde
Kiểm soát khôi phục lỗi SCT:
           Đọc: Vô hiệu hóa
          Viết: Vô hiệu hóa

# smartctl -l scterc /dev/sdd
Cảnh báo: thiết bị không hỗ trợ lệnh SCT Error Recovery Control
smartctl -l scterc,120,60 /dev/sde

Có nghĩa là: 120 phần mười giây để thử đọc lại; 60 phần mười giây để thử viết lại. Số không có nghĩa là "thử lại cho đến khi bạn chết". Các ổ đĩa khác nhau có cài đặt mặc định khác nhau cho việc này.

Vì vậy, nếu bạn chỉ sử dụng ổ đĩa "phiên bản RAID", tốt hơn hết hãy đặt thời gian chờ ERC thành 0, nếu không bạn có thể mất dữ liệu. Mặt khác, nếu bạn sử dụng ổ đĩa trong RAID, tốt hơn nên đặt một số cài đặt khác không thấp hợp lý.

Nguồn bởi amarao @ Habrahabr, bằng tiếng Nga.

Tái bút Và một lưu ý về SAS. Sử dụng sdparm, nó hỗ trợ nhiều điều khiển hơn về điều này.

lá cờ cn
Đây là câu trả lời đúng. Không sử dụng ổ đĩa máy tính để bàn cho RAID (và ngược lại).
Nikita Kipriyanov avatar
lá cờ za
Trên thực tế, câu trả lời gần như hoàn toàn ngược lại. Nó nói: bạn có thể sử dụng (một số) ổ đĩa máy tính để bàn cho RAID và ngược lại, * miễn là * bạn đang thực hiện một số cấu hình nhất định. Và nó cũng gợi ý cấu hình nào.
lá cờ cn
Bạn có thể điều chỉnh ổ đĩa máy tính để bàn cho công việc RAID, nhưng bạn không thể chắc chắn cho đến khi bạn kiểm tra nó: một số nhà sản xuất được biết là đã gian lận với hành vi phần sụn của họ trong quá khứ. Lời khuyên chung vẫn là mua đúng ổ đĩa cho đúng công việc. Chọn IronWolf chứ không phải Barracuda, WD Red chứ không phải WD Blue cho RAID, và tất cả sẽ ổn thôi.
Nikita Kipriyanov avatar
lá cờ za
Tôi đã thử nghiệm một số. Tác giả của bài báo mà tôi đã liên kết để kiểm tra *rất nhiều* trong số họ. Vấn đề với các ổ đĩa trong RAID "tự chế" không chỉ là phần sụn trong các ổ đĩa. Ví dụ: hãy nhớ video https://www.youtube.com/watch?v=tDacjrSCeq4 nơi anh chàng hét vào đĩa cứng và tất cả chúng bắt đầu bỏ lỡ các bản nhạc; vì vậy vấn đề rung động và nhà ở. // Ý tưởng RAID bắt nguồn từ mong muốn xây dựng dịch vụ đáng tin cậy dựa trên các bộ phận rẻ tiền không đáng tin cậy (đó là từ viết tắt của "I"). Các nhà tiếp thị phần cứng muốn có tiền, vì vậy họ muốn làm hỏng ý tưởng về sự rẻ tiền, nhưng không giúp được gì cho họ. Đừng ủng hộ ma quỷ.
lá cờ cn
Tôi ủng hộ cho độ tin cậy và tính chuyên nghiệp. Tôi thiết lập mảng lưu trữ như một cuộc sống. Thành thật mà nói, việc HP hay Dell đang thực sự moi móc khách hàng của họ là hoàn toàn trực tiếp với câu hỏi này.Chênh lệch giá giữa Barracuda và Ironwolf hay WD Blue vs Red là khoảng 10%, mức giá khá hợp lý để mua yên tâm mà không phải mất công thêm. Mọi người thậm chí không thực hiện sao lưu đúng cách và bạn muốn họ chạy thử đĩa của mình? Hãy thực tế. Nếu mọi người sẵn sàng làm bài tập về nhà, họ sẽ không mua máy chủ Dell chạy Windows.
Điểm:1
lá cờ in

Tôi đã gặp trường hợp đĩa không hoạt động nhưng đã lấy được bộ điều khiển theo một cách nào đó.

Về mặt lịch sử, điều này có thể xảy ra với PATA, trong đó các ổ đĩa chính và ổ đĩa phụ nằm trên cùng một dây cáp và một ổ đĩa bị lỗi có thể ảnh hưởng đến quyền truy cập vào ổ đĩa vẫn còn tốt. Việc xóa ổ đĩa bị lỗi có thể cho phép truy cập lại vào ổ đĩa còn lại hoặc có thể cần một chu kỳ cấp nguồn nhưng cuộc đột kích có thể bị xuống cấp và sau đó quá trình khôi phục có thể bắt đầu.

SATA ít bị ảnh hưởng bởi điều này, nhưng bộ điều khiển vẫn có thể bị ảnh hưởng. Theo kinh nghiệm của tôi về các cuộc đột kích phần mềm, có nhiều nội dung đẫm máu bị lộ ra ngoài sẽ bị che giấu bởi một bộ điều khiển đột kích chuyên dụng đẹp hơn.

Tôi chưa từng trải nghiệm điều này với SAS hoặc NVME, nhưng SAS thường có nghĩa là các bộ điều khiển đột kích phần cứng có nhiều thông minh xử lý đĩa hơn bên trong.

Đă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.