Aller au contenu
English
Compte : non connecté, synchronisation possible Mon apprentissage
Selectionner le thème
English

Mettre en place des quotas disque

Par mis à jour le

Améliorer cette page

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 (fonctionnalité quota, options usrquota/grpquota, 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 tune2fs -O quota et 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
ext4Décompte interne (tune2fs -O quota), appliqué par les options usrquota/grpquotatune2fs, edquota, setquota, repquota (quotacheck/quotaon pour l'ancienne méthode)
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 de deux façons : un décompte interne, la méthode actuelle, et d'anciens fichiers externes, dépréciés mais encore très répandus.

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).

ext4 sait tenir le décompte des quotas en interne, dans des inodes cachés, comme XFS : c'est la méthode actuelle. Elle se pose une fois, sur le système de fichiers démonté, avec tune2fs :

Fenêtre de terminal
sudo umount /home
sudo tune2fs -O quota /dev/sdb1

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

UUID=xxx /home ext4 defaults,usrquota,grpquota 0 2
Fenêtre de terminal
sudo systemctl daemon-reload
sudo mount /home
sudo quotaon -p /home
group quota on /home (/dev/sdb1) is on
user quota on /home (/dev/sdb1) is on
project quota on /home (/dev/sdb1) is off

Les quotas sont actifs dès le montage : ni quotacheck ni quotaon à lancer, et aucun fichier à la racine de la partition. Mesuré sur AlmaLinux 10 (e2fsprogs 1.47.1, quota 4.09) : avec une limite stricte de 2 Mio, un dd de 3 Mio s'arrête sur Disk quota exceeded. Pour la partition racine, qu'on ne peut pas démonter, le tune2fs se fait depuis un système de secours.

Beaucoup de guides, et les systèmes installés il y a longtemps, utilisent des fichiers de décompte externes (aquota.user, aquota.group) créés par quotacheck. La méthode fonctionne encore, mais quotacheck et quotaon signalent eux-mêmes qu'elle est dépréciée sur ext4 :

quotacheck: Your kernel probably supports ext4 quota feature but you are using
external quota files. Please switch your filesystem to use ext4 quota feature
as external quota files on ext4 are deprecated.

Si vous la rencontrez, voici la séquence : options usrquota,grpquota dans /etc/fstab, remontage (qui suffit sur ext4), puis création des fichiers et activation :

Fenêtre de terminal
sudo systemctl daemon-reload
sudo mount -o remount /home
findmnt /home
sudo quotacheck -cugm /home
sudo quotaon /home

La colonne OPTIONS de findmnt doit contenir usrquota et grpquota. Les options de quotacheck : -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. Le noyau tient ensuite le décompte à jour, et quotacheck ne sert plus qu'à resynchroniser après un incident. Pour migrer vers la fonctionnalité interne : quotaoff, démontage, tune2fs -O quota, remontage.

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 rend 0 sans message et ne change rien (findmnt affiche toujours noquota), 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, tune2fs visant le volume logique :

Fenêtre de terminal
sudo umount /home
sudo tune2fs -O quota /dev/mapper/vg_data-lv_home
sudo mount /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 avec d'anciens fichiers externes, resynchronisez-le (avec la fonctionnalité interne, c'est e2fsck qui vérifie le décompte) :

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, activez la fonctionnalité interne (tune2fs -O quota, sur le système démonté) plutôt que les fichiers aquota.*, dépréciés.
  • 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 ext4Fichiers externes : sudo quotacheck -avugm puis sudo quotaon ; fonctionnalité interne : e2fsck sur le système démonté
quotacheck ou quotaon avertit : external quota files on ext4 are deprecatedAncienne méthode à fichiers aquota.*Migrer : quotaoff, démontage, tune2fs -O quota, remontage
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.

  • 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 : tune2fs -O quota sur le système démonté, puis options usrquota/grpquota dans /etc/fstab ; les fichiers aquota.* de quotacheck sont dépréciés. 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.

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

Ce projet vous est utile ?

Les guides, formations, quiz et labs restent gratuits. Si vous les utilisez régulièrement, vous pouvez contribuer à leur maintenance et à leur développement.

Devenir membre de soutien (nouvel onglet) Soutenir une fois (nouvel onglet) En savoir plus

Suivez aussi le projet sur LinkedIn