web-dev-qa-db-ja.com

HDDがウェイクアップするとき?

システム以外のディスクがウェイクアップした時間をログに記録できる小さなスクリプトまたはアプリケーションを探しています。

どのアプリケーションまたはスクリプトがシステム以外のドライブをウェイクアップするかを特定できません(システムドライブを操作するまでスリープ状態にする必要があります)。私はすでにnoatimeフラグを設定し、powertopとiotopを使用して、どのアプリケーションがスリープ状態になるのを防ぐことができるかを判断しようとしましたが、結果はありませんでした。

したがって、私の計画では、このドライブをスリープ状態(hdparm -Y)にして、定期的にウェイクアップする時刻を確認することです。

アドバイスありがとうございます。

1
NumberFour

アクセスされているファイルを見つけるために(責任のあるプロセスを絞り込むのに役立つ場合があります)、ディレクトリの下のディレクトリを再帰的に監視するように設定できる inotifywatch を使用してみてください。選んで。大きなツリーでの--recursiveの使用に関するマニュアルページの警告を必ずお読みください。

そのツリー内のディレクトリでファイルシステムイベントが発生すると、それが記録され、テーブルに出力されます。 --timeoutを使用して、時計がアクティブである時間を制限できます。

結果に一貫性がある場合は、そのディレクトリ内のファイルに対して非再帰的な監視を実行して、特定のファイルを絞り込むことができます。

それを追跡する方法(および考えられる原因)については、このubuntu バグレポート を参照してください。

短い答え: auditctl -w /dev/sdX -p rwaおよびudisks

1
AmenophisIII

hdparm -Cを使用して、いつでもディスクの電源モードステータスを取得できます。時間を与えるスクリプトは次のとおりです。

while true; do 
  state=`hdparm -C /dev/sda|grep "^ drive"|cut -c 19-`
  echo `date` $state
  sleep 1
done

Sudoにはroot権限が必要なため、hdparmを指定してスクリプトを実行します。エコーをいくつかのファイルにリダイレクトできます。例:

echo `date` $state >> /tmp/sda_state

もちろん、監視しているディスク(私は/dev/sdaを使用)を必要なものに変更し、sleep 120などのsleep間隔で2分ごとにクエリを実行します。

ただし、これではドライブをウェイクアップするプロセスは提供されません。

いくつかのバグが原因で、上記の問題が発生する可能性があります。

hdparm -Cがドライブをウェイクアップする際に問題が発生した場合は、代わりに次のことを試してください。

smartctl -i -n standby /dev/sda|grep "^Power mode"

man smartctlに従って、-n standbyで実行する場合、smartctlはドライブをウェイクアップしないでください。これにはバグもあることに注意してください:

だからそれが機能するかどうかを確認してみてください。

1
icyrock.com

Linuxを使用している場合は、新しいfatraceユーティリティを使用できます。このユーティリティは、すべてのファイルアクセスをログに記録し、どのプロセスが原因であるかを示します。

https://launchpad.net/fatrace

詳細はこちら:

http://www.piware.de/2012/02/fatrace-report-system-wide-file-access-events/

これは、Linuxカーネル2.6.37以降で使用可能な linux fanotify API詳細 )を利用します。

fatraceは、2014年7月の時点でほとんどのディストリビューションにパッケージ化されていません(最近debianテストに入ったので、「jessie」で出荷する必要があります)が、ソースから簡単にインストールできます。

0
JosephH

私はあなたの質問に答えることはできませんが、興味深いかもしれない詳細を指摘したいと思います:いくつかのsata hddには、デフォルトでスリープ状態に設定するためのジャンパーがあります(コントローラーはディスクをウェイクアップするためにsataコマンドを送信する必要があります。 [すべてのコントローラーがそれを実行できるわけではありません])。

ジャンパーはすでに設定されていますか?

ダム

0
damko