Головна > Комп'ютери > Накопичувачі >
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  сек. HDD: ой, активності немає, головки в landing zone
  t+10  сек. Ядро: так, пора писати.
  t+10+ сек. HDD: головки приготувати! Пишемо.
  t+18  сек. HDD: все, розслабилися, головки в landing zone
  t+20  сек. Ядро: так, знову пора писати.
  t+20+ сек. HDD: що, вже поспали?  Головки в готовність, пишемо.
....

Тобто одна потенційно хороша фіча «засипати під час неактивності» в сумі з іншою хорошою фічою «відкладати запис і писати всім шматком» дає чорт знає що: вінчестер думає, що пора спати, в той час, як реально в системі відбуваються активні операції. Порція ненависті тому, хто придумав виставити таймаут в 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, V.2012


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

Головна  Алфавітний Індекс  Довідка  Додати FAQ  E-mail
Новини  Пошук по сайту

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