noflushdによるHDDの停止 Edit

  • 注意
    noflushdを導入して、HDDが壊れたという報告が、ここにありますので注意してください。
    ここまで酷いのはマレだと思いますが、過剰なまでのモータ制御(回転開始/停止)は、メカ部にストレスが掛かり、HDDの寿命を縮めることになりますので、ご留意ください。かと言って、高温状態のまま、回転を放置するのも良いとは言えませんが。
  • 補足
    オリジナルLANDISKでは、hdparmコマンドでHDDの停止(スピンダウン)を実現していましたが、
    ここでは、別のツール、noflushdを使用してみました。

    両者の違いは、(推測ですが、)、下記です。
    • hdparmはスピンダウン時間を設定するだけのコマンド。スピンダウン動作は、HDDが自発的に行う。
    • noflushdでは、常駐したデーモンがsync等を行った後、スピンダウンを行う。
    noflushdのほうが、少しだけ気の利いたことをやってくれるようです。

  • インストール
    apt-get でインストールします。
    ダイアログでは、タイムアウトは5分、ディスクは/dev/hda、コマンドラインパラメータはNoを指定しました。
    landisk:~# apt-get install noflushd

  • 微調整
    インストールしたままの状態では、デーモン類によるファイルアクセスが頻繁に発生するため、
    スピンダウンしても、それがすぐに解除されてしまうという問題がある。
    以下に私が行った対策方法を記します。
  • /var/log/syslogへのアクセス
    syslogが、20分毎に"-- MARK --"を書き込むため、そのタイミングでスピンダウンが解除される。
    /etc/init.d/sysklogd を次のように修正すると、この書き込みを抑止できる。
    (デーモンを再起動すること。)
    SYSLOGD="-m 0"
  • /etc/cron.d/php4
    30分毎に実行され、そのタイミングでスピンダウンが解除される。何をやっているのだろう?
    私のシステムでは、DynamicDNS更新のため1時間毎にHDDが動作する。
    そのタイミングで本処理を実行するよう変更する。 (その結果、起動周期が1時間毎になるが多分問題なかろう。)
    下記スクリプトを作成、実行属性を付加後、/etc/cron.hourly/php4へmv。
    (デーモンを再起動すること。)
    #!/bin/sh
    
    [ -d /var/lib/php4 ] && find /var/lib/php4/ -type f -cmin \
     +$(/usr/lib/php4/maxlifetime) -print0 | xargs -r -0 rm
    
    
    元ファイル/etc/cron.d/php4は実行されないようコメント化しておく。
  • samba
    nmbdデーモンがWindowsからの問いかけに応答するタイミングでスピンダウンが解除される。
    Windowsマシンが立ち上がっていると、高頻度で発生するようである。
    • mnbdを起動させない。(名前解決ができなくなるので、WindowsからはIPアドレス指定でアクセスする。)
    • sambaを使わない。代わりにWebDAVを使用する。
    という安直な解決策があり、私は後者を選択した。


  • その他
    reiserfs(恐らくext3も)を使用した場合、noflushdが機能しないという報告あり。(掲示板471参照)。
    そういった場合は、/etc/fstabのmountオプションにnoatimeを追加すれば良いらしい。

  • 参考ページ
    玄箱の下記ページを参考にしました。
    LinkTheater(玄箱/VINE化2/HDD関連)
    玄箱を静かに

hddtempによるHDDの温度計測 Edit

  • インストール
    apt-get でインストールします。
    landisk:~# apt-get install hddtemp 
    /etc/hddtemp.db に以下を追加します。 SV1203Nは120G、SV1604は160GのSAMSUNGドライブです。
    "SAMSUNG SV1203N"  194  C "Samsung SpinPoint V80 serie"
    "SAMSUNG SV1604N"  194  C "Samsung SpinPoint V80 serie"
  • 実行
    ドライブを引数にコマンドを実行します。
    landisk:~# hddtemp /dev/hda
    /dev/hda: SAMSUNG SV1604N:  41 C
    次のようなスクリプトを用意すれば、温度だけ抜き出すことが可能です。
    #!/bin/sh
    hddtemp /dev/hda | awk '{print $4}'
    
  • その他
    情報交換BBS、スレッドNo.86に関連情報がありますのでそちらもご覧ください。


    Counter: 17078, today: 1, yesterday: 0

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-06-13 (火) 20:02:26 (6534d)