Возникла не совсем понятная для меня ситуация с жестким диском.
Нечто похожее уже обсуждали несколько лет назад.
Предыстория.
Я не единственный пользователь на этой машине и вот поступила жалоба,
что вход в одну из учетных записей завершается с сообщением о том, что сеанс длился менее 10 секунд и пр.
Происходит это нерегулярно, иногда войти удается.
Засечь это никак не удавалось, в общем, я решил посмотреть логи и загрузился
с параметром single, чтобы логи не были затронуты стартующими иксами и всякими
сервисами. В логах я ничего интересного на первый взгляд не обнаружил и
перешел в init 3.
И вот тут начинается самое непонятное.
Стартуют сервисы и запускается fsck.
Обнаруживает какие-то проблемы, диск перемонтируется в read-only, fsck говорит что
Inode <number> extent tree (at level 1) could be narrower. Fix?
и так несколько раз. Я от исправления отказываюсь, нажав n.
Лезу в смарт и вижу там примерно такое (на тот момент):
Shell
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 120
198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 4
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0
Запускаю
smartctl -t short /dev/sdc1
тест завершается неудачно:
Shell
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
#1 Short offline Completed: read failure 90% 22915 851604770
#2 Extended offline Completed without error 00% 7 -
#3 Short offline Completed without error 00% 4 -
Не знаю, кому как, а мне в этой ситуации важно знать,
какие файлы попали на проблемные участки.
Попробуем определить.
Дальше действую, опираясь на этот материал.
Информация по диску
Shell
# smartctl --info /dev/sdc1
smartctl 6.5 2016-05-07 r4318 [x86_64-linux-4.4.172] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Western Digital Caviar Black
Device Model: WDC WD1002FAEX-00Z3A0
Serial Number: WD-WCATR4875328
LU WWN Device Id: 5 0014ee 25aa2eb68
Firmware Version: 05.01D05
User Capacity: 1 000 204 886 016 bytes [1,00 TB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA8-ACS (minor revision not indicated)
SATA Version is: SATA 2.6, 6.0 Gb/s
Local Time is: Thu Oct 3 18:54:18 2019 +04
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Смотрим разделы
UPD: Ошибочка вышла. Привел данные от другого диска.
Исправляю.
Shell
parted -s -- /dev/sdc u s print
Модель: ATA WDC WD1002FAEX-0 (scsi)
Диск /dev/sdc: 1953525168s
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: gpt
Флаги диска:
Номер Начало Конец Размер Файловая система Имя Флаги
1 2048s 1951426559s 1951424512s ext4 msftdata
2 1951426560s 1953523711s 2097152s msftdata
Размер блока
Shell
# tune2fs -l /dev/sdc1 | grep 'Block size'
Block size: 4096
${номер сектора} — ${начало раздела} ) / (${логический размер блока} / ${физический размер блока})
Shell
# echo "(851604770-2048)/(4096/512)" | bc
106450340
В консоли debugs с помощью testb 106450340 убеждаемся, что блок занят,
с помощью icheck 106450340 определяем номер иноды,
с помощью ncheck <номер иноды> получаем имя файла.
Это оказывается торрент-файл.
Далее пробуем скопировать файл - получаем ошибку,
пробуем считать сектор с помощью hdparm
hdparm --read-sector 851604770 /dev/sdc
- получаем ошибку.
Поскольку данный файл особой ценности не представляет,
обнуляем данный сектор
hdparm --write-sector 851604770 /dev/sdc --yes-i-know-what-i-am-doing
После этого счетчик "Current_Pending_Sector" уменьшается на единицу (становится равным 119),
а smartctl -t short /dev/sdc останавливается на следующем секторе - 851604780,
который принадлежит тому же торрент-файлу и обнуляется таким же образом.
За ним - сектор 851604781 (принадлежащий тому же файлу).
Обнулять каждый сектор по отдельности - это как-то грустно,
поэтому торрент-файл был заполнен нулями с помощью dd. Этого не следовало делать, ну да уж ладно.
Заполнение файла нулями не привело к изменению счетчика "Current_Pending_Sector",
но smartctl -t short /dev/sdc остановился на другом секторе, принадлежащем уже другому файлу.
Это был vob-файл из состава DVD. Тоже скачанный из торрентов, а посему я тоже попробовал обнулить этот сектор.
Для некоторых секторов не удается определить принадлежность файлу.
Например, из последнего теста смарт:
Shell
# echo "(918559905-2048)/(4096/512)" | bc
114819732
Shell
# debugfs /dev/sdc1
debugfs 1.43.1 (08-Jun-2016)
debugfs: testb 114819732
Block 114819732 marked in use
debugfs: icheck 114819732
Block Inode number
114819732 <block not found>
debugfs: q
Нужно каким-то образом получить полный список проблемных секторов.
Было сделано badblocks -v -b 512 -o sdc_badblocks /dev/sdc1.
Очень не хотелось этого делать, потому что в прошлый раз эта штука собиралась работать сутки или около того.
Однако в нынешнем случае она отработала на удивление быстро - всего пару часов.
Казалось бы, она должна была найти эти 120 секторов, которые числятся в "Current_Pending_Sector",
ну как минимум. С учётом обнуленных.
Но нет, она нашла какие-то свои 11 штук. И счетчик "Current_Pending_Sector" после этого стал равен 126.
Shell
cat sdc_badblocks
852577280
852577281
852577282
852577283
852577284
852577285
852577286
852577287
885002336
885002337
905997280
Shell
# echo "(852577280-2048)/(4096/512)" | bc
106571904
Shell
# echo "(852577287-2048)/(4096/512)" | bc
106571904
Последние три идентифицировать не удалось.
Из этого списка я уже ничего не обнулял.
Обнулял руками я всего четыре штуки
hdparm --write-sector 851604770 --yes-i-know-what-i-am-doing /dev/sdc
hdparm --write-sector 851604780 --yes-i-know-what-i-am-doing /dev/sdc
hdparm --write-sector 851604781 --yes-i-know-what-i-am-doing /dev/sdc
hdparm --write-sector 852579328 --yes-i-know-what-i-am-doing /dev/sdc
Это не считая заполнения нулями торрент-файла.
Вся эта возня с ручным обнулением секторов мне была нужна для того,
чтобы потом скопировать данные с этого винчестера.
Копирование-то прервется на первом же проблемном секторе.
А здесь идея была в том, чтобы идентифицировать проблемный сектор, ну и обнулить его заодно,
(или файл заполнить нулями), добившись таким образом успешного завершения смарт-теста.
Однако к этому моменту мне уже надоело нянчиться с каждым сектором.
Я решил попробовать скопировать данные, как есть.
Но предварительно ещё раз прогнать fsck, исправления которой я отклонил в прошлый раз.
После fsck счетчик "Current_Pending_Sector" был равен уже 144.
То есть возня с секторами окончательно потеряла смысл.
Итак, копируем данные с проблемного винчестера на другой винчестер.
При помощи ddrescue.
Первый проход в обычном режиме:
ddrescue -n /dev/sdc1 home.img home.log
Это я оставил на ночь, посольку время было уже позднее.
Утром проверил лог. В первом проходе скопировались ВСЕ данные.
За исключением двух секторов по 512 байт каждый.
Кстати, счетчик "Current_Pending_Sector" стал равен уже 146.
То есть эти два сектора - другие, не из числа ранее найденных.
Второй проход я запустил с трехкратным считыванием.
ddrescue -r3 /dev/sdc1 home.img home.log
скопировались и эти два оставшихся сектора.
И вот тут я совсем перестал понимать, что происходит.
На текущий момент смарт проблемного диска выглядит так:
Spoiler
Shell
smartctl 6.5 2016-05-07 r4318 [x86_64-linux-4.4.172] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Western Digital Caviar Black
Device Model: WDC WD1002FAEX-00Z3A0
Serial Number: WD-WCATR4875328
LU WWN Device Id: 5 0014ee 25aa2eb68
Firmware Version: 05.01D05
User Capacity: 1 000 204 886 016 bytes [1,00 TB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA8-ACS (minor revision not indicated)
SATA Version is: SATA 2.6, 6.0 Gb/s
Local Time is: Thu Oct 3 23:16:15 2019 +04
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
AAM feature is: Disabled
APM feature is: Unavailable
Rd look-ahead is: Enabled
Write cache is: Enabled
ATA Security is: Disabled, frozen [SEC2]
Wt Cache Reorder: 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: (16860) 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: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 195) minutes.
Conveyance self-test routine
recommended polling time: ( 5) minutes.
SCT capabilities: (0x3037) SCT Status supported.
SCT Feature Control supported.
SCT Data Table supported.
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAGS VALUE WORST THRESH FAIL RAW_VALUE
1 Raw_Read_Error_Rate POSR-K 200 200 051 - 0
3 Spin_Up_Time POS--K 173 168 021 - 4341
4 Start_Stop_Count -O--CK 096 096 000 - 4161
5 Reallocated_Sector_Ct PO--CK 200 200 140 - 0
7 Seek_Error_Rate -OSR-K 200 200 000 - 0
9 Power_On_Hours -O--CK 069 069 000 - 22935
10 Spin_Retry_Count -O--CK 100 100 000 - 0
11 Calibration_Retry_Count -O--CK 100 100 000 - 0
12 Power_Cycle_Count -O--CK 096 096 000 - 4158
192 Power-Off_Retract_Count -O--CK 200 200 000 - 611
193 Load_Cycle_Count -O--CK 199 199 000 - 3549
194 Temperature_Celsius -O---K 106 101 000 - 41
196 Reallocated_Event_Count -O--CK 200 200 000 - 0
197 Current_Pending_Sector -O--CK 200 200 000 - 149
198 Offline_Uncorrectable ----CK 200 200 000 - 4
199 UDMA_CRC_Error_Count -O--CK 200 200 000 - 0
200 Multi_Zone_Error_Rate ---R-- 196 193 000 - 839
||||||_ K auto-keep
|||||__ C event count
||||___ R error rate
|||____ S speed/performance
||_____ O updated online
|______ P prefailure warning
General Purpose Log Directory Version 1
SMART Log Directory Version 1 [multi-sector log support]
Address Access R/W Size Description
0x00 GPL,SL R/O 1 Log Directory
0x01 SL R/O 1 Summary SMART error log
0x02 SL R/O 5 Comprehensive SMART error log
0x03 GPL R/O 6 Ext. Comprehensive SMART error log
0x06 SL R/O 1 SMART self-test log
0x07 GPL R/O 1 Extended self-test log
0x09 SL R/W 1 Selective self-test log
0x10 GPL R/O 1 SATA NCQ Queued Error log
0x11 GPL R/O 1 SATA Phy Event Counters log
0x80-0x9f GPL,SL R/W 16 Host vendor specific log
0xa0-0xa7 GPL,SL VS 16 Device vendor specific log
0xa8-0xb5 GPL,SL VS 1 Device vendor specific log
0xb6 GPL VS 1 Device vendor specific log
0xb7 GPL,SL VS 1 Device vendor specific log
0xc0 GPL,SL VS 1 Device vendor specific log
0xc1 GPL VS 24 Device vendor specific log
0xe0 GPL,SL R/W 1 SCT Command/Status
0xe1 GPL,SL R/W 1 SCT Data Transfer
SMART Extended Comprehensive Error Log Version: 1 (6 sectors)
Device Error Count: 91 (device log contains only the most recent 24 errors)
CR = Command Register
FEATR = Features Register
COUNT = Count (was: Sector Count) Register
LBA_48 = Upper bytes of LBA High/Mid/Low Registers ] ATA-8
LH = LBA High (was: Cylinder High) Register ] LBA
LM = LBA Mid (was: Cylinder Low) Register ] Register
LL = LBA Low (was: Sector Number) Register ]
DV = Device (was: Device/Head) Register
DC = Device Control Register
ER = Error register
ST = Status register
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 91 [18] occurred at disk power-on lifetime: 22930 hours (955 days + 10 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER -- ST COUNT LBA_48 LH LM LL DV DC
-- -- -- == -- == == == -- -- -- -- --
40 -- 51 00 08 00 00 32 d1 54 08 40 00 Error: UNC at LBA = 0x32d15408 = 852579336
Commands leading to the command that caused the error were:
CR FEATR COUNT LBA_48 LH LM LL DV DC Powered_Up_Time Command/Feature_Name
-- == -- == -- == == == -- -- -- -- -- --------------- --------------------
60 00 08 00 c0 00 00 32 d1 54 08 40 08 09:02:59.479 READ FPDMA QUEUED
ef 00 10 00 02 00 00 00 00 00 00 a0 08 09:02:59.479 SET FEATURES [Enable SATA feature]
27 00 00 00 00 00 00 00 00 00 00 e0 08 09:02:59.479 READ NATIVE MAX ADDRESS EXT [OBS-ACS-3]
ec 00 00 00 00 00 00 00 00 00 00 a0 08 09:02:59.476 IDENTIFY DEVICE
ef 00 03 00 46 00 00 00 00 00 00 a0 08 09:02:59.476 SET FEATURES [Set transfer mode]
Error 90 [17] occurred at disk power-on lifetime: 22930 hours (955 days + 10 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER -- ST COUNT LBA_48 LH LM LL DV DC
-- -- -- == -- == == == -- -- -- -- --
40 -- 51 00 08 00 00 32 d1 54 0b 40 00 Error: UNC at LBA = 0x32d1540b = 852579339
Commands leading to the command that caused the error were:
CR FEATR COUNT LBA_48 LH LM LL DV DC Powered_Up_Time Command/Feature_Name
-- == -- == -- == == == -- -- -- -- -- --------------- --------------------
60 00 08 00 30 00 00 32 d1 54 08 40 08 09:02:56.382 READ FPDMA QUEUED
ef 00 10 00 02 00 00 00 00 00 00 a0 08 09:02:56.382 SET FEATURES [Enable SATA feature]
27 00 00 00 00 00 00 00 00 00 00 e0 08 09:02:56.382 READ NATIVE MAX ADDRESS EXT [OBS-ACS-3]
ec 00 00 00 00 00 00 00 00 00 00 a0 08 09:02:56.380 IDENTIFY DEVICE
ef 00 03 00 46 00 00 00 00 00 00 a0 08 09:02:56.380 SET FEATURES [Set transfer mode]
Error 89 [16] occurred at disk power-on lifetime: 22930 hours (955 days + 10 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER -- ST COUNT LBA_48 LH LM LL DV DC
-- -- -- == -- == == == -- -- -- -- --
40 -- 51 00 08 00 00 32 d1 54 08 40 00 Error: UNC at LBA = 0x32d15408 = 852579336
Commands leading to the command that caused the error were:
CR FEATR COUNT LBA_48 LH LM LL DV DC Powered_Up_Time Command/Feature_Name
-- == -- == -- == == == -- -- -- -- -- --------------- --------------------
60 00 08 00 c8 00 00 32 d1 54 08 40 08 09:02:54.450 READ FPDMA QUEUED
ef 00 10 00 02 00 00 00 00 00 00 a0 08 09:02:54.450 SET FEATURES [Enable SATA feature]
27 00 00 00 00 00 00 00 00 00 00 e0 08 09:02:54.450 READ NATIVE MAX ADDRESS EXT [OBS-ACS-3]
ec 00 00 00 00 00 00 00 00 00 00 a0 08 09:02:54.448 IDENTIFY DEVICE
ef 00 03 00 46 00 00 00 00 00 00 a0 08 09:02:54.448 SET FEATURES [Set transfer mode]
Error 88 [15] occurred at disk power-on lifetime: 22930 hours (955 days + 10 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER -- ST COUNT LBA_48 LH LM LL DV DC
-- -- -- == -- == == == -- -- -- -- --
40 -- 51 00 08 00 00 32 d1 54 0a 40 00 Error: UNC at LBA = 0x32d1540a = 852579338
Commands leading to the command that caused the error were:
CR FEATR COUNT LBA_48 LH LM LL DV DC Powered_Up_Time Command/Feature_Name
-- == -- == -- == == == -- -- -- -- -- --------------- --------------------
60 00 08 00 98 00 00 32 d1 54 08 40 08 09:02:52.394 READ FPDMA QUEUED
ef 00 10 00 02 00 00 00 00 00 00 a0 08 09:02:52.394 SET FEATURES [Enable SATA feature]
27 00 00 00 00 00 00 00 00 00 00 e0 08 09:02:52.394 READ NATIVE MAX ADDRESS EXT [OBS-ACS-3]
ec 00 00 00 00 00 00 00 00 00 00 a0 08 09:02:52.392 IDENTIFY DEVICE
ef 00 03 00 46 00 00 00 00 00 00 a0 08 09:02:52.391 SET FEATURES [Set transfer mode]
Error 87 [14] occurred at disk power-on lifetime: 22930 hours (955 days + 10 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER -- ST COUNT LBA_48 LH LM LL DV DC
-- -- -- == -- == == == -- -- -- -- --
40 -- 51 00 08 00 00 32 d1 54 09 40 00 Error: UNC at LBA = 0x32d15409 = 852579337
Commands leading to the command that caused the error were:
CR FEATR COUNT LBA_48 LH LM LL DV DC Powered_Up_Time Command/Feature_Name
-- == -- == -- == == == -- -- -- -- -- --------------- --------------------
60 00 08 00 f0 00 00 32 d1 54 08 40 08 09:02:50.047 READ FPDMA QUEUED
ef 00 10 00 02 00 00 00 00 00 00 a0 08 09:02:50.047 SET FEATURES [Enable SATA feature]
27 00 00 00 00 00 00 00 00 00 00 e0 08 09:02:50.047 READ NATIVE MAX ADDRESS EXT [OBS-ACS-3]
ec 00 00 00 00 00 00 00 00 00 00 a0 08 09:02:50.044 IDENTIFY DEVICE
ef 00 03 00 46 00 00 00 00 00 00 a0 08 09:02:50.044 SET FEATURES [Set transfer mode]
Error 86 [13] occurred at disk power-on lifetime: 22930 hours (955 days + 10 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER -- ST COUNT LBA_48 LH LM LL DV DC
-- -- -- == -- == == == -- -- -- -- --
40 -- 51 00 08 00 00 32 d1 54 08 40 00 Error: UNC at LBA = 0x32d15408 = 852579336
Commands leading to the command that caused the error were:
CR FEATR COUNT LBA_48 LH LM LL DV DC Powered_Up_Time Command/Feature_Name
-- == -- == -- == == == -- -- -- -- -- --------------- --------------------
60 00 08 00 d0 00 00 32 d1 54 08 40 08 09:02:48.116 READ FPDMA QUEUED
ef 00 10 00 02 00 00 00 00 00 00 a0 08 09:02:48.116 SET FEATURES [Enable SATA feature]
27 00 00 00 00 00 00 00 00 00 00 e0 08 09:02:48.116 READ NATIVE MAX ADDRESS EXT [OBS-ACS-3]
ec 00 00 00 00 00 00 00 00 00 00 a0 08 09:02:48.113 IDENTIFY DEVICE
ef 00 03 00 46 00 00 00 00 00 00 a0 08 09:02:48.113 SET FEATURES [Set transfer mode]
Error 85 [12] occurred at disk power-on lifetime: 22930 hours (955 days + 10 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER -- ST COUNT LBA_48 LH LM LL DV DC
-- -- -- == -- == == == -- -- -- -- --
40 -- 51 00 08 00 00 32 d1 54 08 40 00 Error: UNC at LBA = 0x32d15408 = 852579336
Commands leading to the command that caused the error were:
CR FEATR COUNT LBA_48 LH LM LL DV DC Powered_Up_Time Command/Feature_Name
-- == -- == -- == == == -- -- -- -- -- --------------- --------------------
60 00 08 00 30 00 00 32 d1 54 08 40 08 09:02:46.185 READ FPDMA QUEUED
ef 00 10 00 02 00 00 00 00 00 00 a0 08 09:02:46.185 SET FEATURES [Enable SATA feature]
27 00 00 00 00 00 00 00 00 00 00 e0 08 09:02:46.185 READ NATIVE MAX ADDRESS EXT [OBS-ACS-3]
ec 00 00 00 00 00 00 00 00 00 00 a0 08 09:02:46.183 IDENTIFY DEVICE
ef 00 03 00 46 00 00 00 00 00 00 a0 08 09:02:46.183 SET FEATURES [Set transfer mode]
Error 84 [11] occurred at disk power-on lifetime: 22930 hours (955 days + 10 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER -- ST COUNT LBA_48 LH LM LL DV DC
-- -- -- == -- == == == -- -- -- -- --
40 -- 51 00 08 00 00 32 d1 54 08 40 00 Error: UNC at LBA = 0x32d15408 = 852579336
Commands leading to the command that caused the error were:
CR FEATR COUNT LBA_48 LH LM LL DV DC Powered_Up_Time Command/Feature_Name
-- == -- == -- == == == -- -- -- -- -- --------------- --------------------
60 00 08 00 10 00 00 32 d1 54 08 40 08 09:02:44.256 READ FPDMA QUEUED
b0 00 da 00 00 00 00 00 c2 4f 00 00 08 09:00:18.026 SMART RETURN STATUS
b0 00 d0 00 01 00 00 00 c2 4f 00 00 08 09:00:18.021 SMART READ DATA
b0 00 d1 00 01 00 00 00 c2 4f 00 00 08 09:00:18.016 SMART READ ATTRIBUTE THRESHOLDS [OBS-4]
ec 00 00 00 01 00 00 00 00 00 00 00 08 09:00:18.013 IDENTIFY DEVICE
SMART Extended Self-test Log Version: 1 (1 sectors)
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed: read failure 90% 22930 918559905
# 2 Short offline Completed: read failure 90% 22922 918559905
# 3 Short offline Completed: read failure 90% 22922 918560016
# 4 Short offline Completed: read failure 90% 22920 918559905
# 5 Short offline Completed: read failure 90% 22920 852579328
# 6 Short offline Completed: read failure 90% 22920 851604781
# 7 Extended offline Completed: read failure 90% 22920 851604780
# 8 Short offline Completed: read failure 90% 22916 851604780
# 9 Short offline Completed: read failure 90% 22916 851604780
#10 Short offline Completed: read failure 90% 22915 851604770
#11 Short offline Completed: read failure 90% 22915 851604770
#12 Extended offline Completed without error 00% 7 -
#13 Short offline Completed without error 00% 4 -
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.
SCT Status Version: 2
SCT Version (vendor specific): 258 (0x0102)
SCT Support Level: 1
Device State: Active (0)
Current Temperature: 41 Celsius
Power Cycle Min/Max Temperature: 27/41 Celsius
Lifetime Min/Max Temperature: 27/46 Celsius
Under/Over Temperature Limit Count: 0/0
SCT Temperature History Version: 2
Temperature Sampling Period: 1 minute
Temperature Logging Interval: 1 minute
Min/Max recommended Temperature: 0/60 Celsius
Min/Max Temperature Limit: -41/85 Celsius
Temperature History Size (Index): 478 (138)
Index Estimated Time Temperature Celsius
139 2019-10-03 15:19 40 *********************
... ..( 35 skipped). .. *********************
175 2019-10-03 15:55 40 *********************
176 2019-10-03 15:56 41 **********************
... ..( 56 skipped). .. **********************
233 2019-10-03 16:53 41 **********************
234 2019-10-03 16:54 42 ***********************
235 2019-10-03 16:55 41 **********************
236 2019-10-03 16:56 41 **********************
237 2019-10-03 16:57 42 ***********************
238 2019-10-03 16:58 41 **********************
... ..( 3 skipped). .. **********************
242 2019-10-03 17:02 41 **********************
243 2019-10-03 17:03 42 ***********************
244 2019-10-03 17:04 42 ***********************
245 2019-10-03 17:05 42 ***********************
246 2019-10-03 17:06 41 **********************
... ..( 2 skipped). .. **********************
249 2019-10-03 17:09 41 **********************
250 2019-10-03 17:10 42 ***********************
251 2019-10-03 17:11 41 **********************
252 2019-10-03 17:12 42 ***********************
... ..( 3 skipped). .. ***********************
256 2019-10-03 17:16 42 ***********************
257 2019-10-03 17:17 41 **********************
258 2019-10-03 17:18 42 ***********************
... ..( 6 skipped). .. ***********************
265 2019-10-03 17:25 42 ***********************
266 2019-10-03 17:26 41 **********************
267 2019-10-03 17:27 42 ***********************
268 2019-10-03 17:28 42 ***********************
269 2019-10-03 17:29 42 ***********************
270 2019-10-03 17:30 41 **********************
271 2019-10-03 17:31 42 ***********************
... ..( 4 skipped). .. ***********************
276 2019-10-03 17:36 42 ***********************
277 2019-10-03 17:37 41 **********************
... ..(108 skipped). .. **********************
386 2019-10-03 19:26 41 **********************
387 2019-10-03 19:27 40 *********************
... ..( 6 skipped). .. *********************
394 2019-10-03 19:34 40 *********************
395 2019-10-03 19:35 ? -
396 2019-10-03 19:36 27 ********
397 2019-10-03 19:37 27 ********
398 2019-10-03 19:38 28 *********
399 2019-10-03 19:39 29 **********
400 2019-10-03 19:40 29 **********
401 2019-10-03 19:41 29 **********
402 2019-10-03 19:42 30 ***********
403 2019-10-03 19:43 31 ************
404 2019-10-03 19:44 32 *************
... ..( 2 skipped). .. *************
407 2019-10-03 19:47 32 *************
408 2019-10-03 19:48 33 **************
409 2019-10-03 19:49 34 ***************
410 2019-10-03 19:50 34 ***************
411 2019-10-03 19:51 35 ****************
... ..( 5 skipped). .. ****************
417 2019-10-03 19:57 35 ****************
418 2019-10-03 19:58 36 *****************
... ..( 2 skipped). .. *****************
421 2019-10-03 20:01 36 *****************
422 2019-10-03 20:02 37 ******************
423 2019-10-03 20:03 37 ******************
424 2019-10-03 20:04 37 ******************
425 2019-10-03 20:05 38 *******************
... ..( 6 skipped). .. *******************
432 2019-10-03 20:12 38 *******************
433 2019-10-03 20:13 39 ********************
434 2019-10-03 20:14 38 *******************
435 2019-10-03 20:15 39 ********************
... ..( 8 skipped). .. ********************
444 2019-10-03 20:24 39 ********************
445 2019-10-03 20:25 40 *********************
446 2019-10-03 20:26 39 ********************
... ..( 2 skipped). .. ********************
449 2019-10-03 20:29 39 ********************
450 2019-10-03 20:30 40 *********************
451 2019-10-03 20:31 39 ********************
452 2019-10-03 20:32 40 *********************
... ..(163 skipped). .. *********************
138 2019-10-03 23:16 40 *********************
SCT Error Recovery Control command not supported
Device Statistics (GP/SMART Log 0x04) not supported
SATA Phy Event Counters (GP Log 0x11)
ID Size Value Description
0x0001 2 0 Command failed due to ICRC error
0x0002 2 0 R_ERR response for data FIS
0x0003 2 0 R_ERR response for device-to-host data FIS
0x0004 2 0 R_ERR response for host-to-device data FIS
0x0005 2 0 R_ERR response for non-data FIS
0x0006 2 0 R_ERR response for device-to-host non-data FIS
0x0007 2 0 R_ERR response for host-to-device non-data FIS
0x000a 2 4 Device-to-host register FISes sent due to a COMRESET
0x000b 2 0 CRC errors within host-to-device FIS
0x8000 4 18882 Vendor specific
Я хочу обсудить, прояснить для себя ряд интересующих меня моментов.
1. Какого черта?
Где все эти десятки нечитаемых секторов, на которые ругается смарт?
Два сектора не прочитанных ddrescue на первом проходе, явно не из этой группы,
так как счетчик увеличился.
Почему смарт спотыкается на одном и том же секторе,
обычное копирование не справляется, а ddrescue первым проходом без всяких
особых настроек всё считывает?
ddrescue настолько хорошо умеет читать,
что влегкую считывает то, что не могут ни смарт, ни другие способы копирования?
Или ddresque на самом деле из проблемных секторов ни черта не скопировала?
Может быть, я её неправильно использовал?
2. Как быть с теми секторами, которые не удалось идентифицировать?
Я догадываюсь, что такой сектор, скорее всего, принадлежит не файлу и потому не имеет иноды.
Но хотелось бы это как-то прояснить.
3. Самое интересное.
В процессе ручного обнуления секторов и продвижения тестов смарт от сектора к сектору
ни один сектор не попал в ремап.
Здесь
Shell
5 Reallocated_Sector_Ct PO--CK 200 200 140 - 0
196 Reallocated_Event_Count -O--CK 200 200 000 - 0
То есть получается, что это "софт-бэды" - по крайней мере, те которые я обнулял вручную.
Если я ошибаюсь, прошу меня поправить.
4. Я теперь даже и не знаю, заменять мне винчестер или нет.
С одной стороны - явные проблемы со считыванием. С другой - ни одного ремапа.
Кстати, порекомендуйте, кого взять на замену. Я почти всегда использовал WD, а сейчас - сомнения.
Так ничего и не выбрал.
5. Покупка нового винчестера - это в любом случае вопрос нескольких дней,
а пока есть мысль прогнать копирование всего устройства с помощью dd куда-нибудь в /dev/null с игнорированием ошибок
и посмотреть, что отразится в системных логах.
Либо заполнить весь диск нулями и прогнать тестирование смарт, посмотреть, что он скажет.
А ещё настроить smartd что ли... Как-то я совсем про него забыл.
6. Данная ситуация - хороший повод организовать какую-то схему бекапов.
Бекап я делал, но бессистемно, просто копировал все данные на другой носитель.
Прилагая контрольные суммы.
Вот эти данные, которые я сейчас спасаю - они частично сохранены на другом диске.
Какие-нибудь видео-, аудио- файлы, книги - они ведь не меняются со временем.
Я всё никак не осилю rsync с его разностным, инкрементным и прочими режимами работы.
Не очень понятно, как это работает в случае перемещенных файлов, например.
С одной стороны, файл в бекапе уже есть - зачем его копировать второй раз.
С другой стороны, откуда rsync знать, что это тот же самый файл.
А в идеале хотелось бы что-нибудь вроде git, чтобы при копировании файла сразу было видно,
кто изменился, кто новый, кого куда переместили и т.п.
Правда, для этого придется каждый раз копировать все файлы.
Тихон Тарнавский в своё время описывал похожую схему, когда весь раздел /home находится под управлением git.
Выглядит заманчиво, но есть недостатки.
Во-первых, это расход дискового пространства, как минимум, вдвое,
так как каждый файл хранится дважды: один раз в каталоге, второй в базах git.
Во-вторых, git не слишком подходит для нетекстовых файлов.
В-третьих, могут встретиться файлы большого размера. Там какой-то другой git нужен.
В-четвертых, в Сети попадались истории о том, что возникают проблемы с git, если во вложенных каталогах есть каталог .git.
Суть проблемы не помню, но обсуждения попадались.
Если есть какие-то интересные идеи по поводу бекапов, поделитесь.
Спасибо всем, кто дочитал до конца. Длинное получилось повествование, но... по-другому не получается.