web-dev-qa-db-ja.com

hdparmを使用したHDDアイドル設定(APM、サスペンド)

OS:GNU/Linux Debian 9.2

コンピューターの動作を変更して、30分間アイドル状態のときにHDDを一時停止したいと思います。

これまでのところ、次の設定でディスクを一時停止できるように、レベルを変更する必要があることがわかりました [〜#〜] apm [〜#〜] レベル。

hdparm -B 127 /dev/sdX

ここで、127は実際には、ドライブの一時停止(スピンダウン)を許可する最大値です。

次に、スタンバイ設定に移動しました。

hdparm -S 241 /dev/sdX

ここで、241は、30分後にスタンバイする必要があることを意味します。

これらの設定中にhdparmからエラーは報告されませんでした。

今私の質問:

これらの設定は、再起動するたびに消えますか?もしそうなら、それを永続化するためにそれらのコマンドをどこに置くべきですか?

次のデバイスに同時に影響を与えたいことに注意してください。

/dev/sda
/dev/sdb
/dev/sdd
/dev/sde
3

これらの設定は、再起動するたびに消えますか?

ドライブの電源が入ったままのソフトリブートの場合、設定は消えません。電源を入れ直すと、APMパラメータがリセットされます。 (少なくとも、私のラップトップでは)

ほとんどのセッターは、hdparmのゲッターオプションでもあります。 APM設定は、次の方法で簡単に確認できます。

# hdparm -B /dev/sdb

/dev/sdb:
APM_level      = 128

ただし、これはスタンバイタイマーオプションでは機能しません。しかし、論理的には、これらの設定も失われます。

永続化するためにこれらのコマンドをどこに置くべきですか?

あらゆる種類のオプション、カスタムudevルール、systemdサービス、cronジョブ(@reboot)。あなたに一番合うもの。

Arch wiki 詳細については非常に優れたリソースです。

上記のウィキに触発されて、Gentooシステム用にsystemdサービスファイルを作成しました。

[Unit]
Description=hdparm sleep
After=suspend.target

[Service]
Type=oneshot
ExecStart=/sbin/hdparm -S 12 -B 127 /dev/sdb

[Install]
WantedBy=multi-user.target suspend.target

次のように、設定を使用してすべてのデバイスに一度に影響を与えることができます。

ExecStart=/sbin/hdparm -B 127 -S 241 /dev/sda /dev/sdb /dev/sdd /dev/sde

すべてに絶対パスを使用する必要があることに注意してください。たとえば、 cmd /dev/sd[abde]hdparmバイナリの正確な場所は、ディストリビューションによって異なる場合があります。

次のコマンドを使用して、通常呼び出されるhdparmの場所を確認します。

which hdparm

次に、サービスを有効にして、必要に応じてサービスを開始します。マシンを再起動して、100%確実に機能させることができます。

# systemctl enable hdparm.service
# systemctl start hdparm.service
# systemctl status hdparm.service

Archの提案は出力を抑制しますが、私は最後に発行されたコマンドでhdparmの成功を確認することを好みます。

編集

サスペンド後、パラメータがハードドライブに保持されないことがわかりました。これは、より多くのラップトップシステムに当てはまる可能性があります。そのため、サンプルユニットファイルを変更しました。 this への礼儀unix.SOでの回答。

3
Tim