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 2
Remonter 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 /data
En sachant que pour les stopper, ce n'est pas plus difficile :
$ quotaoff -v /data
Petit 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        0
On 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                  7days
Et 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     0
Pour 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

Conclusion

En moins de temps qu'il n'en faut pour printer "Hello world", vous voilà avec une partition sous quota ! Enjoy !
Vus : 1586
Publié par K-Tux : 59