r.vdooren@snow.nl
bokkie@nl.linux.org
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.
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.
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.
De 2.x kernelsource is beschikbaar vanaf
http://www.kernel.org
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
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'.
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.
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
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.
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
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.
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
Deze bewerking wordt uitgevoerd met de edquota opdracht (`man edquota` voor details).
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.
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)
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.
_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.
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.
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.
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?).
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
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.