
ハードドライブがあり、30 分または 60 分後に自動的にスタンバイ状態になるはずです。
試してみました(テストに3分):
# hdparm -S 36 /dev/sda
/dev/sda:
setting standby to 36 (3 minutes)
そして、5分以上アクセスがなかったときでも動作しませんでした。そこで、データにアクセスするプロセスについて考えて、テストしました。
# hdparm -y /dev/sda
/dev/sda:
issuing standby command
ドライブはスタンバイ状態になり、スリープ状態を続けました。
# hdparm -C /dev/sda;date
/dev/sda:
drive state is: standby
マウントポイント内のファイルに触れると、予想どおりに起動しました。
なぜ自動サスペンドが機能しないのですか? 私の理解では、アクセスがない限り、OS とは独立してハード ドライブをオフにするはずです。
答え1
私は Ubuntu 18.04 を実行していますが、同じ問題が発生しました。@allo の回答のおかげで、これがsmartd
原因であることが分かりました。
デフォルトでは/etc/smartd.conf
次のように構成されています。
DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/martd-runner
これにより、すべてのドライブが自動的にスキャンされ、定期的に (デフォルトは 30 分、変更可能) ポーリングされます (この操作によりディスクがスピンアップされます)。ただし、-n standby
smartd はスピンダウンされたディスクをスキップしますが、問題は次のとおりです。smartd ポーリング間隔がディスクの「スピンダウン後」時間よりも短い場合、smartd は常にディスクがスピンダウンする機会を得る前にポーリングするため、ディスクはスタンバイ モードになりません。
ディスクの「スピンダウン タイムアウト」が smartd のポーリング間隔よりも短い場合、ディスクは smartd のポーリングの前にスピンダウンし、その後 smartd はこのディスクをスキップしてスピンアップしません。ディスクが などの他のツールによって (手動で) スピンダウンされた場合hd-idle
、smartd もそれをスキップします。
smartd ポーリング間隔を長くする 1 つの方法は、次の行を編集することです/etc/default/smartmontools
。
smartd_opts="--interval=1800"
たとえば、1800 は 30 分ですが、10800 (3 時間) にすると十分です。再起動することを忘れないでください。
systemctl restart smartd smartmontools
答え2
実際の問題はsmartd
、スタンバイ モードのときでもデバイスの値を定期的にチェックしていた でした。
時々無効smartd
にしてテストを実行することで解決しました。smartctl
答え3
一部のドライブでは、コマンドが成功してもこの機能が実装されていないことに注意してください。高度な電源管理レベルを 127 以下にしますhdparm -B 127 /dev/sda
。マニュアルページから:
-B 高度な電源管理機能を取得/設定します...値 1 ~ 127 (スピンダウンを許可)、および値 128 ~ 254 (スピンダウンを許可しない)。
/proc/diskstats
すべてが失敗した場合は、デバイスの読み取り/書き込み回数をポーリングし/sys/block/sda/stat
、数分間変化がない場合はドライブを明示的にスタンバイ状態にする小さなスクリプトを書くことができます。HDアイドルユーティリティ。