Date: Thu, 23 Jul 2009 01:49:22 +0200 From: Arnaud Houdelette <tzim@tzim.net> To: Mark Stapper <stark@mapper.nl> Cc: stable@freebsd.org Subject: Re: ZFS RAIDZ and atacontrol spindown settings Message-ID: <4A67A582.8040702@tzim.net> In-Reply-To: <4A66B92C.8000800@mapper.nl> References: <4A643F5B.8080806@mapper.nl> <h421n2$1kt$1@ger.gmane.org> <4A656076.2060205@mapper.nl> <9bbcef730907210137udf7f90ax21aa530ab859f8a6@mail.gmail.com> <4A658205.5000709@mapper.nl> <4A65CE7F.8040906@tzim.net> <4A66B92C.8000800@mapper.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
Mark Stapper wrote: > Arnaud Houdelette wrote: > >> Mark Stapper a écrit : >> >>> Ivan Voras wrote: >>> >>> >>>> 2009/7/21 Mark Stapper <stark@mapper.nl>: >>>> >>>> >>>>> Ivan Voras wrote: >>>>> >>>>> >>>>>> Mark Stapper wrote: >>>>>> >>>>>> >>>>>>> Good day, >>>>>>> >>>>>>> I am the proud user of a FreeBSD 7.2 AMD64 system housing, >>>>>>> amongst other >>>>>>> things, a data server. >>>>>>> My "server"(It's called "Yoshi") runs FreeBSD from a mirrored system >>>>>>> disc, and has a zfs RAIDZ array with 4 discs for bulky data. >>>>>>> As it is a home server, and I work during the day, these four >>>>>>> discs were >>>>>>> spinning happily all day long without much use for them doing so. >>>>>>> To save the world(and money) I issued the command "atacontrol >>>>>>> spindown >>>>>>> 1800" for all the discs in my array spinning them down after thirty >>>>>>> minutes of idle spinning. >>>>>>> So far so good, me very happy! However, when I access the array >>>>>>> after >>>>>>> the discs have been spun down, it spins up the discs one after the >>>>>>> other... >>>>>>> Mind you one AFTER the other, taking 4*9 seconds to do a "ls" >>>>>>> command on >>>>>>> my music directory. >>>>>>> Content as I am with the smooth down- and upspinning of the disks, I >>>>>>> would like it better if the four discs would spin up simultaneously. >>>>>>> Thus my question: "Is it possible to \"group\" discs to be spun up >>>>>>> together, or to issue a custom command upon upspinning of a disc >>>>>>> such as >>>>>>> to spin up other disks?" >>>>>>> >>>>>>> >>>>>> Good question but the answer is probably no - it really only depends >>>>>> on how ZFS accesses the drives; if it accesses them in sequence, you >>>>>> can't change it. >>>>>> >>>>>> >>>>> I've been looking at writing a shell script which monitors >>>>> /var/log/messages. >>>>> something like: >>>>> >>>>> If last line in /var/log/messages is like "request while spun down. >>>>> Starting." >>>>> spinup disks >>>>> >>>>> couple of problems though, I should probably poll the kernel messages >>>>> every second or so, but if I only check the last linee, I could >>>>> miss the >>>>> spinup message. >>>>> I could count the number of lines in /var/log/messages and keep >>>>> count of >>>>> the number of lines i've seen. Problem with this approach is that it's >>>>> not very efficient. >>>>> So I was hoping there is a way to receive this kernel message >>>>> directly. >>>>> I am now thinking in the lines of a program which received a signal on >>>>> new kernel messages available or something similar. >>>>> >>>>> Any thoughts? >>>>> >>>>> >>>> You could do what "tail -f" does and simply hook a kqueue to get new >>>> messages from the /var/log/messages file. >>>> >>>> >>> I'll try that! thanks! >>> >>> >>> >> As I get quite the same issue with a 4 disk raidz pool, could you >> please tell me the result of your tries ? which command do you use to >> force the disks to spin up ? >> >> Thanks >> > I have been using a shell script containing: > #!/bin.sh > dd if=/dev/ad4 of=/dev/null count=1& > dd if=/dev/ad6 of=/dev/null count=1& > dd if=/dev/ad8 of=/dev/null count=1& > dd if=/dev/ad10 of=/dev/null count=1& > Thanks. FYI, I made the little script behind to speed up the spinup of the whole pool, in case it be some use for anybody : #!/bin/sh wait-spinup() { while true do read l l=`echo $l | grep 'request while spun down'` if [ -n "$l" -a "`date +%H%M%S`" != "$d" ]; then d=`date +%H%M%S` dd if=/dev/ad4 of=/dev/null count=1 2> /dev/null & dd if=/dev/ad6 of=/dev/null count=1 2> /dev/null & dd if=/dev/ad8 of=/dev/null count=1 2> /dev/null & dd if=/dev/ad10 of=/dev/null count=1 2> /dev/null & fi done } tail -n 0 -F /var/log/messages | wait-spinup
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4A67A582.8040702>