Làm thế nào là selftests SMART liên quan đến badblocks?


14

Công cụ smartctl cho phép bắt đầu tự kiểm tra ( smartctl -t long /dev/sda) dài. Tuy nhiên badblocks, tôi cũng có thể chạy trên một ổ đĩa. Làm thế nào là hai liên quan? Nếu badblocks phát hiện các khối xấu, ổ đĩa có tự động cập nhật các giá trị SMART của nó không (ví dụ: bằng cách cập nhật số lượng các vùng được di dời)? Badblocks có thể thay thế smartctl -t long, hoặc ngược lại?

Câu trả lời:


5

Tôi phải không đồng ý với voretaq7 - SMART không phải là phép thuật. Khi bạn có một ổ đĩa và một trong những lĩnh vực của nó bị hỏng, bạn sẽ không thể đọc dữ liệu từ nó nữa. Vì vậy, hoàn toàn có thể có một tệp không thể đọc được trên một ổ đĩa hiện đại. SMART sẽ đánh dấu khu vực không thể đọc này là "Đang chờ xử lý hiện tại" và "Không thể ngoại tuyến" khi nó được truy cập lần đầu tiên sau khi thất bại.

Nhưng khi khu vực này được viết lại một lần nữa thì nó sẽ được ánh xạ lại vào không gian ánh xạ lại, không được đánh dấu và bộ đếm "Reallocated_Sector_Ct" sẽ tăng lên. Sau đó, toàn bộ ổ đĩa sẽ được đọc lại.

smartctl -t longkiểm tra rất hữu ích - nó sẽ kiểm tra toàn bộ dung lượng ổ đĩa cho các khu vực không thể đọc được và ghi nhật ký và đánh dấu là "Đang chờ xử lý hiện tại" và "Ngoại tuyến không thể sửa chữa" khu vực xấu đầu tiên gặp phải khi chạy. Tôi đang định cấu hình máy chủ của mình để chạy thử nghiệm dài này mỗi tuần một lần trên mỗi ổ đĩa. Nó không ảnh hưởng đến các chức năng ổ đĩa thông thường quá nhiều, vì các yêu cầu HĐH luôn được ưu tiên hơn so với quét SMART.

Như trên máy chủ, tôi luôn chạy các đĩa trong máy nhân bản RAID1, vì vậy khi kiểm tra dài tìm thấy một khu vực xấu, tôi có thể viết lại nội dung của nó bằng cách sử dụng dữ liệu từ một ổ đĩa khác trong máy nhân bản, buộc phải phân bổ lại.

badblocksđôi khi cũng hữu ích - ví dụ: nó sẽ kiểm tra toàn bộ ổ đĩa và sẽ không dừng ở lỗi đầu tiên. Nó có thể kiểm tra một phân vùng duy nhất hoặc bất kỳ phần nào khác của ổ đĩa. Bạn có thể sử dụng nó để nhanh chóng kiểm tra xem một khối xấu đã được phân bổ lại thành công hay chưa.


11

Giống như tôi đã chỉ ra trong câu trả lời khác của tôi , mọi ổ cứng hiện đại đều có không gian ánh xạ có sẵn (vì đặc biệt là ở mật độ đĩa ngày nay, không có đĩa platter nào sẽ hoàn hảo - sẽ luôn có một vài lỗi mà ổ đĩa phải khắc phục xung quanh, ngay cả trên thương hiệu -new-chưa bao giờ được sử dụng-đi-ra-khỏi-lắp ráp-dây chuyền vào tay tôi).

Do đó, về mặt lý thuyết, bạn nên báo cáo lỗi thông báo trước khi có badblocksthông báo nào đó như các thông báo xấu (người dùng cuối có thể nhìn thấy) trên một ổ đĩa.
Trên các đĩa cứng hiện đại, bất kỳ thành phần xấu nào có thể nhìn thấy của người dùng cuối (như có thể được báo cáo bởi badblockshoặc được hệ điều hành tự động phát hiện) là một tiếng thở hổn hển cuối cùng của một đĩa chết.


Cuối cùng SMART và badblockskiểm tra hai thứ khác nhau, nhưng có liên quan:

SMART là một công cụ tự giám sát:

Ổ cứng biết một số thông tin về các thông số vận hành của nó và có một số kiến ​​thức tổng hợp về những gì là "bình thường" đối với một số người và "chấp nhận được" đối với những người khác.
Nếu ổ đĩa cảm thấy rằng một số tham số nhất định là "bất thường" hoặc "không thể chấp nhận", nó sẽ báo cáo tình trạng trước khi hỏng - nói cách khác, ổ đĩa vẫn hoạt động, nhưng có thể bị hỏng sớm.

Ví dụ: Động cơ trục chính thường rút 0,10 ampe, nhưng bây giờ nó rút ra 0,5 ampe - một mức cao bất thường có thể cho thấy trục bị ràng buộc hoặc chất bôi trơn vĩnh viễn trên vòng bi đã biến mất. Cuối cùng, động cơ sẽ không thể vượt qua lực cản và ổ đĩa sẽ bị chiếm giữ.

Một ví dụ khác: Ổ đĩa có 1000 khối "ánh xạ lại" để đối phó với các thành phần xấu. Họ đã sử dụng 750 người trong số họ và các kỹ sư chế tạo ổ đĩa đã xác định rằng số lần sửa lại cho thấy có gì đó không ổn trong nội bộ (đĩa xấu, lỗi tuổi già, đầu bị hỏng) - ổ đĩa sẽ báo cáo tình trạng hỏng trước cho phép bạn có thời gian để nhận dữ liệu của bạn tắt trước khi hết dung lượng ánh xạ lại và các thành phần xấu sẽ hiển thị.

SMART đang tìm kiếm nhiều hơn các lĩnh vực xấu - đó là một đánh giá toàn diện hơn về sức khỏe của ổ đĩa. Bạn có thể có cảnh báo trước sự cố SMART trên ổ đĩa không có thành phần xấu và không có lỗi đọc / ghi (ví dụ: sự cố động cơ trục chính tôi đã mô tả ở trên).


badblocks là một công cụ với mục đích cụ thể (lỗi thời): Tìm các thành phần xấu.

badblocksđến từ một thời gian trước khi SMART và ánh xạ lại khu vực xấu. Trước đó, chúng tôi biết các ổ đĩa có sự không hoàn hảo, nhưng cách duy nhất để vạch ra chúng để ngăn chặn việc vô tình lưu trữ dữ liệu ở đó là kiểm tra căng thẳng đĩa, gây ra lỗi và sau đó nhớ không đặt dữ liệu ở đó nữa.

Lý do tôi nói nó đã lỗi thời là vì các thiết bị điện tử trên các ổ đĩa hiện đại đã làm những gì badblocks, bên trong và nhanh hơn vài nghìn lần. badblocksvề cơ bản cho phép các ổ đĩa cổ thiếu các thiết bị điện tử tinh vi để ánh xạ lại (hoặc bỏ qua) các khu vực đã bị lỗi, nhưng các ổ đĩa cứng hiện đại đã phát hiện các khu vực bị lỗi và sắp xếp lại chúng cho bạn.

Về mặt lý thuyết, bạn có thể sử dụng badblocksdữ liệu để có lỗi hệ điều hành (có thể nhìn thấy) như thể đĩa hiện đại của bạn là đĩa Winchester cổ, nhưng cuối cùng lại phản tác dụng - Giống như tôi đã nói trước đây BẤT K sector thành phần xấu nào được phát hiện badblockstrên ổ đĩa hiện đại là nguyên nhân để loại bỏ toàn bộ ổ đĩa bị lỗi (hoặc sắp hỏng).

Các thành phần xấu có thể nhìn thấy cho thấy ổ đĩa đã hết dung lượng ánh xạ lại, điều này tương đối hiếm đối với các đĩa hiện đại trừ khi chúng đã cũ (gần hết tuổi thọ chức năng) hoặc bị lỗi (đĩa / đầu xấu từ nhà máy).


Vì vậy, về cơ bản, nếu chạy badblockstrên đĩa trước khi bạn triển khai nó trong sản xuất, bạn sẽ cảm thấy tốt hơn và tiếp tục làm điều đó, nhưng nếu đĩa của bạn được sản xuất trong thế kỷ này và nó hiển thị một khu vực xấu có thể nhìn thấy, bạn nên tặc nó vào thùng rác (hoặc gọi vào bảo hành của nó). Đối với tiền của tôi, trạng thái SMART và phòng thủ theo chiều sâu là cách sử dụng thời gian của tôi tốt hơn so với kiểm tra đĩa thủ công.


1
Được rồi, điều đó giải thích sự khác biệt giữa SMART và badblocks rất tốt. Nhưng điều này có nghĩa là theo dõi trạng thái SMART là đủ hay tôi cũng phải chạy các bài kiểm tra SMART dài một lần nếu tôi muốn cảnh báo SMART tắt chính xác? Tức là tôi nên chạy smartctl -t long /dev/sdamột lần trong một thời gian, hoặc tôi có thể cho rằng điều đó smartdsẽ "tự động" cảnh báo tôi về những vấn đề sắp xảy ra mà không cần tôi phải thiết lập bất cứ điều gì khác?
Hongli Lai

Đó là một quyết định chỉ bạn có thể đưa ra, tuy nhiên SMART không được thiết kế để yêu cầu can thiệp thủ công (nó "Chỉ hoạt động" và bạn thường không nên nhầm lẫn với nó). Tin tưởng vào phần cứng của bạn (ít nhất là trong phạm vi giới hạn này), bởi vì nếu bạn không thể tin tưởng vào phần cứng của mình, bạn cũng có thể đóng gói và về nhà.
voretaq7

1
"Các ổ đĩa hiện đại đã làm những gì badblocks làm, bên trong và nhanh hơn vài nghìn lần" badblocksđọc từng byte từ ổ đĩa, ghi đè lên chúng bằng các mẫu ngẫu nhiên, sau đó đưa dữ liệu gốc trở lại. Tự kiểm tra SMART không làm điều này. Điều này sẽ xóa bất kỳ lĩnh vực "đang chờ xử lý", nếu tôi hiểu chính xác.
endolith

4
@endolith Các bài kiểm tra không tương đương trực tiếp, nhưng mục đích chúng phục vụ là tương đương (khám phá và cho phép ánh xạ lại các thành phần xấu). Điểm chính của tôi là đoạn cuối: nếu bạn muốn chạy badblocks như một người tập đĩa (để xem liệu bạn có thể gây ra lỗi SMART không vì nó tìm thấy một loạt các khối xấu), nhưng nếu bạn đang chạy badblocks ngay hôm nay với sau đó tải danh sách chặn xấu để tránh sử dụng các khu vực đó (như chúng ta đã làm trong thời kỳ đồ đá) bạn đang làm sai: Các khu vực xấu có thể nhìn thấy có nghĩa là bạn nên tặc ổ vào thùng rác gần nhất.
voretaq7

1
@Hashim Có Tôi tin rằng thật hữu ích khi sử dụng badblocks vì nó sẽ xóa các khu vực đang chờ xử lý.
endolith

5

Câu trả lời tốt cho câu hỏi này là

/superuser//a/693065

/superuser//a/693064

Trái với những câu trả lời khác, tôi thấy badblocks không lỗi thời nhưng là một công cụ rất hữu ích. Khi tôi nâng cấp máy tính của mình với một ổ cứng mới và nó bắt đầu chạy không ổn định. Tôi đã mất khá nhiều thời gian để nhận ra nhờ các lỗi xấu mà bề mặt đĩa có khiếm khuyết. Kể từ đó, tôi chạy các lỗi khóa chế độ ghi đầy đủ (có thể phá hủy!) Cho mọi ổ cứng mới mà tôi bắt đầu sử dụng và không bao giờ gặp vấn đề đó nữa. Tôi rất khuyên bạn nên một

thời gian sudo badblocks -swvo sdX.log / seven / sdX

cho mỗi ổ cứng mới. Nó sẽ kiểm tra từng bit của đĩa một vài lần để ghi và đọc và do đó có thể tránh được nhiều rắc rối về sau.

Trong quá trình kiểm tra này, các khối xấu sẽ được ánh xạ ra khỏi ổ đĩa. Vì vậy, "Số lượng khu vực được phân bổ lại" cần được lưu ý trước và sau khi kiểm tra và so sánh với ngưỡng SMART vì nó sẽ cho biết điều gì đó về sức khỏe của ổ đĩa.


2
Kiểm tra căng thẳng một ổ đĩa mới trong khi nó vẫn được bảo hành là một ý tưởng tuyệt vời.
endolith

2

badblocks là một di tích từ thời xa xưa và không thực sự hữu ích, nó có thể tìm thấy một khu vực hiện không thể đọc được nhưng điều đúng đắn cần làm với một khu vực xấu là khôi phục dữ liệu từ bản sao lưu. Điều gì có thể được thực hiện nếu dữ liệu không quan trọng với bạn là xóa tệp được liên kết và ghi bất cứ điều gì vào vị trí đó, điều này sẽ cho phép đĩa phân bổ lại khu vực nếu nó nghĩ rằng nó cần và tiếp tục hoạt động.

Tự kiểm tra đĩa cũng sẽ đi xung quanh và kiểm tra toàn bộ phương tiện cho các lỗi khác nhau, nên sử dụng các ngưỡng thấp hơn so với những gì nó sử dụng trong hoạt động bình thường để xem liệu đĩa có nhiều điểm yếu hay không và dựa trên logic của nhà cung cấp có thể quyết định rằng đĩa đã qua vòng đời hữu ích của nó và tuyên bố thử nghiệm thất bại. Tại thời điểm đó, bạn nên lấy tất cả dữ liệu của mình ra hoặc khôi phục nó từ bản sao lưu và thay thế đĩa.

Nếu một hành động đĩa (do badblocks hoặc hoạt động bình thường) gặp phải lỗi đọc không thể phục hồi, đĩa sẽ tự động cập nhật bộ đếm chờ phân bổ lại và khi thực hiện tái phân bổ, nó sẽ cập nhật phân bổ lại đang chờ xử lý và bộ đếm phân bổ lại. Một dd đơn giản sẽ có được điều đó xảy ra là tốt.

Nếu bạn cần chọn giữa hai sử dụng smartctl -t miễn là nó sẽ có một phân tích tốt hơn về đĩa.

Tôi cũng có thể đề xuất sử dụng tiện ích quét đĩa của mình https://github.com/baruch/diskscan , nó hoạt động giống như badblocks nhưng cố gắng đánh giá xem có khu vực nào bị hỏng không, giống như một khu vực khó nghe có mất lâu hơn để đọc. Đây là dấu hiệu của một vấn đề truyền thông đang phát triển và trong các phiên bản trong tương lai cũng có thể cung cấp nỗ lực tự động để giúp đĩa khắc phục vấn đề này.


"Ngoài ra, badblocks về cơ bản đã lỗi thời trong thời đại ngày nay vì bản thân các đĩa sẽ phân bổ lại dữ liệu và không cần thực sự ánh xạ các khối xấu ở cấp độ hệ thống tệp nữa." Không làm badblockscăng ổ đĩa theo cách mà tự kiểm tra SMART không?
endolith

Số badblocks sẽ thực hiện quét tuần tự đĩa. Nó không tốt hơn dd và sẽ giống như những gì tự kiểm tra cũng vậy.
Baruch Ngay cả

badblocksđọc từng byte ra khỏi đĩa, thay thế nó bằng các mẫu kiểm tra, sau đó ghi lại dữ liệu gốc. Tự kiểm tra SMART là bài kiểm tra đọc-ghi tương tự?
endolith

1
Việc ghi lại dữ liệu cũng sẽ xóa bất kỳ "Đang chờ xử lý" nào và khiến ổ đĩa đánh dấu chúng là tốt trở lại hoặc phân bổ lại chúng, đúng không?
endolith

1
Đúng. Nó có thể là những gì bạn muốn trong trường hợp như vậy.
Baruch Ngay cả
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.