Что такое SCT ERC или почему дорого стоят хорошие серверные винты

Железо
Преамбула: аккурат за 10 дней до Нового года звонок на мобилу, номер известеный, «мальчик-студент» одного из давних заказчиков. Года 3.5 у них не был, с тех пор как 9.04 LTS развернул. Усталый и забитый голос сообщает: «У нас после пропадания питания сервер еле ворочается (видать еще и батареи в APC 2200 Net „студент“ проспал), куча ошибок в дисковом массиве, где файлопомойка». Вспоминаю — был куплен KraftWay на 1U в минимальной комплектации, младший проц, 1 винт SATA Seagate «костелян», оперативки правда 8 Гб взяли, гарантия basic. Монтируя систему «пожурил» ребят что с винтами они пожадничали и сейчас поясню почему. Взяли 4 Seagate 7200.9 — 2*160Gb (система, сайт, прокси, статистика) и 2*300Gb (файлопомойка), «костелян» пришлось снять. Пожурил я их за ненадежные винты, могу конечно понять что 300 Gb SAS тогда стоил от 6 рублей за штуку без брендовой прошивки, не зря.

Тем более, что из разговора я выяснил — винты за это время не менялись (!!!!) ни разу. Домашний HDD, а 7200.Х линейка из них и есть, с гарантией в 54 месяца, на тот момент, не поможет когда вы теряете данные. И отмазки типа «да сервер редко выключается и т.д. и т.п.» — тут тоже не помогают.
Объясню вкратце в чем тут дело. Есть 2 направления производства жестких дисков:
  1. standalone/desktop — для повседневной жизни так сказать
  2. raid — для эксплуатации в серверах/NAS и так далее.

«Ну и что», скажете вы, да никто не мешает домой поставить винт WD серии RE3/4. Конечно нет. Но попытка сэкономить в случае с сервером череповата последствиями и они произошли. То что винты отходили больше 3-х лет и сдох только 1 — в принципе можно считать удачей.

Но речь о другом — винты не просто так делят на простые и для raid — у них разные стратегии обработки ошибок и выглядит это так:
standalone/desktop — при возникновении сбойного сектора возможны 2 исхода: 1) случайный сбой при чтении — типа было но прошло — просто игнорируется; 2)система пытаться прочитать его до последнего (определяется заводскими настройками, как правило они неуправляемы у большинства винтов), потом в конце концов контроллер принимает решение — метит BAD-блок, делает запись в лист, а мы слышим характерный хруст головками при рекалибровке. В обоих случаях мы получаем «тормозной винт» на время обработки аварии. В принципе для десктопной машины — это правильно и нечего тут голову себе забивать единичным отказом, на них есть лимит, кроме того отказ может быть случайным.
raid — сбой отваливает винт сразу. Контроллер отработав заданный алгоритм просто выкидывает винт из массива, метит как неисправный и начинает пересинхронизацию массива.

«А-а-а-а-а, кошмар, целый дорогой винт в помойку из-за единичного сбоя» — скажете вы. Да, нет все гораздо сложнее чем вы думаете. И по этой причине винты RAID такие дорогие, причина эта расширенные возможности SMART — SCT ERC.
SCT ERC — расшифровывается как SMART Command Transport Error Recovery Control. Про SMART понятно, он есть поголовно у всех винтов, а вот как узнать есть ли SCT ERC у вашего винта? Естественно на полноценных хардовых raid-контроллерах вы это можете узнать только в bios контроллера или менеджере управления контроллера из под операционной системы, просмотрев параметры. А как быть с простыми винтами, подключенными к матплате через стандартные контроллеры без наворотов или собранные в райд? Довольно просто, если стоит linux — попросим помощи у у команды smartctl, например наш винт Maxtor DM Max22 STM3500320AS (чудом живой после стольких лет службы, дико трещит, используется для Linux-издевательств) именуется в системе /dev/sda:

# sudo dmesg | grep sda
....
[    3.032304] sd 2:0:0:0: [sda] 986500300 512-byte logical blocks: (470.4 GB/473.0 GiB)
[    3.032340] sd 2:0:0:0: [sda] Write Protect is off
....
# sudo smartctl -a /dev/sda 
Программа 'smartctl' на данный момент не установлена.  Вы можете установить её, выполнив:
# apt-get install smartmontools

УПС, не стоит утилитка, делаем
sudo apt-get install smartmontools
Чтение списков пакетов… Готово
Построение дерева зависимостей
......
Обрабатываются триггеры для man-db ...
Обрабатываются триггеры для ureadahead ...
Настраивается пакет smartmontools (5.41+svn3365-1) ...

# sudo smartctl -a /dev/sda  | grep SCT
SCT capabilities:  (0x303f) SCT Status supported.
			SCT Error Recovery Control supported.  *****
			SCT Feature Control supported.

Ну что ж, отлично, посмотрим что мы еще можем узнать на эту тему:
# sudo smartctl -l scterc /dev/sda
SCT Error Recovery Control:
           Read:     5 (0 seconds)
          Write:     7 (0 seconds)
— несколько странные цифры, но поиск в интернете подтвердил, да такое может быть, а у винта Western Digital RE4 Serial ATA WDC WD1500HLFS-01G6U1 выдаст: Read: 70 (7 seconds) Write: 70 (7 seconds) (взято с инета). Вот эти два параметра и определяют помер винт при ошибке чтения по мнению контроллера или нет.
Если SCT у вашего винта есть, можно им управлять. Делается это так:
# sudo smartctl -l scterc,120,60 /dev/sda
(величины задаются в десятых долях секунды, то есть 120 — это 12 секунд, первое число — чтение, второе — запись). 0 означает «до победного конца», то есть неограниченно долго. Кстати, когда покупается домой VelocityRaptor или что-то аналогичное в качестве единственного жесткого диска то отключите ERC — задайте 0 в Read/Write. Если винты ставятся в raid — то показатели должны быть в диапазоне 3-10 секунд

PS: Восстановить систему удалось, винты поменяли поэтапно, raid пересобрали. Суть не в этом. По-умолчанию большинство десктопных винтов не управляемы в этом отношении, по-умолчанию показатели равны 0/0, так что при падении в raid такой винт попортит вам много нервов и крови.

11 комментариев

avatar
в избранное
avatar
Да, о грустном: при очередном апдейте ubuntu 12.04 9/01/2013 Maxtor DM M22 приказал долго жить.