ハードディスクをスリープさせ、必要なときにだけウェイクアップします


10

コンピューターに別のハードディスクを接続したいのですが、コンピューターを99%の時間スリープさせたいです。いくつかの用途にのみ使用しますが、常に取り付けておく必要があります。

これを達成するために私は知りたいと思います:

  1. デバイスにアクセスするプロセスをログに記録するにはどうすればよいですか?ハードディスクがウェイクアップする原因を特定できるようにするには、ロギングが必要です。そのため、動作する可能性があります。
  2. デバイスがより長くスリープするために必要な特別なカーネル設定はありますか?
  3. ハードディスクのスリープ間隔を設定するにはどうすればよいですか?

回答:


13

スリープ間隔は "APM"(自動電源管理)およびspindown_timeと呼ばれます。これは次のhdparmように制御されます:

hdparm -B 50 -S 36 /dev/disk/by-label/BACKUP-HDD

それはあなたのHDDを〜3分の非アクティブ時にスピンダウンするようになります。


4

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

https://launchpad.net/fatrace

詳細はこちら:

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

これは、使用可能のlinux fanotify API詳細は、 Linuxカーネル2.6.37以降)が利用可能。

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


1
「ほとんどの」ディストリビューションが何を意味するのかわかりません。いつものように、Debianは何かを入手する最後のディストリビューションです。私はそれをFedoraでかなり長い間利用できました...
マイケルハンプトン14

3

http://en.wikipedia.org/wiki/Fuser_%28Unix%29-フューザーは、指定されたファイル、ファイルシステム、またはソケットを使用しているプロセスを表示するために使用されるUNIXコマンドです。

http://sourceforge.net/projects/hdparm/-Linuxでの ATA / SATAドライブパラメータの取得/設定(-Sオプションを探します)

http://sg.danny.cz/sg/sg3_utils.html-sg3_utilsパッケージには、SCSIコマンドをデバイスに送信するユーティリティが含まれています。また、従来SCSIに関連付けられていたトランスポート上のデバイス(sg_startを探す)


あなたの有益な答えをありがとう!それは、fuserがコマンドを発行するインスタンスでどのプロセスがファイル、ファイルシステムおよびソケットを使用しているのかを教えてくれるだけのようです。これは、プロセスがデバイスのルートディレクトリの内容を一覧表示するなどの迅速な処理を行う場合に非常に役立ちますが、フューザーをループで実行している場合でも見逃す可能性があります。停止するように指示するまですべてのアクティビティを待機してログに記録するものがあった場合、この状況ではさらに役立ちます。知ってる?
削除

hdparamは、スリープ前の待機時間を設定するために使用するものだと思いますか?sg3_utilsは強力なツールですが、この場合は使用しませんか?(hdparamを使用して設定した後、HDDがいつスリープする必要があるかを手動で指定する必要がないと思いますか?)
削除

3

btraceまたはblktrace(のラッパーbtrace)カーネルブロックI / Oを追跡し、そこで支援できます。


2

lsof +D /path/to/mount 指定されたパスに開いているファイルがあるすべてのプロセスを表示します。


0

同様の問題があります。/dev/sdbOS(Ubuntu XenialベースのLinux Mint 18.1)を備えたSSDと、/dev/sdaデータを備えたHDDがあります。両方のディスクが暗号化されています。HDDのパーティションはマウントされていません。とにかく、数分の間にHDDはウェイクアップし、スリープしてから再びウェイクアップします。混乱

これは、問題のあるプロセスを見つけることを提案する、役立つ回答を含む重複した質問auditdです。

apt-get install auditd
auditctl -w /dev/sda -p rwa

次にHDDを強制的にスリープさせhdparm -Y /dev/sdaます。次に、HDDが再び回転するのが聞こえるまで待ちます。次にを実行しausearch -f /dev/sdaます。私の場合、次のようなエントリが表示されます。

time->Sat Feb 25 12:38:17 2017
type=PROCTITLE msg=audit(1488022697.651:1744): proctitle=2F7573722F6C69622F756469736B73322F756469736B7364002D2D6E6F2D6465627567
type=PATH msg=audit(1488022697.651:1744): item=0 name="/dev/sda" inode=376 dev=00:06 mode=060660 ouid=0 ogid=6 rdev=08:00 nametype=NORMAL
type=CWD msg=audit(1488022697.651:1744):  cwd="/"
type=SYSCALL msg=audit(1488022697.651:1744): arch=c000003e syscall=2 success=yes exit=12 a0=f3fb90 a1=800 a2=7f4745221f64 a3=30 items=1 ppid=1 pid=18520 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="pool" exe="/usr/lib/udisks2/udisksd" key=(null)

関連部分はexe = "/ usr / lib / udisks2 / udisksd"です。私も持っていたけれどもsmartmontools、そのsmartdも犯人でした。でサービスをアンインストールsmartmontoolsして停止udisk2しましたservice udisks2 stop。その後、HDDは正常にスリープします。

なお、udisks2自動的にI、例えば、オープンを開始しますディスクのアプリケーションなので、私は再びそれを停止する必要があります。もう1つの欠点は、両方のディスクでSMARTパラメータが監視されないことです。これは適切ではありませんが、回避策としては適切です。

また、明らかではないが、一つのことは、このことであるバグレポートは述べているudisks2今、カーネルによって行われ、ポーリングディスクを行いません。しかし証拠は反対を示しているようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.