記憶力が無い

プログラミングと室内園芸と何か

買ったばかりのHDDの音が気になるときに確認するべきこと

先週自宅用にJenkinsサーバーを構築したのですが、危うくHDDをぶっ壊しかけたのでメモ。 結論から言うとAPMの設定が問題でした。

なにが起きたのか

新しく購入したHDD(http://kakaku.com/item/K0000920811/)に換装したマシンでJenkinsサーバーを構築しました。 構築直後からHDDが定期的に”チッ”という音(文字起こししづらい音)が鳴り始めました。

HDDの故障など、いろいろ原因を考えましたが、音以外で、書き込み速度が遅いなどの性能面の問題があるわけではなかったので、一週間ほど放置してました。

この時点でわかっていたこと

  • 音は定期的になっていた(使用していないときはほぼ一定の間隔で鳴っていた)
  • HDDに書き込み or 読み込みを行っている間は音が止む

SMART値を眺めた

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   071   065   006    Pre-fail  Always       -       13295314
  3 Spin_Up_Time            0x0003   100   100   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       4
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   061   060   045    Pre-fail  Always       -       1124713
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       242 (13 250 0)
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       4
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   000    Old_age   Always       -       0
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   056   051   040    Old_age   Always       -       44 (Min/Max 30/49)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       1
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       1
193 Load_Cycle_Count        0x0032   089   089   000    Old_age   Always       -       22710
194 Temperature_Celsius     0x0022   044   049   000    Old_age   Always       -       44 (0 27 0 0 0)
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       124 (45 86 0)
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       253025584
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       4435545
254 Free_Fall_Sensor        0x0032   100   100   000    Old_age   Always       -       0

Raw_Read_Error_Rateとか、Seek_Error_Rateの値が高いのがわかります。 が、この二つは買ったばかりのHDDでも高めに出るようです。

参考: Seagate製HDDが故障する直前のsmart値 – UbuntuによるEco Linuxサーバ構築記

上の二つの値に目がいってしまいそうですが、実はLoad_Cycle_Countの値も悪化しています。 音が気になりだしたときにもsmart値を確認していたのですが、ここまで悪化して初めて気が付きました。

1年ほど使用しているメインマシンのHDD(Seagate製の3.5インチ)の値が95で、使用開始から一週間のこのHDDの値が89。 このまま放置していたら3か月たたないうちに0(故障寸前)になってしまう計算です。 メーカーの仕様でも600,000回が上限になっていますから、半年ほどで超えてしまう計算です。気づけて良かった。(超えたらメーカー保証適用外になったりするのでしょうか。このことについてはっきり書かれた記述は見つかりませんでした。)

参考: (メーカー仕様)https://www.seagate.com/www-content/product-content/barracuda-fam/barracuda-new/files/barracuda-2-5-final-ds1907-1-1609jp.pdf

Load_Cycle_CountとAPM

Self-Monitoring, Analysis and Reporting Technology - Wikipedia

193 0xC1 Load Cycle Count または Load/Unload Cycle Count (Fujitsu) ロード/アンロード機構によって磁気ヘッドが磁気ディスク表面から退避場所に退避し、その後再び磁気ディスク表面に戻った回数の合計。一般的な2.5型HDDのメーカー保証値は、2005年以降に登場したモデルでは大抵60万回程度。2004年以前のモデルでは30万回程度。

Load_Cycle_Countとは磁気ヘッドがディスクから退避・戻りを繰り返した回数のようです。 これに関して調べたところ、APM(Advanced Power Management - Wikipedia)が関係しているらしいという記述をいくつか見つけました。

参考: Seagate APM ST3000DM001 : 事象の水平線 :/ hdparm - ArchWiki

設定によっては、使用していないときに積極的に磁気ヘッドを退避させて、消費電力を下げようという機能が働くようです。(書き込み・読み込み時に音が止まるという症状にも一致しますね。)

hdparmコマンドで無効にできるとのことです。

hdparm -B 255 /dev/sda

これで、気になる音は出なくなりましたとさ。めでたしめでたし。

Copyright © 2017 ttk1