LinuxでUSBHDDを定期的にスピンダウンさせるスクリプトの改造

ALL
スポンサーリンク

Linuxファイルサーバで、USBHDDの電源を長期的に入れておく場合に、定期的にUSBHDDをスピンダウンし、動作音を抑える方法が下記サイトで紹介されています。

8.USBHDDの定期的なスピンダウン方法(騒音対策) – RaspberryPiで各種サーバー作り! – ある阪大生の物置小屋

このスクリプトを、USBHDDを抜き差ししても問題ないように一部改造しました。
下記のスクリプトです。

hdd_spindown.sh

#!/bin/sh

get_dev() {
    while [ true ]; do
        disk=`ls -l /dev/disk/by-uuid | grep $1`
        if [ “$disk” ]; then
            break
        fi
        count=$interval
        sleep 10
    done
    echo `echo “$disk” |sed -E ‘s/^.+\///’`
}

if [ $# -lt 2 ]; then
    echo “not enough arguments supplied.”
    echo “hdd_spindown.sh [UUID] [INTERVAL]”
    exit 0
fi

uuid=$1
interval=$2

count=$interval
up=1

while [ true ]; do
    sleep 10
    disk=`get_dev $uuid`
    count=$(($count-10))
    newstate=`grep ” $disk ” /proc/diskstats`
    if [ “$state” = “$newstate” ]; then
        if [ $count -lt 0 ]; then
            count=$interval
            if [ $up = 1 ]; then
                sync
                state=`grep ” $disk ” /proc/diskstats`
#hdparmを利用するとき
                hdparm -y /dev/$disk > /dev/null 2>&1
#sdparmを利用するとき
                sdparm –command=stop -r /dev/$disk > /dev/null 2>&1
                up=0
            fi
        fi
    else
        count=$interval
        state=”$newstate”
        up=1
    fi
done

コメント