Je moet camcontrol gebruiken onder BSD. Heb ik ook en dan scriptje draaien dmv. cron.Verwijderd schreef op dinsdag 21 juni 2011 @ 00:51:
Van wat ik heb begrepen zou de LSI controller commando's vertalen waardoor pure ATA commando's niet werken. Vandaar dat SCSI commando's als spindown niet werken onder BSD. Maar misschien is dit of niet juist, of hebben Linux drivers hier een workaround voor. Via FreeBSD kan ik geen APM inschakelen op mijn schijven; wel als ik ze op de chipset ATA aansluit.
Als iemand zijn ervaringen kan delen met 1068E controllers en spindown zou dat mooi zijn.
@prozak: over wat voor soort spindown hebben we het? APM of host-initiated spindown?
Ik gebruik het volgende script:
#!/usr/local/bin/bash
#
# zpool-spindown.sh
#
ZPOOL="$1"
if [ -z "$ZPOOL" ]
then
echo "WD16TB"
exit 2
fi
PATH=/usr/local/bin:/bin:/usr/bin:/usr/sbin:/usr/local/sbin:/bin:/sbin
export PATH
# Cleanup any tmp file if present
if [ -f /tmp/zpool.iostat ]
then
rm -f /tmp/zpool.iostat
fi
# Name of samba share to check if mounted
SMBSHARE="WD16TB"
# Get drives for pool
drives=`zpool status $ZPOOL | egrep "da[01234567]" | awk '{print $1}' | tr '\n' ' '`
firstdrive=`echo "$drives" | awk '{print $1}'`
# Activity checks
smbactive=`smbstatus -S | grep -A 6 "Connected at" | grep $SMBSHARE | wc -l | awk '{print $NF}'`
scrubrunning=`zpool status $ZPOOL | egrep "scrub in progress|resilver in progress" | wc -l | awk '{print $NF}'`
spundown=`smartctl -n standby -H /dev/$firstdrive | tail -1 | grep "STANDBY" | wc -l | awk '{print $NF}'`
if [ -f /tmp/locate.running ]
then
echo "Locate running...Aborting spindown!"
exit 3
elif [ $smbactive -gt 0 ]
then
echo "Samba share is mounted...Aborting spindown"
exit 3
elif [ $scrubrunning -eq 1 ]
then
echo "Scrub/resilver is running...Aborting spindown"
exit 3
elif [ $spundown -eq 1 ]
then
echo "Spundown already...Aborting spindown"
exit 3
fi
# Longer IO Activity check - only perform if got past above
zpool iostat $ZPOOL 30 2 | tail -1 > /tmp/zpool.iostat
reading=`cat /tmp/zpool.iostat | awk '{print $(NF-1)}' | awk -F\. '{print $1}' | sed -e 's/K//g' | sed -e 's/M//g'`
writing=`cat /tmp/zpool.iostat | awk '{print $NF}' | awk -F\. '{print $1}' | sed -e 's/K//g' | sed -e 's/M//g'`
rm -f /tmp/zpool.iostat
if [ $reading -gt 0 ]
then
echo "Pool shows IO activity...Aborting spindown"
exit 3
elif [ $writing -gt 0 ]
then
echo "Pool shows IO activity...Aborting spindown"
exit 3
fi
drives=($drives)
type=""
driveop () {
drive=$1
# Need to issue differnt command to ada vs da devices!!!
type=`echo $drive | cut -c 1`
if [ $type = "d" ]
then
camcontrol stop $drive
elif [ $type = "a" ]
then
camcontrol standby $drive
fi
return
}
drives_count=${#drives[@]}
index=0
while [ "$index" -lt "$drives_count" ]
do
driveop ${drives[$index]}
printf "Spindown Drive %s\n" ${drives[$index]}
let "index = $index + 1"
done
Dan even de pool name en samba share aanpassen (als je wilt tenminste). Bovenstaande script checked of je share gemount is en of er niet gescrubbed wordt.
Cron job instellen.
bash ./zpool-spindown.sh <poolname>
[ Voor 63% gewijzigd door tbusquet op 22-06-2011 11:32 ]
"What are you doing ?" "Filming this dead bird." "Why ?" "Because it's beautiful." Gratis mij quoten is verleden tijd, iedere quote van mij kost vanaf nu €1,79 excl. 19% btw ©
