Дневник onk. А вы думали чей? ;)
onk
дневник заведен 11-03-2003
постоянные читатели [32]
A1ien, BlackDrago, Chocolate_eyes, DeadMorozz, eroticplanet, Foto, Fox104, Girl_Dream, goldenandy, Greenbeam, Hank_Moody, JFK, LEG, Leonid_Dickman, Mata_Hary, Nau, Noliko, onk, pauluss, photo, RADAR, Tararoev_DL, Vasilich, YuSer, Айуну, АКУНА МАТАТА, Джей, стикер, Танка, ТотКтоЯеСтЬ, чеширский Мурзик В., Эль
закладки:
цитатник:
дневник:
местожительство:
Запорожье, Украина
интересы [6]
антиресы [3]
17-10-2010 15:55 WD Green Caviar + Linux = убей свой диск!
http://habrahabr.ru/blogs/sysadm/106273/

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 секунд.

Что делать?

Просто так всё это не исправить. По этому поводу повторный луч ненависти инженерам комании 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 потоках не блокирует систему намертво.
Комментарии:
17-10-2010 17:50
Камрад
как хорошо, что во время покупки диска WD не было. Купил 1ТБ Сигейт.
Камрад
Fox104 на самом деле, как описал народ в треде на хабре, правильная настройка решает проблему.
Хотя, приду домой, проверю WD Green, который в медиаплеере. Но там проще - если кино играет - идет постоянное чтение потока, когда кино не играет - чтений с винта нет.....

onk спасибо за инфу, проверил винт на ноуте своем -
Model: ST9320423AS

-------------------------------------------------------------------------
ID Name Value Worst Tresh Raw Health
-------------------------------------------------------------------------
9 Power-on time 100 100 0 516 •••••
12 Start/stop count 100 37 20 194 •••••
193 Load/unload cycle count 100 100 0 1424 •••••

итого ~3 парковки в час....

Ваш комментарий:
Камрад:
Гость []
Комментарий:
[смайлики сайта]
Дополнительно:
Автоматическое распознавание URL
Не преобразовывать смайлики
Cкрыть комментарий
Закрыть