• депутаты

  • Поднимаем VNC на VPS

  • Одним из прочих отличий (единственным?) жестких дисков "desktop" класса от тех же дисков "raid/enterprise" класса является поддержка ERC (Error Recovery Correction, Seagate), TLER(Time-Limited Error Recovery,Western Digital), CCTL (Command Completion Time Limit, Samsung/Hitachi). Эти технологии позволяют регулировать максимальное время отведенное диску для самовосстановления данных.

    В чем вообще говоря суть проблемы и для чего эти ERC нужны? Суть как говорится в песок, а точнее в том что, в случае возникновения ошибки диск может поступить двумя путями:
    1) Пытаться исправить ошибку, например, то перечитать/переписать сектор N раз и сдаться через неопределённое (от нескольких секунд до нескольких минут) время.
    2) Попытаться сделать это за строго ограниченное время и если не получилось, вернуть ошибку для операции

    Рассмотрим ошибку чтения. В данном случае в варианте:
    1) RAID контроллер/софтовый рейд видя*, что диск не отвечает просто выкинет** его из массива/пометит как сбойный. Результатом может стать пересинхронизация массива.
    2) RAID, конкретно linux soft raid, получив от диска ошибку чтения, имея данные на других дисках попытается восстановить сбойный перезаписав сектор и вуаля - диск продолжает работать, массив жив, админ спит дальше.

    Для записи почти то же самое:
    1) Диск уходит "в себя", выкинут из рейда
    2) Диск пытается совершить запись, но если приближается конец заданного периода, должен отремапить сектор. Что делать в случае если у него сие не получилось в спецификации написанно как-то смутно - "If the device is unable to complete data reallocation before the timer expires then the devices fails the command when the timer expires". Учитывая что к тому времени она [команда] скорее всего провалится в кэш диска и система будет думать что все хорошо, не очень понятно что случится, возможно от массива отвалится девайс :)

    Не стоит выставлять write timeout слишком низким - возможен усиленный ремап вполне здоровых секторов, обращение к которым замедленно в связи, например, вибрацией диска.

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

    А как же собственно различие между "enterprise" & "desktop" дисками? Различие сводится к тому что первые поддерживают технологию и по умолчанию она включена. Вторые же могут поддерживать ( вообще говоря  ATA8 спецификация все таки :), но по умолчанию выключена, хотя может быть включена в любое время. Данная настройка должна переживать hardware reset & soft reset, но выставляться в значение по умолчанию при включении питания. Таким образом на "десктопных" дисках нужно не забывать принудильно выставлять таймауты при загрузке системы.

    Установка параметров поддерживается smartmontools начиная с 5.40

    * На самом деле linux software raid не делает таймаутов, таймаут случается на уровне ATA/SCSI и пробрасывается на уровень md.
    ** На самом деле выкинет то он его после попытки восстановления данных при помощи записи в данный сектор, если таковая возможна. А вот если запись обломается, потому что диск ушел в себя при при попытке самовосстановления, то да, будет выкинут.

    Ссылки: 
    спецификация, страница 299
     
    TLER в Википедии
    Обсуждение в linux-raid maillist
    Подробнее про таймауты операций на диске.
    Влияние вибрации на работу дисков

    UPDATE: Добавил немного про таймауты.















  • депутаты

  • Поднимаем VNC на VPS