ハードディスクが自動的にスタンバイ状態にならない

ハードディスクが自動的にスタンバイ状態にならない

ハードドライブがあり、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 standbysmartd はスピンダウンされたディスクをスキップしますが、問題は次のとおりです。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アイドルユーティリティ。

関連情報