Сообщения об ошибках для одного из моих жестких дисков в системном журнале «Необработанный код ошибки» «Ошибка ввода-вывода»

Сообщения об ошибках для одного из моих жестких дисков в системном журнале «Необработанный код ошибки» «Ошибка ввода-вывода»

Я вижу некоторые странные ошибки в syslog. Я использую Debian 7.9. Кто-нибудь видел их раньше и/или знает, что может происходить? Мой жесткий диск выходит из строя? Я сделал fsck на днях при загрузке, и никаких сообщений об этом не было. Это внешний зашифрованный жесткий диск USB (LUKS), который расшифровывается/монтируется при загрузке. На компьютере не настроены RAID или что-то в этом роде. У меня есть два других диска, настроенных аналогичным образом, без проблем.

Я посмотрел смарт-данные для накопителя, и там написано, что он прошел "общий тест работоспособности". Есть ли что-то еще, что я могу проверить/сделать, чтобы получить представление о его состоянии? Почему я получаю эти ошибки?

Sep 24 02:49:03 centaur kernel: [ 1429.377929] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 02:49:03 centaur kernel: [ 1429.377933] sd 2:0:0:0: [sdb]  Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 02:49:03 centaur kernel: [ 1429.377939] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 80 16 08 00 00 08 00
Sep 24 02:49:03 centaur kernel: [ 1429.377950] end_request: I/O error, dev sdb, sector 947918344
Sep 24 11:41:19 centaur kernel: [32752.064706] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 11:41:19 centaur kernel: [32752.064710] sd 2:0:0:0: [sdb]  Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 11:41:19 centaur kernel: [32752.064715] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 40 f6 08 00 00 08 00
Sep 24 11:41:19 centaur kernel: [32752.064727] end_request: I/O error, dev sdb, sector 943781384
Sep 24 13:00:15 centaur kernel: [37487.599035] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 13:00:15 centaur kernel: [37487.599040] sd 2:0:0:0: [sdb]  Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 13:00:15 centaur kernel: [37487.599045] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 40 e1 68 00 00 08 00
Sep 24 13:00:15 centaur kernel: [37487.599056] end_request: I/O error, dev sdb, sector 943776104
Sep 24 13:55:44 centaur kernel: [40816.471962] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 13:55:44 centaur kernel: [40816.471967] sd 2:0:0:0: [sdb]  Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 13:55:44 centaur kernel: [40816.471972] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 40 6b e0 00 00 08 00
Sep 24 13:55:44 centaur kernel: [40816.471984] end_request: I/O error, dev sdb, sector 943746016
Sep 24 14:26:37 centaur kernel: [42670.078961] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 14:26:37 centaur kernel: [42670.078965] sd 2:0:0:0: [sdb]  Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 14:26:37 centaur kernel: [42670.078971] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 00 25 20 00 00 08 00
Sep 24 14:26:37 centaur kernel: [42670.078983] end_request: I/O error, dev sdb, sector 939533600
Sep 24 14:57:41 centaur kernel: [44533.796981] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 14:57:41 centaur kernel: [44533.796987] sd 2:0:0:0: [sdb]  Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 14:57:41 centaur kernel: [44533.796992] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 40 76 08 00 00 08 00
Sep 24 14:57:41 centaur kernel: [44533.797003] end_request: I/O error, dev sdb, sector 943748616

Информация от smartctl:

smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-4-amd64] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda LP
Device Model:     ST32000542AS
Serial Number:    6XW135W4
LU WWN Device Id: 5 000c50 01f01e7ee
Firmware Version: CC34
User Capacity:    2,000,398,934,016 bytes [2.00 TB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   8
ATA Standard is:  ATA-8-ACS revision 4
Local Time is:    Fri Sep 25 00:18:47 2015 MDT
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
See vendor-specific Attribute list for marginal Attributes.

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:        (  623) seconds.
Offline data collection
capabilities:            (0x7b) SMART execute Offline immediate.
                    Auto Offline data collection on/off support.
                    Suspend Offline collection upon new
                    command.
                    Offline surface scan supported.
                    Self-test supported.
                    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:    ( 255) minutes.
Conveyance self-test routine
recommended polling time:    (   2) minutes.
SCT capabilities:          (0x103f) SCT Status supported.
                    SCT Error Recovery Control supported.
                    SCT Feature Control supported.
                    SCT Data Table supported.

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   118   099   006    Pre-fail  Always       -       178542268
  3 Spin_Up_Time            0x0003   100   100   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   085   085   020    Old_age   Always       -       15977
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   065   060   030    Pre-fail  Always       -       81661499813
  9 Power_On_Hours          0x0032   045   045   000    Old_age   Always       -       48686
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       69
183 Runtime_Bad_Block       0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   099   000    Old_age   Always       -       4295032833
189 High_Fly_Writes         0x003a   083   083   000    Old_age   Always       -       17
190 Airflow_Temperature_Cel 0x0022   052   040   045    Old_age   Always   In_the_past 48 (0 174 52 30)
194 Temperature_Celsius     0x0022   048   060   000    Old_age   Always       -       48 (0 14 0 0)
195 Hardware_ECC_Recovered  0x001a   042   020   000    Old_age   Always       -       178542268
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       208202834670158
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       1107416570
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       361340835

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]


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.

Я также посмотрел наэтот сайти один из авторов изменил свой sysctl.conf так, как показано ниже, но мой уже настроен так...

/etc/sysctl.conf

vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

решение1

Сначала сделайте резервную копию

Перед устранением неполадок убедитесь, что все необходимые данные на затронутом жестком диске ( /dev/sdb) скопированы.

Проблемы с резервным копированием?

Если вы столкнулись с ошибками ввода-вывода, которые не являются результатом повреждения файловой системы (вы указали, что ваши fsckрезультаты были чистыми), и ваши данные действительно важны для вас, самым безопасным способом восстановить то, что вы можете, будет использованиеgddrescue(илиdd_rescue, Если вы предпочитаете).

Вот пример с gddrescue:

ddrescue -Svv /dev/sdb /somewhere/else/rescue.img /somewhere/else/ddrescue.log

… где /somewhere/elseнаходится путь к монтированию, на котором свободного места больше, чем размер /dev/sdb.

gddrescueФайл журнала по адресу /somewhere/else/ddrescue.logтакже может помочь вам определить, какие области вашего жесткого диска не читаются.

После создания полного образа диска вы можете восстановить большую часть того, что можно восстановить, используя другие инструменты, такие какТестДискили kpartx -av /somewhere/else/rescue.imgи cryptsetup luksOpen, но это выходит за рамки вашего вопроса.


Отвечаем на ваши вопросы

Кто-нибудь видел это раньше и/или знает, что может происходить?

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

Мой жесткий диск вышел из строя?

Ну, ваш накопитель не знает, что он выходит из строя.

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

На днях я провел fsk при загрузке, и никаких сообщений об этом не было.

Ошибки чтения оборудования могут повлиять на содержимое файлов, но не на саму файловую систему.

Могу ли я еще что-то проверить/сделать, чтобы получить представление о его состоянии?

Да, я попытался написать для вас подробное руководство ниже.

Почему у меня возникают эти ошибки?

Существует множество причин возникновения проблем с вводом/выводом жесткого диска.

Распространенная проблема — слишком сильное падение или перемещение диска во время его использования. Это часто случается с внешними жесткими дисками, такими как ваш.

Другая причина — у вас Seagate Barracuda, который, как правило, ненадежен:

Гистограмма BackBlaze о марках жестких дисков и частоте отказов

(Нажмите на изображение выше, чтобы увидеть обзор надежности жесткого диска.)

Это также могут быть случайные проблемы, которые могут затронуть лишь небольшую часть диска или в конечном итоге привести к списанию.


Поиск неисправностей

Команды в этом разделе не являются деструктивными.

Читать индивидуальноСектора

Первым признаком проблемы было то, что ядро ​​регистрировало ошибки ввода-вывода. Попробуйте проверить, читаются ли эти сектора:

time hdparm --read-sector 947918344 /dev/sdb

… где 947918344— номер сектора, записанный в журнале ядра, и /dev/sdbпредполагаемый проблемный диск.

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

root@node51 [~]# time hdparm --read-sector 947918344 /dev/sdb

/dev/sdb:
reading sector 947918344: FAILED: Input/output error

real    0m0.038s
user    0m0.000s
sys     0m0.002s

Вот пример успешного прочтения:

root@node51 [~]# time hdparm --read-sector 947918344 /dev/sdb

/dev/sdb:
reading sector 947918344: succeeded
c193 76f6 7ae7 2dfa f121 b9ef 04da 2f82
4f6f 90af 6593 f215 d098 8857 2cfb d191
c6b1 245a 746c c1b8 bde9 f8f2 b3d2 ea68
3740 935d ce98 7fc6 bfef 41a5 f6b5 94e8
0833 6d39 3137 9b38 717d d310 f33d d508
d72d b504 77e5 7c8b 4496 6ac1 20f9 f49e
1224 8def df01 1163 d855 ae2b c6a8 eee5
3a22 04ae 012e bdd2 b5e9 94a4 3454 16ff
6000 81bc 356c a412 4b11 a875 588a 8394
37e5 310b f9eb afb6 4be1 0307 74f2 fce4
0f82 da8b 954f 4181 a544 ebff bfb5 4f1a
bcf9 e0be a912 fd78 e68d 9f76 424a 563f
0cc8 70ab 187e b7b1 b45d 732d 734d 0d7b
bb79 1e0c 8406 3fd9 5608 a6d4 9cd7 4167
ddb2 1972 7283 57bb 175e 1724 b3e4 9c07
0ba1 058d d8c9 b873 3e60 17e8 ab38 fad6
e9da b4e6 82f5 fb04 2316 b2ac 6cb3 05e1
7158 5a91 e21e 6333 f73e d839 e174 53bc
2f12 47dd 5dd2 d6d0 3d6d 7a6f a61c 7431
9e5f e3a2 55c5 1542 6efd 8b34 c40c 5382
a297 4627 2b64 1dc1 23bd 1442 f863 b1b1
767b c463 1936 ab96 b74c b899 7cae 632d
262d cef2 3088 2958 4d27 0f1b 9c44 ed30
f4ce 1d20 9a7e 2dca e99e 65bd 4686 2a8f
d3f4 f74a 35d3 e034 8473 9006 08d0 2372
0053 78fa d7ef 3f1a bcfd f702 376b c000
6517 3b41 5fb0 ff4c 87bb f79b 40ba 7bdf
c597 0246 663b 0ece 256d 26bd f806 e0f9
70b2 a1c8 ba4a 365d 69c6 e551 44d3 c840
7f9e 006d c1bc 07e5 c7df 5ca7 b37c 1de8
8d86 f118 e594 ede7 04b0 cc10 fac5 4070
a2a2 cd43 9ac6 fbd1 5790 eb60 fe65 f32d

real    0m0.014s
user    0m0.000s
sys     0m0.000s

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

Расширенный самотест SMART

Вы можете запуститьРасширенная офлайн-проверка SMARTс помощью этой команды:

smartctl -t long /dev/sdb

Посмотрите, как проверить ход выполнения тестаздесь.

После завершения теста вы можете проверить его статус с помощью этой команды:

smartctl -l selftest /dev/sdb

Вот пример жесткого диска, который я «отремонтировал» (объяснение позже):

root@node51 [~]# smartctl -l selftest /dev/sdb
smartctl 6.4 2014-10-07 r4002 [x86_64-linux-3.16.0-4-amd64] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
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%     23316         -
# 2  Extended offline    Completed: read failure       30%     22068         1475120744
# 3  Extended offline    Completed without error       00%     19943         -
# 4  Short offline       Completed without error       00%     19940         -
1 of 1 failed self-tests are outdated by newer successful extended offline self-test # 1

Раньше сектор 1475120744не мог быть прочитан, и тест сразу же проваливался, но спустя некоторое время сектор был исправлен? Читайте дальше, как это может быть.


«Ремонт» вашего диска

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

Переназначить плохие сектора

Если повторные попытки hdparm --read-sectorпродолжают замедлять ваш диск и возвращать ошибку ввода-вывода через некоторое время, данные, вероятно, никогда не вернутся. Вы можете указать жесткому диску переназначить затронутый сектор на запасной, что полностью сотрет сектор с вашей точки зрения:

hdparm --yes-i-know-what-i-am-doing --write-sector 947918344 /dev/sdb

… где 947918344находится номер сектора, который вы хотите перезаписать.

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

Сканирование и восстановление

Диск может знать о плохих секторах только если он их видит. Вы можете сканировать плохие сектора с помощью badblocks:

badblocks -b 512 -s /dev/sdb

Неудачные чтения будут регистрироваться в журнале ядра, как вы видели ранее, и выводиться badblocks. Вы можете использовать эту информацию для переназначения секторов с помощью hdparm --write-sector.

Безопасное стирание ATA

Если вы не хотите ждать badblocksили писать скрипт для переназначения секторов, вы можете стереть все плохие сектора.(а также все ваши другие данные)за один присест.

Примечание:Эти инструкции могут не работать через интерфейс USB.

hdparm --security-set-pass password /dev/sdb
time hdparm --security-erase password /dev/sdb

Переназначить и стереть с помощьюdd

Вы также можете переназначить сектора,очистка вашего дискас dd:

dd conv=noerror if=/dev/zero of=/dev/sdb bs=2M

Переназначение и очистка с ddсохранением LUKS

В качестве альтернативы, если ваше устройство LUKS расшифровано по адресу /dev/mapper/your-luks-device:

dd conv=noerror if=/dev/zero of=/dev/mapper/your-luks-device bs=2M

Связанный контент