« Quotas sur les système de fichiers » : différence entre les versions
m (→Création des structures nécessaires au fonctionnement des quotas : correction d'un lien) |
|||
Ligne 62 : | Ligne 62 : | ||
=== Création des structures nécessaires au fonctionnement des quotas === | === Création des structures nécessaires au fonctionnement des quotas === | ||
'''Un ou deux fichiers''' doivent être créés pour l'utilisation des quotas : <tt>aquota.user</tt> et <tt>aquota.group</tt>. C'est dans ces fichiers que l'on configurera les quotas attribués aux utilisateurs et/ou aux groupes. Ces fichiers doivent être créés à la [#rappels racine des systèmes de fichiers ] qui comportent ces quotas. | '''Un ou deux fichiers''' doivent être créés pour l'utilisation des quotas : <tt>aquota.user</tt> et <tt>aquota.group</tt>. C'est dans ces fichiers que l'on configurera les quotas attribués aux utilisateurs et/ou aux groupes. Ces fichiers doivent être créés à la [[#rappels | racine des systèmes de fichiers ]] qui comportent ces quotas. | ||
'''Exemple : '''<br /><tt>root@pingu# touch /home/aquota.user<br /> root@pingu# touch /tmp/aquota.group</tt> | '''Exemple : '''<br /><tt>root@pingu# touch /home/aquota.user<br /> root@pingu# touch /tmp/aquota.group</tt> |
Version du 13 février 2006 à 19:05
Gestion des quotas
Introduction
Petits rappels sur les systèmes de fichiers
Avant de rentrer dans le vif du sujet, il m'apparait essentiel de faire quelques rappels sur les systèmes de fichiers, auxquels je me réfererait dans la suite de l'article.
Système de fichiers : organisation logique des données dans un disque ou une partition. C'est l'existence du système de fichiers qui vous permet de ranger vos fichiers dans des répertoires et sous-répertoires.
Formatage : c'est l'opération qui consiste à créer un nouveau système de fichiers dans un disque ou une partition. Sous Linux, on utilise la commande générique mkfs, par exemple.
Racine d'un système de fichiers : la racine correspond au répertoire d'attache du système de fichiers. Par exemple, /home est la racine du système de fichiers contenant les homes directories des utilisateurs. À quoi reconnait-on qu'il s'agit de la racine ? À la présence du répertoire lost+found. Il est créé lors de l'opération de formatage et est utilisé lors des réparations éventuelles du système de fichiers.
Bloc : c'est l'unité d'espace du système de fichiers. Il peut varier d'un système à l'autre. Pour connaître la taille en octets du bloc :
root@pingu# dumpe2fs /dev/hdc11 | grep -i 'block size' dumpe2fs 1.27 (8-Mar-2002) Block size: 40
où dumpe2fs est la commande qui permet d'afficher les informations relatives à un système de fichiers (attention, la quantité d'infos peut être énorme ! :p) et /dev/hdc11 désigne le fichier spécial de la partition contenant le système de fichiers.
Inode : chaque fichier dispose de ce qu'on appelle une inode. Il s'agit de la carte d'identité du fichier. Elle contient notamment sa taille, sa date de dernière modification, les emplacements du disque dur sur lesquels sont situés les données... et un numéro. Et oui nos fichiers ne sont en fait que des numéros :). Chaque fichier a donc un numéro unique dans chaque système de fichiers. C'est ce numéro qui est utilisé par le système lors d'opération sur les fichiers. Le nom que vous attribuez à un fichier n'est utilisé que par vous :). Pour obtenir ces numéros : ls -i
Qu'est-ce qu'un quota
L'attribution de quotas dans un système de fichiers est un outil qui permet de maîtriser l'utilisation de l'espace disque. Les quotas consistent à fixer une limite d'espace pour un utilisateur ou un groupe d'utilisateurs.
Pour la création de ces quotas, on définit 2 types de limites :
- La limite douce (ou soft limit) : indique la quantité maximale d'espace qu'un utilisateur peut occuper sur le système de fichiers. Si cette limite est atteinte, l'utilisateur reçoit des messages d'avertissement quant au dépassement du quota qui lui a été attribué. Si son utilisation est combinée avec les délais (ou grace period), lorsque l'utilisateur continue à dépasser la soft limite après que se soit écoulé le délai de grâce, alors il se retrouve dans le même cas que dans l'atteinte d'une limite dure.
- La limite dure (ou hard limit) définie une limite absolue pour l'utilisation de l'espace. L'utilisateur ne peut pas dépasser cette limite. Passée cette limite, l'écriture sur ce système de fichiers lui est interdite.
De plus ces limites sont exprimées en blocs et en inodes. On a vu que le bloc étant une unité d'espace. Les quotas exprimés en nombre de blocs représentent donc une limite d'espace à ne pas dépasser. En ce qui concerne les quotas exprimés en nombre d'inodes, ils représentent le nombre maximum de fichiers et répertoires que l'utilisateur pourra créer.
Pour mémoire, les délais (ou grace period) fixent une période de temps avant que la limite douce ne se transforme en limite dure. Elle est fixée dans les unités suivantes : second, minute, hour, day, week.
Ce qui est nécessaire pour activer les quotas
Généralement dans la plupart des distributions, les quotas sont utilisables d'office. Vous devez vérifier 2 choses pour pouvoir utiliser les quotas :
- vous devez disposer des outils de gestion des quotas :
root@pingu# rpm -qa | grep quota
quota-3.06-5 - la gestion des quotas doit être activée dans le noyau :
root@pingu# grep -i quota /boot/config-2.4.18-14
CONFIG_QUOTA=y
Configuration de la gestion des quotas
Configuration de /etc/fstab
Les quotas sont activés au démarrage grâce à la commande quotaon lancée par le script /etc/rc.d/rc.sysinit. Les quotas sont désactivés à l'arrêt du système par la commande quotaoff.
Pour fixer les quotas sur un système de fichiers, il faut mettre à jour le fichier /etc/fstab. On va pour cela ajouter les options de montage pour le ou les systèmes de fichiers concernés. Deux options peuvent être utilisées (et combinées bien sûr) :
- usrquota : active les quotas utilisateurs
- grpquota : active les quotas groupes
Exemple :
/dev/hdc1 /home ext3 defaults,usrquota 1 1
/dev/hdc2 /tmp ext3 defaults,grpquota 1 1
Création des structures nécessaires au fonctionnement des quotas
Un ou deux fichiers doivent être créés pour l'utilisation des quotas : aquota.user et aquota.group. C'est dans ces fichiers que l'on configurera les quotas attribués aux utilisateurs et/ou aux groupes. Ces fichiers doivent être créés à la racine des systèmes de fichiers qui comportent ces quotas.
Exemple :
root@pingu# touch /home/aquota.user
root@pingu# touch /tmp/aquota.group
Attention :ne pas oublier de modifier les droits sur ces fichiers ! Ils doivent comporter les droits en écriture et lecture pour root uniquement.
Exemple :
root@pingu# chmod 600 /home/aquota.user
root@pingu# chmod 600 /tmp/aquota.group
Remonter le ou les systèmes de fichiers concernés pour prendre en compte l'utilisation de quotas pour ce système de fichiers.
root@pingu# mount -o remount /home
root@pingu# mount -o remount /tmp
Après création de ces fichiers, il faut initialiser la base des quotas en exécutant la commande suivante :[#verif quotacheck -auvg]. Dans le cas contraire, la sanction est immédiate :
edquota: Quota file not found or has wrong format.
No filesystems with quota detected.
Activer les quotas :
root@pingu# quotaon -a
Attribution et vérification des quotas
Fixer des quotas
L'attribution des quotas se fait grâce à la commande edquota, utilisable quelque soit le type de quota (utilisateur ou groupe). La commande ouvre un éditeur (vi ou emacs selon le contenu de votre variable EDITOR), qui vous permet de modifier directement les fichiers aquota.user ou aquota.group.
Syntaxe : edquota [-u user] [-g group] [-t]
- -u user définit les quotas pour un ou plusieurs utilisateurs
- -g group définit les quotas pour un ou plusieurs groupes
- -t définit les délais
Exemple :
root@pingu# edquota -u citrouille Disk quotas for user anne (uid 500): Filesystem blocks soft hard inodes soft hard /dev/hdc1 0 9000 10000 0 90000 10000
Le fichier se compose de 6 colonnes :
- Filesystem : système de fichiers concerné par les quotas
- blocks : nombre de blocs occupés par l'utilisateur dans le système de fichiers. Ici aucun fichier n'a encore été créé.
- soft : limite soft en nombre de blocs. Ici elle est fixée à 9 000 blocs soit environ 9 Mo
- hard : limite hard en nombre de blocs (environ 10 Mo)
- inodes : nombre d'[#rappels inodes ]occupées par l'utilisateur dans le système de fichiers
- soft : limite soft en nombre d'inodes
- hard : limite hard en nombre d'inodes
On procédera de la même façon pour l'attribution de quotas à un groupe. (Ne tentez pas d'éditer directement ces fichiers; ils ne sont pas en format texte.)
Fixer un délai
On a vu également qu'on pouvait moduler le délai fixé entre le moment où l'utilisateur atteint la limite soft et celui où on va lui interdire toute occupation supplémentaire dans le système de fichiers. On va donc fixer la durée de ce délai. elle sera la même quelque soit l'utilisateur et/ou le groupe.
Syntaxe : edquota -t
Exemple :
root@pingu# 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/hdc1 7days 7days
il suffit donc de remplacer les valeurs par vos valeurs dans l'unité qui vous convient : second, minute, hour, day, week.
Dépassement de quotas : que se passe-t-il ?
Une fois n'est pas coutume, on se place du côté utilisateur. Nous allons décrire les principaux cas de figure de dépassement de quotas et les messages envoyés à l'utilisateur.
Prenons l'exemple suivant : l'utilisateur Anne dispose de 9Mo en limite douce et 10 Mo en limite dure. Son délai de grâce est de 7 minutes. Ci-dessous le contenu du système de fichiers faisant l'objet de ces quotas :
anne@pingu$ ls -l /home/anne total 1842 -rw------- 1 root root 7168 fév 28 23:50 aquota.user -rw-r--r-- 1 anne anne 1857516 mar 1 12:19 fic1 drwx------ 2 root root 12288 nov 28 12:59 lost+found
Nous sommes largement en-dessous des quotas. Nous allons maintenant copier 4 fois le fichier fic1. Les 3 premières copies se passent bien et nous avons fic2, fic3 et fic4. Ci-dessous, la dernière copie
anne@pingu$ cp fic1 fic5
ide1(22,10): warning, user block quota exceeded.
anne@pingu$ ls -l total 9134 -rw------- 1 root root 7168 fév 28 23:50 aquota.user -rw-r--r-- 1 anne anne 1857516 mar 1 12:19 fic1 -rw-r--r-- 1 anne anne 1857516 mar 1 13:18 fic2 -rw-r--r-- 1 anne anne 1857516 mar 1 13:18 fic3 -rw-r--r-- 1 anne anne 1857516 mar 1 13:18 fic4 -rw-r--r-- 1 anne anne 1857516 mar 1 13:18 fic5 drwx------ 2 root root 12288 nov 28 12:59 lost+found
La limite douce est dépassée. L'utilisateur reçoit un message mais l'écriture est réalisée car nous n'avons pas dépassé la limite dure.
2 cas de figures peuvent alors se présenter si l'utilisateur ne contacte pas l'administrateur ou s'il ne libère pas de l'espace pour repasser en-dessous de la limite douce.
- 1er cas : l'utilisateur tente d'écrire dans le système de fichiers ce qui l'amène à dépasser la limite dure.
anne@pingu$ cp fic1 fic6
ide1(22,10): write failed, user block limit reached.
cp: écriture de `fic6': Débordement du quota d'espace disque
L'opération échoue. Une partie du fichier seulement a été copiée. l'utilisateur de pourra plus écrire dans le système de fichiers.
- 2ème cas : l'utilisateur laisse s'écouler le délai de grâce de 7 minutes fixé par l'administrateur. Il tente alors de copier le contenu du fichier /etc/passwd par exemple. Le total de l'espace occupé reste toutefois inférieur à la limite dure.
La sanction sera identique que dans le 1er cas. L'opération échoue.
anne@pingu$ cp /etc/passwd .
ide1(22,10): write failed, user block quota exceeded too long.
cp: écriture de `./passwd': Débordement du quota d'espace disque
L'opération a échoué comme en témoigne le listage ci-dessous :
anne@pingu$ ls -l passwd -rw-r--r-- 1 anne anne 0 mar 1 14:48 passwd
De même si vous essayez d'écrire dans le fichier passwd, vous obtiendrez le message suivant dans votre éditeur au moment de l'enregistrement :
"passwd" erreur d'écriture (système de fichiers plein ?) Appuyez sur ENTRÉE ou tapez une commande pour continuer
Il vous est impossible d'écrire.
Vérification et affichage des quotas
Les commandes suivantes vont vous permettre d'une part de vérifier les quotas affectés à chaque groupe et/ou utilisateur et éventuellement de synchroniser les informations nécessaires au système pour le suivi de ces quotas.
Edition des informations relatives aux quotas
La commande repquota permet d'afficher un résumé de l'utilisation des quotas et délais de grâce.
Syntaxe : repquota [ -vug ] -a | filesystem
- -v : mode verbeux, affiche des infos supplémentaires
- -u : affiche des informations sur les quotas utilisateurs
- -g : affiche des informations sur les quotas groupes
- -a : affiche des informations sur tous les systèmes de fichiers disposant de quotas
- filesystem : affiche des informations sur les quotas du système de fichiers spécifié
Pour l'exemple, j'ai ajouté un utilisateur Bob.
# repquota -avug *** Report for user quotas on device /dev/hdc10 Block grace time: 00:07; Inode grace time: 00:07 Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 19 0 0 2 0 0 anne -- 7293 9000 10000 5 9000 10000 bob +- 9000 8000 9000 00:07 5 8000 9000 + -- 19 0 0 2 0 0 Statistics: Total blocks: 7 Data blocks: 1 Entries: 3 Used average: 3,000000
On trouve ici les informations relatives au quota imposé aux utilisateurs. On trouvera autant de lignes que d'utilisateurs, groupes et systèmes de fichiers concernés.
Sont rappelés les quotas fixés en nombre de blocs et d'inodes. On trouve également le nombre de blocs et le nombre d'inodes utilisés. Quand un horodatage apparaît dans la colonne grace, comme par exemple pour Bob, cela signifie que l'utilisateur (ou le groupe) a dépassé la limite douce. Le délai de grâce est donc décompté.
Vous pouvez également utiliser la commande quota suivie du nom d'un utilisateur ou d'un groupe. Là encore vous obtiendrez toutes les informations relatives aux quotas et à l'utilisation de l'espace attribué.
Exemple : pour obtenir les informations liées aux quotas concernant Anne :
root@pingu# quota anne Disk quotas for user anne (uid 500): Filesystem blocks quota limit grace files quota limit grace /dev/hdc10 7293 9000 10000 5 9000 10000
Vérifications et synchronisation des fichiers de quotas
Il peut arriver que les fichiers de quotas deviennent incohérents. La gestion de ceux-ci devient alors impossible. D'autre part, lorsque vous ajoutez un nouvel utilisateur ou un nouveau groupe à l'aide de la commande edquota, il faut là encore synchroniser les fichiers pour la prise en compte de ces nouvelles informations.
Syntaxe : quotacheck [ -vug ] -a | filesystem
- -v : mode verbeux, affiche des infos supplémentaires
- -u : vérifie uniquement les fichiers de quotas utilisateurs
- -g : vérifie uniquement les fichiers de quotas groupes
- -a : vérifie les fichiers de quotas de tous les systèmes de fichiers en disposant
- filesystem : vérifie les fichiers de quotas du système de fichiers spécifié
Exemple : vérifier tous les fichiers de quotas, quelque soit le système de fichiers concerné
root@pingu# quotaoff -a
root@pingu# quotacheck -auvg
quotacheck: Scanning /dev/hdc10 [/home/anne/quota] done
quotacheck: Checked 2 directories and 10 files
En conclusion...
Voilà pour ce tutorial concernant les quotas. Pour plus d'informations, consulter le man des commandes : repquota, quotaon, quotaoff, quotacheck, edquota.
N'hésitez pas à laisser un message pour tout ajout ou correction concernant cet article.
Copyright
Copyright © 02/03/2003, Anne
![]() ![]() ![]() ![]() |
Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique, Contexte non commercial 2.0 : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ |