USB-HDDをスリープさせる(hd-idle)

最近USB接続のUSB HDDの熱が少し気になります．通常時は倉庫的に使っているのでアイドルです．アイドルが一定時間続いたらスリープするように設定できたよなと hdparm -S を叩いてみましたがコントローラーが非対応のようでエラーとなりました．

$ sudo hdparm -S 60 /dev/sdb

/dev/sdb:
setting standby to 60 (5 minutes)
SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

hd-idle を使うとスリープするように出来ました．

Hard Disk Idle Spin-Down Utility

Debianパッケージで導入します．

$ sudo apt install hd-idle

/etc/default/hd-idle を編集して設定します．ここでは対象のディスクの /dev/sdb から sdb を，タイムアウト時間を 300 (秒) を指定しました．

$ sudo git -C /etc diff /etc/default/hd-idle
diff --git a/default/hd-idle b/default/hd-idle
index 57eb964..1c1bedb 100644
--- a/default/hd-idle
+++ b/default/hd-idle
@@ -9,7 +9,7 @@
# and systemv scripts
# properly update HD_IDLE_OPTS in order to star hd-idle

-HD_IDLE_OPTS="-h"
+HD_IDLE_OPTS="-i 0 -a sdb -i 300"

# hd-idle command line options
# Options are:

その後デバイス名(/dev/sdb)からuuidに変更しました．

$ lsblk -f /dev/sdb # sdbのuuidを確認
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sdb crypto_LUKS 1 ac5b8484-4b26-4967-b336-f63c408bb17d
└─luks-ac5b8484-4b26-4967-b336-f63c408bb17d ext4 1.0 export 95c61e04-e22b-4f0f-9af8-2c3d96b0b179 3.5G 100% /media/matoken/export

$ sudo git -C /etc diff /etc/default/hd-idle
diff --git a/default/hd-idle b/default/hd-idle
index 1c1bedb..73dbc52 100644
--- a/default/hd-idle
+++ b/default/hd-idle
@@ -9,7 +9,7 @@
# and systemv scripts
# properly update HD_IDLE_OPTS in order to star hd-idle

-HD_IDLE_OPTS="-i 0 -a sdb -i 300"
+HD_IDLE_OPTS="-i 0 -a 95c61e04-e22b-4f0f-9af8-2c3d96b0b179 -i 900"

# hd-idle command line options
# Options are:

起動します．

$ sudo service hd-idle start
$ ps -ef| grep -i hd-i
root 3468122 1 0 23:24 ? 00:00:00 /usr/sbin/hd-idle -i 0 -a sdb -i 300

これで5分対象のhddが利用されなかったらスリープ，そのご利用しようとしたら自動的にスピンアップしてきます．

環境

$ lsusb | grep ATA
Bus 001 Device 008: ID 1bcf:0c31 Sunplus Innovation Technology Inc. SPIF30x Serial-ATA bridge
$ dpkg-query -W hd-idle
hd-idle 1.05+ds-2
$ lsb_release -dr
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
$ arch
x86_64