Tại sao ổ cứng bị hỏng đóng băng toàn bộ hệ thống?


128

Tại sao một ổ cứng được biết là có khối xấu (được xác minh trong HDTune và HDDScan), đóng băng toàn bộ hệ thống của tôi?

Nó không phải là ổ đĩa hệ điều hành; nó được gắn vào một cổng SATA khác và tôi đang cố sao chép các tập tin từ nó sang một ổ đĩa lành mạnh khác.

Tôi đã gặp vấn đề này với hầu hết mọi ổ cứng bị hỏng và mọi PC Windows.

Tôi sẽ chỉ thấy đóng băng cho chương trình tôi đang sử dụng để sao chép các tệp (Windows Explorer, v.v.), nhưng thay vào đó, toàn bộ PC của tôi bị giật và tôi không thể duyệt web hoặc xem phim trong khi sao chép tệp từ ổ đĩa bị hỏng.

Câu chuyện dài.

Tôi sống ở một vùng nông thôn, nơi có vấn đề với điện (mất điện, v.v.). Bản thân tôi đang sử dụng một UPS và ổ cứng của riêng tôi là hoàn toàn tốt. Nhưng hàng xóm của tôi thường yêu cầu trợ giúp về các vấn đề PC của họ và tôi thường thấy rằng ổ cứng của họ bị hỏng, rất có thể là do vấn đề về điện. Tất nhiên, sau khi thay thế ổ đĩa bị hỏng, tôi đề nghị hàng xóm mua một UPS.

Tôi đã luôn tự hỏi, tại sao PC của tôi đóng băng hoàn toàn trong khi lấy dữ liệu từ các ổ đĩa bị hỏng. Có phải là một vấn đề phần cứng? Có phải do cách hệ điều hành đọc dữ liệu? Đây có phải là thứ gì đó dành riêng cho Windows không và tôi sẽ không trải nghiệm nó trên * nix?

Dù sao, từ giờ trở đi tôi sẽ sử dụng một số phần mềm chuyên dụng (chẳng hạn như Máy photocopy không thể ngăn chặn của Roadkil) thay vì Windows Explorer, mặc dù tôi không chắc liệu nó có hoạt động khác không, mà không đóng băng toàn bộ PC.

Nó không phải là một yêu cầu giúp đỡ, nó là nhiều hơn cho mục đích giáo dục, vì vậy tôi biết tại sao mọi thứ hoạt động theo cách đó.


11
Sử dụng bao vây USB bên ngoài sẽ giúp ích, vì bạn không còn buộc đĩa bị lỗi vào bộ điều khiển SATA hệ thống của mình (đồng thời, thêm một lớp phần cứng có thể hy sinh giữa bo mạch chủ của bạn và đĩa bị lỗi luôn là một ý tưởng hay).
Matteo Italia

3
Nó không đặc trưng cho SATA, ổ đĩa IDE cũng làm điều này. Ngoài ra, chỉ vì đĩa bị hỏng không có nghĩa là bộ điều khiển không hoạt động, đặc biệt là nếu lỗi điện làm hỏng đĩa.
Chris H

Câu trả lời được chấp nhận là tuyệt vời, và chứa những gì tôi sẽ nói và nhiều hơn nữa. Về cơ bản, bạn đang hoảng loạn bộ điều khiển SATA của mình, đây là một thiết bị hệ thống cực kỳ quan trọng, đến lượt nó làm hoảng loạn Windows. Tôi tự hỏi nếu bật AHCI / "trao đổi nóng" trong BIOS sẽ cải thiện tình hình mặc dù.
Arthur Kay

Câu trả lời:


170

Đây là một trong những lĩnh vực mà SATA là tối ưu. Vấn đề là ở cấp độ giao thức kết nối thiết bị lưu trữ, và do đó không liên quan đến phần mềm bạn đang chạy. Sử dụng một máy photocopy tệp hoặc hệ điều hành khác sẽ không làm cho mọi thứ trở nên tốt hơn, ngoại trừ việc nó có thể cố gắng đặt các giá trị thời gian chờ khác nhau để giảm tác động của sự cố (có thể hoặc không thể tùy thuộc vào phần cứng và phần sụn; ).

Có một vài điểm quan trọng ở đây:

  1. Với SATA, nếu ổ đĩa ngừng đáp ứng, điều này có thể kết nối toàn bộ hệ thống lưu trữ, không chỉ một ổ đĩa đang gặp sự cố. Nó chắc chắn có khả năng kết nối toàn bộ bộ điều khiển và vì hầu hết các hệ thống tiêu dùng chỉ có một bộ điều khiển đĩa duy nhất (bộ tích hợp trên bo mạch chủ), điều này có nghĩa là tất cả lưu trữ. Thậm chí còn tệ hơn nếu ổ đĩa bị lỗi theo một số cách không chuẩn và / hoặc bất ngờ, điều này chắc chắn có thể xảy ra nếu ổ đĩa bị lề. Bạn có thể quan tâm Làm thế nào một đĩa đơn trong mảng phần cứng SATA RAID-10 có thể khiến toàn bộ mảng bị dừng lại? trên Lỗi máy chủ.
  2. Hầu hết các ổ đĩa SATA tiêu dùng có thời gian chờ mặc định dài (theo thứ tự phút) và nhiều ổ đĩa SATA tiêu dùng thiếu kiểm soát phục hồi lỗi cấu hình . Các ổ đĩa được gọi là "NAS" thường có ERC cấu hình và các ổ đĩa cao cấp hầu như luôn luôn làm như vậy; các ổ đĩa như vậy cũng có thể có thời gian chờ mặc định ngắn hơn (7 giây là giá trị chung). Thời gian chờ dài là thuận lợi nếu ổ đĩa giữ bản sao duy nhất của dữ liệu, điều không may là phổ biến trên các hệ thống tiêu dùng; chúng là một bất lợi trong cấu hình dự phòng hoặc nơi bạn chỉ muốn lấy càng nhiều càng tốt khỏi ổ đĩa trước khi nó xuống cấp hơn nữa.
  3. Một ổ đĩa sẽ tiếp tục cố gắng đọc một khu vực xấu cho đến khi nó đạt đến ngưỡng thời gian chờ của nó hoặc cho đến khi việc hủy bỏ được báo hiệu bởi máy chủ. Do bus SATA có thể bị trói khi chờ đọc xong, nên HĐH không thể báo hiệu hủy bỏ lệnh lưu trữ và trong trường hợp cực đoan, các ổ đĩa thậm chí có thể không đáp ứng tốt với thiết lập lại bus SATA trong tình huống như vậy

Điểm # 1 là một trong những điểm bán hàng chính cho SAS trên các máy chủ; SAS có khả năng xử lý lỗi tốt hơn đáng kể so với SATA. Điểm # 2 là giới hạn phần sụn ổ đĩa và # 3 trở thành vấn đề thực sự chỉ vì # 2.

Vì vậy, những gì xảy ra là hệ điều hành phát lệnh "đọc các ngành" vào đĩa và các lĩnh vực cụ thể bị hư hỏng theo cách nào đó. Do đó, đĩa chuyển sang chế độ thử lại để cố gắng lấy dữ liệu ra khỏi đĩa, thử đọc đi đọc lại cho đến khi nhận được dữ liệu đủ tốt để sửa lỗi ( FEC ) của đĩa có thể sửa cho các lỗi còn lại. Nếu bạn không may mắn, điều này có thể không bao giờ, nhưng ổ đĩa sẽ tiếp tục cố gắng trong một khoảng thời gian khá dài trước khi quyết định rằng việc đọc này sẽ không thành công.

Bởi vì hệ điều hành đang chờ đọc, điều này ít nhất sẽ làm chậm quá trình sao chép để thu thập dữ liệu và tùy thuộc vào kiến ​​trúc hệ điều hành chính xác có thể khiến HĐH bị giật hoặc thậm chí đóng băng trong suốt thời gian. Tại thời điểm này, đĩa đang bận với việc đọc ban đầu và sẽ không phản hồi các lệnh đọc thêm cho đến khi lệnh hiện đang thực thi kết thúc (thành công hoặc không thành công) và phần mềm khác thường không làm tốt hơn hệ điều hành. đang chạy

Do đó, bất cứ điều gì kích hoạt đọc ở nơi khác ( lý tưởng , chỉ trên ổ đĩa bị hỏng) sẽ phải chờ xếp hàng cho đến khi ổ đĩa bị hỏng đọc thành công khu vực được đề cập hoặc xác định rằng nó không thể đọc được. Do việc xử lý tối thiểu các ổ đĩa không phản hồi tối ưu của SATA, điều này có thể có nghĩa là không chỉ ổ đĩa bạn đang sao chép sẽ bị trì hoãn I / O. Điều này rất dễ khiến các phần mềm khác trở nên chậm hoặc không phản hồi, vì phần mềm đó chờ một yêu cầu I / O khác để kết thúc, ngay cả khi hệ điều hành có thể đối phó.

Điều quan trọng cần lưu ý ở đây là I / O đĩa có thể xảy ra mặc dù bạn không truy cập rõ ràng bất kỳ tệp nào trên đĩa. Hai nguyên nhân chính cho điều này sẽ là mã thực thi tải theo yêu cầu và trao đổi. Vì trao đổi đôi khi được sử dụng ngay cả khi hệ thống không chịu áp lực bộ nhớ và mã thực thi tải theo yêu cầu là phổ biến trên các hệ thống hiện đại và với các định dạng tệp thực thi hiện đại, hoạt động đọc đĩa ngoài ý muốn trong quá trình sử dụng bình thường là một khả năng rất thực tế.

Như Matteo Italia đã chỉ ra trong một nhận xét cho câu hỏi , một chiến lược giảm thiểu là sử dụng một kết nối lưu trữ khác, đây là một cách phức tạp để nói "đặt đĩa vào vỏ USB". Bằng cách trừu tượng hóa thông qua giao thức lưu trữ dung lượng lớn USB , phần này tách biệt phần SATA có vấn đề với phần còn lại của hệ thống của bạn, điều đó có nghĩa là về mặt lý thuyết , chỉ có I / O trên đĩa cụ thể đó bị ảnh hưởng bởi các vấn đề I / O trên đĩa đó.

Nói một chút, đây là lý do tại sao SATA (đặc biệt là SATA không có ERC cấp ổ đĩa) thường không được khuyến khích cho RAID (đặc biệt là các cấp RAID có dự phòng, trong số các tiêu chuẩn đều là ngoại trừ RAID 0 ); thời gian chờ dài và xử lý lỗi kém có thể dễ dàng khiến toàn bộ thiết bị bị loại khỏi mảng cho một khu vực xấu duy nhất, bộ điều khiển RAID có thể xử lý tốt nếu có dư thừa và bộ điều khiển lưu trữ chỉ đơn giản biết rằng đây là sự cố. SAS được thiết kế cho các mảng lưu trữ lớn và do đó với mong muốn thỉnh thoảng sẽ xảy ra sự cố trên các ổ đĩa khác nhau, dẫn đến việc nó được thiết kế để xử lý trường hợp một ổ đĩa có vấn đề hoặc yêu cầu I / O một cách duyên dángngay cả khi ổ đĩa không. Các đĩa có vấn đề không phổ biến lắm trong các hệ thống tiêu dùng đơn giản vì các đĩa có xu hướng không có nhiều đĩa được cài đặt và các đĩa được cài đặt hầu như không bao giờ có dự phòng; Do SATA nhằm mục đích thay thế PATA / IDE chứ không phải SCSI (sau này là mục tiêu mà SAS hướng tới), nên có khả năng các tính năng và yêu cầu xử lý lỗi (hoặc bảo đảm) của nó được coi là phù hợp với trường hợp sử dụng dự định của nó.


19
Cảm ơn vì đã thực sự đăng một câu trả lời hợp lý giải thích những gì đang diễn ra. Đây là loại câu hỏi mà tôi thường thấy những câu trả lời mơ hồ như "bởi vì hệ thống đang chờ ổ đĩa" hoặc "bởi vì nó được thiết kế theo cách đó".
Mehrdad

4
@kasperd: Khá nhiều. Mặc dù một phần của nó cũng là "lỗi" của Windows, vì nó có thể xảy ra dễ dàng với nhiều bộ điều khiển. IMO câu trả lời này là một chút mơ hồ có chủ ý , xem như bộ điều khiển doanh nghiệp SAS cũng không tránh khỏi vấn đề. Nó thực sự chỉ sôi sục với các yêu cầu I / O chặn nhất định. Một số hoạt động của ổ cứng yêu cầu hoạt động X phải được đảm bảo kết thúc trước khi vận hành Y và nếu X không bao giờ kết thúc, Y không bao giờ có thể bắt đầu - và bất cứ điều gì sau khi Y cũng bị kẹt, hãy xác định xem ổ đĩa, bộ điều khiển, trình điều khiển hoặc HĐH đang ở lỗi.
qasdfdsaq

2
@JustAMartin Trên thực tế, hầu như tất cả đều không đồng bộ - mọi thiết bị ngoại vi hỗ trợ DMA ngày nay đều đầy đủ không đồng bộ; hạt nhân chỉ lập lịch các yêu cầu và xử lý các ngắt báo hiệu yêu cầu được thực hiện. Vấn đề là đôi khi bạn phải chờ cho hoạt động hoàn tất - và trong quá trình đó, họ có thể chặn thứ gì đó quan trọng. Như user20574 đã lưu ý, bộ nhớ ảo là một trong số đó, nhưng có rất nhiều thứ cần một số đảm bảo. Một số phần của kernel không đồng bộ, và tất nhiên, một số trình điều khiển / thiết bị chỉ đơn giản là hút.
Luaan

2
@ MichaelKjorling "Vì hệ điều hành đang chờ đọc, điều này ít nhất sẽ làm chậm quá trình sao chép để thu thập dữ liệu và tùy thuộc vào kiến ​​trúc hệ điều hành chính xác có thể khiến HĐH bị giật hoặc thậm chí đóng băng trong suốt thời gian." - Tại sao chính xác hệ điều hành trở nên giật trong trường hợp đọc từ ổ đĩa thứ cấp (không phải hệ thống)? Sự cố không thể hoàn toàn do hành vi xử lý lỗi của bộ điều khiển SATA. Tôi nghĩ rằng câu trả lời này có thể được hưởng lợi từ thông tin về cách Windows xử lý lỗi trong hệ thống con đĩa của nó.
Jordan Rieger

1
@ MichaelKjorling Hội chợ đủ. Câu trả lời có nhiều thông tin hay, nhưng tôi nghĩ nó không giải thích được kịch bản cụ thể của OP. Để đến với nó từ một góc độ khác, bạn có thể trích dẫn bất kỳ tài liệu tham khảo nào để sao lưu điểm số 1 của mình: "Với SATA, nếu ổ đĩa ngừng phản hồi, điều này có thể buộc toàn bộ hệ thống lưu trữ, không chỉ một ổ đĩa đang gặp sự cố Nó chắc chắn có tiềm năng để buộc toàn bộ bộ điều khiển. " ? Đây dường như là một thiết kế khủng khiếp. Có phải hệ thống con đĩa hệ điều hành là thủ phạm có nhiều khả năng hơn? Tức là bộ điều khiển không đồng bộ, nhưng trình điều khiển hệ điều hành đôi khi chặn không cần thiết.
Jordan Rieger

3

Như đã nêu ở trên, vấn đề đóng băng hệ thống do ổ cứng xấu chủ yếu là do ổ đĩa cố gắng phục hồi dữ liệu không thể đọc được từ các thành phần xấu. Một trong những điểm bán ổ đĩa doanh nghiệp là thời gian chờ đọc rất ngắn cho các lĩnh vực thất bại. Sử dụng ổ đĩa doanh nghiệp có thể giảm thiểu các vấn đề của bạn ở một mức độ nào đó, nhưng sẽ không giải quyết chúng.

Câu trả lời tốt nhất, tiến về phía trước, là duy trì các bản sao lưu thích hợp để không cần phục hồi. Thay đổi phần mềm khôi phục sẽ không tạo ra sự khác biệt vì đây là vấn đề hết thời gian phần sụn.


2

Tại sao ổ cứng bị hỏng đóng băng toàn bộ hệ thống?

Họ không phải (nói chung). Nó thực sự phụ thuộc vào hệ thống tệp cụ thể về cách xử lý lỗi đĩa.

Hãy xem xét ZFS, được thiết kế từ đầu để đối phó với khả năng chịu lỗi khá cao. Đây là một video demo (và một video có nhiều giải thích hơn ) nơi họ đặt các ổ đĩa đang chạy trên một cái đe, xoay một cái búa bằng búa tạ và khoan một ổ đĩa khác. Tất cả trong khi ZFS tiếp tục chạy.


2
Trên thực tế, có những lỗi đĩa mà ZFS không xử lý tốt. Ví dụ, đọc rất dài trước khi hết yêu cầu I / O, trong các thiết lập dự phòng hoặc không dự phòng. . trở nên không có sẵn. Nếu được đặt với failmode = Wait, điều này có thể hiển thị kết quả tương tự. Lỗi toàn bộ đĩa là trường hợp dễ dàng cho mọi hệ thống con lưu trữ; đó là ổ đĩa biên gây ra vấn đề.
một CVn

Và trước khi bạn nghĩ khác, tôi thực sự tự chạy ZFS (gần như độc quyền). Đó là một hệ thống tệp tuyệt vời và trình quản lý âm lượng tuyệt vời, nếu bạn cẩn thận và biết bạn đang làm gì. Tuy nhiên, nó được thiết kế cho các hệ thống cấp doanh nghiệp (máy trạm và máy chủ cao cấp), với các quản trị viên được trả tiền để biết họ đang làm gì. Nó không được thiết kế để xử lý tốt một số chế độ lỗi được thấy trong phần cứng hàng hóa, bao gồm các sự cố RAM và ổ đĩa mất quá nhiều thời gian để trả về từ yêu cầu I / O và nó không được thiết kế để dễ sử dụng cho người dùng gia đình hoặc trong trường hợp sử dụng nhà.
một CVn

Ngoại trừ trong video, ZFS không tiếp tục chạy. Nó bắt đầu chạy lại sau khi ngắt kết nối ổ đĩa.
Christoffer Hammarström

-2

Tôi nghĩ rằng vấn đề bạn gặp phải là một phần cấp thấp của HĐH đã cố gắng nhiều lần để đọc các khối xấu trước khi bỏ cuộc. Thủ tục này được thực hiện ở mức độ thấp trong trường hợp cần thiết trong quá trình khởi động hoặc hoạt động độc lập khác, và do đó rất khó để làm cho nó được đăng ký lại. Hệ điều hành sẽ trang liên tục trong quá trình hoạt động bình thường và rất khó để ưu tiên cho các yêu cầu cạnh tranh vì hệ thống cấp thấp sẽ không biết mức độ ưu tiên của quy trình sở hữu yêu cầu phân trang.


6
Các 'hệ thống cấp thấp' không biết ưu tiên hàng đầu của một quá trình đang yêu cầu một trang; thông tin đó được lưu giữ trong các bảng trang , mặc dù việc triển khai phụ thuộc vào hệ thống vào cách xử lý mức độ ưu tiên. Đây không phải là câu trả lời chính xác cho câu hỏi - đây là vấn đề phần cứng, không phải vấn đề hệ điều hành.
Chris Cirefice

1
Tôi nghĩ rằng câu trả lời chính xác cho câu hỏi là từ chối sử dụng ổ đĩa bị lỗi. Tuy nhiên, điều này sẽ không thỏa mãn những người dùng muốn phục hồi càng nhiều dữ liệu càng tốt.
jrrk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.