19.15. Bestandssysteemquota

Quota zijn een optionele mogelijkheid van het besturingssysteem om de hoeveelheid schijfruimte en/of het aantal bestanden dat gebruikers of leden van een groep per bestandssysteem mogen gebruiken te beperken. Dit wordt het meeste gebruikt op timesharing-systemen waar het wenselijk is om het aantal bronnen dat elke gebruiker of groep van gebruikers mag gebruiken te beperken. Dit voorkomt dat één gebruiker of groep van gebruikers alle beschikbare schijfruimte in beslag neemt.

19.15.1. Schijfquota inschakelen

Controleer alvorens te proberen om schijfquota te gebruiken of quota ingesteld zijn in de kernel. Dit gebeurt door het toevoegen van de volgende regel aan het kernelinstellingenbestand:

options QUOTA

De standaardkernel GENERIC heeft deze optie niet aanstaan, dus is het nodig om een eigen kernel in te stellen, te bouwen en te installeren om gebruik te kunnen maken van schijfquota. Meer informatie over het instellen van de kernel staat in Hoofdstuk 9.

Vervolgens dienen schijfquota aangezet te worden in /etc/rc.conf. Op FreeBSD 7.X en eerder wordt deze regel toegevoegd:

enable_quotas="YES"

Voeg op FreeBSD 8.0-RELEASE en nieuwer in plaats daarvan deze regel toe:

quota_enable="YES"

Voor fijnere controle over de opstartquota zijn extra instellingsvariabelen beschikbaar. Normaalgesproken wordt de integriteit van de quota van elk bestandssysteem tijdens het opstarten door quotacheck(8) gecontroleerd. quotacheck(8) verzekert dat de gegevens in de quotadatabase een juiste afspiegeling vormen van de gegevens op het bestandssysteem. Dit proces neemt erg veel tijd in beslag en beïnvloedt de tijd die een systeem nodig heeft om op te starten significant. Om deze stap over te slaan, bestaat een variabele in /etc/rc.conf:

check_quotas="NO"

Als laatste dient /etc/fstab bewerkt te worden om schijfquota per bestandssysteem aan te zetten. Hier kunnen gebruiker- of groepquota of beide worden aangezet voor alle bestandssystemen.

Om quota per gebruiker op een bestandssysteem aan te zetten, dient de optie userquota aan het optieveld toegevoegd te worden aan de regel in /etc/fstab voor het bestandssysteem waar quota worden aangezet. Bijvoorbeeld:

/dev/da1s2g   /home    ufs rw,userquota 1 2

Analoog, om groepquota aan te zetten, dient de optie groupquota in plaats van userquota gebruikt te worden. Om zowel gebruikers- als groepsquota aan te zetten, dient de regel als volgt veranderd te worden:

/dev/da1s2g   /home    ufs rw,userquota,groupquota 1 2

Standaard worden de quotabestanden opgeslagen in de hoofdmap van het bestandssysteem onder de namen quota.user en quota.group voor respectievelijk gebruikers- en groepsquota. Meer informatie staat in fstab(5). Alhoewel de hulppagina fstab(5) vermeld dat een alternatieve plaats voor de quotabestanden gespecificeerd kan worden, wordt dit niet aangeraden omdat de verschillende quotagereedschappen dit niet juist schijnen af te handelen.

Hier aangekomen dient het systeem opnieuw opgestart te worden met de nieuwe kernel. /etc/rc voert automatisch de juiste commando's uit om de initiële quotabestanden aan te maken voor alle quota die in /etc/fstab zijn aangezet. Het is dus niet nodig om handmatig quotabestanden met lengte nul aan te maken.

Tijdens normale bewerkingen moet het niet nodig zijn om de commando's quotacheck(8), quotaon(8) of quotaoff(8) handmatig te draaien. Lees wel de betreffende hulppagina's om bekend te raken met de werking ervan.

19.15.2. Quotalimieten instellen

Indien het systeem ingesteld voor gebruik van quota, controleer dan of ze echt aanstaan. Een eenvoudige manier om dit te doen is de volgende:

# quota -v

Er hoort een eenregelige samenvatting te verschijnen over het schijfgebruik en de huidige quotalimieten voor elk bestandssysteem waarop quota aanstaan.

Nu kunnen quotalimieten toegewezen worden met edquota(8).

Er zijn verschillende opties om grenzen te stellen aan de hoeveelheid schijfruimte die een gebruiker of groep mag toewijzen en het aantal bestanden dat ze mogen aanmaken. Toewijzingen kunnen begrensd worden met betrekking tot schijfruimte (blokquota) of het aantal bestanden (inode-quota) of een combinatie van beide. Elk van deze limieten is op zijn beurt weer opgesplitst in twee categoriën: harde en zachte limieten.

Een harde limiet mag niet overschreden worden. Indien een gebruiker de harde limiet bereikt, mag deze geen verdere toewijzingen maken op het betreffende bestandssysteem. Indien een gebruiker bijvoorbeeld een harde limiet heeft van 500 kB op een bestandssysteem en er 490 kB van gebruikt, kan deze nog slechts 10 kB toewijzen. Een poging om 11 kB toe te wijzen zal mislukken.

Zachte limieten kunnen voor een beperkte tijd overschreden worden. Deze periode staat bekend als de gratieperiode, die standaard een week bedraagt. Als een gebruiker de zachte limiet langer dan de gratieperiode overschrijdt, verandert de zachte limiet in een harde limiet en zijn er geen verdere toewijzingen toegestaan. Als de gebruiker onder de zachte limiet komt, wordt de gratieperiode opnieuw ingesteld.

Het volgende is een voorbeeld van een mogelijk gebruik van edquota(8). Als het commando edquota(8) gestart wordt, wordt de tekstverwerker opgestart die door de omgevingsvariabele EDITOR gespecificeerd is, of de tekstverwerker vi als de variabele EDITOR niet is ingesteld. Nu kunnen de quotalimieten bewerkt worden.

# edquota -u test
Quotas for user test:
/usr: kbytes in use: 65, limits (soft = 50, hard = 75)
        inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: kbytes in use: 0, limits (soft = 50, hard = 75)
        inodes in use: 0, limits (soft = 50, hard = 60)

Normaalgesproken worden er twee regels weergegeven voor elk bestandssysteem waarvoor quota gelden: één regel voor de bloklimieten, en één voor de inode-limieten. Om de quotalimieten te veranderen dient de waarde ervan veranderd te worden. Om bijvoorbeeld de bloklimiet van een gebruiker te veranderen van een zachte limiet van 50 en een harde limiet van 75 in een zachte limiet van 500 en een harde limiet van 600, dient het volgende veranderd te worden:

/usr: kbytes in use: 65, limits (soft = 50, hard = 75)

In:

/usr: kbytes in use: 65, limits (soft = 500, hard = 600)

De nieuwe quotalimieten gelden zodra de tekstverwerker verlaten wordt.

Soms is het gewenst om quotalimieten in te stellen op een aantal UID's. Dit kan gedaan worden door de optie -p van edquota(8) te gebruiken. Wijs eerst de gewenste quotalimiet aan een gebruiker toe en draai daarna edquota -p protogebruiker beginuid-einduid. Indien bijvoorbeeld gebruiker test de gewenste quotalimieten heeft, kan het volgende commando gebruikt worden om deze quotalimieten te dupliceren voor UID's 10.000 tot en met 19.999:

# edquota -p test 10000-19999

Meer informatie staat in de hulppagina voor edquota(8).

19.15.3. Quotalimieten en schijfgebruik controleren

Zowel quota(1) als repquota(8) kunnen gebruikt worden om de quotalimieten en het schijfgebruik te controleren. Het commando quota(1) kan gebruikt worden om de quota van zowel individuele gebruikers als groepen en het schijfgebruik te controleren. Een gebruiker mag alleen de eigen quota en de quota van een groep waarvan deze lid is controleren. Alleen de beheerder mag alle gebruikers- en groepsquota bekijken. Het commando repquota(8) kan gebruikt worden om een overzicht te krijgen van alle quota en gebruik van bestandssystemen waarvan quota aanstaan.

Het volgende is een mogelijke uitvoer van het commando quota -v voor een gebruiker die quotalimieten heeft op twee bestandssystemen.

Disk quotas for user test (uid 1002):
     Filesystem  usage    quota   limit   grace   files   quota   limit   grace
           /usr      65*     50      75   5days       7      50      60
       /usr/var       0      50      75               0      50      60

Voor het bestandssysteem /usr in bovenstaand voorbeeld overschrijdt deze gebruiker de zachte limiet van 50 kB momenteel met 15 kB en heeft deze 5 dagen van de gratieperiode over. De asterisk, * geeft aan dat de gebruiker momenteel de quotalimiet overschrijdt.

Normaalgesproken worden bestandssystemen waarvan de gebruiker geen schijfruimte gebruikt niet weergegeven in de uitvoer van quota(1), zelfs niet als er de gebruiker een quotalimiet heeft voor dat bestandssysteem. De optie -v geeft deze bestandssystemen weer, zoals het bestandssysteem /usr/var in bovenstaand voorbeeld.

19.15.4. Quota over NFS

Quota worden afgedwongen door het quota-subsysteem op de NFS-server. De daemon rpc.rquotad(8) stelt quota-informatie beschikbaar aan het commando quota(1) op de NFS-cliënts, wat de gebruikers op deze machines in staat stelt hun quota-statistieken in te zien.

rpc.rquotad dient als volgt in /etc/inetd.conf aangezet te worden:

rquotad/1      dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad

Vervolgens dient inetd opnieuw gestart te worden:

# /etc/rc.d/inetd restart