RaspberryPi外付けUSB HDDを停止して省電力化する方法

RaspberryPiのサムネール画像

RaspberryPi にUSB HDDを付けて、ファイルサーバ(NAS)にしている、なかなか快適だ。
LaCieという外付けUSB HDDだ。

これが、使用していない時も常に稼働(HDDが回転)してしまい、すごく熱くなる。
電力も相当にかかるようだ。
(3.5インチのHDDは、平均5-10Wくらいの電力を消費するらしい)

そこで、使用していない時は、外付けUSB HDDを停止できないかチャレンジしてみる。
「sdparm」はSCSIデバイスを制御するツールで、HDDの停止コマンドがあるらしい。
まずはインストール。

$ sudo apt-get install sdparm

HDDが停止するか試してみる。

$ sdparm –command=stop /dev/sda

お、停止した。
これは使えそうだ。

定期的にHDDの状態を監視し、変更がない場合はHDDを停止(スピンダウン)するスクリプトを試してみる。
参考にしたのは以下のページ。
http://www.nslu2-linux.org/wiki/FAQ/SpinDownUSBHarddisks

$ sudo vi /usr/local/bin/usbhdd_spindown.sh

#!/bin/sh
disk=$1
interval=$2
state=`grep " $disk " /proc/diskstats`
count=$interval
up=1
while [ true ]; do
sleep 10
count=$(($count-10))
newstate=`grep " $disk " /proc/diskstats`
if [ "$state" = "$newstate" ]; then
if [ $count -lt 0 ]; then
count=$interval
if [ $up = 1 ]; then
#echo -e "spin-down\t" `date`
sync
state=`grep " $disk " /proc/diskstats`
scsi-stop /dev/$disk
up=0
fi
fi
else
#echo -e "drive is up\t" `date`
count=$interval
state="$newstate"
up=1
fi
done

スクリプトに実行権限を与える。

$ sudo chmod 755 /usr/local/bin/usbhdd_spindown.sh

起動時に自動起動するように、rc.localに以下の記述を追加。

$ sudo vi /etc/rc.local

/usr/local/bin/usbhdd_spindown sda 900 2>&1 | logger -t usbhdd_spindown &

これで、使っていない時はHDDが停止されるようになった。
省電力になり、夜間等は、HDDが回転せずに静かで良い。

ただし、HDDは常に回転させておいた方が長持ちするという説もあるので、気を付けたほうが良いかもしれない。

コメント

  1. […] blacknikka – RaspberryPi外付けUSB HDDを停止して省電力 https://blog.bnikka.com/raspberrypi/raspberrypi-spindown.html […]

  2. […]  blacknikka RaspberryPi外付けUSB HDDを停止して省電力https://blog.bnikka.com/raspberrypi/raspberrypi-spindown.htmlRaspberryPiに接続したUSB HDDを、使っていない時は回転を停止(spindown)できないかチャレン […]

  3. […] (記事参照→ RaspberryPi外付けUSB HDDを停止して省電力 ) ただ、Raspberry Pi はCPUがARM1176JZF-S 1コア(700 MHz)と非力で、 […]

  4. 匿名希望 より:

    sdparmで停止確認しているけど
    usbhdd_spindown.shでは使っていない記述?

    • kei より:

      そうですね。
      停止確認は簡単に使えるsdparmを使いましたが、実際に使っているスクリプトでは、scsi-stop /dev/sdaコマンドで停止しています。