|
View:
New views
4 Messages
—
Rating Filter:
Alert me
|
|
|
scsi-stop and cron-job?Can anybody please give me a hint how to spin down my HDD if not used a while?
My system is a NSLU2 with SlugOS 5.3 LE. The following does work fine, if invoked manually: /opt/sbin/scsi-stop /dev/sdb So I think about using cron - good idea? Or will this cause trouble to attached processes? (Samba,...) I'm not shure, but I think I saw a solution with crontab + some kind of disk statistics, but can't google or remember anymore (invoking '/opt/sbin/scsi-idle /dev/sdb 180' does not do the job as it shall by documentation) Greetings, Mai Kee ------------------------------------ Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/nslu2-linux/ <*> Your email settings: Individual Email | Traditional <*> To change settings online go to: http://groups.yahoo.com/group/nslu2-linux/join (Yahoo! ID required) <*> To change settings via email: mailto:nslu2-linux-digest@... mailto:nslu2-linux-fullfeatured@... <*> To unsubscribe from this group, send an email to: nslu2-linux-unsubscribe@... <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/ |
|
|
Re: scsi-stop and cron-job?Hi Mai Kee,
you can read /sys/block/<dev>/stat (with <dev> corresponding to your HDD, eg. sdb) and look for changes. After a certain timeout you could issue your scsi-stop command. Altough my disk on a TS-109 could spin down automatically, I use such a script to be able to take other aspects into account - the disk will never spin down as long as I have one of its NFS shares mounted from my PC. That's my script: ========================================= #!/bin/sh #DEV=sdb DEV=`blkid -t LABEL=MEDIA | sed 's/[0-9].*//'` DEV=${DEV#/dev/} STATFILE=/sys/block/$DEV/stat RMTAB="/var/lib/nfs/rmtab" let 'CYCLES=10*60/5' LOGFILE=/var/log/spindown.log state=active rw=0 count=0 echo "" >> $LOGFILE date "+%D %T - start" >> $LOGFILE while true ; do rw_old=$rw read reads a2 a3 a4 writes rest < $STATFILE let "rw=$reads+$writes" if [ "$rw" != "$rw_old" -o -s "$RMTAB" ] ; then count=0 state=active lastacc="`date '+%D %T - idle'`" else if [ "$state" = "active" ] ; then let "count=$count+1" fi fi if [ "$state" = "active" -a $count -gt $CYCLES ] ; then echo "$lastacc" >> $LOGFILE date "+%D %T - spindown" >> $LOGFILE hdparm -Y /dev/$DEV state=standby fi sleep 5 done ========================================= You will probably need to tweak it a bit, eg. set DEV=sdb or change the disk LABEL, remove the code watching $RMTAB, or maybe do not write a log file (especially if your /var/log directory is not located on a ram disk). And of course "hdparm -Y" should be your scsi-stop command. The script will wait for 10 minutes of inactivity, set via CYCLES. Hope that helps. -Thomas Am Dienstag, den 22.09.2009, 19:02 +0200 schrieb Mai Kee Reis: > Can anybody please give me a hint how to spin down my HDD if not used a while? > My system is a NSLU2 with SlugOS 5.3 LE. > > The following does work fine, if invoked manually: > /opt/sbin/scsi-stop /dev/sdb > > So I think about using cron - good idea? > > Or will this cause trouble to attached processes? (Samba,...) > I'm not shure, but I think I saw a solution with crontab + some > kind of disk statistics, but can't google or remember anymore > > (invoking '/opt/sbin/scsi-idle /dev/sdb 180' does not do the job > as it shall by documentation) > > Greetings, > Mai Kee > > > > > > ------------------------------------ > > Yahoo! Groups Links > > > > |
|
|
Re: scsi-stop and cron-job?Hi Thomas,
your script helps a lot, I think! Need to learn sh syntax again ;-) but i like it. Some small questions: Do you know what rmtab counterpart for SAMBA is? Did I understand right, you don't evaluate the in-que-read/write operations? why can you use hdparm? AFAIK, the slug has no IDE port, and hdparm does not work via USB, as I read here: <http://www.nslu2-linux.org/wiki/FAQ/SpinDownUSBHarddisks#method1> with regards & respect, Mai Kee Thomas Reitmayr wrote: > Hi Mai Kee, > you can read /sys/block/<dev>/stat (with <dev> corresponding to your > HDD, eg. sdb) and look for changes. After a certain timeout you could > issue your scsi-stop command. > Altough my disk on a TS-109 could spin down automatically, I use such a > script to be able to take other aspects into account - the disk will > never spin down as long as I have one of its NFS shares mounted from my > PC. > > That's my script: > > ========================================= > #!/bin/sh > > #DEV=sdb > DEV=`blkid -t LABEL=MEDIA | sed 's/[0-9].*//'` > DEV=${DEV#/dev/} > STATFILE=/sys/block/$DEV/stat > RMTAB="/var/lib/nfs/rmtab" > let 'CYCLES=10*60/5' > LOGFILE=/var/log/spindown.log > state=active > > rw=0 > count=0 > echo "" >> $LOGFILE > date "+%D %T - start" >> $LOGFILE > while true ; do > rw_old=$rw > read reads a2 a3 a4 writes rest < $STATFILE > let "rw=$reads+$writes" > if [ "$rw" != "$rw_old" -o -s "$RMTAB" ] ; then > count=0 > state=active > lastacc="`date '+%D %T - idle'`" > else > if [ "$state" = "active" ] ; then > let "count=$count+1" > fi > fi > if [ "$state" = "active" -a $count -gt $CYCLES ] ; then > echo "$lastacc" >> $LOGFILE > date "+%D %T - spindown" >> $LOGFILE > hdparm -Y /dev/$DEV > state=standby > fi > sleep 5 > done > ========================================= > > You will probably need to tweak it a bit, eg. set DEV=sdb or change the > disk LABEL, remove the code watching $RMTAB, or maybe do not write a log > file (especially if your /var/log directory is not located on a ram > disk). And of course "hdparm -Y" should be your scsi-stop command. > The script will wait for 10 minutes of inactivity, set via CYCLES. > > Hope that helps. > -Thomas > > > Am Dienstag, den 22.09.2009, 19:02 +0200 schrieb Mai Kee Reis: > >> Can anybody please give me a hint how to spin down my HDD if not used a while? >> My system is a NSLU2 with SlugOS 5.3 LE. >> >> The following does work fine, if invoked manually: >> /opt/sbin/scsi-stop /dev/sdb >> >> So I think about using cron - good idea? >> >> Or will this cause trouble to attached processes? (Samba,...) >> I'm not shure, but I think I saw a solution with crontab + some >> kind of disk statistics, but can't google or remember anymore >> >> (invoking '/opt/sbin/scsi-idle /dev/sdb 180' does not do the job >> as it shall by documentation) >> >> Greetings, >> Mai Kee >> >> >> >> >> >> ------------------------------------ >> >> Yahoo! Groups Links >> >> >> >> >> > > > ------------------------------------ Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/nslu2-linux/ <*> Your email settings: Individual Email | Traditional <*> To change settings online go to: http://groups.yahoo.com/group/nslu2-linux/join (Yahoo! ID required) <*> To change settings via email: mailto:nslu2-linux-digest@... mailto:nslu2-linux-fullfeatured@... <*> To unsubscribe from this group, send an email to: nslu2-linux-unsubscribe@... <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/ |
|
|
Re: scsi-stop and cron-job?Hi Mai Kee,
it is the script I use on my QNAP TS-109, which has its disk(s) attached via SATA, so for the NSLU2 you would just replace hdparm with scsi-stop. I am not 100% sure what you mean with "in-que-read/write operations". The parameters from /sys/block/$DEV/stat used in the script are the number of completed reads and writes (see /usr/src/linux/Documentation/iostats.txt). However you could actually simplify this by just watching for _any_ change in /sys/block/$DEV/stat, as shown in the following stripped down version of the script (untested!): #!/bin/sh DEV=sdb TIMEOUTMIN=10 TICKSEC=10 let "CYCLES=$TIMEOUTMIN*60/$TICKSEC" state=active stat="" count=0 while true ; do stat_old=$stat stat=`cat /sys/block/$DEV/stat` if [ "$stat" != "$stat_old" ] ; then # disk activity detected count=0 state=active else [ "$state" = "active" ] && let count++ fi if [ "$state" = "active" -a $count -gt $CYCLES ] ; then # spin down /opt/sbin/scsi-stop /dev/$DEV state=standby fi sleep $TICKSEC done Regarding samba, you could watch the client and/or "Locked files" entries returned by the tool 'smbstatus' and only spin down the disk if there are no such entries (if that's the behavior you desire). However I am not that familiar with samba, so this might not cover all your use cases... Best regards, -Thomas Am Mittwoch, den 23.09.2009, 23:17 +0200 schrieb Mai Kee Reis: > Hi Thomas, > > your script helps a lot, I think! > Need to learn sh syntax again ;-) but i like it. > Some small questions: > Do you know what rmtab counterpart for SAMBA is? > Did I understand right, you don't evaluate the in-que-read/write operations? > why can you use hdparm? AFAIK, the slug has no IDE port, and hdparm does > not work via USB, as I read here: > <http://www.nslu2-linux.org/wiki/FAQ/SpinDownUSBHarddisks#method1> > > with regards & respect, > Mai Kee |
| Free embeddable forum powered by Nabble | Forum Help |