Đang cố gắng xóa / chẩn đoán Single_Pending_Sector trong dữ liệu SMART


18

Tôi đang trong quá trình thực hiện cài đặt Linux mới và trước khi tôi thực hiện điều đó tôi đã nghĩ rằng đây là thời điểm tốt để xác minh sức khỏe của ổ cứng vì tôi có thể ghi đè bất kỳ dữ liệu nào trên ổ cứng nếu cần.

Đầu tiên tôi đã thử kiểm tra với smartmontools ... Ổ cứng Seagate của tôi báo cáo một khu vực đang chờ xử lý hiện tại và một khu vực ngoại tuyến không thể sửa chữa (có lẽ là cùng một khu vực). Số lượng khu vực được phân bổ lại bằng không.

5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
...
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       1
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       1

Tuy nhiên, tự kiểm tra SMART (ngắn, dài, ngoại tuyến, chuyển tải) không tìm thấy lỗi.

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%      6631         -
# 2  Conveyance offline  Completed without error       00%      6630         -
# 3  Extended offline    Completed without error       00%      6622         -
# 4  Short offline       Completed without error       00%      6600         -
# 5  Extended offline    Completed without error       00%      6632         -

Tôi cũng đã thử chạy badblocks -wsv (kiểm tra vượt qua 4 mẫu đọc-ghi đầy đủ) trên ổ đĩa và không tìm thấy khối xấu nào. Sau đó, tôi đã làm theo hướng dẫn (trong phạm vi có thể, vì tôi đã xóa hệ thống tệp của mình sau khi chạy badblocks) được tìm thấy ở đây: http://smartmontools.sourceforge.net/badblockhowto.html

Ở đó nó nói rằng nếu tôi ghi đè khu vực với tất cả các số không thì đĩa sẽ di chuyển (phân bổ lại) khu vực đang chờ xử lý. Badblocks mẫu viết cuối cùng là tất cả các số không nên đã làm điều đó. tuy nhiên không có gì thay đổi Tôi vẫn có khu vực đang chờ xử lý đó 1.
Sau đó tôi đã cố gắng tìm ra khu vực nào là vấn đề và trong đầu ra SMART có nhật ký lỗi:

Error 2 occurred at disk power-on lifetime: 5344 hours (222 days + 16 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  84 51 7c 1b 1a 02 ae  Error: ABRT at LBA = 0x0e021a1b = 235018779

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  20 20 7f 18 1a 02 ae 00      00:09:05.228  READ SECTOR(S)
  20 20 01 17 1a 02 ae 00      00:09:05.228  READ SECTOR(S)
  20 20 01 01 00 00 a0 00      00:08:59.830  READ SECTOR(S)
  91 20 3f 01 00 00 af 00      00:08:59.826  INITIALIZE DEVICE PARAMETERS [OBS-6]
  10 20 01 01 00 00 a8 00      00:08:59.678  RECALIBRATE [OBS-4]

Error 1 occurred at disk power-on lifetime: 5009 hours (208 days + 17 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 b7 8c 02 e0  Error: UNC at LBA = 0x00028cb7 = 167095

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 20 1e 9e 8c 02 e0 00      00:02:20.691  READ DMA EXT
  25 20 1e 80 8c 02 e0 00      00:02:20.691  READ DMA EXT
  25 20 1e 62 8c 02 e0 00      00:02:20.690  READ DMA EXT
  25 20 1e 44 8c 02 e0 00      00:02:20.690  READ DMA EXT
  25 20 1e 26 8c 02 e0 00      00:02:20.690  READ DMA EXT

Vì vậy, rõ ràng ổ đĩa có hai lỗi.

84 51 7c 1b 1a 02 ae  Error: ABRT at LBA = 0x0e021a1b = 235018779

40 51 00 b7 8c 02 e0  Error: UNC at LBA = 0x00028cb7 = 167095

Vì vậy, tôi giả sử đây là các số ngành: 167095 và 235018779. Và tôi đã thử viết số không với dd:

dd if=/dev/zero of=/dev/sda bs=512 count=1 seek=167095

Bây giờ người ta đã làm ok. Tuy nhiên khi tôi thử với lĩnh vực khác:

dd if=/dev/zero of=/dev/sda bs=512 count=1 seek=235018779

Tôi nhận dd: '/ dev / sda': không thể tìm kiếm: Đối số không hợp lệ . Sau đó tôi phát hiện ra rằng ổ cứng của tôi chỉ có 234441658 cung. Vì vậy, điều này là ra khỏi phạm vi. Nhưng tại sao SMART lại báo lỗi về địa chỉ đó?!

Bất cứ ai có thể giúp tôi tìm ra điều đó và cũng tư vấn cho tôi làm thế nào để làm điều này một cách chính xác nếu tôi làm sai? Tôi nghi ngờ rằng có lẽ tôi đã sai khi sử dụng kích thước khối 512 với dd. Đó là quy mô ngành được báo cáo bởi SMART. có thể các địa chỉ LBA đó là các byte không phải là khối mà tôi đã thử đặt bs = 1 và chỉ viết một byte cho các địa chỉ đó trên ổ cứng. Điều đó đã làm việc (quá trình ghi dd) Tuy nhiên số lượng ngành đang chờ xử lý vẫn không thay đổi sau đó. Tôi cũng đã gọi syncsmartctl -t offline / dev / sda để thử 'buộc' ổ đĩa để phân bổ lại khu vực. Không có gì...

Đây là đầu ra smartctl --all / dev / sda đầy đủ của tôi :

smartctl 5.43 2012-06-30 r3573 [i686-linux-2.6.32-358.el6.i686] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 7200.9
Device Model:     ST3120811AS
Serial Number:    6PT1N4VZ
Firmware Version: 3.AAE
User Capacity:    120,034,123,776 bytes [120 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   7
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Mon Nov 18 12:03:00 2013 UTC
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x82) Offline data collection activity
                    was completed without error.
                    Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0) The previous self-test routine completed
                    without error or no self-test has ever 
                    been run.
Total time to complete Offline 
data collection:        (  430) seconds.
Offline data collection
capabilities:            (0x5b) SMART execute Offline immediate.
                    Auto Offline data collection on/off support.
                    Suspend Offline collection upon new
                    command.
                    Offline surface scan supported.
                    Self-test supported.
                    No Conveyance Self-test supported.
                    Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                    power-saving mode.
                    Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                    General Purpose Logging supported.
Short self-test routine 
recommended polling time:    (   1) minutes.
Extended self-test routine
recommended polling time:    (  51) minutes.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   084   077   006    Pre-fail  Always       -       185600113
  3 Spin_Up_Time            0x0003   095   095   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   098   098   020    Old_age   Always       -       2185
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   073   055   030    Pre-fail  Always       -       25890559714
  9 Power_On_Hours          0x0032   093   093   000    Old_age   Always       -       6632
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   098   098   020    Old_age   Always       -       2229
187 Reported_Uncorrect      0x0032   099   099   000    Old_age   Always       -       1
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   071   056   045    Old_age   Always       -       29 (Min/Max 25/29)
194 Temperature_Celsius     0x0022   029   044   000    Old_age   Always       -       29 (0 13 0 0 0)
195 Hardware_ECC_Recovered  0x001a   052   046   000    Old_age   Always       -       194244099
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       1
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       1
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0000   100   253   000    Old_age   Offline      -       0
202 Data_Address_Mark_Errs  0x0032   066   219   000    Old_age   Always       -       34

SMART Error Log Version: 1
ATA Error Count: 2
    CR = Command Register [HEX]
    FR = Features Register [HEX]
    SC = Sector Count Register [HEX]
    SN = Sector Number Register [HEX]
    CL = Cylinder Low Register [HEX]
    CH = Cylinder High Register [HEX]
    DH = Device/Head Register [HEX]
    DC = Device Command Register [HEX]
    ER = Error register [HEX]
    ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 2 occurred at disk power-on lifetime: 5344 hours (222 days + 16 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  84 51 7c 1b 1a 02 ae  Error: ABRT at LBA = 0x0e021a1b = 235018779

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  20 20 7f 18 1a 02 ae 00      00:09:05.228  READ SECTOR(S)
  20 20 01 17 1a 02 ae 00      00:09:05.228  READ SECTOR(S)
  20 20 01 01 00 00 a0 00      00:08:59.830  READ SECTOR(S)
  91 20 3f 01 00 00 af 00      00:08:59.826  INITIALIZE DEVICE PARAMETERS [OBS-6]
  10 20 01 01 00 00 a8 00      00:08:59.678  RECALIBRATE [OBS-4]

Error 1 occurred at disk power-on lifetime: 5009 hours (208 days + 17 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 b7 8c 02 e0  Error: UNC at LBA = 0x00028cb7 = 167095

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 20 1e 9e 8c 02 e0 00      00:02:20.691  READ DMA EXT
  25 20 1e 80 8c 02 e0 00      00:02:20.691  READ DMA EXT
  25 20 1e 62 8c 02 e0 00      00:02:20.690  READ DMA EXT
  25 20 1e 44 8c 02 e0 00      00:02:20.690  READ DMA EXT
  25 20 1e 26 8c 02 e0 00      00:02:20.690  READ DMA EXT

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%      6631         -
# 2  Conveyance offline  Completed without error       00%      6630         -
# 3  Extended offline    Completed without error       00%      6622         -
# 4  Short offline       Completed without error       00%      6600         -
# 5  Extended offline    Completed without error       00%      6632         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

CẬP NHẬT:

Như được đề xuất trong câu trả lời từ rob, tôi đã thử ghi đè toàn bộ ổ cứng bằng 0. Kiểm tra giá trị SMART và sau đó bắt đầu đọc toàn bộ ổ cứng. Một lần nữa kiểm tra giá trị SMART. Kết quả là: Các giá trị SMART liên quan đến số lượng khu vực đang chờ xử lý / phân bổ lại không thay đổi, trong cả hai trường hợp, ngay sau khi viết và sau khi đọc. Tái phân bổ 0. Đang chờ 1.


1
Tôi đoán ổ đĩa của bạn có 234441658 ngành, nhưng các khu vực dự phòng được ánh xạ thay cho các khu vực xấu không được tính vào con số này.
gronostaj

Hmm, do đó, lỗi trên khu vực 235018779 có nghĩa là một lỗi trong các khu vực sao lưu, điều đó có thể không?
Ivan Kovacevic

1
Vâng, các lĩnh vực sao lưu có thể bị hỏng quá. Nếu không, chúng tôi sẽ tạo ra các ổ cứng "bất tử" từ các khu vực dự phòng.
gronostaj

:) Càng tốt lý do của tôi là các khu vực sao lưu không được sử dụng (và vì vậy an toàn). Tôi cho rằng bề mặt ổ cứng chỉ có thể bị hỏng nếu (các) đầu đĩa làm (các) hành động không đúng, do mất điện hoặc do lỗi gì đó.
Ivan Kovacevic

1
Giả sử rằng khu vực 235018779 là khu vực dự phòng. Điều đó có nghĩa là tôi nên có ít nhất 235018779 - 234441658 = 577121 dự phòng. Đó là gần 282 MB trong các lĩnh vực sao lưu. Có vẻ rất nhiều (quá nhiều) với tôi. Hoặc là nó? Chỉ cần suy nghĩ thành tiếng, có thể đó không phải là một lĩnh vực dự phòng mà là một trục trặc trong chẩn đoán SMART?
Ivan Kovacevic

Câu trả lời:


15

Một khu vực được đánh dấu đang chờ xử lý khi đọc thất bại. Khu vực đang chờ xử lý sẽ được đánh dấu phân bổ lại nếu lần ghi tiếp theo không thành công. Nếu ghi thành công, nó sẽ bị xóa khỏi các lĩnh vực đang chờ xử lý hiện tại và được coi là ổn. (Hành vi chính xác có thể hơi khác một chút và tôi sẽ đi sâu vào vấn đề đó sau, nhưng bây giờ đây là một xấp xỉ đủ gần.)

Khi bạn chạy badblocks -w, mỗi mẫu được viết đầu tiên, sau đó đọc. Có thể việc ghi vào khu vực không ổn định đã thành công nhưng lần đọc tiếp theo không thành công, điều này lại thêm nó vào danh sách khu vực đang chờ xử lý. Tôi sẽ thử ghi số 0 vào toàn bộ đĩa dd if=/dev/zero of=/dev/sda, kiểm tra trạng thái SMART, sau đó đọc toàn bộ đĩa dd if=/dev/sda of=/dev/nullvà kiểm tra lại trạng thái SMART.

Cập nhật:

Dựa trên kết quả trước đó của bạn với badblocks -w, tôi đã dự kiến ​​khu vực đang chờ xử lý sẽ bị xóa sau khi ghi toàn bộ đĩa. Nhưng vì điều đó đã không xảy ra, nên an toàn khi nói rằng đĩa này không hoạt động như mong đợi.

Hãy xem lại mô tả về Số lượng ngành đang chờ xử lý hiện tại :

Đếm các lĩnh vực "không ổn định" (đang chờ để được ánh xạ lại, vì các lỗi đọc không thể phục hồi). Nếu một khu vực không ổn định sau đó được đọc thành công, khu vực đó được ánh xạ lại và giá trị này bị giảm. Đọc lỗi trên một khu vực sẽ không thể ánh xạ lại khu vực đó ngay lập tức (vì không thể đọc được giá trị chính xác và do đó không thể biết được giá trị để ánh xạ lại, và sau đó nó có thể trở nên dễ đọc hơn); thay vào đó, phần sụn ổ đĩa ghi nhớ rằng phần cần phải được ánh xạ lại và sẽ ánh xạ lại vào lần tiếp theo khi nó được viết. [29] Tuy nhiên, một số ổ đĩa sẽ không ngay lập tức ánh xạ lại các lĩnh vực đó khi được viết; thay vào đó, ổ đĩa trước tiên sẽ cố ghi vào khu vực có vấn đề và nếu thao tác ghi thành công thì khu vực đó sẽ được đánh dấu tốt (trong trường hợp này, "Số lượng sự kiện phân bổ lại" (0xC4) sẽ không được tăng lên).

Bây giờ hãy xem lại những điểm quan trọng:

... phần sụn ổ đĩa ghi nhớ rằng khu vực cần được ánh xạ lại và sẽ ánh xạ lại vào lần tiếp theo khi nó được viết. [29] Tuy nhiên, một số ổ đĩa sẽ không ngay lập tức ánh xạ lại các lĩnh vực đó khi được viết; thay vào đó, ổ đĩa trước tiên sẽ cố ghi vào khu vực có vấn đề và nếu thao tác ghi thành công thì khu vực đó sẽ được đánh dấu tốt.

Nói cách khác, khu vực đang chờ xử lý nên đã được ánh xạ lại ngay lập tức hoặc ổ đĩa đã cố ghi vào khu vực đó và một trong hai điều nên xảy ra:

  1. Việc viết không thành công, trong trường hợp đó, khu vực đang chờ xử lý nên được ánh xạ lại.
  2. Việc viết đã thành công, trong trường hợp đó, khu vực đang chờ xử lý sẽ bị xóa ("được đánh dấu là tốt").

Tôi đã gợi ý về điều này sớm hơn, nhưng mô tả của Wikipedia về Khu vực đang chờ xử lý hiện tại cho thấy rằng số lượng khu vực đang chờ xử lý hiện tại phải luôn bằng 0 sau khi ghi đĩa đầy đủ . Vì đó không phải là trường hợp ở đây, chúng tôi có thể kết luận rằng (a) Wikipedia là sai (hoặc ít nhất là không chính xác cho ổ đĩa của bạn) hoặc (b) phần sụn của ổ đĩa không thể xử lý đúng trạng thái lỗi này (tôi sẽ xem xét lỗi phần sụn ).

Nếu một khu vực không ổn định sau đó được đọc thành công, khu vực đó được ánh xạ lại và giá trị này bị giảm.

Vì số lượng khu vực đang chờ xử lý hiện tại vẫn không thay đổi sau khi đọc toàn bộ ổ đĩa, chúng tôi có thể khẳng định rằng (a) khu vực đó không thể đọc thành công hoặc (b) khu vực đã được đọc thành công và được đánh dấu tốt, nhưng đã xảy ra lỗi khi đọc ngành khác nhau. Nhưng vì số lượng khu vực được phân bổ lại vẫn là 0 sau khi đọc, chúng tôi có thể loại trừ (b) như một khả năng và có thể kết luận rằng khu vực đang chờ xử lý vẫn không thể đọc được.

Tại thời điểm này, sẽ hữu ích nếu biết ổ đĩa đã ghi lại bất kỳ lỗi SMART mới nào. Đề xuất tiếp theo của tôi sẽ là kiểm tra xem Seagate có cập nhật chương trình cơ sở cho ổ đĩa của bạn hay không, nhưng có vẻ như chúng không có.

Mặc dù tôi khuyên bạn không nên tiếp tục sử dụng ổ đĩa này, nhưng có vẻ như bạn có thể sẵn sàng chấp nhận các rủi ro liên quan (cụ thể là nó có thể tiếp tục hành động thất thường và / hoặc có thể xuống cấp hoặc thất bại thảm hại). Trong trường hợp đó, bạn có thể thử cài đặt Linux, khởi động từ đĩa CD cứu hộ, sau đó (với các hệ thống tệp không được đếm) sử dụng tên tệp e2fsck -l để đánh dấu thủ công khối thích hợp là xấu. (Chỉ cần đảm bảo bạn duy trì sao lưu tốt!)

tên tệp e2fsck -l

Thêm số khối được liệt kê trong tệp được chỉ định bởi tên tệp vào danh sách các khối xấu. Định dạng của tệp này giống với định dạng được tạo bởi chương trình badblocks (8). Lưu ý rằng số khối dựa trên kích thước khối của hệ thống tập tin. Do đó, badblocks (8) phải được đưa ra kích thước khối của hệ thống tập tin để có được kết quả chính xác. Kết quả là, sử dụng tùy chọn -c cho e2fsck sẽ đơn giản và an toàn hơn nhiều, vì nó sẽ đảm bảo rằng các tham số chính xác được truyền cho chương trình badblocks.

(Lưu ý e2fsck -cđược ưu tiên e2fsck -l filenamevà thậm chí bạn có thể muốn dùng thử, nhưng dựa trên kết quả của bạn cho đến nay, tôi rất nghi ngờ e2fsck -c sẽ tìm thấy bất kỳ khối xấu nào.)

Tất nhiên, bạn sẽ phải thực hiện một số số học để chuyển đổi LBA của khu vực bị lỗi (do SMART cung cấp) thành số khối hệ thống tập tin. Các Xấu Blocks HowTo cung cấp một công thức có ích:

  b = (int)((L-S)*512/B)
where:
b = File System block number
B = File system block size in bytes
L = LBA of bad sector
S = Starting sector of partition as shown by fdisk -lu
and (int) denotes the integer part.

HowTo cũng chứa một ví dụ hoàn chỉnh sử dụng công thức này. Sau khi hệ điều hành được cài đặt, bạn có thể xác nhận xem một tệp có chiếm lĩnh vùng không ổn định hay không bằng cách sử dụng debugfs (xem phần Hướng dẫn chi tiết).

Một tùy chọn khác: phân vùng xung quanh khối xấu bị nghi ngờ Khi bạn cài đặt HĐH, bạn cũng có thể thử phân vùng xung quanh lỗi. Nếu tôi thực hiện đúng số học của mình, lỗi nằm ở khoảng 81.589 MB, do đó, có thể tạo / khởi động nhỏ một chút và bắt đầu phân vùng tiếp theo của bạn sau sector 167095 hoặc bỏ qua 82 MB đầu tiên hoặc lâu hơn.

ABRT 235018779 Thật không may, như đối với các lỗi ABRT tại khu vực 235018779, chúng tôi chỉ có thể suy đoán, nhưng spec ATA8-ACS cho chúng ta một số manh mối.

Từ Bản nháp làm việc AT Đính kèm 8 - Bộ lệnh ATA / ATAPI (ATA8-ACS) :

6.2.1 Abort (ABRT) Bit lỗi 2. Hủy bỏ được đặt thành một nếu lệnh không được hỗ trợ. Hủy bỏ có thể được đặt thành một nếu thiết bị không thể hoàn thành hành động được yêu cầu bởi lệnh. Hủy bỏ cũng sẽ được đặt thành một nếu một địa chỉ nằm ngoài phạm vi địa chỉ người dùng có thể truy cập được yêu cầu nếu IDNF không được đặt thành một.

Nhìn vào các lệnh dẫn đến ABRT (một số SECTOR READ (S) theo sau là hiệu chỉnh lại và tái cấp hóa) ...

Hủy bỏ sẽ được đặt thành một nếu lệnh không được hỗ trợ. - Điều này dường như không thể.

Hủy bỏ có thể được đặt thành một nếu thiết bị không thể hoàn thành hành động được yêu cầu bởi lệnh. - Có thể danh sách P của các khu vực được phân bổ lại làm dịch chuyển các địa chỉ người dùng có thể truy cập đủ xa đến mức địa chỉ người dùng có thể truy cập được dịch sang khu vực 235018779 và hoạt động đọc không thể hoàn thành (vì lý do gì, chúng tôi không biết ... nhưng không có lỗi CRC, vì vậy tôi không nghĩ rằng chúng ta có thể kết luận rằng ngành 235018779 là xấu).

Hủy bỏ cũng sẽ được đặt thành một nếu một địa chỉ nằm ngoài phạm vi địa chỉ người dùng có thể truy cập được yêu cầu nếu IDNF không được đặt thành một. - Đối với tôi điều này có vẻ như rất có thể, và tôi có thể hiểu nó là do lỗi phần mềm (hệ điều hành của bạn hoặc một số chương trình bạn đang chạy). Trong trường hợp đó, nó không phải là dấu hiệu của sự diệt vong sắp xảy ra đối với ổ cứng.

Chỉ trong trường hợp bạn không mệt mỏi với việc chạy chẩn đoán ...

Bạn có thể thử smartctl -t long /dev/sdalại để xem liệu nó có tạo thêm lỗi nào trong nhật ký SMART không, hoặc bạn có thể để lại lỗi này dưới dạng tệp X chưa được giải quyết ;) và kiểm tra nhật ký SMART định kỳ để xem liệu nó có xảy ra lần nữa không. Trong mọi trường hợp, nếu bạn tiếp tục sử dụng ổ đĩa mà không đưa nó vào phân bổ lại hoặc xóa khu vực đang chờ xử lý, bạn đã gặp rủi ro.

Sử dụng hệ thống tập tin kiểm tra

Để an toàn hơn một chút, bạn có thể muốn xem xét sử dụng hệ thống tập tin kiểm tra như ZFS hoặc btrfs để giúp bảo vệ chống lại tham nhũng dữ liệu cấp thấp. Và đừng quên thực hiện sao lưu thường xuyên nếu bạn có bất cứ thứ gì không thể sao chép dễ dàng.


Ý kiến ​​hay, tôi sẽ thử ngay bây giờ.
Ivan Kovacevic

1
Điều gì về việc thử điều này chỉ với khu vực xấu 167095 đó? :)
tuần

Naah đó là quá nhàm chán: D. Trước tiên, tôi sẽ thử với khu vực đáng ngờ, chắc chắn là một lời khuyên thông minh, nếu điều đó không làm gì tôi sẽ để nó chạy trên toàn bộ ổ đĩa chỉ trong trường hợp
giật

@week nên thực hiện mánh khóe nhưng có vẻ như anh ta gặp khó khăn trong lĩnh vực xấu, vì vậy đó là lý do tại sao tôi đề nghị chỉ làm toàn bộ ổ đĩa.
cướp

1
Nếu vẫn còn một khu vực đang chờ xử lý sau khi ghi vào toàn bộ ổ đĩa, thì việc ánh xạ lại khu vực xấu đó không hoạt động chính xác và bạn nên thay thế ổ đĩa (hoặc, nếu bạn là một người chơi cờ bạc, hãy tiếp tục sử dụng nó để biết rằng nó có thể hoạt động thất thường) .
cướp

5

Bài viết Bad sector Remaps đưa ra thuật toán được sử dụng.

Có hai danh sách lỗi trên đĩa cứng:

  • Danh sách P là các khuyết tật được tìm thấy trong quá trình sản xuất và còn được gọi là Khiếm khuyết Chính. Họ tuần tự theo các lĩnh vực bình thường. Một khu vực xấu sẽ chỉ đến sự thay thế của nó bằng cách sử dụng số ca (đầu tiên là +1, sau đó là +2, v.v.).
  • Danh sách G là các khiếm khuyết phát triển trong việc sử dụng ổ đĩa thông thường và được gọi là Khiếm khuyết Grown. Không có ràng buộc về phân bổ của họ và họ không cần phải tuần tự tuân theo các khiếm khuyết của danh sách P. Một khu vực xấu sẽ chỉ đến sự thay thế của nó bằng cách sử dụng một số khu vực đơn giản.

Do đó, thực tế rằng khu vực xấu của bạn là 577121 khu vực vượt ra ngoài khu vực cuối cùng bình thường không có nghĩa là bạn có 577121 khu vực xấu, trừ khi đó là khiếm khuyết danh sách P. Một khiếm khuyết trong danh sách G có thể được đặt ở bất cứ đâu, vì vậy hoàn toàn có thể phần sụn được phân bổ ở cuối không gian của khu vực dự phòng.

Từ wikipedia Các thuộc tính ATA SMART đã biết :

Số lượng phân bổ lại

Đếm các lĩnh vực tái phân bổ. Khi ổ cứng tìm thấy lỗi đọc / ghi / xác minh, nó đánh dấu khu vực đó là "tái phân bổ" và chuyển dữ liệu đến một khu vực dành riêng đặc biệt (khu vực dự phòng). Quá trình này còn được gọi là ánh xạ lại và các khu vực được phân bổ lại được gọi là "ánh xạ lại". Giá trị thô thường đại diện cho một số các thành phần xấu đã được tìm thấy và ánh xạ lại.

Số lượng ngành đang chờ xử lý

Đếm các lĩnh vực "không ổn định" (đang chờ để được ánh xạ lại, vì các lỗi đọc không thể phục hồi). Nếu một khu vực không ổn định sau đó được đọc thành công, khu vực đó được ánh xạ lại và giá trị này bị giảm. Đọc lỗi trên một khu vực sẽ không ánh xạ lại khu vực đó ngay lập tức (vì không thể đọc được giá trị chính xác và do đó không thể biết được giá trị để ánh xạ lại, và sau đó nó có thể trở nên dễ đọc hơn); thay vào đó, phần sụn ổ đĩa ghi nhớ rằng khu vực cần được ánh xạ lại và sẽ ánh xạ lại vào lần tiếp theo.

Vì vậy, trên thực tế, các lỗi đang chờ xử lý còn tệ hơn nhiều so với ánh xạ lại, vì lỗi này đủ cứng để ngăn việc đọc nội dung gốc để ánh xạ lại. Trong thực tế, nội dung của lĩnh vực đó có thể bị mất mãi mãi.

Tài liệu MHDD Công cụ chẩn đoán đĩa cứng mức độ rất thấp giải thích các mã lỗi là:

UNC : data is uncorrectable
ABRT : command was aborted

Vì vậy, ngành 167095 là không thể sửa chữa và đọc / ghi đến 235018779 đã bị hủy bỏ.

Khi viết thư cho cả hai lĩnh vực không thay đổi trạng thái từ chờ xử lý sang ánh xạ lại, đối với tôi, khu vực thay thế cũng rất tệ. Lý thuyết của tôi là sector 167095 đã được ánh xạ lại thành sector 235018779, nhưng thật không may, cái sau cũng xấu, và phần sụn không biết cách tái cấu trúc lại các phần phụ tùng xấu. Kết quả là một khu vực xấu không thể sửa chữa.


Bài viết hay, tôi đã học được một cái gì đó mới chắc chắn! Tuy nhiên, điều này vẫn không giải thích được tại sao khu vực xấu được báo cáo trong nhật ký SMART thậm chí được báo cáo trong khu vực phụ tùng và không phải trong không gian có thể sử dụng bình thường và tại sao bộ đếm khu vực đang chờ xử lý vẫn là 1 và bộ đếm khu vực được phân bổ lại 0. Nếu mọi thứ hoạt động như bình thường hai quầy này nên đảo ngược các giá trị của chúng.
Ivan Kovacevic

1
Xem chỉnh sửa của tôi ở trên.
harrymc

Cảm ơn! Thông tin tuyệt vời! Bây giờ tôi có một câu hỏi: Vì 167095 không được ánh xạ lại, nên sử dụng ổ cứng này? Có phải ổ cứng chỉ đánh dấu khu vực đó là xấu và sẽ tránh sử dụng nó trong tương lai. Về cơ bản tôi cần phải quyết định: Tôi có thể tiến hành và cài đặt Linux hay tôi nên vứt bỏ ổ cứng này để mua một cái mới và cài đặt Linux, hoặc tôi có thể làm gì đó (thực thi một lệnh) để đánh dấu khu vực đó là xấu theo cách thủ công và cài đặt Linux (của tôi lựa chọn yêu thích).
Ivan Kovacevic

1
Một đĩa lớn chỉ có hai thành phần xấu không đáng bị bỏ qua. Khi badblocks thành công, hy vọng nó đánh dấu khu vực đó là xấu. Tôi sẽ cố gắng cài đặt Linux cho nó, nhưng thực hiện định dạng đầy đủ nếu bản phân phối của bạn có thể làm điều đó trong quá trình cài đặt. Nhưng nếu đây là một hệ thống sản xuất quan trọng, tôi sẽ thay đổi đĩa, chỉ trong trường hợp.
harrymc
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.