USB 経由で接続された外付けハードドライブがあります。ハードドライブのスピンダウン/スタンバイ時間を設定する通常の方法は、hdparm を使用することです。
だから走っsudo hdparm -S 200 /dev/sdb
て
/dev/sdb: setting standby to 200 (16 minutes + 40 seconds)
SG_IO: bad/missing sense data, sb[]: f0 00 01 00 50 40 c8 0a 00 00 00 00 00 1d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
以前、SG_IO で余分なメッセージを受け取らずにこれを試したことを覚えています。今では、どのような値を設定したとしても、アイドル状態のドライブは約 1 分後にスピンダウンするようです。動作中に何度もスピンアップとスピンダウンを繰り返すため、煩わしい遅延が発生し、ドライブの健全性のためにも、動作を継続する方が良いと思います。
値が実際に設定されているかどうかを確認する方法はまだ見つかっていませんが、APM (Advanced Power Management) レベルでは確認できます。
sudo hdparm -B 196 /dev/sdb
/dev/sdb:
setting Advanced Power Management level to 0xc4 (196)
SG_IO: bad/missing sense data, sb[]: f0 00 01 00 50 40 c4 0a 00 00 00 00 00 1d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
APM_level = 196
$ sudo hdparm -B /dev/sdb
/dev/sdb:
APM_level = 196
システムはカーネル 3.17.6 を搭載した Arch Linux です。
そもそもなぜドライブがスピンダウンするのでしょうか? これを回避するにはどうすればよいでしょうか?
アップデート
hdparm
次のオプションがありますが、コマンドの結果は同じです。
--prefer-ata12 SAT (SCSI ATA 変換) プロトコルを使用する場合、hdparm は通常、可能な限り 16 バイトのコマンド形式を使用します。ただし、一部の USB ドライブ エンクロージャは 16 バイトのコマンドでは正しく動作しません。このオプションを使用すると、このようなドライブでより小さい 12 バイトのコマンド形式を強制的に使用できます。hdparm は、12 バイト形式では実行できない操作 (28 ビットを超えるセクター アクセスなど) については、16 バイトのコマンドに戻ります。