Linux : Mise en place de quota
Aujourd'hui, petit tip sur comment mettre en place des quotas sur un système Linux.
Pour cela, il faut avoir quelques concepts de base que je vais définir vite fait, puis on passera à la pratique.
Les concepts en question
Limites
Hard limit
Une hard limit correspond à la limite maximale de blocs (disque ou d'inodes) étant autorisée et pouvant être utilisée même de manière temporaire par un utilisateur (ou par un groupe). Lorsqu'elle est atteinte, il est impossible d'allouer plus à l'utilisateur.Soft Limit
Une soft limit correspond au nombre maximal de blocs de disque (ou d'inodes) pouvant être utilisé de manière temporaire par un utilisateur (ou par un groupe). Elle se situe logiquement au-dessous de la hard limit. Ainsi, ça permet aux utilisateurs d'y accéder temporairement (voir grace period) et de pouvoirêtre en mesure de finir toute tâche commencée ou de cleaner les données non utiles / non nécessaires afin de redescendre en-dessous de la soft limit.Grace Period
Toute utilisation de disque au-dessus de la soft limit est par définition temporaire. C'est la grace period qui détermine la durée pendant laquelle un utilisateur (ou un groupe) peut pousser son utilisation au-delà de la soft tout en restant en dessous de la hard. Sous Linux, les quotas sont mis en place :- pour une parttion / un filesystem
- pour un groupe ou pour un utilisateur.
Install et jeu
Pour l'installation, étant donné que les quotas sont intégrés sous Linux depuis belle lurette, il vous suffira d'utiliser votre package installer préféré et d'installer quota et quotatool. Je travaille sur une partition de sda, /dev/sda3 qui est montée sous /data. On commence par vérifier qu'il n'y a aucun quota de défini sur notre partition.$ quotacheck -vgum /data/ quotacheck: Mountpoint (or device) /data not found or has no quota enabled. quotacheck: Cannot find filesystem to check or filesystem not mounted with quota option.Il faut ensuite éditer le fichier /etc/fstab pour ajouter usrquota,grpquota après les options standard de montage (default pour moi) :
LABEL=DATA /data ext3 defaults,usrquota,grpquota 1 2Remonter la partition, bien entendu, afin que les options soient prises en compte :
$ mount -o remount /data $ mount /data /dev/sda3 on /data type ext3 (rw,acl,usrquota,grpquota)Et maintenant démarrer les quotas :
$ quotaon -v /dataEn sachant que pour les stopper, ce n'est pas plus difficile :
$ quotaoff -v /dataPetit check sur /data, histoire de voir si des quotas sont déjà en jeu...
$ quotacheck -vgum /data/ quotacheck: Parcours de /dev/sda3 [/data] terminé quotacheck: Vérifié 20164 répertoires et 142505 fichiers
Gestion des quotas
La gestion des quotas est on ne peut plus intuitive :$ edquota k-tux Quotas disque pour user k-tux (uid 11039) : Système de fichiers blocs souple stricte inodes souple stricte /dev/sda3 32 6000 8000 8 0 0On peut également faire jouer la grace period. Pour cela un petit :
# edquota -u -f /data -t Sursis avant l'application des limites souples pour users : Unités de temps peuvent être : days (jours), hours (heures), minutes, ou seconds Système de fichiers période de sursis bloc période de sursis inode /dev/sda3 7days 7daysEt enfin, résultat de notre boulot, affichons nos quotas:
$ repquota /data/ *** Rapport pour les quotas user sur le périphérique /dev/sda3 Période de sursis bloc : 7days ; période de sursis inode : 7days Limites bloc Limites fichier Utilisateur utilisé souple stricte sursis utilisé souple stricte sursis ---------------------------------------------------------------------- root -- 8782860 0 0 81579 0 0 k-tux -- 32 6000 8000 8 0 0Pour ceux que les unités dérangent, il suffit de demander bien poliment à repquota :
$ repquota -si /data/ *** Rapport pour les quotas user sur le périphérique /dev/sda3 Période de sursis bloc : 7days ; période de sursis inode : 7days Limites bloc Limites fichier Utilisateur utilisé souple stricte sursis utilisé souple stricte sursis ---------------------------------------------------------------------- root -- 8578M 0 0 81579 0 0 k-tux -- 32 6000 8000 8 0 0