Главная > Компьютеры > Накопители >
WD Green Caviar + Linux = убей свой диск!

WD Green Caviar + Linux = убей свой диск!

Дошли руки разобраться, почему домашная файловая помойка тормозит, когда общается с новым винтом: периодический бэкап вызывает DoS всех файловых сервисов. Бился над включением AHCI+NCQ, а рано по утру заглянул в SMART к своему диску и обнаружил вот такое:

$ sudo smartctl -a /dev/sda | grep Load_Cycle_Count
193 Load_Cycle_Count 0x0032 158 158 000 Old_age Always - 127583


Раньше думал, что это счётчик интервалов активности винта. Зевая, полез в википедию:

Count of load/unload cycles into head landing zone position.
The typical lifetime rating for laptop (2.5-in) hard drives is 300,000 to 600,000 load cycles. Some laptop drives are programmed to unload the heads whenever there has not been any activity for about five seconds. Many Linux installations write to the file system a few times a minute in the background. As a result, there may be 100 or more load cycles per hour, and the load cycle rating may be exceeded in less than a year.


Чего?! У меня 127 тысяч раз произошла парковка головок? Зевота прекратилась.

Кто виноват?

Быстрый гуглёж нашёл, что товарищи из WD в серию WD Caviar Green включили супермегаопцию Intelli-Park, которая паркует головки после 8 секунд неактивности. Linux, понятно, откладывает запись буферов на диск на куда большее время:

$ cat /proc/sys/vm/dirty_writeback_centisecs
1000

: и получается откровенно гадкая ситуация:

  t+0  сек. Приложение пишет на диск, ядро кладёт всё в буфер.
  t+8  сек. Винт: ой, активности нет, головки в landing zone
 t+10  сек. Ядро: так, пора писать.
 t+10+ сек. Винт: головки на исходную! Пишем.
 t+18  сек. Винт: всё, расслабились, головки в landing zone
 t+20  сек. Ядро: так, опять пора писать.
 t+20+ сек. Винт: что, уже поспали? Головки в готовность, пишем.
....

Т.е. одна потенциально хорошая фича «засыпать во время неактивности» в сумме с другой хорошей фичей «откладывать запись и писать всем куском» даёт чёрт знает что: винт думает, что пора спать, в то время как реально в системе происходят активные операции. Луч ненависти тому, кто придумал выставить таймаут в 8 секунд.

UPD2: Запись на WD'шном саппорте: «Сами дураки, отключайте syslog».

Что делать?

Просто так всё это не исправить. По этому поводу повторный луч ненависти инженерам комании WD, луч ненависти маркетологам WD.

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

  1. Раздобыть WDIDLE3.EXE. Не привожу точный адрес, т.к. по-хорошему этот тул нужно просить у WD'шного саппорта. Найденные на просторах интернета версии можно использовать на свой страх и риск. Не оказывайте «медвежью услугу» другим, давая прямые ссылки или заливая на файловые хостинги.
  2. Взять ISO SystemRescueCd и его слегка похачить. Нам нужно положить WDIDLE внутрь FreeDOS'вского образа, и для этого придётся сделать следующий реверанс.
    • Слить Balder-версию FreeDOS'а, ибо FreeDOS в SysRescCd поломан.
    • Положить внутрь balder10.imz нужный WDIDLE3 (распаковать gunzip'ом, смонтировать, скопировать, размонтировать, запаковать gzip'ом обратно)
    • Заменить в SysRescCD bootdis/freedos.img на полученный образ
  3. Нарезать SysRescCD или положить его на LiveUSB
  4. Загрузиться с него в FreeDos и там выполнить WDIDLE
    • На этом месте я повторно пускаю луч ненависти в WD, потому что выключение IDLE вообще привело к тому, что винт начал парковаться чуть ли не каждую секунду. Наблюдал старт системы в течение 5 минут, потом плюнул и поставил IDLE-таймаут в 600 секунд.

После этих операций Load_Cycle_Count расти перестал.

UPD: Кроме того, пропали проблемы с производительностью во время записи: бекапы теперь проходят незаметно, а bonnie++ на 16 потоках не блокирует систему намертво.


(Прим. ред. УкрFAQ - Эта проблемма присутствует на жестких дисках серии Caviar Green компании Western Digital. Список моделей: WD20EADS, WD20EARS, WD15EADS, WD15EARS, WD10EADS, WD10EARS, WD8000AARS, WD7500AADS, WD7500AARS, WD6400AADS, WD6400AARS, WD5000AADS, WD5000AARS. Официальные пояснения находятся здесь: http://wdc.custhelp.com/app/answers/detail/a_id/5357.)

Автор: TheShade, 16.X.2010
Источник: habrahabr.ru


Украинская Баннерная Сеть

Главная  Алфавитный индекс  Справка  Добавить FAQ  E-mail
Новости  Поиск по сайту

© УкрFAQ 2012
Сайт создан в системе uCoz