2.13. Hvordan man får sin linuxmaskine til at holde op med at bruge harddisken

Jeg har en gammel bærbar i mit soveværelse. Den bliver brugt som printserver og gateway til et trådløst (802.11) netværk. Den skal være stille; især når jeg sover.

Jeg har også en computer på arbejdet. Den er bl.a. FTP- og webserver. Mine kollegaer bryder sig ikke om at den larmer, når jeg ikke er der.

Det er acceptabelt og stort set uundgåeligt at en maskine larmer når man bruger selv den, fx skriver ud til printeren, retter i dokumenter osv, men så er man jo også vågen.

Målet er at få den til at være stille når den ikke laver noget, eller kun laver simple ting (rutning, FTP af små filer osv.).

Det, man kan gøre noget ved, er larmen fra harddisken.

Først skal man have sat spin-down tiden på harddisken (eller harddiskene hvis der er mere end en). På nogle maskiner kan man gøre det i BIOS'en.

Fra Linux kan man gøre det med hdparm-programmet. Følgende kommando sætter den første IDE-harddisk (/dev/hda) til at lukke ned efter et minut:


[root@linus ~]# hdparm -S 12 /dev/hda

For at køre kommandoen hver gang computeren startes, kan man komme den i en opstartsfil, se Afsnit 2.5.

2.13.1. Problematiske programmer

Her er nogle af de programmer, der kan finde på at starte disken uden at det er nødvendigt.

2.13.1.1. Andre vink

Montér filsystemer med "noatime" optionen Hvis man monterer et filsystem med "noatime", bliver inode-access-tiden ikke opdateret. Det betyder at hvis en fil eller et katalog, der er cached, bliver læst, så startes disken ikke for at skrive filen eller katalogets access-tid tilbage.

Skriv følgende i din /etc/fstab fil:


/dev/hda3 /home ext2 defaults,noatime 0   0

2.13.1.2. Hvordan man finder de skyldige programmer

Nogen gange starter disken bare, uden at man ved hvorfor. Det kan være ret frustrerende.

Som en del af DIKU Linux kerne kurset blev en patch til 2.4.18 kernen udviklet.

Denne patch får kernen til at logge alle filoperationer. Det logger PID, tid, programnavn, filnavn osv.

Få patchen her.

Dette brugerprogram slår logging til og fra. Oversæt det med cc -o do_noisy_logging -I /usr/src/linux/include do_noisy_logging.c.

Programmet køres som ./do_noisy_logging 0 eller ./do_noisy_logging 1 for at slå logging fra hhv. til.