Попытка удалить / диагностировать один Current_Pending_Sector в данных SMART

18

Я нахожусь в процессе новой установки Linux, и прежде чем я решил это сделать, я подумал, что сейчас самое время проверить работоспособность жесткого диска, поскольку я могу при необходимости безопасно перезаписать любые данные на жестком диске.

Сначала я попытался проверить с помощью smartmontools ... Мой жесткий диск Seagate сообщает об одном текущем ожидающем секторе и одном недоступном для исправления отключенном (предположительно, одном и том же). Количество перераспределенных секторов равно нулю.

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

Однако самотестирование SMART (короткое, длинное, автономное, транспортировка) не обнаруживает ошибок.

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         -

Я также попытался запустить badblocks -wsv (полный проходной тест чтения-записи 4) на диске, и плохие блоки не были найдены. Затем я последовал руководству (насколько это было возможно, поскольку я удалил свою файловую систему после запуска badblocks), найденному здесь: http://smartmontools.sourceforge.net/badblockhowto.html

Там написано, что если я перезаписываю сектор всеми нулями, диск должен переместить (перераспределить) ожидающий сектор. Шаблон последней записи Badblocks - все нули, так что следовало бы это сделать. однако ничего не изменилось. У меня все еще есть счетчик ожидающих секторов 1.
Затем я попытался выяснить, какой сектор является проблемным, и в выводе SMART есть журнал ошибок:

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

Таким образом, по-видимому, диск имел две ошибки.

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

Итак, я предположил, что это номера секторов: 167095 и 235018779. И я попытался написать нули с помощью dd:

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

Теперь это хорошо. Однако, когда я попробовал с другим сектором:

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

Я получаю дд: '/ dev / sda': не могу искать: неверный аргумент . Затем я заметил, что мой жесткий диск имеет только 234441658 секторов. Так что это вне диапазона. Но тогда почему SMART сообщил об ошибке по этому адресу ?!

Может ли кто-нибудь помочь мне понять это, а также посоветовать мне, как сделать это правильно, если я делаю это неправильно? Я подозреваю, что, возможно, я ошибаюсь при использовании блока 512 с dd. Это размер сектора, о котором сообщает SMART. возможно, эти адреса LBA являются байтами, а не блоками. Я попытался установить bs = 1 и записать только один байт в эти адреса на жестком диске. Это сработало (процесс записи dd)… Однако число ожидающих секторов после этого не изменилось. Я также вызвал sync и smartctl -t offline / dev / sda, чтобы попытаться «заставить» диск перераспределить сектор. Ничего...

Вот мой полный вывод smartctl --all / dev / sda :

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.

ОБНОВИТЬ:

Как и предполагалось в ответе от rob, я попытался перезаписать весь жесткий диск нулями. Проверил значения SMART, а затем начал читать весь жесткий диск. Снова проверил SMART значения. В результате значения SMART, относящиеся к числу ожидающих / перераспределенных секторов, не изменяются в обоих случаях сразу после записи, а затем после чтения. Перераспределено 0. В ожидании 1.

Иван Ковачевич
источник
1
Я полагаю, что на вашем диске 234441658 секторов, но резервные сектора, переназначенные вместо поврежденных секторов, не учитываются в этом числе.
Гроностай
Хм, так что ошибка в секторе 235018779 будет означать ошибку в резервных секторах ... Возможно ли это?
Иван Ковачевич
1
Что ж, резервные сектора тоже могут быть повреждены. В противном случае мы сделали бы «бессмертные» жесткие диски только из резервных секторов.
Гроностай
:)… Ну, я рассуждал, что резервные сектора не используются (и поэтому безопасны). Я предположил, что поверхность жесткого диска может быть повреждена только в том случае, если головка (-и) диска делают (-ют) неправильное действие из-за сбоя питания или чего-то еще.
Иван Ковачевич
1
Предполагая, что 235018779 сектор является резервным сектором. Это означает, что у меня должно быть не менее 235018779 - 234441658 = 577121 резервных секторов. Это почти 282 МБ в резервных секторах. Кажется, много (слишком много) для меня. Или это? Просто подумав вслух, может быть, это не резервный сектор, а сбой в диагностике SMART?
Иван Ковачевич

Ответы:

15

Сектор помечается как ожидающий при сбое чтения. Ожидающий сектор будет помечен перераспределенным, если последующая запись не удалась. Если запись успешна, она удаляется из текущих ожидающих секторов и считается исправной. (Точное поведение может немного отличаться, и я расскажу об этом позже, но пока это достаточно близкое приближение.)

При запуске badblocks -wкаждый шаблон сначала пишется, а затем читается. Возможно, что запись в нестабильный сектор завершится успешно, но последующее чтение завершится неудачно, что снова добавит его в список ожидающих секторов. Я бы попытался записать нули на весь диск с помощью dd if=/dev/zero of=/dev/sda, проверить состояние SMART, затем прочитать весь диск с помощью dd if=/dev/sda of=/dev/nullи снова проверить состояние SMART.

Обновить:

Исходя из ваших предыдущих результатов badblocks -w, я ожидал, что ожидающий сектор будет очищен после записи всего диска. Но поскольку этого не произошло, можно с уверенностью сказать, что этот диск работает не так, как ожидалось.

Давайте рассмотрим описание текущего ожидающего подсчета секторов :

Количество «нестабильных» секторов (ожидающих повторного отображения из-за неисправимых ошибок чтения). Если впоследствии нестабильный сектор читается успешно, сектор перераспределяется, и это значение уменьшается. Ошибки чтения в секторе не будут повторно отображать сектор немедленно (поскольку правильное значение не может быть прочитано, и поэтому значение для повторного отображения неизвестно, а также оно может стать читаемым позже); вместо этого микропрограмма привода запоминает, что сектор необходимо переназначить, и переназначит его при следующей записи. [29] Однако некоторые диски не будут немедленно переназначать такие сектора при записи; вместо этого накопитель сначала попытается выполнить запись в проблемный сектор, и если операция записи будет успешной, сектор будет помечен как исправный (в этом случае «Счетчик событий перераспределения» (0xC4) не будет увеличен).

Теперь давайте рассмотрим важные моменты:

... прошивка накопителя помнит, что сектор необходимо переназначить, и переназначит его при следующей записи. [29] Однако некоторые диски не будут немедленно переназначать такие сектора при записи; вместо этого накопитель сначала попытается выполнить запись в проблемный сектор, и если операция записи будет успешной, сектор будет помечен как исправный.

Другими словами, ожидающий сектор должен быть либо переназначен немедленно, либо накопитель должен был попытаться записать в сектор, и должна была произойти одна из двух вещей:

  1. Запись не удалась, и в этом случае ожидающий сектор должен был быть переназначен.
  2. Запись успешно завершена, и в этом случае ожидающий сектор должен быть очищен («отмечен как хороший»).

Я уже намекал на это ранее, но описание в Википедии текущего ожидающего сектора предполагает, что текущее число ожидающих секторов всегда должно быть нулевым после полной записи на диск . Поскольку здесь это не так, мы можем сделать вывод, что либо (а) Википедия неправильна (или, по крайней мере, неверна для вашего накопителя), либо (б) микропрограмма накопителя не может правильно обработать это состояние ошибки (что я бы посчитал ошибкой встроенного ПО) ).

Если впоследствии нестабильный сектор читается успешно, сектор перераспределяется, и это значение уменьшается.

Поскольку текущее число ожидающих секторов после чтения всего диска остается неизменным, мы можем утверждать, что либо (а) сектор не может быть успешно прочитан, либо (б) сектор был успешно прочитан и помечен как хороший, но произошла ошибка чтения другой сектор. Но так как количество перераспределенных секторов все еще равно 0 после чтения, мы можем исключить (b) как возможность и сделать вывод, что ожидающий сектор все еще не читается.

На этом этапе было бы полезно узнать, зарегистрировал ли диск какие-либо новые ошибки SMART. Следующим моим предложением было проверить, есть ли у Seagate обновление прошивки для вашего накопителя, но похоже, что они этого не делают.

Хотя я бы не рекомендовал продолжать использовать этот диск, похоже, что вы, возможно, захотите принять связанные с этим риски (а именно то, что он может продолжать действовать беспорядочно и / или может привести к дальнейшему ухудшению или неудаче). В этом случае вы можете попытаться установить Linux, загрузиться с аварийного компакт-диска, а затем (с отключенными файловыми системами) использовать имя файла e2fsck -l, чтобы вручную пометить соответствующий блок как плохой. (Просто убедитесь, что вы поддерживаете хорошие резервные копии!)

e2fsck -l имя файла

Добавьте номера блоков, указанные в файле, указанном в filename, в список плохих блоков. Формат этого файла совпадает с форматом, сгенерированным программой badblocks (8). Обратите внимание, что номера блоков основаны на размере блоков файловой системы. Следовательно, badblocks (8) должен иметь размер блока файловой системы для получения правильных результатов. В результате намного проще и безопаснее использовать опцию -c для e2fsck, поскольку она гарантирует, что правильные параметры передаются в программу badblocks.

(Обратите внимание, что e2fsck -cэто предпочтительнее e2fsck -l filename, и вы, возможно, даже захотите попробовать это, но, основываясь на ваших результатах до сих пор, я очень сомневаюсь, что e2fsck -c найдет какие-либо плохие блоки.)

Конечно, вам придется выполнить некоторую арифметику, чтобы преобразовать LBA неисправного сектора (как предусмотрено SMART) в номер блока файловой системы. The Bad Blocks HowTo предоставляет удобную формулу:

  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 также содержит полный пример с использованием этой формулы. После установки ОС вы можете проверить, занимает ли файл нестабильный сектор, используя debugfs (подробные инструкции см. В HowTo).

Другой вариант: разделить на части вокруг предполагаемого плохого блока. При установке ОС вы также можете попытаться разделить ошибки. Если я правильно выполнил арифметику, ошибка составит около 81,589 МБ, поэтому можно либо сделать / загрузить немного меньше и запустить следующий раздел после сектора 167095, либо пропустить первые 82 МБ или около того полностью.

ABRT 235018779 К сожалению, что касается ошибки ABRT в секторе 235018779, мы можем только предполагать, но спецификация ATA8-ACS дает нам некоторые подсказки.

Из рабочего проекта приложения AT 8 - Набор команд ATA / ATAPI (ATA8-ACS) :

6.2.1 Ошибка сброса (ABRT). Бит 2. Прерывание должно быть установлено в единицу, если команда не поддерживается. Abort может быть установлен в единицу, если устройство не может выполнить действие, запрошенное командой. Прерывание также должно быть установлено в единицу, если запрашивается адрес вне диапазона доступных пользователю адресов, если IDNF не установлен в единицу.

Рассматривая команды, ведущие к ABRT (несколько READ SECTOR (S) с последующей калибровкой и повторной инициализацией) ...

Abort должен быть установлен в единицу, если команда не поддерживается. - Это кажется маловероятным.

Abort может быть установлен в единицу, если устройство не может выполнить действие, запрошенное командой. - Возможно, P-список перераспределенных секторов смещает доступные для пользователя адреса на достаточно большое расстояние, чтобы пользовательский адрес был переведен в сектор 235018779, и операция чтения не смогла завершиться (по какой причине мы не знаем ... но ошибки CRC не было, поэтому я не думаю, что мы можем заключить, что сектор 235018779 является плохим).

Прерывание также должно быть установлено в единицу, если запрашивается адрес вне диапазона доступных пользователю адресов, если IDNF не установлен в единицу. - Мне это кажется наиболее вероятным, и я бы, вероятно, истолковал это как результат программной ошибки (либо вашей ОС, либо какой-либо программы, которую вы запускали). В этом случае, это не признак надвигающейся гибели жесткого диска.

На тот случай, если вы еще не устали проводить диагностику ...

Вы можете попробовать еще smartctl -t long /dev/sdaраз, чтобы увидеть, не вызывает ли он больше ошибок в журнале SMART, или вы можете оставить его как нерешенный X-файл ;) и периодически проверять журнал SMART, чтобы увидеть, не произойдет ли это снова. В любом случае, если вы продолжаете использовать диск, не заставляя его перераспределять или очищать ожидающий сектор, вы уже рискуете.

Используйте контрольную файловую систему

Для большей безопасности вы можете рассмотреть возможность использования файловой системы с контрольной суммой, такой как ZFS или btrfs, для защиты от повреждения данных на низком уровне. И не забывайте делать частые резервные копии, если у вас есть что-то, что не может быть легко воспроизведено.

грабить
источник
Хорошая идея, я попробую это прямо сейчас.
Иван Ковачевич
1
Как насчет того, чтобы попробовать это только с этим плохим сектором 167095? :)
неделя
Наах это слишком скучно: D. Сначала я попробую с подозрительным сектором, определенно умный совет, если это ничего не даст, я на всякий случай
разрешу
@ неделя, которая должна сработать, но, похоже, у него проблемы с сосредоточением внимания на плохом секторе, поэтому я предложил просто сделать весь диск.
ограбить
1
Если после записи на весь диск все еще существует ожидающий сектор, то переназначение сбойного сектора не работает должным образом, и вам следует заменить диск (или, если вы играете в азартные игры, продолжайте использовать его, зная, что он может работать хаотично) ,
ограбить
5

В статье Bad Sector Remapping приведен используемый алгоритм.

На жестком диске есть два списка дефектов:

  • P-list - это дефекты, обнаруженные при изготовлении, а также известные как первичные дефекты. Они последовательно следуют за нормальными секторами. Плохой сектор будет указывать на его замену с помощью номера смены (сначала +1, затем +2 и т. Д.).
  • G-List - это дефекты, которые возникают при обычном использовании накопителя и известны как «Выросшие дефекты». Нет никаких ограничений на их распределение, и они не должны последовательно следовать дефектам P-списка. Плохой сектор укажет на его замену, используя простой номер сектора.

Следовательно, тот факт, что ваш плохой сектор на 577121 секторов превышает нормальный последний сектор, не означает, что у вас 577121 поврежденных секторов, если только это не дефект P-списка. Дефект G-списка может быть размещен где угодно, поэтому вполне возможно, что встроенное ПО выделит его в конце свободного пространства сектора.

Из википедии Известные атрибуты ATA SMART :

Количество перераспределенных секторов

Количество перераспределенных секторов. Когда жесткий диск обнаруживает ошибку чтения / записи / проверки, он помечает этот сектор как «перераспределенный» и передает данные в специальную зарезервированную область (резервную область). Этот процесс также известен как переназначение, а перераспределенные сектора называются переназначениями. Необработанное значение обычно представляет количество поврежденных секторов, которые были найдены и переназначены.

Текущий счетчик ожидающих секторов

Количество «нестабильных» секторов (ожидающих повторного отображения из-за неисправимых ошибок чтения). Если впоследствии нестабильный сектор читается успешно, сектор перераспределяется, и это значение уменьшается. Ошибки чтения в секторе не будут переназначать сектор немедленно (так как правильное значение не может быть прочитано, и поэтому значение для переназначения неизвестно, а также оно может стать читаемым позже); вместо этого микропрограмма привода запоминает, что сектор необходимо переназначить, и переназначит его при следующей записи.

Таким образом, на самом деле ожидающие ошибки намного хуже, чем переназначенные, поскольку ошибка достаточно сложна, чтобы предотвратить чтение исходного содержимого для повторного отображения. В сущности, содержание этого сектора, вероятно, потеряно навсегда.

Документ MHDD Инструмент диагностики очень низкого уровня жесткого диска объясняет коды ошибок как:

UNC : data is uncorrectable
ABRT : command was aborted

Таким образом, сектор 167095 неисправим, и чтение / запись в 235018779 была прервана.

Поскольку запись в оба сектора не изменила статус с ожидающего на переназначенный, мне кажется, что сектор замены также плох. Моя теория состоит в том, что сектор 167095 был переназначен в сектор 235018779, но, к сожалению, последний тоже плохой, и что прошивка не знает, как переназначить плохие запасные сектора. В результате получается неисправимый плохой сектор.

harrymc
источник
Хорошая статья, я определенно узнал что-то новое! Однако это по-прежнему не объясняет, почему неисправный сектор, о котором сообщалось в журналах SMART, даже сообщается в области свободного сектора, а не в обычном используемом пространстве, и почему счетчик ожидающих секторов по-прежнему равен 1, а счетчик перераспределенных секторов 0. Если все работает, как следует эти два счетчика должны были инвертировать свои значения.
Иван Ковачевич
1
Смотрите мое редактирование выше.
harrymc
Благодарность! Отличная информация! Теперь у меня есть вопрос: поскольку 167095 не был переназначен, целесообразно ли использовать этот жесткий диск? Неужели HDD просто пометит этот сектор как плохой и не будет использовать его в будущем? По сути, мне нужно решить: могу ли я продолжить и установить Linux, или я должен выбросить этот жесткий диск, купить новый и установить Linux, или я могу что-то сделать (выполнить команду), чтобы пометить этот сектор как плохой вручную и установить Linux (мой любимый вариант).
Иван Ковачевич
1
Большой диск только с двумя поврежденными секторами не заслуживает того, чтобы его сбрасывали. По мере того как успешные блоки были успешными, мы надеемся, что этот сектор был отмечен как плохой. Я бы попытался установить Linux на него, но сделать полный формат, если ваш дистрибутив может сделать это во время установки. Но если это для важной производственной системы, я бы на всякий случай сменил диск.
harrymc