33.4 ハードディスクの休止

Linux環境では、不要な場合にハードディスクを完全にスリープ状態にしたり、より経済的な静止モードで動作さることができます。最近のラップトップの場合、ハードディスクを手動でオフに切り替える必要はありません。不要な場合は自動的に経済的な動作モードになります。ただし、省電力レベルを最大限にする場合は、次の方法をいくつかテストしてください。機能のほとんどは、powersavedおよびYaST電源管理モジュールでコントロールできます。その詳細については、33.6項 「YaST電源管理モジュール」を参照してください。

hdparmアプリケーションを使用して、各種のハードディスク設定を変更できます。-yオプションは、簡単にハードディスクをスタンバイモードに切り替えます。オプション-Yはハードディスクをスリープにします。hdparm -S xを使用すると、一定時間アクティビティがなければハードディスクが回転を停止します。xは、次のように使用します。0にすると、このメカニズムが無効になり、ハードディスクがずっと回り続けます。1から240までの値を指定すると、指定した値x5秒が設定値になります。241から251は、30分の1倍から11倍(30分から5.5時間)に相当します。

ハードディスクの内部省電力オプションは、オプション-Bで制御できます。0 (最大限の省電力)~255 (最大限のスループット)の値を選択します。結果は使用するハードディスクに応じて異なり、査定するのは困難です。ハードディスクを静止状態に近づけるにはオプション-Mを使用します。128 (静止)~254 (高速)の値を選択します。

ハードディスクをスリープにするのは、多くの場合簡単ではありません。Linuxでは、多数のプロセスがハードディスクに書き込むので、ウェイクアップが常に繰り返されています。したがって、ハードディスクに書き込むデータを、Linuxがどのように処理するかを理解することは重要です。まず、すべてのデータがRAMにバッファされます。このバッファは、カーネル更新デーモン(kupdated)によって監視されます。データが一定の寿命に達するか、バッファがある程度一杯になると、バッファの内容がハードディスクにフラッシュされます。バッファサイズはダイナミックであり、メモリサイズとシステム負荷に対応して変化します。デフォルトでは、kupdatedの間隔が短く設定されて、完全性を最大まで高めます。バッファが5秒毎にチェックされ、データが30秒以上経過していたり、バッファの使用レベルが30%に達すると、bdflushデーモンに通知されます。bdflushデーモンが、データをハードディスクに書き込みます。このデーモンはまた、たとえば、バッファが一杯のときに、kupdatedと無関係に書き込みます。

[Warning]データの完全性に関する障害

カーネル更新デーモンの設定を変更すると、データの完全性が損なわれる可能性があります。

これらのプロセスとは別に、ReiserFSやExt3などのジャーナリングファイルシステムは、それらが持つメタデータをbdflushとは無関係に書き込むので、ハードディスクが回転を停止しなくなります。モバイル機器では、これを避けるために特別なカーネル拡張が開発されています。詳細については、/usr/src/linux/Documentation/laptop-mode.txtを参照してください。

もう1つの重要な要因は、アクティブプログラムが動作する方法です。たとえば、優れたエディタは、変更中のファイルを定期的にハードディスクに自動バックアップし、これによってディスクがウェイクアップされます。データの完全性を犠牲にすれば、このような機能を無効にできます。

この接続では、メールデーモンpostfixが変数POSTFIX_LAPTOPを使用します。この変数をyesに設定すると、postfixがハードディスクにアクセスする頻度は大幅に減少します。しかしながら、kupdatedの間隔が広くなると、このことは重要でなくなります。