home   artikelen   forum   colofon  
Gepubliceerd op 12.10.2001
Auteur: Mathias Kresin
Vertaald door: Guus Snijders
Languages: none
Help Ons!
 

Disk quota

Inhoud

1. Wat zijn disk quotas?

2. Disk quotas activeren

3. Quota tools
   3.1 Quota tools installeren
   3.2 nieuwe quota tools compileren

4. Setup
   4.1 fstab zonder quota support
   4.2 fstab met quota support

5. Disk quotas instellen
   5.1. User quotas
   5.2. Group quotas
   5.3. Ban-tijd

6. De E-mail aanpassen
   6.1. De configuratie bestanden aanpassen
   6.2. De broncode aanpassen

7. De e-mail waarschuwingen automatiseren

8. Het resultaat

9. Overzicht van de programma functies

10. Bronnen


1. Wat zijn disk quotas?

Disk quotas zijn een mechanisme om het schijfgebruik van gebruikers te beperken. Limieten kunnen voor specifieke gebruikers en groepen worden gezet. Waarschuwingen als de quota limiet is bereikt, kunnen per e-mail worden verzonden.

2. Disk Quotas activeren

Voordat je de quotas activeerd, moet je eerst controleren of QUOTA-SUPPORT aan staat in je kernel configuratie.

3. Quota tools

De quota tools worden gebruikt voor het opzetten en onderhouden van de disk quotas. Onder de quota tools bevinden zich warnquota, setquota, edquota, quota, quotacheck, quotaon, quotastats en repquota.

In mijn geval werkte de e-mail notificatie niet goed na het installeren van de quota tools van de SuSE CD. Ik besloot om de nieuwste broncode (*.tar.gz) van het Internet te gebruiken. De eenvoudigste manier is om een zoekmachine voor packages te gebruiken, zoals http://www.tuxfinder.com, zoek naar "Quota".

Een ander voordeel van versie 2.00 van de quota tools is dat de configuratie van de e-mail waarschuwingen via het configuratie bestand /etc/warnquota.conf verloopt.

3.1. Quota tools installeren

In de eerste instantie kun je het beste de quota tools installeren van de SuSE CD-ROM. Verder zijn de pakketten ext2fs_d en gettext nodig, evenals een Mail Transfer Agent (bijv. Sendmail).

3.2. Nieuwe quota tools compileren

Pak het archief uit met het commando tar -xvfl <tarball-name>. Ik zal de compileer opties achterwege laten omdat die voor mij niet werkten.

In de volgende lijst kun je zien waar de individuele tools naartoe moeten worden gekopieerd:

edquota /usr/sbin/edquota
quota /usr/bin/quota
quotacheck /sbin/quotacheck
quotaon /sbin/quotaon
quotastats /usr/sbin/quotastats
repquota /usr/sbin/repquota
rpc.rquotad /usr/sbin/rpc.rquotad
setquota /usr/sbin/setquota
warnquota /usr/sbin/warnquota
warnquota.conf /etc/warnquota.conf

De manual-pages worden naar de specifieke directories in /usr/share/man gekopieerd.

4. Setup

Disk quotas kunnen alleen geactiveerd worden voor volledige partities. Daarom raad ik aan om een aparte partitie te maken voor /home en de diskquota ondersteuning voor deze partitie te activeren. Door grpquota en/of usrquota toe te voegen aan /etc/fstab, wordt de diskquota geactiveerd voor de specifieke partitie. Zie verderop voor een voorbeeld.

Om de quota service te starten bij het opstarten van je machine, zet je de START_QUOTA entry in je /etc/rc.config op YES. Nu is het tijd om je systeem te herstarten met de aangepaste kernel.

Ten slotte, om de quota.* bestanden in te richten, gebruik je het quotacheck commando. Als er alleen user quotas nodig zijn, gebruik je quotacheck -u -a, bij alleen groep quotas gebruik je quotacheck -g -a en voor beide soorten gebruik je quotacheck -g -u -a. De -a optie activeerd automatisch alle disk quotas voor alle "quoted" partities op je systeem.

4.1. fstab zonder disk quota support

/etc/fstab
  /dev/sda8	swap		swap	defaults       		    0	0
  /dev/sda6	/		ext2	defaults       		    1	1
  /dev/sda5	/boot		ext2	defaults       		    1	2
  /dev/scd0	/cdrom		auto	ro,noauto,user,exec	    0	0
  /dev/fd0	/floppy		auto	noauto,user		    0	0
  none		/proc		proc	defaults		    0	0
  


4.2. fstab met disk quota support

/etc/fstab
  /dev/sda8	swap   		swap	defaults       		    0	0
  /dev/sda6	/		ext2	defaults       		    1	1
  /dev/sda5	/boot		ext2	defaults       		    1	2
  
  /dev/sda7	/home		ext2	defaults,usrquota	    1	1
  /dev/sda8	/beispiel	ext2	defaults,grpquota           1	1
  /dev/sda9	/beispiel2	ext2	defaults,usrquota,grpquota  1	1
  
  /dev/scd0	/cdrom		auto	ro,noauto,user,exec	    0	0
  /dev/fd0	/floppy		auto	noauto,user		    0	0
  none		/proc		proc	defaults		    0	0
  
  


5. Diskquotas instellen

Diskquotas stel je in met de edquota tool. Deze tool start de editor die is ingesteld in de $EDITOR variabele en laat een invoer masker zien ($EDITOR is een omgevingsvariabele in je shell).

Quotas worden gedefinieerd met een "zachte" limiet (er wordt een e-mail verstuurd bij het overschrijden) en een "harde" limiet (absolute limiet, voorbij dit punt is schrijven niet meer mogelijk).

In mijn voorbeelden beperk ik mij tot het limiteren van schijfruimte in kilobytes in plaats van aantallen inodes.

5.1. User quotas

Om het schijfgebruik voor een specifieke gebruiker te beperken, gebruik je edquota -u <gebruiker>. Hiermee stel je alleen de "zachte" limiet (waarschuwing per e-mail) in. Voor mijn login staat deze limiet op 51200 kilobytes (50 MB).

De harde limiet staat op 1102400 kilobytes (100 MB). Na het bereiken van 100 MB gebruikte ruimte, kan de gebruiker geen schrijf bewerkingen meer uitvoeren.

5.2. Group quotas

Voor het opzeten van groep quotas gebruik je edquota -g <groepnaam>. De configuratie zelf werkt zoals beschreven in 5.1.

5.3. Ban-tijd

Hoe lang schrijfoperaties worden geblokkeerd als de quota is overschreden, stel je in met edquota -t.

Periodes voor gebruikers stel je in met edquota -u -t <periode>, voor groepen gebruik je edquota -g -t <periode>. Deze periode geldt voor alle partities, gebruikers en groepen waarvooer de quotas zijn ingesteld.

Als er geen periode wordt opgegeven, wordt de default waarde uit /linux/quota.h gebruikt (7 dagen). Mogelijke eenheden zijn sec[onden], min[uten], hour (uren), day (dagen), week(en), of month (maanden).

6. De E-mail aanpassen

Deze stap is IMHO nodig omdat de originele tekst mogelijk niet begrepen wordt door sommige gebruikers. Deze e-mail wordt verstuurd door warnquoat als de limiet is overschreden.

6.1 De configuratie bestanden aanpassen

In het bestand warnquota.conf kunnen de volgende entries worden aangepast:

Parameter Betekenis Voorbeeld
MAIL_CMD Pad naar MTA /usr/lib/sendmail -t
FROM Afzender van de e-mail admin@firma.nl
SUBJECT E-mail onderwerp Waarschuwing!
CC_TO Wie krijgt kopieën van deze mail? chef@firma.nl
SUPPORT Support-adres genoemd in de mail support@firma.nl
PHONE Telefoonnummer van de helpdesk in de mail 123456 en 654321

Pas dit bestand aan naar je eigen wensen. Het bestand warnquota.conf zou er ongeveer zo uit moeten zien:

warnquota.conf
   # Voorbeeld van warnquota.conf
   #
  
   MAIL_CMD = "/usr/lib/sendmail -t"
   FROM = "admin@firma.nl"
  
   # Optionele parameters
   #
  
   SUBJECT = "Waarschuwing!"
   CC_TO = "chef@firma.nl"
   SUPPORT = "support@firma.nl"
   PHONE = "123456 en 654321"
  


6.2. De broncode aanpassen

Helaas kun je de tekst van de e-mail alleen aanpassen door de broncode zelf te bewerken. Met behulp van de handige commentaren in de code zou het niet zo heel erg moeilijk moeten zijn (zelfs voor "niet-programmeurs"!). Er zou in ieder geval na iedere 80 karakters een nieuwe regel (newline) moeten volgen, om zo de mail een beetje leesbaar te houden op verschillende systemen. Hiervoor voeg je "\n" in, dit is gelijk aan een nieuwe regel (newline).

De bericht tekst kun je vinden in de sectie "DEF_MESSAGE". Een ondertekening kun je vinden in de sectie "DEF_SIGNATURE". Tussen die twee teksten wordt informatie ingevoegd over welke partitie het gaat.

De parameters die zijn ingesteld in warnquota.conf kun je gebruiken via de variabele "%s". De eerste keer dat %s wordt gebruikt, wordt de waarde van "SUPPORT" gebruikt, de tweede keer wordt de waarde van "PHONE" gebruikt.

Het aangepaste deel kan er als volgt uitzien:

.
.
#define DEF_MESSAGE _("Hi,\n\n We are sorry to tell you that you have exceeded the amount of disk capacity we provide\n for your personal files. Every user is allowed to use 50 MB for their personal files.\n You have just exceeded this amount of disk capacity. \n\n Please delete/move unused files in the next 7 days. Otherwise the system will\n deny further writing requests to your directory. You will be able to write to your directory \n as soon as you fall below 50 MB again. \n\n You can store up to 100 MB in your account for 7 days. If you exceed 100 MB\n the system will deny further writing requests without further notice. \n You gain write access as soon as your total used space falls below 50 MB again. \n\n The following information is system information to ease up the administrative\n work and is of no consequence to you.\n\n")

#define DEF_SIGNATURE _("\n If you need more disk capacity or if there are further problems regarding\n your disk capacity contact us via mail\n %s or call %s. \n\n Yours sincerely\nAdministration Team \n")
.
.

Nu kun je het pakket compileren en installeren zoals beschreven in 3.2.

7. De e-mail waarschuwingen automatiseren

Het automatiseren werkt met een cron job. Vooral bij gebruik in bedrijven is het aan te raden de quota check tijdens de lunch uit te voeren. Op die manier kunnen de gebruikers dezelfde dag nog reageren en (indien nodig) contact opnemen met de helpdesk/systeembeheerder. Tijdens de lunchtijd zijn de servers waarschijnlijk ook minder belast.

Je hoeft alleen de volgende regel toe te voegen aan je /etc/crontab bestand:

0 12 * * 1-5 root /usr/sbin/warnquota

Deze regel start de warnquota tool iedere maandag tot vrijdag om 12 uur 's middags als root.

8. Het resultaat

From: admin@firma.nl
Reply to: support@firma.nl
To: user@firma.nl
Copy to: chef@firma.nl
Subject: Warning!
Message:

Hi

We are sorry to tell you that you have exceeded the amount of disk capacity we provide
for your personal files. Every user is allowed to use 50 MB for his personal files.
You have just exceeded this amount of disk capacity.

Please delete/move unused files in the next 7 days. Otherwise the system will
deny further writing requests to your directory. You will be able to write to your directory
as soon as you fall below 50 MB again.

You can store up to 100 MB in your account for 7 days. When you exceed this 100 MB
the system will deny further writing requests without further notice.
You gain write access as soon as you fall below 50 MB again.

The following information is system information to ease up the administrative
work and is of no consequence to you.

< Server Usage>

If you need more disk capacity or if there are further problems regarding
your disk capacity contact us via mail
support@firma.nl or call 123456 en 654321.

Yours sincerely\nAdministration Team

Mit freundlichen Grüßen
Administrations Team

9. Overzicht van de programma functies

In het volgende stukje zie je een overzicht van de belangrijkste programma's en hun parameters:

edquota Voor het veranderen van disk quotas (tekstgebaseerd via $EDITOR)
   edquota -u <gebruiker> pas de diskquota van <gebruiker> gebruiker aan
   edquota -g <groepnaam> diskquota aanpassen voor <groepnaam>
   edquota -u -t <periode> Periode van het overschrijden van de zachte limiet tot het weigeren van bewerkingen van gebruikers.
   edquota -g -t <periode> Periode van overschrijden van zachte limiet tot het het weigeren van bewerkingen van groepen.
   
repquota Samenvatting van gebruikte schijf capaciteit.
   repquota -q <groepnaam> Gebruikte schijfruimte voor <groepnaam>
   repquota -u <gebruiker> Gebruikte schijfruimte voor <gebruiker>
   
setquota Definiëren van diskquotas (via parameters).
   setquota -u <gebruiker> Definieer quotas voor <gebruiker>.
   setquota -g <groepnaam> Definieer schijfquota voor <groepnaam>
   
warnquota Commando voor het controleren van quotas en het versturen van de e-mail waarschuwingen

10. Bronnen


De auteur van dit artikel is Mathias Kresin.
Zijn homepage kun je vinden op http://www.kresinweb.de.
Vertaald naar het Engels door Sebastian Kappers.