Preventing the Promise DS4600 RAID array from sleeping all the time

Dear Promise Technology, Inc.,

Your SmartStor DS4600 RAID array is pretty good. I really enjoy having a big phat 5.7TB RAID array on my desk (attached to an iMac via FW800). Even after consolidating all my loose storage drives, I still have more than 2TB of RAID protected space available. Yumm.

But why would you spin my drives down all the time, without checking whether I am at the computer? Checking drive access idle time is not enough when the array is the home of my iTunes library, my main project file storage, etc etc.

So ... I have hacked up this nasty little kludge to run as a cron job every minute. All it does is check actual idle time of the keyboard and mouse and if they are not idle, it touches a file on the array and flushes the disk cache (with 'sync').

If you know a better way to do this, I am all ears!

MINIDLE is the only value in the script you need to change, and this should match the idle time you want before the script will let the drive start its own sleep timer. I use 10 minutes at the moment,

Here's the 'keepalive' shell script (I saved this at /Users/geoff/bin/keepalive):

#!/bin/bash

MINIDLE=600
IDLETIME=(`/usr/sbin/ioreg -c IOHIDSystem | /usr/bin/sed -e '/HIDIdleTime/ !{ d' -e 't' -e '}' -e 's/.* = //g' -e 'q'` )
IDLETIME2=$[$IDLETIME/1000000000]

if [ $IDLETIME2 -lt $MINIDLE ]
then /usr/bin/touch /Volumes/DS4600/.keepalive
sync
fi

And here's the line from my cron file:

*       *       *       *       *       /Users/geoff/bin/keepalive

 

See ... that wasn't so hard ...

ALSO ... it probably doesn't need to run every minute, but I haven't yet timed the array to work out how long its spin down time is. There's nothing in the documentation and it's a pain to sit watching lights ...

OH ... AND ... this is on a Mac OS X system ... if you're using the array on another OS you'll need to find another technique, since the technique used to find the idle time will certainly fail!