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
期待どおりにマウントポイントの特定のファイルをタッチすると、そのファイルが起動します。
自動一時停止が機能しないのはなぜですか?私が理解したのは、アクセス権がない限り、オペレーティングシステムとは別にハードドライブをシャットダウンする必要があります。
答え1
私はUbuntu 18.04を実行しており、同じ問題が発生しました。 @alloさんの回答のおかげで、これがsmartd
実際に原因であることがわかりました。
デフォルトでは、/etc/smartd.conf
次のように構成されます。
DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/martd-runner
その後、自動的にすべてのドライブをスキャンして定期的にポーリングします(ディスクが回転します)(デフォルトは30分、変更可能)。 smartdは回転ディスクをスキップしますが、-n standby
問題は次のとおりです。 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アイドル便利です。