Quota Mini-Howto
par Albert M.C. Tam (bertie@scn.org)
Version du 08 Août 1997
(Adaptation française par Antoine Levavasseur levavass@efrei.fr, le 14 Octobre 1997).
L'objectif de ce mini-howto est d'expliquer comment mettre en place et utiliser les quotas
sous linux.
Dernière Modification : Fri Aug 8 09:45:05 HKT 1997
Préambule : Ce document a été écrit par Albert M.C. Tam (bertie@scn.org). La possibilité
d'utiliser, copier, distribuer ce document pour une utilisation non-commerciale est permise,
à partir du moment où la présente remarque et les noms de l'auteur et de l'éditeur
apparaissent sur toutes les copies et/ou supports du document; et que le document n'est pas
modifié. Ce document est diffusé en espérant qu'il sera utile, mais sans AUCUNE
GARANTIE, exprimée ou implicite. Bien que tous les efforts ait été faits pour s'assurer de
l'exactitude des informations du présent document, l'auteur / éditeur / mainteneur n'assume
AUCUNE RESPONSABILITE pour des erreurs, ou des domages résultant de l'utilisation
des informations du présent document.
Ce document décrit comment activer un quota sur le système de fichier d'une machine
Linux, attribuer des quotas pour les utilisateurs et les groupes, ainsi que l'utilisation de
diverses commandes sur les quotas. Il est destiné aux utilisateurs utilisant un noyau 2.x
(testé récemment sur RedHat 4.1 avec un noyau 2.0.27). Les utilisateurs qui utilisent des
noyaux plus vieux doivent se mettre à jour avec un noyau plus récent pour pouvoir utiliser
les quotas.
N'hésitez pas à envoyer vos commentaires et point-de-vue à bertie@scn.org si vous trouvez
une erreur, ou qu'une information manquante. J'aprécierai.
1. Les Quotas, qu'est-ce que c'est ?
Les quotas permettent de spécifier les limites sur deux aspects du stockage sur disque : le
nombre d'i-noeuds qu'un utilisateur ou un groupe peux posséder; et le nombre de blocks
disques qui peuvent êtres alloués à un utilisateur ou un groupe d'utilisateurs.
L'idée des quotas, c'est que les utilisateurs sont obligés de rester sous leur limite de
consomation de disque, perdant leur possiblité de saturer la totalité de l'espace disque d'un
système.
Les quotas sont supportés sur une base par utilisateur et par système de fichier. Si il y a
plus d'un système de fichiers ou un utilisateur qui est censé créer des fichiers, alors les
quotas doivent être configurés séparemment sur chaque système de fichier.
1.1 Etat actuel des quotas sous Linux
Le support des quotas a été intégré dans le noyau depuis la version 1.3.8x il me semble.
Maintenant il est partie prenante du noyau Linux version 2.0. Si votre système ne supporte
pas les quotas, je recommande chaudement une mise à jour.
Actuellement les quotas ne fonctionnent qu'avec le système de fichier ext2.
1.2 Que faut-il pour utiliser les Quotas sur Linux
Noyau
Les sources du noyau 2.x sont disponibles
sur http://sunsite.unc.edu/pub/Linux/kernel/v2.0 ou plus près sur ftp.lip6.fr .
Programmes pour les quotas
Selon votre distribution Linux, vous avez, ou devez avoir, ou ne pas avoir les programmes
des quotas installés sur votre système. Si vous ne les avez pas, alors téléchargez les sources
des programmes pour les quotas
sur ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz
2. Partie I : La configuration
2.1 Reconfigurer votre noyau
Reconfigurez votre noyau et ajoutez le support des quotas en répondant 'y' à :
Quota support (CONFIG_QUOTA) [n] y
2.2 Compiler et installer les programmes des quotas
Les sources des programmes des quotas sont disponibles
sur ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz
2.3 Modifier les scripts init de votre système pour vérifier les
quotas et les activer lors du boot.
Voici un exemple :
# Check quota and then turn quota on.
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
La règle d'or est de toujours activer les quotas après que votre système de fichier ait été
monté avec /etc/fstab, sinon les quotas ne fonctionneront pas. Je recommande d'activer les
quotas à la fin de votre script init, ou, si vous préférez, juste après la partie ou le script init
monte les systèmes de fichiers.
2.4 Modifier /etc/fstab
Les partitions sur lesquelles vous n'avez pas encore activé les quotas ressemblant
normalement à :
/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults 1 1
Pour activer le support des quotas utilisateur pour un système de fichiers, ajoutez
"usrquota" dans le quatrième champ contenant le mot "defaults" (man fstab pour avoir des
détails).
/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults,usrquota 1 1
Remplacez "usrquota" par "grpquota", si vous avez besoin du support des quotas pour les
groupes sur un sytème de fichiers.
/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults,grpquota 1 1
Vous avez besoin à la fois du support des quotas pour les groupes et les utilisateurs ?
/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults,usrquota,grpquota 1 1
2.5 Créer les enregistrements des quotas "quota.user" et
"quota.group"
Les deux fichiers d'enregistrement des quotas, quota.user et quota.group, doivent être
possédés par root, et avec les permissions lecture_écriture pour root et personne d'autre.
Logguez-vous en root. Allez sur la partition root où vous voulez activer les quota, et créez
quota.user et quota.group en faisant :
touch /partition/quota.user
touch /partition/quota.group
chmod 600 /partition/quota.user
chmod 600 /partition/quota.group
2.6 Rebooter
Maintenant rebooter votre système pour que les changements que vous avez fait prennent
effet.
Remarquez que pour les partitions pour lesquelles vous souhaiteriez activer les quotas dans
le futur, vous avez seuleument besoin des étapes 4, 5 et 6.
3. Partie II : Attribuer les quotas aux utilisateurs et aux
groupes.
Cette opération est assurée par la commande edquota (man edquota pour les détails).
J'utilise généralement quotachek avec les flags -avug pour avoir les fichiers les plus à jour
possible avant d'éditer les quotas. C'est juste une habitude personnelle, mais pas une étape
indispensable.
3.1 Attribuer les quotas pour un utilisateur particulier
Voici un exemple. J'ai un utilisateur avec le loggin bob sur mon système. La
commande edquota -u bob me lance vi (ou l'éditeur spécifié dans la variable
d'environnement $EDITOR) pour éditer les quotas pour l'utilisateur bob sur chacune des
partitions où le quota est activé.
Quotas for user bob:
/dev/hda2: blocks in use: 2594, limits (soft = 5000, hard = 6500)
inodes in use: 356, limits (soft = 1000, hard = 1500)
block utilisés est le nombre total de blocks (en Ko) que l'utilisateur a déjà consommé sur la
partition.
i-noeuds utilisés est le nombre total de fichiers que l'utilisateur possède sur la partition.
3.2 Attribuer les quotas sur un groupe particulier
Maintenant, il y a un groupe games sur mon système. edquota -g games lance une
nouvelle fois l'éditeur vi pour éditer le groupe games :
Quotas for group games:
/dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000)
inodes in use: 1454, limits (soft = 3000, hard = 4000)
3.3 Attribuer les quotas pour plusieurs utiliateurs avec la même
valeur
Pour attribuer rapidement les quotas pour, par exemple 100 utilisateurs, sur mon système
avec la même valeur que pour l'utilisateur bob, je vais d'abord éditer les quotas de bob à la
main, et ensuite exécuter :
edquota -p bob `awk -F: '$3 > 499 {print $1}' /etc/passwd`
en partant du principe que vous utilisez csh, et que les UID de vos utilisateurs commencent
à partir de 500.
En plus de edquota, il y a trois termes avec lesquels vous devez vous familiariser : Limite
douce (Soft Limit), Limite dure (Hard Limit), et délais (Grace Périod).
Limite douce (Soft Limit)
La limite douce indique la quantité maximale qu'un utilisteur peut utiliser sur une partition.
En combinaison avec le délais (Grace Périod), il agit d'une frontière, à partir de laquelle des
messages d'avertissement sont envoyés pour informer du dépassement de quota lorsqu'il
survient.
Limite dure (Hard Limit)
La limite dure ne fonctionne que lorsque le délais est configuré. Celà définit la limite
absolue de l'utilisation disque, puisque l'utilisateur ne peut dépasser la limite dure.
Délais (Grace Period) Lancé par la commande edquota -t, le délais est une limite de
temps avant que la limite douce soit renforcée sur un système de fichiers ou les quotas sont
activés. Les unités de temps "sec(onds), min(utes), hour(s), day(s), week(s), and month(s)"
peuvent être utilisées. Voici ce que nous voyons avec la commande 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
Changer la partie "0 days" pour une durée qui vous semble résonnable. J'ai choisi
personnellement "7 days" (ou une semaine).
4. Diverses commandes pour les quotas
4.1 Quotacheck
Quotacheck est utilisé pour vérifier le système de fichier et les utilisations disque pour
mettre le plus à possible le fichier enregistrement "quota.user" Je recommande de lancer
quotacheck au boot du système, ou régulièrement avec cron (par exemple chaque
semaine ?).
4.2 Repquota
Repquota affiche un résumé des quotas pour le système de fichiers.
Voici une sortie type de 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
4.3 Quotaon et Quotaoff
Quotaon est utiliser pour activer la gestion des quotas; et quotaoff pour le terminer. Les
fichiers sont en fait similaires. Ils sont exécutés au démarrage et à l'arrêt du système.