Quota mini-HOWTO

Ralf van Dooren r.vdooren@snow.nl
Vertaald door Ellen Bokhorst bokkie@nl.linux.org

v0.3, april 2002


In dit document wordt beschreven hoe bestandssysteem quota op een Linux host te activeren, quota voor gebruikers en groepen toe te kennen als ook het gebruik van diverse quota opdrachten. Het is bedoeld voor gebruikers draaiend onder kernel 2.x (recent getest onder kenel 2.4.17).

1. Copyright

Dit document is geschreven door Ralf van Dooren (r.vdooren@snow.nl). De oorspronkelijke tekst en setup van dit document is copyleft-ed door Albert M.C. Tam, veel dank aan hem voor deze initiële mini-HOWTO.

Dit document is gelicentieerd onder de GNU Free Documentation License. Het is hierbij toegestaan dit document te gebruiken, kopiëren, en distribueren voor niet commerciële doeleinden, op voorwaarde dat de naam van de auteur/editor en deze vermelding in alle kopieën en/of ondersteunde documenten verschijnt; dat dit document niet wordt gewijzigd. Dit document wordt gedistribueerd in de hoop dat het van nut zal zijn, maar ZONDER ENIGE GARANTIE, ofwel uitdrukkelijk of impliciet. Ondanks dat elke poging is ondernomen om zeker te zijn van de accuraatheid van de informatie in dit document, veronderstelt de editor/beheerder GEEN VERANTWOORDELIJKHEID voor fouten, of beschadigingen voorvloeiend uit het gebruik van de informatie in dit document.

Stuur gerust feedback en commentaar naar r.vdooren@snow.nl als je een fout aantreft of eventuele ontbrekende informatie constateert. Ik waardeer het.

2. Wat is Quota?

Met Quota kun je limieten op twee aspecten van diskopslag specificeren: het aantal inodes dat een gebruiker of groep gebruikers mag hebben; en het aantal diskblokken dat door een gebruiker of groep gebruikers in beslag mag worden genomen.

Het idee achter quota is dat gebruikers worden gedwongen onder de limiet van hun diskverbruik te blijven, wat hun de mogelijkheid ontneemt ongelimiteerd diskruimte op een systeem te consumeren. Quota wordt per gebruiker, per bestandssysteem afgehandeld. Als er meer dan één bestandssysteem is waar een gebruiker zijn bestanden kan aanmaken, dan moet quota voor elk bestandssysteem apart worden ingesteld.

3. De huidige status van Quota onder Linux

Thans zijn er een aantal belangrijke wijzigingen in de wijze waarop quota werkt. Er zijn twee verschillende setups. De tools werken hetzelfde, maar er is een verschil in de in gebruik zijnde bestanden. In dit document wordt de setup en werking van de nieuwe quota setup beschreven. Als de nieuwe quota-setup niet in de reguliere kernelsource is opgenomen, dan moet deze setup worden gepatcht. We zullen het patchen en de installatie van het linuxquota package beschrijven. Als de quota software reeds op je systeem is geïnstalleerd, dan hoef je deze patch en het package wellicht niet meer te installeren. Je kunt me e-mailen als je hier vragen over hebt. Ik zal in een latere versie van dit document proberen een overzicht van Linux distro's op te nemen en de implicaties.

4. Benodigdheden voor het gebruik van Quota onder Linux

4.1 Kernel

De 2.x kernelsource is beschikbaar vanaf


http://www.kernel.org

Gebruik alsjeblieft een beschikbare mirror dicht in je buurt om bandbreedte te besparen.

4.2 Quota software

Afhankelijk van je Linux distributie, is de quota software wel of niet op je systeem geïnstalleerd. De meest recente quota-versie is beschikbaar via SourceForge en het is in actieve ontwikkeling. Je kunt de homepage van de quota-ontwikkelaars bereiken op


http://www.sourceforge.net/projects/linuxquota

5. Quota Setup onder Linux - Deel I: De configuratie

5.1 Patch de kernel

Download de patch voor je kernel vanaf:


ftp://atrey.karlin.mff.cuni.cz/pub/local/jack/quota/

Kies je kernelversie en download de patch. Patch je kernel met de opdracht 'patch'.

5.2 Herconfigureer de kernel

Herconfigureer de kernel en voeg quota ondersteuning toe door het intikken van y op de vraag:


Quota support (CONFIG_QUOTA) [n] y

Via `make menuconfig` of `make xconfig` vind je de optie voor quota ondersteuning onder het Filesystems-menu.

Zorg dat de nieuwe kernel zal worden gebruikt na het herstarten van het systeem.

5.3 Compileer en installeer de quota software

Als het quota package reeds in je Linux distributie is opgenomen, dan hoef je de quota software niet te installeren. Is het quota package niet beschikbaar in je Linux distributie, of wil je de meest recente versie installeren, dan kun je de laatste versie van de quota software (de broncode) downloaden vanaf bovengenoemde lokatie.

Na het downloaden geef je de opdrachten:


$ gzip -dc <downloaded file> | tar xvf 
$ cd quota-tools  (of in welke directory de software dan ook is geplaatst)
$ ./configure
$ make
$ su
# make install

5.4 Pas het systeem initscript aan

Pas het systeeminitscript aan om tijdens de systeemstart quota te controleren quota te activeren.

Hier is een voorbeeld:


# Controleer quota en activeer het daarna.
if [ -x /usr/sbin/quotacheck ] 
        then 
               echo "Quota's controleren. Dit kan even duren." 
               /usr/sbin/quotacheck -avug 
               echo " Klaar." 
        fi 
         if [ -x /usr/sbin/quotaon ] 
        then 
                echo "Zet quota aan." 
                /usr/sbin/quotaon -avug 
        fi

Zet de quota altijd aan nadat je bestandssystemen in /etc/fstab zijn gemount, anders werkt quota niet. Ik raad je aan quota direct te activeren na het deel waar de bestandssystemen in je systeeminitscript worden gemount.

5.5 Aanpassen van /etc/fstab

Partities waarop je quota nog niet hebt geactiveerd, zien er normaal gesproken ongeveer zo uit:


/dev/hda1       /       ext2    defaults        1       1
/dev/hda2       /usr    ext2    defaults        1       1

Voor het activeren van gebruikers quota ondersteuning, voeg je "usrquota" toe aan het vierde veld met het woord "defaults" (man fstab voor details).


/dev/hda1       /       ext2    defaults        1       1
/dev/hda2       /usr    ext2    defaults,usrquota       1       1

Vervang "usrquota" door "grpquota", mocht je group quota ondersteuning nodig hebben op een bestandssysteem.


/dev/hda1       /       ext2    defaults        1       1
/dev/hda2       /usr    ext2    defaults,grpquota       1       1

Zowel gebruikersquota als groepsquota ondersteuning nodig op een bestandssysteem?


/dev/hda1       /       ext2    defaults        1       1
/dev/hda2       /usr    ext2    defaults,usrquota,grpquota       1   1

5.6 Activeer het quota systeem

Je moet het systeem opnieuw opstarten om de aangebrachte wijzigingen aan de quota instellingen te activeren. De nieuwe kernel met quota ondersteuning zal worden geladen en de opstartscripts die je zojuist hebt aangemaakt, zullen worden uitgevoerd. Bij de eerste start, zal quotacheck de van toepassing zijnde bestanden genereren om de quota databases te kunnen onderhouden.

5.7 Voeg quotacheck toe aan crontab

Alhoewel quota zou moeten werken bij perodieke controles, helpt het soms om quotacheck periodiek uit te voeren, b.v. wekelijk. Voeg de volgende regel toe aan root's crontab:


0 3 * * 0 /sbin/quotacheck -avug

6. Quota Setup onder Linux - Deel II: Quota toekennen voor gebruikers en groepen

Deze bewerking wordt uitgevoerd met de edquota opdracht (`man edquota` voor details).

6.1 Quota toekennen voor een bepaalde gebruiker

Hier is een voorbeeld. Ik heb op mijn systeem een gebruiker met login id bob. De opdracht "edquota -u bob" brengt me in vi (of editor opgegeven in mijn omgevingsvariabele $EDITOR) voor het wijzigen van quota voor gebruiker bob op elke partitie waarop quota is geactiveerd:


Quotas for user bob: 
/dev/hda3: blocks in use: 2594, limits (soft = 5000, hard = 6500) 
         inodes in use: 356, limits (soft = 1000, hard = 1500)

"blocks in use" is het totaal aantal blokken (in kilobytes) dat een gebruiker op een partitie heeft geconsumeerd.

"inodes in use" is het totaal aantal inodes dat een gebruikers heeft geconsumeerd op een partitie.

6.2 Quota voor een bepaalde groep

Nu heb ik een groep games op mijn systeem. "edquota -g games" brengt me weer in de vi editor om quota voor de groep games te wijzigen:


        Quotas for group games: 
        /dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000) 
                inodes in use: 1454, limits (soft = 3000, hard = 4000)

6.3 Quota voor een boel gebruikers

Om snel quota's in te stellen voor bijvoorbeeld zo'n 100 gebruikers op mijn systeem met dezelfde waarde als mijn gebruiker bob, dan zou ik eerst bob's quota informatie met de hand bijwerken, en dan uitvoeren:


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

in de veronderstelling dat je csh gebruikt en dat je je UID's beginnend bij 500 toekent.

In aanvulling op edquota, zijn er nog 3 termen die je moet kennen: Soft Limit, Hard Limit, and Grace Period.

6.4 Soft Limit

_Soft limit_ geeft de maximum hoeveelheid aan van het diskgebruik welke een gebruiker op een partitie kan hebben. Wanneer gecombineerd met grace period, fungeert het als een grens, welke een quota gebruiker waarschuwt over zijn dreigende quota overschrijding wanneer deze grens wordt bereikt.

6.5 Hard Limit

Hard limit werkt alleen wanneer grace period is ingesteld. Het specificeert de absolute limiet op het diskgebruik, welke een quota gebruiker niet te boven kan gaan.

6.6 Grace Period

Uitgevoerd met de opdracht "edquota -t", is grace period een tijdslimiet voordat de softlimiet wordt afgedwongen voor een bestandssysteem waarop quota is geactiveerd. De tijdseenheden die kunnen worden gebruikt zijn: sec(onds), min(utes), hour(s), day(s), week(s) en month(s). (seconden, minuten, uren, dagen, weken en maanden). Dit is wat je te zien krijgt bij de opdracht "edquota -t":


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

Wijzig het 0 dagen gedeelte in elke tijdslengte die je redelijk acht. Ik zou persoonlijk voor 7 dagen (of 1 week) kiezen.

7. Diverse Quota opdrachten

7.1 Quotacheck

Quotacheck wordt gebruikt om een bestandssysteem op diskgebruik te scannen, en het werkt het quota recordbestand "aquota.user" bij tot de meest recente status. Ik raad het gebruik van quotacheck aan tijdens de systeemstart en periodiek via cronjob (laten we zeggen, elke week?).

7.2 Repquota

Repquota produceert samengevatte quota-informatie voor een bestandssysteem. Hier is een voorbeeld van de uitvoer van repquota:


# repquota -a 
                                Block limits               File limits 
        User            used    soft    hard  grace    used  soft  hard  grace 
        root      --  175419       0       0          14679     0     0 
        bin       --   18000       0       0            735     0     0 
        uucp      --     729       0       0             23     0     0 
        man       --      57       0       0             10     0     0 
        user1     --   13046   15360   19200            806  1500  2250 
        user2     --    2838    5120    6400            377  1000  1500

7.3 Quotaon en Quotaoff

Quotaon wordt gebruikt om de quota accounting aan te zetten en quotaoff om deze uit te zetten. In werkelijkheid zijn beide bestanden vergelijkbaar. Ze worden tijdens de systeemstart en shutdown uitgevoerd.