Gestion des quotas
Serveur Linux CentOS
Table des matières
1 GESTION DES QUOTAS .......................................................................................... 3
1.1 Introduction .......................................................................................................... 3
1.2 La configuration ................................................................................................... 4
1.2.1 Paquetage ...................................................................................................... 4
1.2.2 Activer les quotas au démarrage ................................................................... 5
1.2.3 Activer les changements ............................................................................... 8
1.2.4 Créer les enregistrements des quotas "aquota.user" et "aquota.group" ........ 8
1.2.5 Activer les quotas .......................................................................................... 9
1.3 Attribution des quotas ........................................................................................ 10
1.3.1 Attribuer les quotas pour un utilisateur particulier ..................................... 10
1.3.2 Attribuer les quotas sur un groupe particulier............................................. 10
1.4 Système d’alerte ................................................................................................. 12
1.5 Diverses commandes pour les quotas ................................................................ 14
1.5.1 quotacheck .................................................................................................. 14
1.5.2 repquota....................................................................................................... 14
1.5.3 quotaon et quotaoff ..................................................................................... 15
1.5.4 warnquota .................................................................................................... 15
1.5.5 quota............................................................................................................ 15
1.5.6 quotastats..................................................................................................... 16
1.5.7 setquota ....................................................................................................... 16
1.5.8 convertquota ................................................................................................ 16
© 2019 Hakim Benameurlaine 2
1 GESTION DES QUOTAS
1.1 Introduction
Les quotas permettent à l’administrateur de limiter l’utilisation des systèmes de
fichiers. Il peut restreindre, par utilisateur et/ou par groupe, le nombre de fichiers (ou
inodes) et la quantité de données (ou blocs de données) enregistrés sur le disque.
Pour cela, il peut fixer :
• Une limite ‘dure’ (‘hard’), tout dépassement de cette limite sera refusé par le
système et entraînera une erreur d’écriture.
• Une limite ‘douce’ (‘soft’), le dépassement de cette limite entraînera la
délivrance d’un avertissement à l’utilisateur et le décompte d’un délai de grâce.
Au-delà de ce sursis, l’avertissement sera remplacé par une erreur comme pour
la limite dure.
Les quotas permettent donc de spécifier les limites sur deux aspects de stockage sur
disque:
• Le nombre d'inode qu'un utilisateur ou un groupe peut posséder.
• Le nombre de blocs disques qui peuvent êtres alloués à un utilisateur ou un
groupe d'utilisateurs.
L'idée des quotas, c'est que les utilisateurs sont obligés de rester sous leur limite de
consommation de disque, perdant leur possibilité de saturer la totalité de l'espace
disque.
Les quotas sont supportés sur une base par utilisateur/groupe et par système de
fichier. S’il y a plus d'un système de fichiers ou un utilisateur qui est censé créer des
fichiers, alors les quotas doivent être configurés séparément sur chaque système de
fichier.
© 2019 Hakim Benameurlaine 3
1.2 La configuration
1.2.1 Paquetage
Vérifier si le paquetage quota est installé :
[root@localhost ~]# rpm -q quota
quota-4.01-11.el7_2.1.x86_64
Ce paquetage installe les fichiers suivants:
[root@localhost ~]# rpm -ql quota
/etc/sysconfig/rpc-rquotad
/usr/bin/quota
/usr/bin/quotasync
/usr/lib/systemd/system/nfs-rquotad.service
/usr/lib/systemd/system/rpc-rquotad.service
/usr/sbin/convertquota
/usr/sbin/edquota
/usr/sbin/quot
/usr/sbin/quotacheck
/usr/sbin/quotaoff
/usr/sbin/quotaon
/usr/sbin/quotastats
/usr/sbin/repquota
/usr/sbin/rpc.rquotad
/usr/sbin/setquota
/usr/sbin/xqmstats
/usr/share/doc/quota-4.01
/usr/share/doc/quota-4.01/Changelog
/usr/share/man/man1/quota.1.gz
/usr/share/man/man1/quotasync.1.gz
/usr/share/man/man8/convertquota.8.gz
/usr/share/man/man8/edquota.8.gz
/usr/share/man/man8/quot.8.gz
/usr/share/man/man8/quotacheck.8.gz
/usr/share/man/man8/quotaoff.8.gz
/usr/share/man/man8/quotaon.8.gz
/usr/share/man/man8/quotastats.8.gz
/usr/share/man/man8/repquota.8.gz
/usr/share/man/man8/rpc.rquotad.8.gz
/usr/share/man/man8/setquota.8.gz
/usr/share/man/man8/xqmstats.8.gz
© 2019 Hakim Benameurlaine 4
1.2.2 Activer les quotas au démarrage
Modifier le fichier /etc/fstab afin d’activer les quotas au démarrage.
Pour activer le support des quotas par utilisateur pour un système de fichiers,
ajoutez "usrquota" dans le quatrième champ contenant le mot "defaults".
UUID=dbebb3cb / xfs defaults,usrquota 0 0
UUID=bab918d8 /boot xfs defaults 0 0
UUID=ea3cb343 swap swap defaults 0 0
Remplacez "usrquota" par "grpquota", si vous avez besoin du support des
quotas par groupe sur un système de fichiers.
1] Enable Quota to add mount options.
[root@dlp ~]#
umount /home
[root@dlp ~]#
mount -o uquota,gquota /dev/sdb1 /home
[root@dlp ~]#
vi /etc/fstab
# add options
/dev/mapper/centos-root / xfs defaults 0 0
UUID=c4df086e-3699-4e02-b7cf /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sdb1 /home xfs defaults,uquota,gquota 0 0
[2] Set user Quota. For example, Apply quota to "cent" user.
# run quota tool with expert mode
[root@dlp ~]#
xfs_quota -x /home
# show current status
xfs_quota>
state
User quota state on /home (/dev/sdb1)
Accounting: ON
Enforcement: ON
Inode: #136 (2 blocks, 2 extents)
Group quota state on /home (/dev/sdb1)
Accounting: ON
© 2019 Hakim Benameurlaine 5
Enforcement: ON
Inode: #137 (2 blocks, 2 extents)
Project quota state on /home (/dev/sdb1)
Accounting: OFF
Enforcement: OFF
Inode: #137 (2 blocks, 2 extents)
Blocks grace time: [7 days 00:00:30]
Inodes grace time: [7 days 00:00:30]
Realtime Blocks grace time: [7 days 00:00:30]
# show usage reports
xfs_quota>
report -h
User quota on /home (/dev/sdb1)
Blocks
User ID Used Soft Hard Warn/Grace
---------- ---------------------------------
root 0 0 0 00 [------]
cent 16K 0 0 00 [------]
Group quota on /home (/dev/sdb1)
Blocks
Group ID Used Soft Hard Warn/Grace
---------- ---------------------------------
root 0 0 0 00 [------]
cent 16K 0 0 00 [------]
# set Soft Limit 9G, Hard Limit 10G (specify with kilo bytes) to "cent" user
xfs_quota>
limit bsoft=9g bhard=10g cent
# show reports
xfs_quota>
report -h -u
User quota on /home (/dev/sdb1)
Blocks
User ID Used Soft Hard Warn/Grace
---------- ---------------------------------
root 0 0 0 00 [------]
cent 16K 9G 10G 00 [------]
[3] If you set group quota, do like follows.
# possible to set on non-interactive mode
[root@dlp ~]#
xfs_quota -x -c 'limit -g bsoft=9g bhard=10g cent' /home
[root@dlp ~]#
xfs_quota -x -c 'report -h -g' /home
© 2019 Hakim Benameurlaine 6
Group quota on /home (/dev/sdb1)
Blocks
Group ID Used Soft Hard Warn/Grace
---------- ---------------------------------
root 0 0 0 00 [------]
cent 16K 9G 10G 00 [------]
[4] It's possible to send warnings to use Warnquota.
This setting needs SMTP server on your server.
# install Warnquota
[root@dlp ~]#
yum -y install quota-warnquota
[root@dlp ~]#
vi /etc/quotatab
# add device and description which quota is set
/dev/sdb1: Your Home Director
# change domain name to your own one
[root@dlp ~]#
sed -i -e "s/example\.com/server\.world/g" /etc/warnquota.conf
# run warnquota
[root@dlp ~]#
warnquota -s
# if a user is over the limit when warnquota runs, following warn ing is sent
From root@dlp.srv.world Thu Oct 20 19:08:08 2015
Return-Path: <root@dlp.srv.world>
X-Original-To: cent
Delivered-To: cent@dlp.srv.world
From: root@srv.world
Reply-To: root@srv.world
Subject: NOTE: You are exceeding your allocated disk space limits
To: cent@dlp.srv.world
Cc: root@srv.world
Content-Type: text/plain; charset=UTF-8
Content-Disposition: inline
Date: Thu, 20 Oct 2015 19:08:08 +0900 (JST)
Status: R
Your disk usage has exceeded the agreed limits on this server
Please delete any unnecessary files on following filesystems:
Your Home Directory (/dev/sdb1)
Block limits File limits
Filesystem used soft hard grace used soft hard grace
/dev/sdb1 +- 4112M 4096M 5120M 6days 6 0 0
root@srv.world
© 2019 Hakim Benameurlaine 7
1.2.3 Activer les changements
Au prochain reboot du serveur, les quotas seront activés.
Pour eviter de rebooter le serveur, on peut faire un mount l’option remount :
[root@localhost ~]# mount -o remount /
Utiliser la commande mount pour vérifier les changements :
[root@localhost ~]# mount
/dev/sda3 on / type xfs (rw,noquota)
1.2.4 Créer les enregistrements des quotas "aquota.user" et "aquota.group"
Utiliser la commande quotacheck pour créer les deux fichiers d'enregistrement
des quotas, aquota.user (si usrquota) et aquota.group (si grpquota) à
la racine de la partition.
Le fichier suivant est créé à la racine de la partition / :
© 2019 Hakim Benameurlaine 8
Par défaut le fichier aquota.user est généré. Utiliser l’option -g pour générer le
fichier aquota.group.
• L’option –a pour faire un check de tous les filesystems montés dans
/etc/mtab
• L’option –v pour verbose.
• L’option –m pour ne pas essayer de faire un remount en mode read only
avant le check.
• L’option –u pour user quotas
• L’option –g pour group quotas
1.2.5 Activer les quotas
Comme les fichiers aquota.user et aquota.group n’existaient pas au
démarrage de la machine, il faut activer les quotas manuellement pour éviter de
rebooter la machine.
© 2019 Hakim Benameurlaine 9
1.3 Attribution des quotas
Cette opération est assurée par la commande edquota.
Avant d’éditer les quotas, Il est préférable d’exécuter la commande quotachek
pour avoir les fichiers les plus à jour possible.
1.3.1 Attribuer les quotas pour un utilisateur particulier
La commande edquota -u hakimb lance l’éditeur vi (ou l'éditeur spécifié dans
la variable d'environnement $EDITOR) pour éditer les quotas pour l'utilisateur
hakimb sur chacune des partitions où le quota est activé.
# edquota -u hakimb
Disk quotas for user hakimb (uid 509):
Filesystem blocks soft hard inodes soft hard
/dev/mapper/VolGroup00-LogVol00 88 0 0 1401 0 0
blocks est le nombre total de blocks (en Ko) que l'utilisateur a déjà consommé sur
la partition.
inodes est le nombre total de fichiers que l'utilisateur possède sur la partition.
1.3.2 Attribuer les quotas sur un groupe particulier
La commande edquota -g delphi lance une nouvelle fois l'éditeur vi pour
éditer le les quotas du groupe delphi:
# edquota -g delphi
Disk quotas for group delphi (gid 603):
Filesystem blocks soft hard inodes soft hard
/dev/mapper/VolGroup00-LogVol00 0 0 0 0 0 0
Pour pouvoir utiliser correctement la commande edquota, il y a trois notions avec
lesquelles on doit se familiariser : Limite douce (Soft Limit), Limite dure (Hard
Limit), et délai (Grace Period.).
Limite douce (Soft Limit)
La limite douce indique la quantité maximale qu'un utilisateur peut utiliser sur une
partition. En combinaison avec le délai (Grace Period.), Il s’agit d'une frontière,
à partir de laquelle des messages d'avertissement sont envoyés pour informer du
dépassement de quota lorsqu'il survient.
© 2019 Hakim Benameurlaine 10
Limite dure (Hard Limit)
La limite dure ne fonctionne que lorsque le délai est configuré. Cela définit la limite
absolue de l'utilisation disque, puisque l'utilisateur ne peut dépasser la limite dure.
Délai (Grace Period)
Le délai est une limite de temps avant que la limite douce ne soit renforcée sur un
système de fichiers ou les quotas sont activés. Les unités de temps "sec(onds),
min(utes), hour(s), day(s), week(s), and month(s)" peuvent être utilisées.
# edquota –t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/mapper/VolGroup00-LogVol00 7days 7days
Changer la partie "7 days" pour une durée qui vous semble raisonnable.
REMARQUE
Mettre la description de vos filesystems dans le fichier /etc/quotatab
© 2019 Hakim Benameurlaine 11
1.4 Système d’alerte
Les paramètres se trouvent dans le fichier /etc/warnquota.conf :
# this is an example warnquota.conf
#
; ; and # type comments are allowed
# and even blank lines
MAIL_CMD = "/usr/sbin/sendmail -t"
FROM = "root@localhost"
SUBJECT = Disk Quota usage on system
CC_TO = " root@localhost "
SUPPORT = " root@localhost "
PHONE = "123-456-1111"
MESSAGE = Your disk usage has exceeded the agreed \
Limits on this server|please delete any \
Unnecessary files on following
filesystems :|
.
#
# end of example warnquota.conf file
#
La commande warnquota permet d’envoyer une alerte aux usagers ayant dépassés
leurs limites :
# warnquota
Si la commande warnquota retourne une erreur, éditer le fichier
/etc/quotatab et mettre en commentaire la dernière ligne.
Ensuite vérifier le courrier d’un usager ayant dépassé sa limite:
© 2019 Hakim Benameurlaine 12
© 2019 Hakim Benameurlaine 13
1.5 Diverses commandes pour les quotas
1.5.1 quotacheck
La commande quotacheck est utilisée pour vérifier le système de fichier et les
utilisations disque pour mettre le plus à jour possible le fichier enregistrement
"aquota.user".
# quotaoff -a
# quotacheck –am
# quotaon -a
1.5.2 repquota
La commande repquota affiche un résumé des quotas pour le système de fichiers.
Voici une sortie type de repquota :
© 2019 Hakim Benameurlaine 14
1.5.3 quotaon et quotaoff
La commande quotaon est utilisée pour activer la gestion des quotas et la
commande quotaoff pour le terminer. Les fichiers sont en fait similaires. Ils sont
exécutés au démarrage et à l'arrêt du système.
Désactiver les quotas :
# quotaoff –a
Activer les quotas :
# quotaon –a
1.5.4 warnquota
Cette commande vérifie les quotas pour chaque filesystem et envoie un message
aux usagers ayant atteint leur limite.
# warnquota
1.5.5 quota
# quota –guvs
Disk quotas for user root (uid 0):
Filesystem blocks quota limit grace files quota limit grace
/dev/mapper/VolGroup00-LogVol00 1439M 0 0 96873 0 0
Disk quotas for group root (gid 0): none
Disk quotas for group bin (gid 1): none
Disk quotas for group daemon (gid 2): none
Disk quotas for group sys (gid 3): none
Disk quotas for group adm (gid 4): none
Disk quotas for group disk (gid 6): none
Disk quotas for group wheel (gid 10): none
© 2019 Hakim Benameurlaine 15
1.5.6 quotastats
1.5.7 setquota
Permet de changer les quotas en mode ligne de commande (sans passer par la
commande edquota).
setquota -u hakimb 80 90 30 40 –a
edquota -u hakimb
Disk quotas for user hakimb (uid 502):
Filesystem blocks soft hard inodes soft hard
/dev/mapper/VG00-LV00 0 80 90 0 30 40
1.5.8 convertquota
Cette commande permet de la conversion des fichiers de quota de la version 1 vers
la version 2.
La version1 utilise les fichiers : quota.user et quota.group
La version2 utilise les fichiers : aquota.user et aquota.group
© 2019 Hakim Benameurlaine 16