Les quotas sous Linux

Pour éviter que vos utilisateurs utilisent tout l’espace disque et/ou pour que cet espace soit réparti de façon équitable entre eux il est utile de mettre en place des quotas.
Les quotas vont permettre d’attribuer une quantité d’espace disque à des groupes ou à des utilisateurs en particulier.
Les quotas se gèrent en fonctions de 3 paramètres :

  • Hard Limit : Quantité d’espace disque qui ne pourra jamais être dépassée.
  • Soft Limit : Quantité d’espace disque attribuée, elle peut être temporairement dépassée.
  • Grace Period : Période de temps attribuée pour revenir en soft Limit.

Installation et configuration

Ajout des paquets

Pour gérer les quotas on utilise les paquets quota et quotatool :

# apt install quota quotatool

Fichier fstab

Dans notre exemple les quotas seront gérés sur le répertoire /home pour répartir équitablement les ressources envers les utilisateurs.
Pour cela il faut dans un premier temps modifier le fichier /etc/fstab :

# vim /etc/fstab

Dans lequel on va ajouter les options usrquota (utilisateurs) et grpquota (groupes) à la ligne où se trouve /home :

<file system> <mount point>   <type>  <options>   <dump>  <pass>
/dev/sda2 / ext4 errors=remount-ro,relatime 0 1
/dev/sda3 /home ext4 defaults,relatime,usrquota,grpquota 1 2
/dev/sda4 swap swap defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts defaults 0 0

(Re)monter la partition

Pour que les modifications soient prises en compte il faut remonter la partition :

# mount -vo remount /home
/dev/sda3 on /home type ext4 (rw,relatime,usrquota,grpquota)

Si la partition n’est pas remontée vous aurez ce message d’erreur au moment d’utiliser quotacheck :

quotacheck: Mountpoint (or device) /home not found or has no quota enabled.
quotacheck: Cannot find filesystem to check or filesystem not mounted with quota option.

Initialisation des quotas

Pour activer les quotas on utilise la commande quotacheck avec les options suivantes :

# quotacheck -vgum /home 
  • -v : mode verbeux.
  • -u : vérifie seulement les quotas utilisateurs présent dans /etc/mtab ou dans le système de fichier spécifié.
  • -g : vérifie seulement les quotas groupes présent dans /etc/mtab ou dans le système de fichier spécifié.
  • -m : Ne pas remonter le système de fichioer en lecture seule.

Il ce peut que vous ayez une erreur dû au fait que c’est la première fois que vous créez un fichier de quota. Pour plus d’information man quotacheck.

Les fichiers aquota.group et aquota.user ont maintenant été crées dans /home :

# ls -l /home
[...]
-rw------- 1 root root 9216 août 29 16:11 aquota.group
-rw------- 1 root root 10240 août 29 16:11 aquota.user
[...]

Activation des quotas

Pour activer les quotas on utilise la commande quotaon :

# quotaon -vgu /home/
/dev/sda3 [/home] : quotas group activés
/dev/sda3 [/home] : quotas user activés

À tous moments vous pouvez vérifier l’état des quotas :

# quotaon -pa
group quota on /home (/dev/sda3) is on
user quota on /home (/dev/sda3) is on

Vous pouvez maintenant attribuer des quotas sur vos disques pour vos utilisateurs.

Attribution des quotas

Pour attribuer les quotas disque on va utiliser la commande quotatool :

Pour un groupe

Pour mettre les quotas sur un groupe entier on précise -g :

# quotatool -g <grpe> -bq <SoftLimit> -l <HardLimit> /home 

Pour un utilisateur

Pour un unique utilisateur on précise cette fois çi l’option -u :

# quotatool -u <user> -bq <SoftLimit> -l <HardLimit> /home

Exemples, il est possible de préciser l’unité : k (kilo), m(mega), g(giga), t(tera), ..

# quotatool -u aline -bq 90m -l 100m /home
# quotatool -g wheel -bq 180m -l 200m /home

Visualiser les quotas

Les options -u et -g correspondent à l’utilisateur et au groupe :

# repquota -avug
*** Rapport pour les quotas user sur le périphérique /dev/sda3
Période de sursis bloc : 7days ; période de sursis inode : 7days
Block limits File limits
Utilisateur utilisé souple stricte sursis utilisé souple stricte sursis
----------------------------------------------------------------------
root -- 65724 0 0 3523 0 0
www-data -- 268396 0 0 23110 0 0
aline +- 96384 92160 102400 7days 259 0 0
Leela -- 4356 0 0 274 0 0
Fry -- 3640 0 0 413 0 0
Bender -- 28 0 0 7 0 0
aline2 -- 113944 0 0 2364 0 0

Statistiques :
Total des blocs : 10
Blocs de données : 2
Entrées : 7
Moyenne d'utilisation : 11,000000

Les quotas ont été dépassés pour l’utilisatrice aline et il faut revenir en dessous de la softLimit sous 7 jours, le signe + indique un dépassement.

Si vous souhaitez rajouter des fichiers dans votre répertoire alors que le quota a déjà été dépassé vous aurez ce genres de message d’erreur :

Impossible d'écrire dans «image.jpg» (Débordement du quota d'espace disque).
mkdir: impossible de créer le répertoire « test »: Débordement du quota d'espace disque
sda3: warning, user block quota exceeded. (limite douce)
sda3: write failed, user block limit reached. (limite dure)

Exemple concret : L’utilisatrice Leela possède un quota maximum de 40 octets et la limite basse est de 35 octects, 28 octets d’espace disque ont déjà été utilisés. On va créer des fichiers .txt avec le résultat de la commande ls

# ls / >test1.txt

# repquota -avu | grep Leela
aline -- 28 35 40 8 0 0

Lors de la création d’un 2ème fichier, on obtient un warning, la limite basse va être dépassée :

# ls / >test2.txt
sda3: warning, user block quota exceeded.

# repquota -avu | grep Leela
aline +- 36 35 40 6days 10 0 0

Lors de la création d’un 3ème fichier, on obtient une erreur, la limite haute est atteinte :

# ls / >test3.txt
sda3: write failed, user block limit reached.
ls: erreur d'écriture: Débordement du quota d'espace disque

# repquota -avu | grep Leela
aline +- 40 35 40 6days 12 0 0

Changer la période de grâce

La période de grâce est défini par défaut à 7 jours. Il est possible de la modifier comme ceci :

# edquota -t

Ce qui va nous permettre d’éditer le fichier correspondant :
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

Afficher/vérifier les droits

Pour voir les droits sur une partition (ex : /home) :

# repquota /home

Pour voir les droits de tous les utilisateurs :

# repquota -a

Supprimer les quotas

Pour supprimer les quotas :

# sudo quotaoff -avug

Documentation

https://wiki.archlinux.org/index.php/Disk_quota et
http://arobaseinformatique.eklablog.com/mettre-en-place-des-quotas-sous-debian-a115133838
https://doc.ubuntu-fr.org/quota
https://superuser.com/questions/720388/linux-quota-how-set-grace-time (Période de grâce)

> Partager <