RAMへのサスペンド中に外付けUSBハードドライブが回転しないようにする

RAMへのサスペンド中に外付けUSBハードドライブが回転しないようにする

マシン (Linux 4.4.0-38-generic、Ubuntu 16.04) が RAM にサスペンドするたびに、Western Digital 2TB ポータブル USB 3.0 ハード ドライブ (モデル WDBU6Y0020BBK) が回転し、無期限に回転し続けます。ドライブがスリープ/スタンバイ モードにならないのはなぜですか?

ドライブの LED から判断すると、ドライブへのアクセス (ドライブを起動する) はサスペンド手順の非常に遅い段階で発生します。わずかな遅延のため、マシンがすでにスリープ状態 (つまりサスペンドを完了) になった後でも、ドライブは音を立てて回転します。

問題のストレージ デバイスは、バス 3、ポート 1 ( 3-1) に接続されています。

$ lsusb | grep Western
Bus 003 Device 002: ID 1058:10b8 Western Digital Technologies, Inc. Elements Portable (WDBU6Y, WDBUZG)
$ lsusb -t | grep -A1 'Bus 03'
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M

この問題を明らかにするために、カーネルのコマンドラインオプションinitcall_debug no_console_suspend ignore_loglevel dyndbg="file suspend.c +p"とIntelの分析中断dmesgとftraceの出力を収集するデバッグツール。前者はここ後者はかなり長い(>340M)が、明らかなエラーは含まれていない。

$ grep err=[^0] mem_ftrace.txt ; echo $?
1

さらに、その後にサスペンド再開手順 (ドライブの回転を停止してスリープ状態にする) を繰り返しても何も変化が見られなかったため、問題はドライバー モジュールに関係していないようですsudo modprobe -r uas usb_storage。とにかく、ドライブは回転しました。

次に何を探すべきか、何を試すべきかについて何かアドバイスはありますか?

参考までに:私は監視ツール(HDアイドル) は、/proc/diskstats指定されたアイドル時間が経過するとディスクを監視してスリープ状態 (つまり、ディスクの回転を停止) にします。

関連情報