воскресенье, 13 ноября 2016 г.

Обработка ошибок у разных дисков

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

Диск определился, видна таблица разделов и можно смонтировать файловую систему в read-only, но при попытке копировать файлы диск жутко тупит и процесс затягивается до бесконечности. Снимать образ диска через ddrescue еще более затратное занятие - не настолько там важные файлы.

И тут я вспомнил, что десктопному винту можно добавить чуток "серверности" подкрутив параметр SCT ERC (TLER в терминологии WD). В этом случае винт не пытается мучить сбойный сектор до посинения, а по истечении некоторого времени на попытки - сообщает об ошибке. В этом случае RAID контроллер просто читает нужный сектор с другого диска и проблем с тормозами в системе не возникает. Собственно это одно из важных отличий дисков, предназначенных для RAID, от десктопных. Но поскольку меня интересует только быстрый пропуск сбойных секторов, то мне нужно выставить минимально разумное время попытки чтения секторов.

Пробую выяснить поддержку SCT в S.M.A.R.T.:

# smartctl -a /dev/sda | grep SCT
SCT capabilities:  (0x3037)  SCT Status supported.
                             SCT Feature Control supported.
                             SCT Data Table supported.

Что-то не видно в выводе про "Error Recovery Control" - проверяю это:

# smartctl -l scterc /dev/sda
Warning: device does not support SCT Error Recovery Control command

Не выйдет моя задумка - управление ERC (Error Recovery Control) в WD5000AAKX отсутствует. А теперь сравнение с не менее десктопными Toshiba DT01ACA300 у который с SCT ERC все в порядке:

# sudo smartctl -a /dev/sdb | grep SCT
SCT capabilities:  (0x003d)  SCT Status supported.
                             SCT Error Recovery Control supported.
                             SCT Feature Control supported.
                             SCT Data Table supported.

# sudo smartctl -l scterc /dev/sda
SCT Error Recovery Control:
           Read:     70 (7.0 seconds)
          Write:     70 (7.0 seconds)

Для десктопа, где зачастую жесткий диск только один важно установить значение SCT ERC в 0 (отключение таймаута), а для RAID наоборот нужно установить его значение в небольшое значение. По-умолчанию в Linux значение таймаута SCSI команд равно 30 секундам (/sys/block/sda/device/timeout).

Комментариев нет:

Отправить комментарий