Kapitel 12. Disk Quota - hold styr på brugernes diskplads

Af: Søren Ulrik

En af fordelene ved at bruge GNU/Linux på din server fremfor Windows NT 4.0 er, at der indbygget i systemet er mulighed for at begrænse hver enkelt brugers diskplads. Man kan få brugernes hjemmebiblioteker til at se ud som selvstændige diske, som man så kan sætte og ændre størrelsen på efter behov og diskplads. På den måde lærer brugerne (eleverne) at holde styr på hvilke filer de har liggende og jævnligt få ryddet op, og man undgår, at nogle enkelte brugere bruger al diskpladsen på serveren til ulempe for de øvrige brugere.

Softwaren hedder Quota, og ligger i en rpm, der installeres som standard. Dvs. at hvis du ikke har fravalgt den under installationen er den allerede installeret. Check det ved at køre kommandoen

[root@gnuskole /root] rpm -q quota 

Disk Quota aktiveres for hver partition i filsystemet, og hvis du har fulgt vore vejledninger i kapitel 2 vedrørende inddeling af harddisken er det kun nødvendigt at beskæftige sig med den partition, der er mountet som /home, samt /-partitionen (fordi brugerne som standard på et RedHat-system har skriveadgang til /tmp).

Hvis Quota er installeret, er næste punkt at fortælle systemet, hvilke filsystemer, Quota skal være aktiv for. Filen /etc/fstab er en liste over alle filsystemer, der er tilgængelige for filsystemet. Inden Quota er slået til, kan den se ud som nedenstående:

Tabel 12-1. Tabel over filsystemer

/dev/hda1/ext2defaults1 1
/dev/hda2/homeext2defaults1 1

Vi skal have aktiveret quota på den partition, der er mountet som /home, og på /-partitionen. Det gøres ved at ændre linierne til

Tabel 12-2. Tabel over filsystemer efter aktivering af Quota

/dev/hda1/ext2defaults,usrquota1 1
/dev/hda2/homeext2defaults,usrquota1 1

Efter at denne side af sagen er iorden, "remountes" partitionerne med kommandoen (nedenstående er eksempler til /home, udfør de samme kommandoer med /):

[root@gnuskole /root] mount -v -o remount /home

Dette giver et output a la

/dev/hda7 on /home type ext2 (rw,usrquota)

Så et lille "tjek" af filsystemet, hvor filer og biblioteker tælles i med kommandoen /sbin/quotaon -uv /home

12.1. Redigering af brugernes diskplads

Der er 3 begreber, der kræver en kort definition, inden vi kan gå igang med at editere user quotas: soft limit, hard limit og grace period.

12.1.1. Soft limit

beskriver brugerens maksimale diskforbrug. Hvis der er sat en "grace period" (se nedenfor), kan soft limit overskrides i Grace Period, indtil

12.1.2. Hard limit

nås. Denne grænse er "uoverskridelig" for brugerne.

12.1.3. Grace Period

Den periode, en bruger tillades at overskride soft limit'en. Hvis der er sat en soft limit på 100 MB, en hard limit på 200 MB og en grace period på 7 dage, kan brugeren optage mellem 100 og 200 MB i indtil 7 dage. Derefter er der "lukket", indtil brugeren har slettet filer, til under de 100 MB - som så igen kan overskrides i 7 dage. Grace period redigeres med kommandoen

[root@gnuskole /root]#  /usr/sbin/edquota -t 

Derved aktiveres editoren vi, med følgende tekst:

Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/hda7: block grace period: 7 days, file grace period: 7 days

I dette tilfælde kan brugeren overskride soft limit for både filstørrelse og filmængde i op til 7 dage.

Vi vil anbefale at undlade at anvende Hard og Soft Limits. Når der er tale om elever, der sidder ved Windows-klienter, vil den mest gennemskuelige situation for dem simpelthen være, at de får en besked om, at der ikke er mere diskplads til rådighed for dem; de vil så blive nødt til at slette filer, indtil der igen er plads i deres hjemmebibliotek. Ret derfor i filen, så der står:

Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/hda7: block grace period: 0 days, file grace period: 0 days

12.1.4. Redigering af brugernes diskplads:

For at tildele diskplads til brugerne, køres kommandoen

/usr/sbin/edquota -u elev #(elev er brugernavnet) 

Denne kommando starter teksteditoren vi, med følgende tekst i:

Quotas for user elev:
/dev/hda7: blocks in use: 24, limits (soft = 0, hard = 0)
inodes in use: 6, limits (soft = 0, hard = 0)

"blocks in use" beskriver, hvor mange kilobytes brugeren bruger på partitionen og "inodes in use" beskriver brugerens antal af filer. Når limits, som i udgangspunktet, er sat til 0 har brugeren ubegrænset diskplads til rådighed (naturligvis begrænset af den fysiske diskplads).

Hvis man derfor har diskplads til, at hver bruger kan optage 5 mb (eller rettere 5000 kb) på disken, rettes soft = 0 til soft = 5000 (husk, at for at indtaste tekst i vi, skal der først trykkes på i - for at komme "ud" af Insert mode trykkes på ESC, og for at afslutte og gemme ændringer trykkes ZZ - for at afslutte uden at gemme ændringer tastes :q!)

Hvis man ønsker at tildele alle brugere samme quota som en "prototype-bruger" (som fx brugeren elev...) gøres dette ved at udføre kommandoen

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

Denne kommando bruger quotas for brugeren elev som prototype for de brugere på systemet, som har brugernumre fra 500 og opefter. I praksis vil det sige alle de brugere, der er tilføjet af administratoren.

Meget kort forklaring:

awk er et programmeringssprog som bl.a bruges til at scanne efter "mønstre". -F: angiver, at den fil, der skal scannes (/etc/passwd) inddeles i felter med et kolon. $3 < 499 finder alle linier, hvor det tredje felt (brugernummeret) har en værdi større end 499, og for disse linier printes brugernavnet (til edquota-kommandoen)(som er første variabel).

12.1.5. Tilføjelse til opstartsscripts

For nu at være sikker på, at Quota er aktivt også efter reboot, tilføjer vi kommandoen

/sbin/quotaon -uv /home 

til filen /etc/rc.d/rc.local som køres i slutningen af hver boot.