1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360
|
<!doctype linuxdoc system>
<linuxdoc>
<article>
<titlepag>
<title>Quota mini-HOWTO</title>
<author><name>Ralf van Dooren <tt/r.vdooren@snow.nl/<newline>
Vertaald door: Ellen Bokhorst <tt>bokkie_nospam_@nl.linux.org</tt></name></author>
<date>v0.5, 9 aug 2003</date>
<abstract>
Inleiding: Dit document is geschreven door Ralf van Dooren (r.vdooren@snow.nl).
De oorspronkelijke tekst en opzet van dit document is copyleft-ed door Albert M.C. Tam, veel dank aan hem
voor deze initiële mini-HOWTO.
Dit document is uitgegeven onder de GNU Free Documentation License.
Permission to use, copy, distribute this document for non-commercial purposes
is hereby granted, provided that the author's / editor's name and this notice
appear in all copies and/or supporting documents; that this document is not
modified. This document is distributed in hope that it will be useful, but
WITHOUT ANY WARRANTY, either expressed or implied. While every effort has been
taken to ensure the accuracy of the information documented herein, the author /
editor / maintainer assumes NO RESPONSIBILITY for errors, or for damages results
for the use of the information documented herein.
In dit document wordt beschreven hoe de bestandssysteemquota te activeren op een
Linux host, quota toe te kennen aan gebruikers en groepen, als ook het gebruik van
de diverse quota opdrachten. Het is bedoeld voor gebruikers draaiend kernel 2.x
(recent getest met kernel 2.4.21).
Stuur gerust feedback of commentaar naar r.vdooren@snow.nl mocht je een fout
aantreffen of enige informatie hierin ontbreekt. Ik waardeer het.
</abstract>
</titlepag>
<sect><heading>Wat is quota?</heading>
<sect1><heading>Waar dient quota voor?</heading>
<p>
Met quota kun je limieten opgeven op twee aspecten van diskopslag: het aantal
inodes waarover een gebruiker of groep gebruikers kan beschikken; en het aantal
diskblokken dat door een gebruiker of groep gebruikers kan worden toegewezen.
</p>
<p>
Het idee achter quota is dat gebruikers worden gedwongen onder hun
diskverbruikslimiet te blijven, hen de mogelijkheid ontnemend om onbeperkt
diskruimte op een systeem in gebruik te nemen. Quota wordt afgehandeld per gebruiker,
per bestandssysteem. Zijn er meer bestandssystemen waarop een gebruiker bestanden
aan kan maken, dan moet quota voor elk bestandssysteem apart worden ingesteld.
Er bestaan diverse utility's om het quota beleid op je systeem te beheren en
automatiseren.
</p>
</sect1>
<sect1><heading>Huidige status van Quota onder Linux</heading>
<p>
Thans zijn er een aantal belangrijke wijzigingen in de wijze waarop quota werkt. Er bestaan
twee verschillende setups. De tools werken hetzelfde, maar er is een verschil in de gebruikte bestanden.
In dit document wordt de setup en werking van de _nieuwe_ quota setup beschreven.
Aangezien de nieuwe setup van quota niet in de reguliere kernelbroncode is opgenomen, is voor deze
setup een patch nodig. Het toepassen van deze patch en de installatie van het linuxquota pakket
zal worden beschreven. Mocht de quota software reeds op je systeem zijn geïnstalleerd,
dan hoef je wellicht deze patch en het pakket niet te installeren. Je kunt me mailen als
je hierover vragen hebt. Ik zal proberen een overzicht met Linux distro's en implicaties
in een latere versie van dit document op te nemen.
</p>
</sect1>
</sect>
<sect><heading>Benodigdheden voor quota </heading>
<sect1><heading>Kernel</heading>
<p>
De 2.x kernelbroncode is beschikbaar vanaf <url url="http://www.kernel.org/" name="http://www.kernel.org">
Gebruik alsjeblieft één van de beschikbare mirrors om bandbreedte te besparen. Als je een recente
versie hebt van tar, dan kun je het .bz2 gecomprimeerde bestand downloaden.
</p>
<p>
Pak de kernel uit:
<code>
cd /usr/src
tar jxvf /path/to/linux-2.4.21-tar.bz2 - voor bzip2 kernel -
tar zxvf /path/to/linux-2.4.21-tar.gz - voor gzip kernel -
ln -s /usr/src/linux-2.4.21 /usr/src/linux
</code>
</p>
</sect1>
<sect1><heading>Quota software</heading>
<p>
Afhankelijk van de Linux distributie die je gebruikt, kan de quota software wel of niet of je systeem zijn
geïnstalleerd. De meest recente versie van quota is beschikbaar via SourceForge en deze is actief in
ontwikkeling. Je kunt de homepage van de quota-ontwikkeling bereiken op
<url url="http://www.sourceforge.net/project/linuxquota"
name="http://www.sourceforge.net/projects/linuxquota" >.
</p>
</sect1>
</sect>
<sect><heading>Quota setup: installatie en configuratie</heading>
<sect1><heading>Patch de kernel </heading>
<p>Download de patch voor je kernel vanaf:</p>
<p>
<url url="ftp://atrey.karlin.mff.cuni.cz/pub/local/jack/quota/"
name="ftp::/atrey.karlin.mff.cuni.cz/pub/local/jack/quota/" >.
</p>
<p>
Kies je kernelversie en download de patch(es). Pas de patch toe op de kernel met de opdracht 'patch'.
Is er meer dan 1 patch voor je kernelversie, zorg dan dat je de patches in de juiste volgorde toepast.
Je kunt dit script gebruiken ( Ik ga er van uit dat de gedownloadde patches in /tmp/quota/ staan en de kernel is uitgepakt
in /usr/src/linux) :
</p>
<p>
<code>
#!/bin/sh
gunzip /tmp/quota/*.gz
cd /usr/src/linux
COUNT=`ls -1 /tmp/quota/*.diff | wc -l`
for I in `seq 1 $COUNT`
do
patch -p1 < /tmp/quota/quota-2.4.21-$I-*.diff
done
</code>
</p>
</sect1>
<sect1><heading>Herconfigureer je kernel</heading>
<p>
Herconfigureer je kernel en voeg quota ondersteuning toe.
</p>
<p>Via `make menuconfig` of `make xconfig` kun je de optie ter ondersteuning van quota vinden onder het menu
Filesystems. Je kunt extra opties specificeren als je die nodig hebt, zoals 32-bit UID ondersteuning.
</p>
<p>Sla de configuratie op en compileer de kernel. Zorg dat de nieuwe kernel zal worden gebruikt bij het herstarten van
het systeem.
</p>
</sect1>
<sect1><heading>Compileer en installeer de quota software</heading>
<p>
Om alle features van het nieuwe quota systeem te kunnen gebruiken, zul je waarschijnlijk het nieuwe quota-pakket moeten
downloaden. Download de nieuwe quota software via de bovenstaande URL.
</p>
<p>
Na het downloaden geef je de volgende opdracht:
<code>
$ gzip -dc <downloaded file> | tar xvf
$ cd quota-tools (of in welke directory de software dan ook is geplaatst)
$ ./configure
$ make
$ su
# make install
</code>
</p>
</sect1>
<sect1><heading>Pas het systeeminitscript aan om quota te controleren en zet quota aan gedurende het booten</heading>
<p>
Hier is een voorbeeld:
<code># Controleer de quota en zet het aan.
if [ -x /usr/sbin/quotacheck ]
then
echo "Checking quotas. This may take some time."
/usr/sbin/quotacheck -avug
echo " Done."
fi
if [ -x /usr/sbin/quotaon ]
then
echo "Turning on quota."
/usr/sbin/quotaon -avug
fi
</code>
</p>
<p>
Zet quota altijd aan nadat je bestandssystemen in /etc/fstab zijn gemount, anders zal de quota
niet werken. Ik raad je aan
quota aan te zetten net na het deel waarin bestandssystemen worden gemount in je systeeminitscript.
</p>
</sect1>
<sect1><heading>Pas /etc/fstab aan</heading>
<p>
Partities waar je nog geen quota voor hebt geactiveerd, zien er normaal gesproken ongeveer zo uit:
<code>/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults 1 1
</code>
Voeg "usrquota" toe aan het vierde veld met het woord "defaults" (man fstab voor details) om ondersteuning voor
gebruikersquota toe te voegen:
<code>/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults,usrquota 1 1
</code>
Vervang "usrquota" door "grpquota", mocht je quota ondersteuning nodig hebben voor groepen
op een bestandssysteem.
<code>/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults,grpquota 1 1
</code>
Heb je zowel gebruikersquota als groepsquota ondersteuning nodig op een bestandssysteem?
<code>/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults,usrquota,grpquota 1 1
</code>
</p>
</sect1>
<sect1><heading>Activeer het quota systeem</heading>
<p>
Voor het activeren van de quota sofware kun je het systeem herstarten willen de wijzigingen die je hebt aangebracht enig
effect hebben. De nieuwe kernel met quota ondersteuning zal worden geladen en de opstartscripts die je net hebt
aangemaakt zullen worden uitgevoerd. Bij een eerste uitvoering, zal quotacheck de juiste bestanden genereren
voor het beheren van de quota databases.
</p>
</sect1>
<sect1><heading>Voeg quotacheck toe aan crontab</heading>
<p>
Alhoewel quota met periodieke controle's hoort te werken, kan het soms helpen quotacheck periodiek uit te voeren, b.v.
wekelijks. Voeg de volgende regel toe aan root's crontab:
<code>0 3 * * 0 /sbin/quotacheck -avug
</code>
</sect1>
</sect>
<sect><heading>Quota setup: tools</heading>
<p>
Deze bewerking wordt uitgevoerd met de opdracht edquota (`man edquota` voor details).
</p>
<sect1><heading>Quota toekennen aan een bepaalde gebruiker</heading>
<p>
Hier is een voorbeeld. Ik heb op mijn systeem een gebruiker met de login-ID bob. Nadat ik
de opdracht "edquota -u bob" heb opgestart, opent vi (of editor aangegeven in de
omgevingsvariabele $EDITOR) om de quota voor gebruiker bob op elke partitie waarop
quota is geactiveerd te bewerken:
<code>Quotas for user bob:
/dev/hda3: blocks in use: 2594, limits (soft = 5000, hard = 6500)
inodes in use: 356, limits (soft = 1000, hard = 1500)
</code>
"blocks in use" is het totaal aantal blokken (in kilobytes) dat een gebruiker
op een partitie heeft verbruikt.
"inodes in use" is het totaal aantal inodes dat een gebruiker op een partitie
heeft verbruikt.
</p>
</sect1>
<sect1><heading>Quota toekennen aan een bepaalde groep</heading>
<p>
Nu heb ik op mijn systeem een groep genaamd games. Na uitvoering van de opdracht "edquota -g games" wordt
de vi editor weer geopend om quota voor de groep games te bewerken:
<code> Quotas for group games:
/dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000)
inodes in use: 1454, limits (soft = 3000, hard = 4000)
</code>
</p>
</sect1>
<sect1><heading>Quota toewijzen aan een boel gebruikers met dezelfde waarden</heading>
<p>
Om snel quota's op mijn systeem in te stellen overeenkomstig dezelfde waarden als voor gebruiker bob,
voor zo'n 100 gebruikers, zou ik eerst bob's quota informatie met de hand bewerken en vervolgens
uitvoeren:
<code>edquota -p bob `awk -F: '$3 > 499 {print $1}' /etc/passwd`
</code>
in de veronderstelling dat je gebruik maakt van csh, en dat je gebruikers-ID's beginnen bij 500.
In aanvulling op edquota, zijn er nog 3 termen om je bekend mee te maken:
Soft Limit, Hard Limit, en Grace Period.
</p>
</sect1>
<sect1><heading>Soft Limit</heading>
<p>
_Soft limit_ duidt de maximale hoeveelheid diskverbruik aan die een quota gebruiker
op een partitie tot zijn beschikking heeft. Gecombineerd met grace period, fungeert het
als een grens, waarbij een gebruiker meldingen krijgt van zijn op handen zijnde overtreding
wanneer de quota wordt overschreden.
</p>
<sect1><heading>Hard Limit</heading>
<p>
De hard limit werkt alleen wanneer de grace period is ingesteld. Hiermee wordt de
absolute limiet van het diskverbruik aangegeven, een hard limit die een quota-gebruiker niet kan
overschrijden.
</p>
<sect1><heading>Grace Period</heading>
<p>
Uitgevoerd met de opdracht "edquota -t", is de grace period een tijdslimiet voordat de
soft limit wordt opgelegd voor een bestandssysteem waarop quota is geactiveerd.
Er kan gebruik worden gemaakt van tijdseenheden in seconden (sec), minuten (min),
uren (hours), dagen (days), weken (weeks) en maanden (months).
Dit krijg je te zien bij de opdracht "edquota -t":
<code>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
</code>
Wijzig het deel '0 days' in een tijdseenheid die je redelijk vindt.
Zelf zou ik kiezen voor 7 dagen (of 1 week).
</p>
</sect1>
<sect><heading>Diverse quota opdrachten</heading>
<sect1><heading>Quotacheck</heading>
<p>
Quotacheck wordt gebruik om een bestandssysteem op diskverbruik te scannen en de
quota recordfile "aquota.user" wordt ermee bijgewerkt tot de meest recente status.
Ik raad je aan de quotacheck tijdens de systeemstart uit te voeren en periodiek via
cronjob (stel, elke week?).
</p>
</sect1>
<sect1><heading>Repquota</heading>
<p>
Repquota produceert een samenvatting van de quota informatie voor een bestandssysteem.
Hier is wat voorbeelduitvoer van repquota:
<code># 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
</code>
</p>
</sect1>
<sect1><heading>Quotaon en Quotaoff</heading>
<p>
Quotaon wordt gebruikt om quota accounting aan te zetten; quotaoff om het uit te zetten.
In werkelijkheid zijn beide bestanden aan elkaar gelijk. Ze worden tijdens de systeemstart en het afsluiten van
het systeem uitgevoerd.
</p>
</sect1>
</sect>
</article>
</linuxdoc>
|