Comments 90
На домашнем ПК стоит один RE4, что даст выключение ERC? Больше проживёт?
P.S: Может кто-нить знает как выключить его под виндой?
Больше не проживёт. Я ж написал что даёт ERC — поведение при ошибке. Когда она будет, в зависимости от ERC винт либо тут же её выдаст операционке с соответствующими последствиями, либо будет тупить до последнего.
Вы как первый день на Хабре. Ну когда тут первый комментирующий статью читал?
Как то столкнулись в адаптековских рейдах с кучей дисков с такой проблемой — винт внезапно «пропадает» из массива, как-будто его отключили, перепроверили все коннекторы в корзине много раз — все нормально. Судя по всему проблема была именно в этом — т.е. винт натыкался на ошибку чтения, и пытался ее прочитать до последнего, а контроллер тем временем считал что винт отключен, по тайм-ауту. Когда заменили все диски на raid edition — проблема больше не повторялась. Очень доставляло, когда при ребилде raid 5/6 внезапно начинали пропадать диски и весь массив умирал.
По моему опыту адаптек — то ещё чудо в перьях. У нас оно умудрялось SCSI bus hung делать даже на RE'шках.

А какие контроллеры можете по рекомендовать? С аналогичной удобностью управления, уведомлениями, аппаратным биппером, и т.д.?
mdadm. Лучше рейда я пока не видел. И уведомления, и произвольные конфигурации по дискам.

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

В качестве HBA я пока на LSI'ках остановился, но это от безысходности. Народ ещё 3ware хвалит, сам я не щупал.
mdadm конечно хорош, но во-первых не во всех ОС он есть, во-вторых если вам нужно поставить ОС на массив, то начинаются танцы с бубном — прописывание загрузчика на каждое зеркало, и если у вас RAID 5/6 то не получится поставить систему на такой массив. И еще он грузит CPU на сложных массивах.
Если вам не нужен кеш записи, то его можно принудительно отключить, но в остальных случаях он ощутимо повышает производительность.
Да нет, производительность повышает отлично.
Проблема в том, что «полученная кашица» с батарейкой бывает гораздо более питательной по высеру кирпичей, чем без неё.
Кстати, у всех нормальных сборок mdadm таки есть батарейка для кеша. UPS называется.
И, к слову, неплохо справляется со своей обязанностью.
Главное в это крепко верить, потому что если не верить, то может и не сработать :)
Ой, ну что за сказки «грузит cpu»

На практике у меня ни разу в него не упиралось. Куда заметнее, что он грузит шину (например, 4 диска SATA — значит, при записи на 1+0 запись идёт сразу на 4 диска, что уже может полностью занять всю пропускную способность PCI)
На шестых рейдах не грузит, до 2 гигабит выдает на чтение или запись влет. Ну а на остальных грузит ещё меньше чем на шестых.
че? Грузит CPU? Раздавая 15 гигабит на чтение и гигабит на запись не тупит. Расскажете мне про аппаратный рейд, который такое может?
и это большая печаль. есть люди которые умеют делать хорошие девайсы, но не умеют их продавать, а другие наоборот.
но слава богу пока линейки контроллеров пока различаются. а то этот LSI тихий ужас.
Ну и что, что не поймёшь. Зато, помимо писка, есть замечательные индикаторы, которые зажигаются около того диска, который сдох.

Кстати, я переформулирую вопрос core: а какие контроллеры для дисков используются (при условии, что в RAID они будут собираться софтварный)? У нас на практике диски висят на Fusion MPT SAS, но может это плохой выбор?
У меня была подобная история, коллега говорит, что на сетевом диске папка пропала, захожу разворачиваю из бэкапа, а диск говорит, что файлы есть и размер у них такой-то, но не вижу я этих файлов. пляска вокруг 3ware в попытках понять причину выпадения, ребут, и всё один диск пропадает, второй при чтении тоже сильно ругается контроллеру, но с игнорированием ошибок дочитываем данные для возможного сравнения с бэкапом.

покупаем новые диски разворачиваем данные с бэкапа, те старые диски идут на полку — до лучших времён, когда тестируем, а ошибок на них я так и не смог найти ни в смарт ни с пом. mhdd.
вот и лежит пара 1.5Тб вроде и целых, а мирных целях использоваться страшно.
> захожу разворачиваю из бэкапа, а диск говорит, что файлы есть и размер у них такой-то, но не вижу я этих файло

это же под виндами происходило, да?
smartctl из smartmontools? А какой версии пакет? А то у меня что-то не знает такого параметра:

gw merlin # smartctl -l scterc /dev/sda
smartctl version 5.38 [x86_64-pc-linux-gnu] Copyright © 2002-8 Bruce Allen
Home page is smartmontools.sourceforge.net/

=======> INVALID ARGUMENT TO -l: scterc
=======> VALID ARGUMENTS ARE: error, selftest, selective, directory, background, scttemp[sts|hist] <=======

Use smartctl -h to get a usage summary
У меня более новый билд:
smartctl 5.40 2010-07-12 r3124 [i686-pc-linux-gnu] (local build)

На нем все работает.
# smartctl -l scterc,1000,1000 /dev/ad10
smartctl 5.40 2010-10-16 r3189 [FreeBSD 8.2-STABLE amd64] (local build)
Copyright © 2002-10 by Bruce Allen, smartmontools.sourceforge.net

=======> INVALID ARGUMENT TO -l: scterc,1000,1000
=======> VALID ARGUMENTS ARE: error, selftest, selective, directory[,g|s], background, scttemp[sts|hist], scterc[,N,M], sasphy[,reset], sataphy[,reset], gplog,N[,RANGE], smartlog,N[,RANGE], xerror[,N][,error], xselftest[,N][,selftest] <=======
=======> Option -l scterc,[READTIME,WRITETIME] syntax error

Use smartctl -h to get a usage summary

да, много, но даже 120 не выставляется:

# smartctl -l scterc,120,120 /dev/ad10
smartctl 5.40 2010-10-16 r3189 [FreeBSD 8.2-STABLE amd64] (local build)
Copyright © 2002-10 by Bruce Allen, smartmontools.sourceforge.net

SCT Error Recovery Control:
Read: 57345 (5734.5 seconds)
Write: 57345 (5734.5 seconds)
Даже не знаю что еще вам подсказать… Может быть диски не поддерживают смену этого параметра? Какие у вас диски?
Обычное поведение десктопного винта. Достаточно цивилизованный, чтобы рассказать про ERC, но не достаточно энтерпрайзнутый, чтобы позволить его менять.
Нужно как-то scterc поменять :)
Model Family: SAMSUNG SpinPoint F1 DT series
Device Model: SAMSUNG HD753LJ
Serial Number: S13UJ1DQ502325
Firmware Version: 1AA01112
User Capacity: 750 156 374 016 bytes
UFO landed and left these words here
UFO landed and left these words here
а выставленные параметры ERC винчестер запоминает навсегда, один раз выставил и на всю жизнь, следить за этим боьше не придётся?
UFO landed and left these words here
Нет, saveauto это сохранение параметров смарта (например, power on hours).
ERC is a feature stated in the ATA-specifications. But in the specs it is also noted, that the change a
SCT-ERC-Command does will not survive a power cycle.
Поэтому можно настроить задание таймаутов где-нибудь при старте системы или прямо в udev
Пойду задрачивать коллегу, который вставил себе raid edition в десктоп и жутко горд этим, спасибо :)
На caviar black работает?

А то вот альтернативное решение: ithappens.ru/story/5177
4х WD caviar black в raid5+hotspare на встроенном рейдконтроллере. 10й софтрейд не по-пацански.
на блеках работает smartctl

а встроенный рейдконтроллер — это, простите, тот же софтрейд. То есть, загружаешь линукс, а он видит его как софтрейд со всеми причиндалами — записи в /proc/mdstat и т. п… Только контейнер есть — ddf или imsm, вот и вся разница от «чисто линуксового» софтрейда
Вот, за одним узнал, что у меня винчестеры в домашнем сервере за лето разогрелись до плюс 53 по Цельсию %)
UFO landed and left these words here
SAMSUNG HD105SI 1AJ10001

SCT Error Recovery Control:
Read: 57345 (5734.5 seconds)
Write: 57345 (5734.5 seconds)

Какие то большие цифры слишком.
Для RAID по рекомендациям из статьи следует уменьшить до 100 получается.
Model Family: SAMSUNG SpinPoint F3
Device Model: SAMSUNG HD103SJ


два диска таких и на обоих такие значения:

SCT Error Recovery Control:
Read: 57344 (5734.4 seconds)
Write: 57344 (5734.4 seconds)


А как быть с SAS-дисками? На них вывод smartctl существенно отличается:
gw merlin # smartctl -a /dev/sda
smartctl 5.40 2010-10-16 r3189 [x86_64-pc-linux-gnu] (local build)
Copyright © 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

Device: SEAGATE  ST3500620SS      Version: 0001
Serial number: 3QM00TLJ00008817EVD4
Device type: disk
Transport protocol: SAS
Local Time is: Tue Aug  2 13:16:13 2011 MSD
Device supports SMART and is Enabled
Temperature Warning Enabled
SMART Health Status: OK

Current Drive Temperature:     41 C
Drive Trip Temperature:        68 C
Elements in grown defect list: 0
Vendor (Seagate) cache information
  Blocks sent to initiator = 1813824591
  Blocks received from initiator = 3355975879
  Blocks read from cache and sent to initiator = 1240205903
  Number of read and write commands whose size <= segment size = 521982773
  Number of read and write commands whose size > segment size = 5
Vendor (Seagate/Hitachi) factory information
  number of hours powered up = 19151.00
  number of minutes until next internal SMART test = 6

Error counter log:
           Errors Corrected by           Total   Correction     Gigabytes    Total
               ECC          rereads/    errors   algorithm      processed    uncorrected
           fast | delayed   rewrites  corrected  invocations   [10^9 bytes]  errors
read:   2162328582    36413         0  2162364995   2162364995      25127.652           0
write:         0        0         0         0          0       6166.241           0
verify:   128126        0         0    128126     128126          0.000           0

Non-medium error count:        6

SMART Self-test log                                                                                                                                                   
Num  Test              Status                 segment  LifeTime  LBA_first_err [SK ASC ASQ]                                                                           
     Description                              number   (hours)                                                                                                        
# 1  Background long   Completed                   -    4529                 - [-   -    -]                                                                           
                                                                                                                                                                      
Long (extended) Self Test duration: 6798 seconds [113.3 minutes]                                                                                                      


Команды типа smartctl -l scterc /dev/sda выполняются, но никакой информации не выдают. Ни ошибки, ничего.

Как про них узнать поподробнее?
SAS — свой мир. Рыть в сторону sgutils, там свой набор команд для управления scsi generic.
в общем, ответ получен командой sdparm. В частности, там есть такие параметры (этот же диск):

  AWRE        1  [cha: y, def:  1, sav:  1]  Automatic write reallocation enabled
  ARRE        1  [cha: y, def:  1, sav:  1]  Automatic read reallocation enabled
  EER         0  [cha: y, def:  0, sav:  0]  Enable early recovery
  DTE         0  [cha: y, def:  0, sav:  0]  Data terminate on error
  DCR         0  [cha: y, def:  0, sav:  0]  Disable correction
  RRC        11  [cha: y, def: 11, sav: 11]  Read retry count
  WRC         5  [cha: y, def:  5, sav:  5]  Write retry count
  RTL        -1  [cha: y, def: -1, sav: -1]  Recovery time limit (ms)


смысл понятен из описаний.

Вообще, sas-диск куда тоньше настраивается. Всего настраиваемых параметров там примерно в пять раз больше, чем здесь перечислено.
Есть подозрение что SAS по умолчанию, так сказать от рождения предназначены для работы в рейдах и имеют все нужные параметры по дефолту.
Сомнительно. Какие именно нужные параметры?

Например, из статьи следует, что консистентный массив должен работать с небольшими значениями, типа 60/60. Но как раз когда массив деградировал, на остальных дисках есть смысл выключить ERC (0/0), чтобы при собственно перестроении массива он с выживших дисков считывал информацию до последнего — таким образом, меньше шансов, что в процессе реконструкции RAID5 умрёт окончательно.

Диск же сам никак не сможет узнать, что массив, в котором он участвует, деградировал и сейчас нужно считывать тяжёлые блоки до последнего, а не выдавать сбой через пять секунд неудачных попыток, нужен способ ему об этом сказать. Так вот, не может быть, чтобы в «домашних» дисках «домашнего» интерфейса SATA такой способ был, а в «профессиональных» с «профессиональным» же интерфейсом SAS — не было.
Нужные параметры — ответ контроллеру за 7 секунд, если дольше то он посчитает диск мертвым, и отключит его тоже. Поэтому бесполезно выставлять больше в попытках ребилда. В железных рейдах есть и другие технологии — постоянное сканирование поверхностей в простое, анализ смарта, хот-спаре и т. д., чтобы диски «внезапно» не переставали работать.
А если уж такое произошло, то появляется бэкап, и раскатывается.

А те параметры, которые выше, нужны в исключительных случаях: если суппорт (или коммьюнити), в определённой конфигурации, под определённую задачу рекомендует выставить нужные параметры.
Печально что в уже существующих аппаратных рейдах не проверить возможности того или иного диска.
ошибаетесь, можно:
ошибаетесь, это возможно:
xen0 merlin # smartctl -a -d cciss,0 /dev/cciss/c0d0
smartctl version 5.38 [x86_64-pc-linux-gnu] Copyright © 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

Device: HP       DG072BABCE       Version: HPD5
Serial number: BSA5P8702STJ0830
Device type: disk
Transport protocol: SAS
Local Time is: Tue Aug  2 13:37:20 2011 MSD
Device supports SMART and is Enabled
Temperature Warning Enabled
SMART Health Status: OK

Current Drive Temperature:     38 C
Drive Trip Temperature:        65 C
Manufactured in week 30 of year 2008
Recommended maximum start stop count:  50000 times
Current start stop count:      47 times
Elements in grown defect list: 0

Error counter log:
           Errors Corrected by           Total   Correction     Gigabytes    Total
               ECC          rereads/    errors   algorithm      processed    uncorrected
           fast | delayed   rewrites  corrected  invocations   [10^9 bytes]  errors
read:          0        0         0         0          0          0.000           0
write:         0        0         0         0          0          0.000           0

Non-medium error count:      115
No self-tests have been logged
Long (extended) Self Test duration: 1142 seconds [19.0 minutes]

xen0 merlin # smartctl -a -d cciss,4 /dev/cciss/c0d0
smartctl version 5.38 [x86_64-pc-linux-gnu] Copyright © 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

Serial number:      WD-WX50AC9D8701
Device type: disk
Local Time is: Tue Aug  2 13:38:31 2011 MSD
Device supports SMART and is Enabled
Temperature Warning Disabled or Not Supported
Log Sense failed, IE page [scsi response fails sanity test]
Read defect list: asked for grown list but didn't get it

Error Counter logging not supported
Device does not support Self Test logging


это — случай когда диск подключен к контроллеру HP (Compaq) SmartArray E200. Подробности про это и другие контроллеры есть в man smartctl.

конкретно с adaptecом у вас, видимо, ничего не выйдет.

вот описание основного в данном вопросе ключа -d: Specify device type to one of: ata, scsi, sat[,N][+TYPE], usbcypress[,X], usbjmicron[,x][,N], usbsunplus, marvell, areca,N, 3ware,N, hpt,L/M/N, megaraid,N, cciss,N, auto, test
Через адаптеки можно достучаться, но если ОС — Linux. Он предоставляет драйвер sg — общий для SCSI, и последние контроллеры 2 и 5 серий позволяют через него работать напрямую с дисками — как SAS, так и SATA.
Не позволяют, я пробовал. smartmontool на ленни (пробовал именно на ленни) нихрена не может через /dev/sg* сделать. Адаптековцы что-то фееричное присылали про метод чтения смарта у винтов, но это было так через… пно…
У меня Adaptec 5405, firmware 17899. Прочитал smart, даже на FreeBSD через /dev/pass* :)
Я вот не понял какие последствия будут, если в десктопе стоит RAID версия HDD и у нее SCT ERC выставлен не в 0/0? Что с диском может быть не так, если не выставит значения таймингов в нули?
Первый чих, и ваша файловая система огребает ошибку записи в журнал транзакций, BMP или другую ценную область.
То-есть будут никому не нужные записи об ошибках, которые будут портить статистику использования винчестера? А емкость HDD будет снижаться при появлении таких ошибок?
не записи об ошибках, а ошибки записи. чисто теоретически, это примерно одинаково по эффекту с «перезагрузкой кнопочкой».

практически возможны варианты — ядро делает ретрай записи или фс обрабатывает ошибку и что-то делает (уход в ro, паника. итд).
… по другому адресу, а этот блок диска помечается как сбойный и про него ФС забывает навсегда
>… по другому адресу, а этот блок диска помечается как сбойный и про него ФС забывает навсегда

драйвер контроллера вполне может и без ФС тихо насрать в лог, сделать ретрай и ФС ничего не узнает.

кроме того, что-то я не помню такого поведения, например у линуксовых фс, при котором ядерный драйвер САМ обновлял таблицу сбойных блоков.

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

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

Так или иначе, это лучше, чем по-тихому смолчать, а потом прочитать некорректные данные.
Когда-то, в начале столетия, мы смотрели его в viv-файлах. 26 серий занимало 2 cd. Ощущения типа «красное пятно подползло к зелёному и что-то пробулькало».
О, спасибо, очень полезно.
У меня как раз RE3 и RE4 стоят в софт-рейде — думал, а не надо ли их настраивать.
может, будет полезно: у меня
Model Family: Western Digital Caviar Blue Serial ATA family

но при этом проверка на SCT как бы проходит:

SCT capabilities: (0x3037) SCT Status supported.
SCT Feature Control supported.
SCT Data Table supported.

хотя на самом деле управлять им нельзя:

$ smartctl -l scterc /dev/sda
smartctl 5.40 2010-07-12 r3124 [i686-pc-linux-gnu] (local build)
Copyright © 2002-10 by Bruce Allen, smartmontools.sourceforge.net

Warning: device does not support SCT Error Recovery Control command
Из статьи не очень понятно — а каковы будут действия ОС \ Raid-контроллера, если в рэйде установлены несколько дисков с работающим (ненулевым) ERC?
И чем это будет отличаться от ситуации без ERC?
Запрос на чтение. Пауза. Долгая. Запрашивающий уже отвалился по таймауту. А запрос всё ещё исполняется.
% smartctl -l scterc /dev/ad16
smartctl 5.41 2011-06-09 r3365 [FreeBSD 8.2-STABLE amd64] (local build)
Copyright © 2002-11 by Bruce Allen, smartmontools.sourceforge.net

SCT Error Recovery Control:
Read: 57345 (5734.5 seconds)
Write: 57345 (5734.5 seconds)

— и так для всех дисков Samsung (2,5" HDD) и WD (3,5" HDD). Работают в ZFS-пулах.
Это на самом деле плохо, потому что если диску захочется «перечитать» запрошенное, то он это будет делать неограниченно долго, или, с поправкой на современные линуксы/бзди — две минуты, пока операция не отвалится по таймауту.
А что за «поправка»? Современные *nix'ы не обращают внимания на ERC и сами дают диску меньшее время на чтение? Диск же тупит и ждёт истечения полного таймаута ERC, для ОСи он в это время считается не ответимшим?

То есть нужно каким-то образом привести ERC и ожидания операционной системы в синхронное состояние — чтобы и там и там время таймаута совпадало с неким значением, допустим, 1 секунда. Так?
Не так. Правильно (если есть рейд) чтобы диск отвечал о проблеме сразу же (с небольшим лагом), а не пытался до последнего.

В случае современных ОС они имеют свой таймаут, и железка, не прочитавшая в указанное время (у линукса 2 минуты) считается мёртвой и игнорируется.

ERC просто контролирует когда диск должен вернуть ошибку (если таковая есть). С поведением линукса никак не коррелирует.
Правильно ли я понял, что таймаут операционной системы на общение с носителем и ERC самого носителя мало связаны между собой? Но вот где проходит разрыв этой связи, я пока не улавливаю.

Попробую ещё раз: диск в RAID должен как можно скорее вернуть ошибку RAID-контроллёру и даже не пытаться самостоятельно перечитывать сбойный сектор. А значит, значения ERC его должны быть минимальными (несколько секунд). Так?

Когда RAID переходит в аварийный режим работы и режим восстановления, ERC у оставшихся дисков нужно выставить на максимум (две минуты), чтобы обеспечить надёжность считывания без случайных отвалов по ошибке чтения/записи? Я правильно понял идею?
Чтобы был «разрыв связи» должна быть связь. А её нет.

В остальном правильно.
Добавим в табличку:
Hitachi Travelstar 7K1000 | HGST HTS721010A9E630 | Есть, 0/0, можно включить
У некоторых SSD поддержка SCT тоже есть и даже включена. Plextor PX-64M2S — 2/2. Причём, первое значение можно изменить, а второе нет.
Only those users with full accounts are able to leave comments. Log in, please.