Jeg havde lagt mærke til at harddisken i min EEE Box klikkede flere gange i minuttet. Troede i første omgang at det bare var almindelig disk access, men det lader til at være et kendt og frygtet fænomen i Ubuntu (og for den sags skyld andre Linux distroer) - det er simpelthen unload/load mekanismen (til parkering af læse/skrivehovedet) i harddisken der aktiveres!
Dette sker normalt for at beskytte harddisken i f.eks. bærbare mod at crashe, når man flytter rundt med dem mens de er tændt (ja, det er der nogen der gør!).
Problemet er bare at harddisk producenterne har sat tærskelværdien meget lavt, så hovedet parkeres sådan ca. hver gang der ikke har været aktivitet på disken i 5-6 sekunder. Dette koblet med at der i linux skrives et "last access time" tidsstempel på alle filer, hver gang de tilgås (også ved læsning OG også selvom filen ligger i disk cache!) gør at hovedet umiddelbart efter parkering bliver hevet ud af parkerings positionen.
I mit tilfælde har min EEE Box med Ubuntu 8.10 server været i brug i 26 dage og der har været 5 unload/load cykluser pr. minut = 7200 pr. døgn! I alt har den haft over 142.000 cykluser.
Producenter opgiver typisk MTBF for unload/load cykluser til 600.000 - er der nogen der kan se problemet? Jeg skulle få mine første fejl om ca. 3-4 måneder!
Problemet er dog heldigvis ikke svært at løse - først skal du installere smartmontools:
sudo apt-get install smartmontools
Dernæst checker vi lige om du har problemet - følgende terminal kommandoer opsummerer for hvert minut der er gået hvor mange cykluser der har været:
gcc() { smartctl -a /dev/sda | grep 'Load_Cycle_Count' | awk '{print $10}'; }; n=$(gcc); while :; do nn=$(gcc); echo "$(date) $((nn-n))"; n=$nn; sleep 60; done
I mit tilfælde havde jeg altså 5 pr. minut!
Hvis du vil se hvor mange cykluser dit drev har haft i alt skal du udføre følgende:
sudo smartctl -a /dev/sda | grep 'Load_Cycle_Count'
Her havde jeg altså 142.106 cykluser :(
Det er også meget rart at vide hvor mange timer drevet har kørt:
sudo smartctl -a /dev/sda | grep 'Power_On_Hours'
I mit tilfælde 636 (= ca. 26 dage, i skrivende stund).
Næste logiske spørgsmål er så: Hvad gør man ved det?
Hvis du har Ubuntu 9.10 eller derunder, skal du tilføje følgende tekst i slutning af /etc/hdparm.conf:
/dev/sda {
apm = 254
spindown_time = 0
}
Hvis du har Ubuntu 10.04, skal du tilføje følgende tekst i slutning af /etc/hdparm.conf:
/dev/sda {
apm = 254
apm_battery = 254
}
Dette sætter powersave til næstmindste niveau og forhindrer at drevet går i standby/sleep (spindown).
Filen hdparm.conf læses af systemet under boot og sætter parametre for de drev man har valgt at definere i filen.
For at aktivere funktionen uden at genstarte systemet skal du udføre følgende kommando i et terminal vindue:
sudo hdparm -B 254 /dev/sda
Der er en del sites på nettet der foreslår at sætte parameter værdien til 255 (=APM OFF), men det virker desværre ikke for alle producenters drev, hvilket værdien 254 skulle gøre - det har i hvert fald løst problemet på min bærbare med Intrepid Desktop og min EEE Box med ditto Server version.
Ikke mere klikkeri! (og forhåbentlig et længere liv til mine harddiske)...
Research kilder: Slashdot.org, Ubuntu Launchpad