K tomu jak zjistit, že se nepoužívají disky definovanou dobu přikládám níže skript,
který jsem používal na Openwrt v době, kdy nefungoval pro nastavení uspávání (vypínání motoru) příkaz "hdparm -Sxx disk". Idea je porovnávat pro danou partition, která nás zajímá příslušný řádek z /proc/diskstats a v případě, že se po daný časový úsek neliší disk zastavit. U mě pokud se netočí externí disky (Openwrt běží z flash) tak je v místnosti ticho a nic nehučí, předpokládám, že u Zyxel NASu to bude podobné.
---begin---
#!/bin/sh
uuid=$1
disk="$(blkid | grep "UUID=\"$uuid\"" | cut -f1 -d: | awk -F "/" '{print $3}' | sed -e 's/[1-9]//g')"
# after this time interval the disk goes to spin-down (in seconds)
interval=$2
# steps for state check in seconds ($step must be lower then $interval)
step=10
state=`grep " $disk " /proc/diskstats`
count=$interval
up=1
while [ true ]; do
sleep $step
count=$(($count-$step))
newstate=`grep " $disk " /proc/diskstats`
if [ "$state" = "$newstate" ]; then
if [ $count -lt 0 ]; then
count=$interval
if [ $up = 1 ]; then
logger -t spindown "spin-down disk: " $disk
sync
state=`grep " $disk " /proc/diskstats`
# scsi-stop /dev/$disk
sdparm --command=stop /dev/$disk
up=0
fi
fi
else
logger -t spindown "disk: " $disk " is up"
count=$interval
state="$newstate"
up=1
fi
done
---end---
Jmenuju se Petr Blahoš. Programuju něco přes 20 let. Tady se snažím psát hlavně o Pythonu, webovém frameworku Pyramid, a občas i o něčem úplně jiném.
Přečteno 19 224×
Přečteno 11 852×
Přečteno 9 344×
Přečteno 8 802×
Přečteno 8 592×