Aller au contenu
Administration Linux medium

Mettre en place des quotas disque

16 min de lecture

Les quotas disque limitent l'espace ou le nombre de fichiers qu'un utilisateur ou un groupe peut consommer sur un système de fichiers, et évitent qu'un seul compte sature le serveur. Ce guide montre comment les activer et les gérer sur ext4 (options usrquota/grpquota, quotacheck, edquota) et sur XFS (xfs_quota), deux mécanismes différents qu'il ne faut pas mélanger, puis fait le tour de Btrfs, ZFS et du cas LVM. Il s'adresse aux administrateurs de serveurs multi-utilisateurs : serveurs de fichiers, hébergement mutualisé, machines de build partagées. À la fin, vous saurez poser des limites soft et hard, régler la période de grâce et surveiller l'usage avec repquota.

  • Distinguer limites souples et strictes, quotas de blocs et d'inodes ;
  • Activer les quotas sur ext4 avec les options de montage usrquota et grpquota ;
  • Gérer les quotas XFS avec xfs_quota, sans quotacheck ;
  • Définir des limites par utilisateur avec edquota ou setquota ;
  • Surveiller l'utilisation avec repquota et diagnostiquer les blocages.

Un quota disque est une limite définie sur la quantité d'espace disque ou sur le nombre de fichiers qu'un utilisateur ou un groupe peut utiliser sur un système Linux. L'objectif est de prévenir la saturation du disque par une utilisation excessive et de garantir un partage équitable des ressources.

Dans les environnements multi-utilisateurs, les quotas sont essentiels pour :

  • Éviter les abus de ressources en limitant l'espace individuel.
  • Prévenir les pannes système liées à la saturation du disque.
  • Planifier et dimensionner efficacement les ressources selon les besoins réels.

Les quotas sont particulièrement utilisés sur les serveurs de fichiers, les hébergements mutualisés et les infrastructures cloud, partout où plusieurs comptes se partagent le même volume.

Linux propose principalement deux types de quotas :

  • Quota de bloc : limite la quantité d'espace disque (en Ko, Mo, Go) qu'un utilisateur ou un groupe peut consommer.
  • Quota d'inode : limite le nombre total de fichiers qu'un utilisateur ou groupe peut créer.

Chaque type de quota peut être défini pour un utilisateur individuel ou pour un groupe d'utilisateurs.

  • Limite souple (soft limit) : seuil que l'utilisateur peut dépasser temporairement. Le système autorise un dépassement pendant une période de grâce configurable (7 jours par défaut).
  • Limite stricte (hard limit) : valeur absolue à ne jamais dépasser. Dès que cette limite est atteinte, aucune écriture supplémentaire n'est autorisée.

Exemple : un utilisateur a une limite souple de 5 Go et une limite stricte de 6 Go. Il peut utiliser jusqu'à 6 Go, mais doit revenir sous 5 Go avant la fin de la période de grâce, sinon la limite souple devient bloquante à son tour.

La gestion des quotas dépend du système de fichiers : les commandes ne sont pas interchangeables, et c'est la source d'erreur la plus fréquente sur ce sujet. Ce tableau résume qui fait quoi avant d'entrer dans le détail.

Système de fichiersMécanismeOutils
ext4Quotas utilisateur/groupe activés par les options de montage usrquota/grpquotaquotacheck, quotaon, edquota, setquota, repquota
XFSQuotas activés au montage via uquota/gquota/pquota, décompte internexfs_quota uniquement
BtrfsQgroups par sous-volume, pas de quotas utilisateurbtrfs qgroup
ZFSPropriétés par dataset ou par utilisateurzfs set quota / userquota@

Le système de fichiers ext4 est le plus courant sur les distributions Linux. Il prend en charge les quotas, mais nécessite une configuration en plusieurs étapes : options de montage, création des fichiers de décompte, puis activation.

Le support des quotas est compilé dans le noyau de toutes les distributions courantes. Vous pouvez le vérifier :

Fenêtre de terminal
grep CONFIG_QUOTA= /boot/config-$(uname -r)

La sortie doit afficher CONFIG_QUOTA=y. Installez ensuite les outils en espace utilisateur :

Fenêtre de terminal
sudo apt install quota

Sur RHEL et dérivés, le paquet s'appelle aussi quota (sudo dnf install quota).

Ajoutez les options usrquota (quotas utilisateur) et grpquota (quotas de groupe) sur la ligne de la partition concernée dans /etc/fstab, le fichier qui décrit les montages persistants :

UUID=xxx /home ext4 defaults,usrquota,grpquota 0 2

Rechargez la configuration systemd (qui génère des unités de montage depuis /etc/fstab) puis remontez la partition :

Fenêtre de terminal
sudo systemctl daemon-reload
sudo mount -o remount /home

Vérifiez que les options sont bien prises en compte :

Fenêtre de terminal
findmnt /home

La colonne OPTIONS doit contenir usrquota et grpquota. Créez ensuite les fichiers de décompte (aquota.user et aquota.group à la racine de la partition) avec quotacheck, qui parcourt le système de fichiers et comptabilise l'existant :

Fenêtre de terminal
sudo quotacheck -cugm /home

Les options : -c crée les fichiers de quota, -u traite les utilisateurs, -g les groupes, -m évite de remonter la partition en lecture seule pendant l'analyse. Activez enfin l'application des limites :

Fenêtre de terminal
sudo quotaon /home

À partir de là, le noyau tient le décompte à jour en continu : quotacheck ne sert plus qu'à resynchroniser après un incident.

La commande edquota ouvre les limites d'un utilisateur dans votre éditeur de texte :

Fenêtre de terminal
sudo edquota alice

Le fichier présenté contient, pour chaque système de fichiers, l'usage courant puis quatre colonnes à remplir : limites soft et hard en blocs de 1 Ko, puis limites soft et hard en inodes. La valeur 0 signifie « pas de limite ». Pour scripter la même opération sans éditeur, utilisez setquota :

Fenêtre de terminal
sudo setquota -u alice 5242880 6291456 0 0 /home

Ici 5242880 blocs de 1 Ko = 5 Go en limite souple, 6291456 = 6 Go en limite stricte, et aucune limite d'inodes. La période de grâce se règle globalement par système de fichiers :

Fenêtre de terminal
sudo edquota -t

Enfin, deux commandes de consultation : repquota donne la vue administrateur de toute la partition, et quota la vue d'un compte (l'option -s affiche des tailles lisibles) :

Fenêtre de terminal
sudo repquota -s /home
quota -us alice

Le système de fichiers XFS, le choix par défaut de RHEL, gère les quotas de façon radicalement différente d'ext4 : il n'y a ni quotacheck ni quotaon à lancer. Le décompte est tenu en interne par le système de fichiers et les quotas s'activent au montage.

Ajoutez les options uquota (utilisateurs) et gquota (groupes) dans /etc/fstab ; XFS propose aussi pquota pour des quotas par projet (arborescence de répertoires) :

UUID=xxx /data xfs defaults,uquota,gquota 0 0

Attention, piège classique : contrairement à ext4, ces options ne sont pas prises en compte par un simple remontage. Un mount -o remount /data ne change rien, il faut démonter puis remonter la partition :

Fenêtre de terminal
sudo umount /data
sudo mount /data

Pour le système de fichiers racine, impossible de le démonter : passez l'option au noyau via rootflags=uquota dans la configuration GRUB, puis redémarrez. Vérifiez ensuite l'état des quotas :

Fenêtre de terminal
sudo xfs_quota -x -c 'state' /data

La sortie doit indiquer Accounting: ON et Enforcement: ON pour les types de quota activés.

Toute la gestion passe par xfs_quota en mode expert (-x). Définir des limites pour un utilisateur, avec les suffixes k, m, g ou t :

Fenêtre de terminal
sudo xfs_quota -x -c 'limit -u bsoft=5g bhard=6g alice' /data

Afficher un rapport de toute la partition (-h pour des tailles lisibles) :

Fenêtre de terminal
sudo xfs_quota -x -c 'report -h' /data

Les commandes edquota et repquota du paquet quota savent aussi dialoguer avec XFS, mais autant prendre l'habitude de l'outil natif : c'est lui qui expose toutes les fonctionnalités, notamment les quotas de projet.

Le système de fichiers Btrfs aborde le sujet sous un angle totalement différent : il ne gère pas de quotas par utilisateur ou par groupe. Ses qgroups limitent l'espace consommé par des sous-volumes. Si votre besoin est « limiter l'utilisateur alice à 5 Go », Btrfs ne sait pas le faire directement ; si c'est « limiter le sous-volume de chaque projet », les qgroups répondent bien.

Le support est natif dans le noyau, sans outil supplémentaire. Activez le suivi des quotas sur le système de fichiers :

Fenêtre de terminal
sudo btrfs quota enable /mnt

Chaque sous-volume reçoit un qgroup. Listez-les, puis posez une limite sur un sous-volume :

Fenêtre de terminal
sudo btrfs qgroup show /mnt
sudo btrfs qgroup limit 5G /mnt/sousvolume

Gardez en tête que l'activation des qgroups a un coût en performance, surtout avec de nombreux snapshots : ne l'activez que si vous en avez besoin.

Avec ZFS, les quotas ne sont pas une option de montage mais une simple propriété de dataset, modifiable à chaud. C'est l'approche la plus souple des quatre.

Installez ZFS et ses outils (zfsutils-linux sur Debian/Ubuntu, où le module noyau est fourni via DKMS) :

Fenêtre de terminal
sudo apt install zfsutils-linux

Limiter la taille totale d'un dataset :

Fenêtre de terminal
sudo zfs set quota=10G tank/home

ZFS sait aussi limiter un utilisateur précis à l'intérieur d'un dataset, avec la propriété userquota@ :

Fenêtre de terminal
sudo zfs set userquota@alice=5G tank/home

Vérifiez l'espace utilisé par dataset avec zfs list, et la consommation par utilisateur avec zfs userspace tank/home.

LVM (Logical Volume Manager, le gestionnaire de volumes logiques) n'intervient pas au même niveau : c'est une couche de gestion de volumes sous le système de fichiers, pas un système de fichiers. Les quotas se configurent donc sur le système de fichiers posé au-dessus du volume logique (ext4, XFS...), exactement comme sur une partition classique.

Exemple d'activation sur un volume LVM en ext4, dans /etc/fstab :

/dev/mapper/vg_data-lv_home /home ext4 defaults,usrquota,grpquota 0 2

Puis la même séquence que pour une partition ext4 :

Fenêtre de terminal
sudo mount -o remount /home
sudo quotacheck -cugm /home
sudo quotaon /home

Les fichiers et le décompte de quotas vivent dans le système de fichiers : un snapshot LVM les embarque donc avec le reste des données. Le point de vigilance se situe après un retour arrière (lvconvert --merge) : le décompte restauré peut ne plus refléter l'activité qui a eu lieu entre le snapshot et la restauration. Sur ext4, resynchronisez-le :

Fenêtre de terminal
sudo quotacheck -avugm

Sur XFS, rien à faire : le système de fichiers vérifie la cohérence de son décompte au montage et le reconstruit si nécessaire.

Bonnes pratiques pour la gestion des quotas disque

Section intitulée « Bonnes pratiques pour la gestion des quotas disque »

La mise en place des quotas disque est une étape essentielle pour assurer la stabilité et l'équilibre de l'utilisation du stockage. Voici les bonnes pratiques à respecter pour une gestion efficace et durable.

Avant d'appliquer des quotas, évaluez :

  • Le nombre d'utilisateurs et de groupes.
  • Le volume moyen d'espace nécessaire par utilisateur.
  • Les besoins spécifiques (ex. : utilisateurs techniques vs utilisateurs bureautiques).

Astuce : réservez une marge pour les opérations système et les pics d'activité, et préférez des limites soft légèrement sous les limites hard pour laisser aux utilisateurs le temps de faire le ménage.

Choisir la méthode adaptée au système de fichiers

Section intitulée « Choisir la méthode adaptée au système de fichiers »
  • Sur ext4, suivez la séquence complète : options de montage, quotacheck, quotaon.
  • Sur XFS, utilisez toujours xfs_quota et souvenez-vous que l'activation exige un vrai démontage, pas un remount.
  • Sur Btrfs, activez les qgroups (btrfs quota enable) en sachant qu'ils limitent des sous-volumes, pas des utilisateurs.
  • Sur LVM, appliquez les quotas sur le système de fichiers monté, pas sur les volumes logiques eux-mêmes.

Un quota qui bloque un utilisateur sans prévenir génère des tickets ; un rapport régulier permet d'anticiper. Planifiez un contrôle périodique via cron pour détecter les dépassements :

Fenêtre de terminal
0 3 * * * /usr/sbin/repquota -a | mail -s "Rapport quotas quotidien" root

Vous pouvez aussi remonter ces métriques dans votre outil de supervision pour déclencher des alertes avant que la limite stricte ne soit atteinte.

  • Ajustez les limites de quotas tous les 6 à 12 mois en fonction de l'utilisation réelle.
  • Supprimez ou archivez les comptes inactifs pour libérer de l'espace disque.
  • Tenez compte de l'arrivée de nouveaux projets ou services gourmands en stockage.
  • Informez clairement les utilisateurs de leurs limites d'espace et des actions en cas de dépassement.
  • Documentez la procédure d'alerte et de demande d'augmentation de quota.

La plupart des problèmes de quotas viennent d'options de montage absentes, de la confusion ext4/XFS ou d'un décompte désynchronisé. Ce tableau regroupe les symptômes les plus fréquents.

SymptômeCause probableSolution
quotacheck répond qu'il ne trouve pas de système de fichiers à vérifierOptions usrquota/grpquota absentes de /etc/fstab, ou partition non remontée depuis leur ajoutVérifier avec findmnt /home, corriger /etc/fstab, remonter
Les quotas XFS restent inactifs après mount -o remountXFS n'applique uquota/gquota qu'au montage initialDémonter puis remonter la partition ; pour la racine, rootflags= et redémarrage
Disk quota exceeded alors que l'espace semble disponibleLimite d'inodes atteinte, ou période de grâce de la limite soft expiréequota -us alice pour voir blocs et inodes ; ajuster avec edquota
repquota affiche des chiffres incohérents avec duDécompte désynchronisé (arrêt brutal, restauration de snapshot) sur ext4Relancer sudo quotacheck -avugm puis sudo quotaon
quotacheck lancé sur une partition XFSConfusion entre les deux mécanismes : XFS n'utilise pas quotacheckUtiliser xfs_quota -x -c 'state' et -c 'report' à la place

Passez à la pratique sur une VM : activer les quotas XFS sur un système de fichiers et imposer une limite à un utilisateur, jusqu'à voir l'écriture refusée au dépassement.

Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

6 questions
6 min.
70% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

  • Un quota limite les blocs (espace) ou les inodes (nombre de fichiers) ; la limite soft tolère un dépassement pendant la période de grâce, la limite hard bloque immédiatement.
  • Sur ext4 : options usrquota/grpquota dans /etc/fstab, puis quotacheck -cugm, puis quotaon ; les limites se posent avec edquota ou setquota.
  • Sur XFS : options uquota/gquota et gestion via xfs_quota ; pas de quotacheck, et l'activation exige un démontage complet, pas un remount.
  • Btrfs limite des sous-volumes (qgroups), pas des utilisateurs ; ZFS fait les deux avec les propriétés quota et userquota@.
  • LVM ne gère pas de quotas : ils se configurent sur le système de fichiers posé au-dessus du volume logique.
  • repquota -s pour la vue administrateur, quota -us pour la vue d'un compte : surveillez avant que la limite stricte ne bloque les utilisateurs.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn