Raskere Ext3 filsystem uten atime

Linus, Ingo Molnar, Alan Cox og et par andre utviklere diskuterer atime. Mange systemadministratorer, inklusive undertegnede, slår av "atime" (access time) som noe av det første de gjør på en ny maskin, men dette har ikke slått an som standardoppsett. Kort fortalt så oppdateres "atime" hver gang man leser innholdet av en fil eller et directory.

Dette er fint om man vil vite hvilke filer som er i bruk eller ikke, men det er også ekstremt kostbart. Hver gang man leser innholdet av en fil, selv om denne filen er cachet i minne, så må filsystemet skrive til disk for å oppdatere denne verdien. Dette krever mye av disken og gjør systemet treigere. Det merkes spesielt på filer som leses ofte og som skal være cachet, slik som databaser.

Hvis du har lyst til å se "atime" i praksis kan du bruke kommandoen "stat", f.eks.
stat ~
eller
stat /sti/filnavn

Veldig få programmer er i dag avhengige av atime, så det er relativt trygt å slå det av. Følgende fremgangsmåte
Sjekk at du ikke allerede har slått av atime, eller at distribusjonen har gjort det for deg:
cat /etc/fstab
(eller bruk et tekstredigeringsprogram for å se på filen)

Filen er delt inn i fem kolonner:
(disk) (monteringspunkt) (filsystem) (opsjoner) (dump) (pass)

Du er interessert i raden hvor monteringspunktet er "/". Dersom det står atime i kolonnen for opsjoner så er du ferdig. Dersom det kun står "defaults", og filsystemet er ext3 eller ext2, har du noe å hente.

Neste steg er isåfall å ta en sikkerhetskopi (som root):
cp /etc/fstab /etc/prev.fstab
Pass på at du har en LiveCD klar (eksempelvis Knoppix eller Ubuntu installasjons CD), slik at du kan rydde opp i tilfelle det oppstår en feil.

Så redigerer du filen /etc/fstab , f.eks. med gedit:
sudo gedit /etc/fstab

Endre linjen med "/" i monteringspunkt-kolonnen. Dersom du opsjoner er "defaults" legger du til ",noatime", slik at det blir "defaults,noatime"

Reboot maskinen, du bør kunne merke at den starter *noe* raskere enn tidligere.

Eksempel, Fedora 7, FØR:
LABEL=/1 / ext3 defaults 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-sda6 swap swap defaults 0 0

ETTER:
LABEL=/1 / ext3 defaults,noatime 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-sda6 swap swap defaults 0 0

To andre parametere som diskuteres er "nodiratime" og "data=writeback". Den første har jeg testet på 2.6.22 og kan ikke se at den har noen effekt, noatime ser også ut til å omfatte directoryer. Den andre endrer måten Ext3 jobber på, slik at den oppfører seg mer som Ext2. Dette gir noe bedre ytelse, fordi man gir filsystemet lov til å cache endringer i minne istedet for å skrive de direkte til disk, men det gjør samtidig at man er mere utsatt for feil dersom strømmen skulle forsvinne eller man ikke får avmontert filsystemet av andre årsaker.

Valg for kommentarvisning

Velg din foretrukket måte å vise kommentarer på og klikk på "Lagre innstillinger" for å aktivere endringene.

johnm76

Plukket artikkelen på slashdot i går jeg med. Og fulgte oppskriften (tror jeg), men jeg stusser litt på at du i innlegget ditt kun bruker noatime - har jeg blingset med mitt oppsett?

Uansett har jeg merket klar ytelsesforskjell i Bibble (raw-editeringsprogram, foto). Vesentlig kjappere tommelfingbilder og endel kjappere enkeltbilder i større format. Generell surfing viser lite og ingenting. Men, har jeg fått det til rett?

(K)ubuntu 7.04

# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
# /dev/sda1
UUID=69555919-5b0c-4308-954d-3108719053c6 / ext3 defaults,errors=remount-ro,noatime,data=writeback 0 1
# /dev/sda5
UUID=d323991c-2eda-4c74-838c-6a5b441fae53 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0

Maskinen tar lenger tid på å bli varm ved surfing og "lett" bruk - en god del tid lenger. Og det er jo bare positivt!

ak

data=writeback vil jeg ikke anbefale sånn uten videre, errors=remount-ro tror jeg bestemmes av mount-scriptet på de fleste distribusjoner.

Såvidt jeg har sett har defaults vært overflødig, men det er jo enklere å forklare uten å fjerne det, så jeg endret veiledningen ovenfor slik at den minner mer om din.

moma

Min personlige erfaring med Ext3 og writeback:

Du må også fortelle filsystemet at du vil å bruke "data=writeback" attributtet i /etc/fstab. Ellers vil ikke mount kommandoen og filsystemet forstå "data=writeback" argumentet og filsystemet monteres som read-only.

Aktiver journal_data_writeback etter at du har satt "data=writeback" i /etc/fstab.
Kjør som sudo eller root:

# tune2fs -o journal_data_writeback /dev/XXX

Det normale (tregere og tryggere) valget er journal_data eller journal_data_ordered:
# tune2fs -o journal_data /dev/XXX

For mer informasjon, se:
$ man tune2fs

TO

Jeg kjører Ubuntu 7.04 via Edgy fra Dapper. Alle partisjonene har opsjon defaults, for / er det i tillegg errors=remount-ro. Jeg har egen partisjon for /home. Er det da riktig å legge til opsjonen noatime for /home også?

ak

Ja, det vil også hjelpe.

  • Skriv ut artikkel
  • Abonner med RSS

Siste kommentarer