14. december

Har du kun endeligt meget diskplads?

Quota giver mulighed for at begrænse dine brugeres forbrug af diskplads.

Hvis man driver en server med mange brugere, sker det fra tid til anden at en bruger bevidst eller ubevidst kommer til at fylde disken op med filer. For at et sådant uheld ikke skal kunne påvirke de andre brugere på systemet, så kan man installere "quota". Quota gør det muligt at sætte en diskforbrugsgrænse for den enkelte bruger eller evt. for en gruppe.

Systemet er så fleksibelt, så man yderligere kan sætte en ekstra-pulje op, så brugeren i en fast tidsperiode (kaldet grace-perioden) godt må "svine" med pladsen bare der ryddes op igen; f.eks. kan man have 10 Mb diskplads, men kan få lov til i en periode på to timer ekstra at bruge yderligere 10 Mb.

Både den almindelige kvote og den ekstra diskkvote virker ved at man pludselig ikke kan gemme filer, når man er oppe på maksimum. Brugeren må derefter selv slette filer.

Derfor er det vigtigt at systemadministratoren forklarer brugeren hvilke grænser, der er sat og hvad man gør for at følge eget forbrug - og endelig hvordan man rydder op.

Installation: Der skal være "quota"-understøttelse i Linux-kernen og "quota"-pakken skal være installeret. Normalt vil en Linuxdistribution have "quota" understøttet.

Quota sættes på de enkelte partitioner, dvs. /etc/fstab skal redigeres, så man i options-feltet tilføjer usrquota til hver partition man ønsker at køre "quota" på. F.eks. ændres linien i /etc/fstab fra

/dev/hda2      /home       ext2    defaults 1 1
til
/dev/hda2      /home       ext2    defaults,usrquota 1 1
For at starte "quota" skal der nu indekseres og "quota"-programmet skal startes. Kør følgende kommandoer som systemadministrator ("root"):
# /bin/mount -v -o remount /home <-- for at gen-montere den ændrede partition
# /sbin/quotacheck -a -m      <--- for at lave et index over brugernes forbrug
# /sbin/quotaon -uv           <--- start quota

De to første kommandoer skal blot køres en gang for alle, og den sidste kommando skal køres hver gang maskinen startes op (indsæt kommandoen i /etc/rc.local eller lign).

Nu kan man redigere grænsen for en bruger - hvis man har mange brugere, så opret en test-bruger "quotauser" og lave følgende som skabelon og sidenhen kan man kopiere test-brugerens "quota"-opsætning til alle andre brugere.

Grænser redigeres ved at køre "edquota" for brugeren. Grænser for diskforbrug anføres i kb, dvs. 10000 er 10 Mb. Hvis "quota" ikke sættes op er standard-indstillingen at der ingen grænse er (dette anføres som et nul i opsætningsfilen).

# /usr/sbin/edquota -u quotauser

-----------------------------------------------------------------------
Disk quotas for user quotauser (uid 500):
Filesystem      blocks       soft       hard     inodes     soft   hard       
/dev/hda2       695879         0          0       6741        0      0
-----------------------------------------------------------------------

Ret nu tallene til det brugeren må. Det vil normalt være tekstbehandlingsprogrammet vi, der bliver startet (med mindre $EDITOR for root er sat til en anden editor).

  • "soft" betyder antal kilobytes som brugeren må bruge indenfor "grace"-perioden, hvis man ønsker at tillade dette ekstraforbrug.
  • "hard" betyder maksimum forbrug.

Til højre for de første soft/hard står der inodes og igen soft/hard - dette er antal filer man kan lave. Dette bruges kun sjældent. Hvis man ønsker at brugeren fast kan bruge 10 Mb og 10 Mb ekstra under grace-perioden skrives

-----------------------------------------------------------------------
Disk quotas for user petoft (uid 500):
Filesystem      blocks       soft       hard     inodes     soft   hard       
/dev/hda2       695879       20000      10000     6741        0      0
-----------------------------------------------------------------------

Du kommer ud af vi ved at taste ":wq!".

Hvis man derefter vil sætte "grace"-perioden hvor ekstra diskforbrug er tolereret, så kan dette indstilles ved at skrive:

# /usr/sbin/edquota -t 

-----------------------------------------------------------------------
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem      Block grace period      Inode grace period
/dev/hda2        7 days                    7days
-----------------------------------------------------------------------

Hvis man ønsker en grace-periode på to timer rettes teksten til

-----------------------------------------------------------------------
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem      Block grace period      Inode grace period
/dev/hda2        2hours                     2hours
-----------------------------------------------------------------------

Du kommer ud af vi ved at taste ":wq!".

Tanken med at tildele en test-bruger "quotauser" er at man relativt nemt kan tildele samme "quota" til alle almindelige brugere ved at køre

# edquota -p quotauser `awk -F: '$3 > 499 {print $1} /etc/passwd`

Tricket er her at man normalt tildeler almindelige brugere brugernumre over 499.

Andre interessante kommandoer

# repquota -a   <-- viser status på diskforbrug
# warnquota     <-- bruges til at alarmere brugere som er over kvote

Mere information om quota kan findes på