残念ながら5-8秒ごとにスリープしようとする新しいHD(WD5000BPVT)を購入しました。クリックノイズが非常に聞こえるだけでなく、1秒のスピンアップ時間により、日常の使用において非常に顕著なレイテンシが追加されます。
hdparm -B 254 /dev/sda
は非常に短いスリープを無効にすることがわかりましたが、ドライブの電源がオンになるたびにこの設定を適用する方法がわかりません。 dconf-editor
アプリと「Power Management Preferences」アプリは、どちらもHD設定に関して何もしません。 /etc/hdparm
または/etc/acpi
パスがありません。 MATEはウィンドウマネージャです。
Fedora 19では、ドライブがアクティブ化されたときにこのコマンドを強制的に実行するにはどうすればよいですか?
私は同じ問題を抱えていましたが、ここでの解決策はどれも自分のニーズに合いませんでした。 cronの使用は実際には回避策であり、解決策ではありません。udevルールは、電源が接続/切断されたときに実行されますが、一時停止/再開後には実行されません。たとえば、ふたを閉じると、Fedora 19では_pm-utils
_がデフォルトで使用されなくなります。ラップトップ。
systemd
がサスペンド/ハイバネーションを担当するようになったので、この状況を処理する唯一の適切な方法は、ブート後とサスペンドからの再開後に実行されるsystemd
ユニットを作成することだと思います。
ノート:
/dev/disk/by-id/...
_の代わりに_/dev/sda
_を使用することで、常に正しいディスクを確実に取得できます(sda、b、cは、カーネルによって検出される順序に依存します)ExecStart
行を使用して、複数のディスクを構成できますこれが私が書いたユニットです:
_[Unit]
Description=Silence HD
After=suspend.target
[Service]
Type=oneshot
# Disable automatic head parking for the main disk
ExecStart=/sbin/hdparm -B 254 /dev/disk/by-id/ata-ST3250824AS_4N127FD1
# Enable automatic spin down after 30 seconds for the second, infrequently used disk
ExecStart=/sbin/hdparm -S 6 /dev/disk/by-id/ata-ST31000528AS_BVP5H5X1
[Install]
WantedBy=suspend.target basic.target
_
このファイルを_/etc/systemd/system/hdsilence.service
_として保存し、次を使用して有効にします。
_systemctl enable hdsilence.service
systemctl daemon-reload
_
独自のsystemdサービスを作成するか、コマンドを/etc/rc.d/rc.localに追加することで、システムに起動中にコマンドを実行させることができます。
wakeスリープ/休止状態の後にシステムを実行するたびにコマンドを実行する場合は、2桁で始まるスクリプトを/etc/pm/sleep.d/に追加し、他のスクリプトを確認します。詳細については、/ usr/lib64/pm-utils/sleep.d(x86_64を想定)のスクリプト。基本的に、それはそれが入っている状態に応じてパラメータを取ります。プラグイン時と比べてバッテリー電源で異なる動作をしたい場合は、同じ親ディレクトリのpower.d /にログインを追加する必要があるかもしれません。
AC /バッテリーで実行する場合のさまざまな設定については、単純なudev
ルールを使用して行います。/etc/udev/rules.d/98-apmsettings.rules
:
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="0", RUN+="/usr/bin/hdparm -B 128 /dev/sda"
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="1", RUN+="/usr/bin/hdparm -B 254 /dev/sda"
これにより、ラップトップが接続されている場合はapm
が254
に設定され、接続されていない場合はそれぞれ128
に設定されます。また、サスペンドから再開した後でも、常に機能するはずです。
私は同じディスク(そして同じ問題)を持っています。私の愚かですが実用的な解決策:私はそれを/etc/crontab
:
-*/5 * * * * root hdparm -B 254 /dev/sda
Udevルールはプラグイベントでうまく機能しますが、サスペンドから再開した後に正しい動作を得るには、/etc/pm/sleep.d
:
#!/bin/sh
case "${1}" in
resume|thaw)
if grep -q 1 /sys/class/power_supply/ADP1/online; then
/usr/sbin/hdparm -B 254 /dev/sda
else
/usr/sbin/hdparm -B 128 /dev/sda
fi
;;
esac