Ceci est une ancienne révision du document !
Quota user (Debian)
Permet de définir des quotas d'espace disque pour des groupes et des utilisatrices.
Dans le cas d'un “mutualisé”, le quota par utilisatrice évite que l'une prenne trop de place. Sauf erreur, pour les groupes on prend le total du groupe. Donc si on a 100 user avec le droit à 1Go chacune mais que le groupe est limité à 50Go, les utilisatrices les plus chiches seront bloquées avant ? Non, parce qu'il n'est pas possible d'avoir un répertoire appartenant à plusieurs quotas. Donc on choisit : groupe ou user, et on évite de mélanger. Et finalement par user et leurs home, c'est souvent le moins casse-gueule. On pourrait aussi mettre un quota sur www-data (et donc tous les répertoires web) mais ça me semble générateur de bizarreries et fait porter le ménage à la sysadmin, qui a d'autres choses à faire que de trancher si on vire le site de Gudule ou de Marcelle.
- Les soft limits peuvent être temporairement dépassés (période de grâce). Par défaut la période est à 7 jours. Elle peut se changer avec
edquota -t. - Les hard limits ne peuvent pas être dépassés.
On peut définir les limites sur les blocs ou les inodes.
- Les blocs sont le “poids” des fichiers. En ext4, 1 bloc = 4 Ko. On peut déclarer aussi avec des unités informatiques (comme 4G).
- Les inodes sont les fichiers et dossiers. Chaque fichier/dossier consomme 1 inode.
Initialiser
Depuis l'hyperviseur (ouais parce que je suis sur hyperviseur) : on éteint la VM, on ne cherche pas les ennuis ;)
On active ensuite les quotas natifs ext4 sur la partition voulue (notation LVM mais ça s'adapte) :
tune2fs -O quota /dev/VG/VM-disk
Pour vérifier que c'est actif :
tune2fs -l /dev/VG/VM-disk | grep -i quota
Et on redémarre la VM.
On teste aussi depuis la VM ce que ça donne :
tune2fs -l /dev/xvda2 | grep -i quota
Modifier fstab pour ajouter les options usrquota,grpquota. Sur mes VM Xen, c'est cette ligne (toujours /dev/xvda2 en théorie) :
/dev/xvda2 / ext4 errors=remount-ro,usrquota,grpquota 0 1
Parait qu'on peut faire ceci pour que ce soit pris en compte (mais sinon, faut redémarrer) :
mount -o remount /
On va avoir besoin du paquet “quota” qui fournit tous les outils utiles :
apt install quota
Pause, c'est pas clair dans ma tête.
Méthode quotacheck
Je garde ça dans un coin mais a priori c'est donc obsolète.
On va ensuite executer “quotacheck”. Il scanne le système de fichiers et met à jour les fichiers de quota (aquota.user et aquota.group) pour garder un jalon de l'utilisation actuelle du disque. Il faut impérativement l'exécuter tant que les quotas ne sont pas actifs (on le fait juste après). c : Crée les fichiers de quota (aquota.user, aquota.group) v : Mode verbeux u : Scan pour les quotas utilisateur g : Scan pour les quotas groupe m : Force le scan même si le système de fichiers est monté en écriture a : Scan tous les systèmes de fichiers avec quotas dans fstab
quotacheck -cavugm
On a ce retour en 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. You can enable the feature by unmounting the file system and running 'tune2fs -O quota <device>'.
Pas la peine de trop chercher, on teste la méthode ext4 plus haut ;)
Usages
Vérifier tous les quotas actuels (a pour “tout”, s affiche ça en valeur lisibles, sinon c'est en bloc)
repquota -as
Vérifier les quotas d'un utilisatrice
quota -u utilisatrice
Copier les quotas d'une utilisatrice à un autre
edquota -p utilisatrice_modele nouvel_utilisatrice
Désactiver temporairement les quotas
quotaoff -a
Activer les quotas
quotaon -av
Définir les quotas
Définir un quota pour un utilisateur spécifique (pas copier bêtement, voir les explications)
edquota -u utilisatrice setquota -u utilisatrice 1G 2G 0 0 /home/utilisatrice
Comment ça marche ?
La commande edquota -u utilisatrice ouvre un éditeur de texte qui va afficher quelque chose comme ceci :
Quotas disque pour user alice (uid 1001) : Système de fichiers blocs souple stricte inodes souple stricte /dev/xvda2 32 0 0 8 0 0
La colonne “blocs” affiche le nombre de blocs actuellement utilisés, et inodes, c'est la même chose, mais sur les inodes ! Ici on voit que les limites sont à zéro, ce qui veut dire qu'il n'y a en réalité aucune limite définie.
Pour setquota, la syntaxe est “<block-softlimit> <block-hardlimit> <inode-softlimit> <inode-hardlimit> <répertoire>”. Mieux vaut préciser soigneusement le répertoire où le quota s'applique.
