De volgende stappen kunnen gevolgd worden om de (USB) harddisk in powerdown te laten gaan.

Stap 1: Check of de harddisk wel in powerdown kan gaan!

Het kan zijn dat de harddisk geen spindown heeft geimplementeerd. Meerdere merken zullen in spindown kunnen gaan, maar Western Digital USB harddisken (zoals MyBook) doen dat op zeker.

Gemeten: De Western Digital MyBook 1TB, gaat na 10 minuten (10:36) automatisch in spindown.

Let op! Belangrijke tip! Soms gaat de disk niet meer in spindown, ook niet als je alle services uitzet de de disk kunnen activeren. Haal dan is de spanning van alles af en start alles opnieuw op.

Stap 2: disable “–MARK–” in /var/log/messages

In /var/log/messages wordt standaard om de zoveel tijd een –MARK– in /var/log/messsage gezet. In /etc/syslog.conf het is mogelijk dit proces te configureren.

Om de “–MARK–” messages uit te schakelen moet MARKINT op 0 gezet worden. Dit is een waarde in minuten en 0 is uitschakelen.

$ vi /etc/syslog.conf
MARKINT=0 # intervall between --mark-- entries

Stap 3: Check of de noatime voor de ‘/’-partitie is aangeschakeld

Bijvoorbeeld de Asterisk leest ongeveer elke 5 seconden in de volgende files:

/etc/localtime
/var/log/event_log
/var/log/queue_log

Hierdoor blijft de harddisk continu geaktiveerd. Door de noatime optie op die partitie aan te schakelen, wordt niet meer in files en directory’s bijgehouden wanneer deze voor het laatst geaccessed is.

Er is al veel naar /var/volatile (ram-disk) verplaatst, maar dat kon niet voor deze leesakties. Vandaar deze methode. Ook andere services zullen dan minder snel de harddisk op laten spinnen.

$ vi /etc/fstab
/dev/sda1       /               ext3    defaults,noatime        1  1

Stap 4: Zoeken naar een gewijzigde file

Om te zoeken naar services die continu files wijzigen op de harddisk (zoals samba), is het volgende script handig om te kijken welke files in de afgelopen 20 minuten gewijzigd zijn. Deze files kunnen eventueel naar de ram-disk verplaatst worden, waardoor ze niet continu de harddisk aan de gang houden. Hiervoor kan het onderstaande script gebruikt worden.

$ ipkg install findutils

Maak een script ff_changed in de /usr/bin directory:

$ vi /usr/local/sbin/ff_changed
#!/bin/sh
echo Search whole filesystem for changed files in the last $1 minutes
find /bin /dev /etc /home /initrd /lib /media /mnt /opt /root /sbin /usr /var -cmin -$1

Maak het ff_changed script executeerbaar:

$ chmod +x /usr/local/sbin/ff_changed

Stap 5: Samba browse.dat op ram-disk zetten

De samba service houdt een bestand /var/lock/browse.dat bij. Dit wordt ongeveer elke 5 minuten bijgewerkt, zodat de harddisk niet in spin down gaat. Als de samba service geen aktief netwerk meer ziet, dan wordt het bestand niet meer bijgewerkt, en gaat de haddisk in spin down. Als de NSLU2 wel met samba in een aktief netwerk blijft, weet ik tot nu toe niet hoe ik dit moet oplossen.

Alleen browse.dat in /var/volatile zetten lukt niet. Een grove methode is de complete /var/lock directory naar /var/volatile verplaatsen, met de volgende commando’s:

$ cd /var/
$ mv lock lock.old
$ ln -s /var/volatile lock

Stap 6: NTP uitschakelen

Om de tijd te synchronizeren is het waarschijnlijk niet nodig om ntpd te draaien. ntpd regelt continu op een slimme manier zeer nauwkeurig de tijd. Een eenvoudigere oplossing is om ntpdate te gebruiken, welke om de zoveel dagen de interne klok even synchroniseert. Schakel ntpd uit door in het opstart script “/etc/init.d/ntpd” een “ “exit 0” in het begin van het script te zetten. Of ntpd volledig te deinstalleren met:

$ ipkg remove ntpd

Stap 7: Asterisk.conf aanpassen

$ vi /etc/asterisk/asterisk.conf:

[directories]
astetcdir => /opt/etc/asterisk
astmoddir => /opt/lib/asterisk/modules
; astvarlibdir => /opt/var/lib/asterisk      ; Commented out for spinning down harrdisk
astvarlibdir => /var/volatile
astdatadir => /opt/var/lib/asterisk
astagidir => /opt/var/lib/asterisk/agi-bin
astspooldir => /opt/var/spool/asterisk
astrundir => /opt/var/run
; astlogdir => /opt/var/log/asterisk          ; Commented out for spinning down harddisk
astlogdir => /var/volatile

Stap 8: Monitoren van alle systemcalls

Als bovenstaande stappen nog niet ervoor gezorgd hebben dat de harddisk binnen het half uur in spindown is gegaan, is de volgende methode een paardenmiddel. Schakel alle services uit en activeer ze stuk voor stuk. Bepaal hiermee welke service ervoor zorgt dat de harddisk blijft draaien. Het tool strace wordt gebruikt om alle systemcall af te vangen van een executable. Installeer strace:

$ ipkg install strace

Kijk in /etc/init.d/ hoe de service gestart wordt en start deze handmatig op met behulp van strace.

$ strace -ff -o debug.log

Opties strace: -ff -> follow child processes + add pid to logfilename -o -> output logging to debug.log

Voorbeeld

$ strace -ff -o asterisk.log asterisk -c

Tip: Harddisk overdag aktief en ’s-nachts in spindown

Voor bedrijven is het handig dat de harddisk overdag gewoon aktief blijft en alleen tussen 20:00 en 8:00 in spindown gaat. Voor VOIP is het bijvoorbeeld niet handig dat als iemand belt, eerst de harddisk moet opspinnen, zo’n 3 sec hoor je dan niets. Ook overdag als je aan het werk bent, dan reageert de fileserver even niet.

Het ligt een beetje aan de situatie, maar de eerste ideeën zijn om:

  • De harddisk aktief te houden, zolang er nog iemand via Samba ingelogd is.
  • Om de harddisk via een cron-job overdag actief te houden.

De harddisk actief houden tijdens werkuren en werkdagen

Om de harddisk tijdens werkuren en werkdag actief te houden, kunnen we in de crontab periodiek een commando uit laten voeren. Hoe vaak dit moet, dat ligt aan hoe lang de harddisk er zelf over doet om in spindown te gaan. In mijn geval met de WesternDigital MyBook is dat 10 minuten. Dan laat ik elke 9 minuten een ls commando uitvoeren op de /opt partitie, welke niet de optie noatime heeft in /etc/fstab.

$ vi /etc/cron/crontabs/root
*/9  8-18  *   *   1-5  /bin/ls /opt  &>/dev/null

In Asterisk harddisk activeren als er gebeld wordt

Met de volgende oplossing wordt de harddisk alvast geactiveerd, voordat er het voice respond menu actief wordt. Hierdoor duurt het niet een 3 tot 8 sec totdat de harddisk weer actief is en dat een beller tijdens het opspinnen niets hoort!

$ vi /etc/asterisk/extensions.conf
[external]
exten => s,1,System(ls /opt) ; Execute a command on a noatime (noncached) disk, to spinup the harddisk
exten => s,n,Dial(SIP/501&SIP/502,30)

Harddisk levensduur

Let op! Het te vaak uitschakelen van de harddisk is niet goed voor de levensduur. Ook is het niet handig om vaak te wachten op het opspinnen van de harddisk. Voor het gebruik thuis kies ik 30 min, voor intensiever zakelijk gebruik kies ik voor een spindown_time van 2 uur, zodat de harddisk niet te vaak aan/uit geschakeld wordt.

Een harddisk kan volgens fabrikanten zo’n 200.00 keer in zijn leven aangeschakeld worden. Met een levensduur van 5 jaar is dat 40.000 keer per jaar en 109 keer per dag. Nu zal dat wat meer zijn, omdat in de weekenden en feestdagen de server niet gebruikt wordt. Als de harddisk na 10 min uitgeschakeld wordt, dan is dat 18 uur per dag. Dat valt mee, maar dit is wel de grens. Het is beter om wat minder vaak te schakelen.

Zie ook: ubuntudemon.wordpress.com/2007/10/28/laptop-hardrive-killer-bug-how-to-discover-whether-you-are-affected

Voor als de USB harddisk op geen enkele manier uit zichzelf in spindown gaat

Er zijn nog 2 tools, welke ik niet uitgeprobeerd heb:

Zie ook de onlangs weer bijgewerkte wiki op: