LinuxのATAドライバでは、 hdparm コマンドを利用すると、ディスクアクセスが少ないときに積極的にスピンダウンさせることができます。
/sbin/hdparm -S 60 /dev/sdb
制御対象のディスクは/dev/sdb, -S オプションのパラメータとして、スピンダウンまでのアイドル時間(5秒単位)を指定します。60を指定した場合、60秒*5=300秒、つまり5分間アイドルの状態になったらディスクをスピンダウンさせます。
実際には、ファイルやディレクトリの読み書き、アクセス時間(atime)の更新などさまざまな操作がI/O発生の要因になります。特にライト要求は、Linuxでは原則5秒ごとにコミットされるため、I/Oが発生してから5秒以内にスピンアップしてしまいます。スピンアップしてしまう要因をきちんと取り除かなければ、スピンダウンとスピンアップを繰り返しディスクを痛めることにもなり得ますので注意が必要です。また、経験上ハードディスクは回しっぱなしの状態が一番安定すると言えます。スピンダウンを積極的に行うこと自体がライフタイムに影響すると考えられます。このため、メリットとデメリットは意識した上で検討しなければなりません。
積極的なスピンダウンを行うためには、以下のような点を検討するとよいでしょう。
- ファイルシステムのオートマウントを有効化し、普段はアンマウント状態としておく
- アクセス時間(atime)の更新を抑制するために noatime オプションをつけてファイルシステムをマウントする
- ディスクの利用目的を明確化し、I/Oをコントロールする
例1)バックアップ用ディスクは毎晩4:00にマウントし、バックアップ終了後アンマウントする
例2)MP3プールをシステムディスクと分離しておき、オートマウントする構成にしておく
例3)参照メインであれば、ライト操作を防止するため、普段は可能であればroマウントにしておく
などなど...