Western Digital HDD + RAID + Drive timeout

Есть у нас сторадж сервера в которых установлены 1TB диски Seagate Barracuda ES.2 ST31000340NS. Эти диски вставлены в RAID контроллеры 3Ware. Средний возраст дисков 3,7 лет. Около 40% дисков вышли из строя в течение гарантийного срока и были заменены продавцом на Certified repaired HDD. Все эти заменённые диски тоже вышли из сроя после окончания гарантийного срока и с ними умерло ещё 10% дисков. В сумме на сегодняшний день умерло около 50% дисков от общего количества установленного в стораджах. Расстроившись от качества дисков Seagate и исчерпав ремкомплект из таких же дисков мы решили попробовать другие диски. Взяли не Enterprise диски Western Digital WD10EZEX-00RKKA0. Дней через 10 диски начали непонятным образом «вываливаться» из массива перевода его в деградированное состояние. В логах серверов где стояли эти диски была примерно сходная ситуация.

На одном сервере была такая:

Jan  8 15:09:19 s01-0 kernel: 3w-9xxx: scsi2: AEN: ERROR (0x04:0x0009): Drive timeout detected:port=9.
Jan  8 22:37:23 s01-0 kernel: 3w-9xxx: scsi2: AEN: WARNING (0x04:0x0023): Sector repair completed:port=9, LBA=0x44549100.
Jan  8 22:37:26 s01-0 kernel: 3w-9xxx: scsi2: AEN: ERROR (0x04:0x0002): Degraded unit:unit=0, port=9.

на другом такая:

Jan 20 11:12:36 s01-1 kernel: 3w-9xxx: scsi2: AEN: WARNING (0x04:0x0023): Sector repair completed:port=15, LBA=0x44548778.
Jan 20 11:12:44 s01-1 kernel: 3w-9xxx: scsi2: AEN: ERROR (0x04:0x0002): Degraded unit:unit=0, port=15.

После выброса винта контроллером он детектится вот так:

/c2/p9 Status = DEVICE-ERROR

После анализа логов закралось у меня смутное подозрение что здесь что-то не чисто. После «передёргивания» винта он выглядит живым и рабочим, в некоторых увеличиваются счётчики релокаций но в некоторых нет. И даже Pending не меняется. После недолгих поисков выяснилось следующее:

Компания Western Digital производит жесткие диски как для настольного использования (Desktop Edition), так и для RAID-систем (RAID Edition). Эти два типа дисков предназначены либо специально для работы в качестве одиночного накопителя, либо в составе RAID-массива в специализированном аппаратном RAID контроллере.

Применение жестких дисков для настольного использования в аппаратных RAID-системах возможна нестабильная работа что связано с характерной для таких дисков процедурой восстановления после ошибок.

Если на диске для настольного использования будет обнаружена ошибка он войдет в «глубокий цикл восстановления», при котором будет произведена попытка перераспределения данных из проблемной области. На этот процесс для дисков WD отводится до 2 минут в зависимости от серьезности проблемы. В тоже самое время большинство аппаратных RAID контроллеров ожидают ответа от диска в течении 7-15 секунд после чего выбрасывают диск из RAID массива как неисправный.

Компания Western Digital не рекомендует применять диски для настольного использования в RAID-системах. Однако в некоторых из них имеется функция отключения режима «глубокого цикла восстановления» TLER (Time Limited Error Recovery). После её активации на восстановление ошибки отводится не более 7-ми секунд (время можно изменить), что соответствует требованиям аппаратных RAID контроллеров. А это предотвращает автоматический «выброс» диска из RAID массива и его деградацию, тоесть возникновение серьёзной предаварийной ситуации, когда требуется быстрое вмешательство техника и замена диска.

Функция возможности управления поведением диска во время обнаружения ошибки называется «SCT Error Recovery Control» или сокращённо SCT ERC. Сокращение SCT образовано от первых букв другого термина: SMART Command Transport. А SMART в свою очередь «разворачивается» в «Self-Monitoring Analysis and Reporting Technology».

А теперь перейдём к практике.

Выяснить поддерживает ли диск SCT ERC можно при помощи запроса SMART информации.
В Linux это делается при помощи утилиты smartctl.
Например для диска /dev/sda который не поддерживает SCT

# smartctl -l scterc /dev/sda
smartctl 5.43 2012-06-30 r3573 [x86_64-linux-2.6.32-431.5.1.el6.x86_64] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net

Warning: device does not support SCT Commands

Или для первого (port=1) диска в raid контроллере 3ware который поддерживает SCT

# smartctl -l scterc /dev/twa0 -d 3ware,1
SCT Error Recovery Control:
           Read:     70 (7.0 seconds)
          Write:     70 (7.0 seconds)

Или таким способом
(вывод будет пустым если в нём нет строк про SCT)

# smartctl -a /dev/sda | grep SCT

И таким когда строки есть

# smartctl -a /dev/twa0 -d 3ware,1 | grep SCT
SCT capabilities:              (0x30bd) SCT Status supported.
                                        SCT Error Recovery Control supported.
                                        SCT Feature Control supported.
                                        SCT Data Table supported.

Proof link