Ernest

Gérer les quotas de ses disques

Dernière modification : 2014-11-13 21:36:09

Image d'un disque dur

Sommaire


Introduction

La gestion des quotas disque permet à l'administrateur de limiter l'espace ou le nombre de fichiers utilisés par les utilisateurs ou les groupes d'utilisateurs. Leur mise en place est élémentaire et transparente, comme nous allons le voir à travers un exemple simple dans ce tutoriel. Toutes les manipulations sont effectuées sur une distribution CentOS 6.5 et une Debian 7, mais en tout état de cause, rien ne change vraiment d'une distribution à une autre.

[ sommaire ] | [ home ]


Préparer le système

En premier lieu, nous devons intaller ce dont nous avons besoin. Sur CentOS, après un yum update, faites :


yum install quota

Sur Debian, ce sera plutôt :


apt-get install quota quota-tool

A priori, la gestion des quotas est activée niveau kernel. Il faut en revanche définir quel(s) disque(s) nous souhaitons gérer. Pour cela, on édite le fichier /etc/fstab :


LABEL=centos_root               /        ext4      defaults         0 0

Dans cet exemple, tiré de CentOS, on voit que la partition / est montée avec les paramètres par défaut. Nous ne modifions pas ces paramètres, mais nous en ajoutons deux : usrquota et grpquota, qui indiquent au système de tenir compte de ces limitations. Cela nous donne donc :


LABEL=centos_root               /        ext4      defaults,usrquota,grpquota         0 0

Sur notre Debian, au final, nous avons dans notre fstab (le paramètre barrier était là avant notre édition):


/dev/xvda1 /     ext4    defaults,usrquota,grpquota,barrier=0 1 1

Sur nos deux systèmes, on démonte puis on remonte la partition (cela fonctionne même avec /) :


sudo mount -o remount /

Il faut maintenant créer les fichiers nécessaires au paramètrage des quotas. Pour cela on utilise l'utilitaire dédié fourni par le package quota, à savoir quotacheck:


sudo quotacheck -cvugm /

Le système crée alors deux fichiers à la racine du système, aquota.user et aquota.group. Il s'agit de deux fichiers binaires (essayez de les cat pour rigoler) qui permettent de configurer et contrôler l'application des quotas. Il est temps maintenant de passer aux choses intéressantes ...

[ sommaire ] | [ home ]


Gérer les quotas

A présent, vous pouvez gérer les quotas de chaque utilisateur ou groupe très naturellement. A titre d'exemple, prenons l'utilisateur Alphonse. Jusqu'à présent, il avait la belle vie et pouvait stocker ses mp3 sans se soucier de la place occupée. Mais tout cela est sur le point de changer, qu'on se le dise !

Pour cela, nous utilisons la commande edquota alphone :


sudo edquota alphonse

L'éditeur par défaut de votre distribution ouvre alors le fichier de configuration :


Disk quotas for user alphonse (uid 1002):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/xvda1                       20          0     100000          5        0        0

A quoi correspondent ces sept colonnes ?

Filesystem : la partition concernée par les quotas : ici nous n'en avons qu'une, /dev/xvda1, qui correspond à la racine du système.

blocks : c'est l'espace global consommé par le user sur cette partition. On le mesure en blocs de 1024 bytes (soit à peu près 1 ko).

Viennent ensuite les colonnes soft et hard qui correspondent aux limites "douce" et "dure". C'est ici que vous pouvez fixer les fameux quotas pour l'espace disque occupé. La limite douce, quand elle est franchie, occasionne un avertissement à l'utilisateur qui dispose alors d'une semaine de "grâce" pour libérer de l'espace. Si, passé ce délai, il occupe toujours plus d'espace que sa limite douce n'autorise, il se voit refuser les droits d'écriture sur le disque. Repasser sous la limite entraîne un retour à zéro de sa période de grâce. La limite dure fonctionne différemment : si l'utilisateur tente de la dépasser, il se voit tout simplement refuser l'écriture (access denied).

La colonne inode nous amène à un autre type de limite. Chaque fichier / répertoire possède une inode. Limiter le nombre d'inodes revient donc à limiter le nombre de fichiers et cette colonne indique le nombre de fichiers ou de répertoires que possède cet utilisateur.

Naturellement, les deux colonnes suivantes, soft et hard, permettent de fixer la limite douce et la limite hard du nombre d'inodes que peut créer Alphonse.

Admettons que nous voulions limiter Alphonse à 1 Go d'espace disque (limite dure) avec un avertissement à 800Mo. Il faudrait alors modifier notre fichier comme cela :


Disk quotas for user alphonse (uid 1002):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/xvda1                       20     819200    1048576          5        0        0

Il faut maintenant activer les quotas avec la commande quotaon / (nous mettons / car c'est le filesystem concerné, si vous posez des quotas ailleurs, il suffit d'adapter la commande, par exemple /home).


sudo quotaon /

Vérifier que cela fonctionne

Pour vérifier que cela fonctionne, connectez-vous avec l'utilisateur pour lequel vous avez fixé des quotas (ici, Alphonse), et essayez de dépasser la limite que vous avez fixée. Admettons que cela soit 200 Mo. Il suffit d'utiliser dd pour créer un fichier de 250Mo :


dd if=/dev/zero of=dummy_file bs=1M count=250

Le système ne devrait pas vous laisser finir la création du fichier dummy.

Un utilisateur peut connaitre à tout moment l'état de son occupation disque et son quota avec la commande quota -s (l'option -s donne des résultats plus facilement lisibles)


quota -s
Disk quotas for user Alphonse (uid 1002): 
     Filesystem   space   quota   limit   grace   files   quota   limit   grace
     /dev/xvda1     24K    800M   1024M               6       0       0        

Enfin, pour avoir un résumé de toutes les limites pour tous les utilisateurs, l'administrateur peut utiliser la commande repquota / (ou toute autre partition).


sudo repquota /
*** Report for user quotas on device /dev/xvda1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --  669000       0       0          19916     0     0       
man       --    1008       0       0            139     0     0       
libuuid   --       4       0       0              1     0     0       
admin     --      28       0       0              7     0     0       
user      --      20       0       0              5     0     0       
Alphonse  --      24  819200 1048576              6     0     0

[ sommaire ] | [ home ]


Liens utiles

[ sommaire ] | [ home ]


Conclusion

Fixer des quotas n'est pas très compliqué et peut s'avérer indispensable dès lors que vous travaillez en environnement multi-utilisateurs. Nous n'avons abordé ici que le cas des limites utilisateurs mais les limites pour les groupes fonctionnent de la même façon. Vous trouverez toutefois plus de détails en explorant les pages fournies en liens utiles.

[ sommaire ] | [ home ]