Montag, 21. Dezember 2009

Qnap - Spindown von externen eSATA Festplatten

Qnap NAS System sind eine feine Sache, jedoch kann gutes noch besser gemacht werden. Denn ein Spindown für Externe eSATA Laufwerke wird, wieso auch immer, nicht unterstützt - entgegen der Konkurrenz. Obschon die Bordmittel die benötigte Software mitbringt. Dies ist umso ärgerlicher, wenn es um ein Model ohne oder mit meist inaktiven Lüfter handelt und die Externe eSATA Platte für nächtliche Backups benutzt werden soll.


Lösung

Die Lösung besteht aus zwei Scripts, welche am besten innerhalb eines Shares auf der internen Platte untergebracht werden (/opt/bin sollte auch gehen). Achtung /bin etc. sind auf einer RAM Disk, daher nach jedem Restart wieder im Urzustand.

Bspw.: /share/HDA_DATA/Backup/bin/

spindow_start.sh

#!/bin/sh
SPINDOWN_TIME=300 # Seconds
SPINDOWN_DEV=sdz1 # Device name (see with $ mount)
touch /tmp/spindown_state_old.txt
while [ 1 ]; do
# Get new state from diskstats
NEWstate=$(cat /proc/diskstats | grep $SPINDOWN_DEV)
echo $NEWstate > /tmp/spindown_state_new.txt

# compare md5sum
#md5new=$(cat /tmp/spindown_state_new.txt | sed 's/ .*//')
#md5old=$(cat /tmp/spindown_state_old.txt | sed 's/ .*//')

md5new=$(cat /tmp/spindown_state_new.txt)
md5old=$(cat /tmp/spindown_state_old.txt)
# if no changes, power down
if [ "$md5new" = "$md5old" ]; then
hdparm -y /dev/$SPINDOWN_DEV &>/dev/null
fi

# Write current state to file
echo $NEWstate > /tmp/spindown_state_old.txt
sleep $SPINDOWN_TIME
done

spindow.sh

#!/bin/sh
case "$1" in
start)
/share/HDA_DATA/Backup/bin/spindown_start.sh &
;;
stop)
pid=$(ps ux | awk '/bin\/spindown/ && !/awk/ {print $1}')
kill pid
;;
*)
echo "Usage $0 {start|stop}"
exit 1
esac
exit 0

Nun wird es als QPKG eingebunden in /etc/config/qpkg.conf .

Folgender Absatz am Ende einfügen, somit kann der Spindown auch aktiviert/deaktiviert werden.

[SPINDOWN]
Name = Spindown
Version = 1.0.0
Enable = TRUE
Date = 2009-12-19
Author = MyName
Shell = /share/HDA_DATA/Backup/bin/spindown.sh


Ein Restart genügt und die Externe Platte wird sich nach 5 Minuten den Spindown ausführen. Dabei wird berücksichtigt, ob Änderung der Daten stattgefunden haben - ist dem so, so wird der Spindown erst beim übernächsten Mal ausgeführt.