Differences between revisions 13 and 14
Revision 13 as of 2015-12-03 13:49:41
Size: 28727
Editor: vauss
Comment: layout
Revision 14 as of 2017-04-23 01:03:04
Size: 28699
Editor: PaulWise
Comment: use Debian manpages
Deletions are marked like this. Additions are marked like this.
Line 21: Line 21:
 * http://linux.die.net/man/8/xfs_quota project quota  * [[DebianMan:8/xfs_quota|project quota]]
Line 40: Line 40:
A priori, seul le système de fichier XFS supporte [[http://linux.die.net/man/8/xfs_quota|project quota]]. A priori, seul le système de fichier XFS supporte [[DebianMan:8/xfs_quota|project quota]].
Line 373: Line 373:
 * http://linux.die.net/man/8/xfs_quota  * [[DebianMan:8/xfs_quota|xfs_quota]]
Line 462: Line 462:
 * http://linux.die.net/man/8/xfs_quota pour plus d'info.  * [[DebianMan:8/xfs_quota|xfs_quota]] pour plus d'info.

Traduction(s) : aucune


disk-quota.png

Cet article tente de présenter les différentes manières de gérer les quotas sous Debian. Notez que la notion de quota peut s'appliquer à un grand nombre de ressources locales, pas uniquement au système de fichier et pas uniquement la taille d'un répertoire. Le but de cet article n'est pas de dire quelle est la meilleure méthode, mais de présenter ce qui existe. Le lecteur sera seul juge pour savoir ce qui correspond le mieux à son besoin.

Système de fichier

Limiter la taille d'un répertoire

Présentation générale

Les outils de gestion de quota sont fonctions du système d'exploitation, du système de fichier et éventuellement du serveur de partage de fichiers utilisé.

L'objectif de cette partie est d'étudier les différents choix possibles dans le contexte Debian.

Références:

Cadre:

  • Distribution: Debian Lenny
  • Noyau: Linux
  • Système de fichier Ext3, XFS
  • Serveur de partage de données: Samba 3

Objectif: Étudier les solutions bas-niveau permettant de limiter l'espace disque alloué à certaines branches d'une arborescence de répertoire.

Présentation des méthodes existantes : Sous Linux, il existe trois méthodes :

  • L'association d'un quota à un compte utilisateur appelée user quota

  • L'association d'un quota à un groupe utilisateur appelée group quota

  • L'association d'un quota à un répertoire appelée project quota

A priori, seul le système de fichier XFS supporte project quota.

Question(s):

  • Pourquoi n'utilise-t-on pas XFS plutôt que Ext3 par défaut sous Debian ? 1 2

  • Ext4 supporte-il le project quota ?

user quota et group quota

Présentation

Les droits UNIX standards n'autorisent l'affectation que d'un groupe par répertoire. Dans le cas d'une arborescence de dossiers, deux possibilités seront disponibles : avec ou sans ACL.

Il faut savoir que les quotas utilisent exclusivement les droits UNIX standards et pas les ACL :

  • Il est donc préférable d'utiliser les ACL pour la gestion des droits d'accès réels et d'utiliser les droits UNIX standards pour la gestion des quotas
  • Il n'est pas possible d'avoir un répertoire appartenant à plusieurs quotas. (un user quota et un group quota maximum)

Remarque(s):

  • A noter cependant que si les droits d'accès suivent scrupuleusement les mêmes affectations que les quotas alors, dans ce cas très particulier, on n'aura pas besoin d'utiliser les ACL et les quotas seront directement affectés aux groupes désignant les droits d'accès.

  • Attention, l'utilisateur "root" n'est pas toujours affecté par les quotas. Il n'est pas recommandé de tester le bon fonctionnement d'un quota avec ce compte utilisateur.
  • Enfin, il est important de comprendre que le quota sera réellement porté par le groupe et pas un répertoire. Si vous affectez ce groupe à trois répertoires, les trois consommeront le même quota.

Dans la suite de cette présentation, les droits d'accès aux répertoires seront supportés par des groupes affectés au niveau ACL. la gestion des quotas sera supportée par des groupes affectés au niveau des droits UNIX standard.

Si vous comprenez cet exemple, vous serez à même de l'appliquer pour toute autre situation.

Mise en place système

Sous l'utilisateur root

  • Le noyau Linux doit être compilé avec les options quota. C'est le cas avec le noyau fourni par Debian :

 grep -i CONFIG_QUOTA= /boot/config-*
   /boot/config-2.6.26-2-486:CONFIG_QUOTA=y
   /boot/config-2.6.26-2-686:CONFIG_QUOTA=y
  • Installation du nécessaire logiciel :

 aptitude update
 aptitude install quota quotatool acl
  • Création d'un système de fichier Ext3 :

 dd if=/dev/zero of=/root/file.ext3 bs=1M count=100
 mkfs.ext3 /root/file.ext3

Question(s):

  • En plus de Ext3, quels sont les autres formats de système de fichiers supportés par cette méthode ?

  • Montage du système de fichier :

 mkdir /media/mount.ext3
 mount -o loop,usrquota,grpquota,acl /root/file.ext3 /media/mount.ext3
  • Initialisation des informations de quota pour le système de fichier :

 quotacheck -c /media/mount.ext3
  • Démarrage du système de quota au niveau du système d'exploitation :

 /etc/init.d/quota start
   Checking quotas...done.
   Turning on quotas...done.
  • Consultation de l'état d'activation des quotas sur les systèmes de fichier :

 quotaon -ugvap
   group quota on /media/mount.ext3 (/dev/loop0) is on
   user quota on /media/mount.ext3 (/dev/loop0) is on
  • Consultation des quotas utilisateurs (que nous n'utiliserons pas):

 repquota -ust /media/mount.ext3
   *** Rapport pour les quotas user sur le périphérique /dev/loop0
   Période de sursis bloc : 7days ; période de sursis inode : 7days
                           Limites bloc               Limites fichier
   Utilisateur     utilisé souple stricte sursis utilisé souple stricte sursis
   ----------------------------------------------------------------------
   root      --    5663       0       0              4     0     0
  • Consultation des quotas des groupes (que nous utiliserons en association avec un répertoire):

 repquota -gst /media/mount.ext3
   *** Rapport pour les quotas group sur le périphérique /dev/loop0
   Période de sursis bloc : 7days ; période de sursis inode : 7days
                           Limites bloc               Limites fichier
   Groupe        utilisé souple stricte sursis utilisé souple stricte sursis
   ----------------------------------------------------------------------
   root      --    5663       0       0              4     0     0

Configuration des quotas

  • Création du répertoire à limiter à 20 Mo :

  mkdir /media/mount.ext3/dir20
  • Création d'un groupe correspondant au répertoire dir20 et qui portera cette notion de quota :

 addgroup quota-dir20
  • Affectation du groupe quota-dir20 au répertoire dir20 de manière récursive avec une héritage permanent :

  chown -R :quota-dir20 /media/mount.ext3/dir20
  chmod -R g+s /media/mount.ext3/dir20
  • Contrôle de la bonne affectation du groupe sur le répertoire dir20

  ls -l /media/mount.ext3 | grep dir20
   drwxr-sr-x 2 root quota-dir20  1024 aoû 13 09:32 dir20
  • Contrôle de l'héritage des droits d'accès du groupe :

 touch /media/mount.ext3/dir20/file1
 mkdir /media/mount.ext3/dir20/subdir
 touch /media/mount.ext3/dir20/subdir/file2
 ls -lgR /media/mount.ext3/
   /media/mount.ext3/:
   total 26
   -rw------- 1 root         7168 aoû 13 09:37 aquota.group
   -rw------- 1 root         6144 aoû 13 09:26 aquota.user
   drwxr-sr-x 3 quota-dir20  1024 aoû 13 09:39 dir20
   drwx------ 2 root        12288 aoû 13 09:22 lost+found
   
   /media/mount.ext3/dir20:
   total 1
   -rw-r--r-- 1 quota-dir20    0 aoû 13 09:39 file1
   drwxr-sr-x 2 quota-dir20 1024 aoû 13 09:39 subdir
   
   /media/mount.ext3/dir20/subdir:
   total 0
   -rw-r--r-- 1 quota-dir20 0 aoû 13 09:39 file2
  • Affectation d'un quota de type hardlimit de 20Mo sur le groupe quota-dir20

 quotatool -g quota-dir20 -b -l 20MB /media/mount.ext3

Remarque(s):

  • C'est aussi faisable avec edquota

  • Contrôle du bon enregistrement du quota

 repquota -gst /media/mount.ext3
   *** Rapport pour les quotas group sur le périphérique /dev/loop0
   Période de sursis bloc : 7days ; période de sursis inode : 7days
                           Limites bloc               Limites fichier
   Groupe        utilisé souple stricte sursis utilisé souple stricte sursis
   ----------------------------------------------------------------------
   root      --    5663       0       0              4     0     0
   quota-dir --       2       0   20480              4     0     0

Test de saturation

  • Création d'un utilisateur lambda :

 useradd usertest
  • Création d'un groupe dédié aux accès à subdir

 groupadd access-subdir-rw
  • Affectation au répertoire subdir des droits d'accès lecture/écriture pour le groupe access-subdir-rw :

 setfacl -R -m g:access-subdir-rw:rwx /media/mount.ext3/dir20/subdir
  • Affectation de l'héritage du droits d'accès (option d) :

 setfacl -R -m d:g:access-subdir-rw:rwx /media/mount.ext3/dir20/subdir
  • Vérification de la bonne affectation des droits d'accès:

 getfacl -R /media/mount.ext3/dir20/subdir
   getfacl: Removing leading '/' from absolute path names
   # file: media/mount.ext3/dir20/subdir
   # owner: root
   # group: quota-dir20
   user::rwx
   group::r-x
   group:access-subdir-rw:rwx
   mask::rwx
   other::r-x
   default:user::rwx
   default:group::r-x
   default:group:access-subdir-rw:rwx
   default:mask::rwx
   default:other::r-x
   
   # file: media/mount.ext3/dir20/subdir/file2
   # owner: root
   # group: quota-dir20
   user::rw-
   group::r--
   group:access-subdir-rw:rwx
   mask::rwx
   other::r--
  • Rendre l'utilisateur usertest membre du groupe access-subdir-rw

 usermod -a -G access-subdir-rw usertest
  • Vérification :

 id usertest
   uid=1001(usertest) gid=1004(usertest) groupes=1004(usertest),1005(access-subdir-rw)
  • Passage sous l'identité de l'utilisateur usertest (on était en root jusqu'à maintenant ...)

 su - usertest
  • Vérification de l'impossibilité d'écrire dans le répertoire dir20 :

 touch /media/mount.ext3/dir20/file3
   touch: ne peut faire un touch sur `/media/mount.ext3/dir20/file3': Permission non accordée
  • Vérification de la possibilité d'écrire dans le répertoire subdir :

 touch /media/mount.ext3/dir20/subdir/file3
  • Contrôle du bon héritage du quota et des droits d'accès :

 getfacl /media/mount.ext3/dir20/subdir/file3
   getfacl: Removing leading '/' from absolute path names
   # file: media/mount.ext3/dir20/subdir/file3
   # owner: usertest
   # group: quota-dir20
   user::rw-
   group::r-x                      #effective:r--
   group:access-subdir-rw:rwx      #effective:rw-
   mask::rw-
   other::r--
  • Test d'écriture avec un premier fichier de 10 Mo :

 dd if=/dev/zero of=/media/mount.ext3/dir20/subdir/10Mo.file1 bs=1M count=10
   10+0 enregistrements lus
   10+0 enregistrements écrits
   10485760 bytes (10 MB) copied, 0,103248 s, 102 MB/s
  • Contrôle avec l'utilisateur root de l'état du quota quota-dir20 :

 exit
 repquota -gst /media/mount.ext3
   *** Rapport pour les quotas group sur le périphérique /dev/loop0
   Période de sursis bloc : 7days ; période de sursis inode : 7days
                           Limites bloc               Limites fichier
   Groupe        utilisé souple stricte sursis utilisé souple stricte sursis
   ----------------------------------------------------------------------
   root      --    5663       0       0              4     0     0
   quota-dir --   10287       0   20480              6     0     0
  • Passage sous l'identité de l'utilisateur usertest

 su - usertest
  • Test de saturation du quota avec un fichier supplémentaire de 10 Mo :

 dd if=/dev/zero of=/media/mount.ext3/dir20/subdir/10Mo.file2 bs=1M count=10
   dd: écriture de `/media/mount.ext3/dir20/subdir/10Mo.file2': Débordement du quota d'espace disque
   10+0 enregistrements lus
   9+0 enregistrements écrits
   10391552 bytes (10 MB) copied, 0,100972 s, 103 MB/s

Remarque(s) :

  • On voit que le programme dd n'a pu écrire que 9 enregistrements de 1Mo, le dixième ayant occasionné le débordement de quota.

  • Test d'une copie :

 cp /media/test/dir20/subdir/10Mo.file1 /media/mount.ext3/dir20/subdir/10Mo.file3
   cp: ne peut créer le fichier régulier `/media/mount.ext3/dir20/subdir/10Mo.file3': Débordement du quota d'espace disque

Dépannage

Trouver ici les messages d'erreur rencontrés lors de cette expérimentation.

quotaon: Impossible de trouver le fichier de quotas

Symptôme:

 quotaon -ugva
   quotaon: Impossible de trouver le fichier de quotas sur /media/test [/dev/loop0] pour activer/désactiver les quotas.
   quotaon: Impossible de trouver le fichier de quotas sur /media/test [/dev/loop0] pour activer/désactiver les quotas.

Résolution:

  • Initialiser les fichiers d'enregistrement des quotas :

 quotacheck -c /media/mount.ext3

project quota

Réf:

Présentation

La méthode project quota est à ma connaissance supportée que par le système de fichier XFS. L'intérêt est qu'il n'est plus obligatoire de passer par les ACL dans le cas où la délimitation des quotas ne suit pas scrupuleusement celles des droits d'accès. En effet, les droits d'accès pourront continuer d'être affectés directement au niveau des droits UNIX standards. Les quotas seront quant à eux gérés dans un fichier de configuration dédié.

A noter que XFS supporte nativement la gestion des quotas et des ACL :

  • Il n'y a donc pas à les spécifier lors du montage du système de fichier.
  • Il n'y a aucune étape d'initialisation à faire comme avec les Ext3.
  • Il n'y a pas de groupe fictif à créer pour chaque quota et polluant la liste des groupes du système

  • Les informations des quotas étant enregistrés dans des fichiers dédiés et non dans /etc/group, il est plus facile de gérer des sécurisations haute disponibilté comme Hearbeat/DRDB et la sauvegarde de cette configuration.
  • Même l'utilisateur root est concerné par ce type quota.
  • Le noyau Linux est compilé par défaut pour gérer 25 ACL maximum par répertoire (cf. linux-source-2.6.26_2.6.26-26lenny2_all\data\linux-source-2.6.26\linux-source-2.6.26\fs\xfs\xfs_acl.h, #define XFS_ACL_MAX_ENTRIES 25)

Dans le cas suivant, les droits d'accès aux répertoires seront supportés par des groupes affectés au niveau ACL. Mais comme indiqué précédemment, la gestion des droits d'accès exclusivement via les droits UNIX standards est tout à fait possible si elle vous convient. Vous n'êtes pas obligés d'utiliser les ACL.

Mise en place système

Sous l'utilisateur root:

  • Le kernel Linux doit être compilé avec les options quota. C'est le cas avec le noyau fourni par Debian :

 grep -i CONFIG_XFS_QUOTA= /boot/config-*
 /boot/config-2.6.26-2-486:CONFIG_XFS_QUOTA=y
 /boot/config-2.6.26-2-686:CONFIG_XFS_QUOTA=y
  • Installation du nécessaire logiciel:

 aptitude update
 aptitude install xfsprogs xfsdump

Question(s):

  • Je ne suis pas certain qu'xfsdump soit utile dans le cadre de cet exemple. A revérifier à l'occasion, mais il reste un outil bas niveau très recommandé lors de l'utilisation de système de fichier au format XFS.

  • Création d'un système de fichier XFS :

 dd if=/dev/zero of=/root/file.xfs bs=1M count=100
 mkfs.xfs /root/file.xfs
  • Montage du système de fichier :

 mkdir /media/mount.xfs
 mount -o loop,prjquota /root/file.xfs /media/mount.xfs

Configuration des quotas

  • Création du répertoire à limiter à 20 Mo :

 mkdir /media/mount.xfs/dir20
  • Déclaration du project quota lié au répertoire dir20. Nous donnons de manière arbitraire l'identifiant n°1 à ce projet. L'essentiel est de cet identifiant soit unique dans le fichier.

 echo 1:/media/mount.xfs/dir20 >> /etc/projects
  • Affectation d'un nom arbitraire "prjdir20" à ce project quota n°1 :

 echo prjdir20:1 >> /etc/projid

Question(s):

  • Les noms et l'emplacement de ces deux fichiers de configuration sont-ils personnalisable ? En alternative, utiliser des liens symboliques pour stocker physiquement ces fichiers à un autre endroit de votre choix.

  • Enregistrement du project quota prjdir20 sur le système de fichier :

  xfs_quota -x -c 'project -s prjdir20' /media/mount.xfs
   Setting up project prjdir20 (path /media/mount.xfs/dir20)...
   Processed 1 /etc/projects paths for project prjdir20

Remarque(s):

  • La ligne de commande peut sembler un peu barbare, mais en fait, xfs_quota utilise sa propre interface de ligne de commande. J'ai choisi ici d'utiliser l'option -c pour lui passer directement les commandes à exécuter pour une question de présentation dans cet article. Vous pouvez également lancer xfs_quota /media/mount.xfs, puis une fois à l'invite de commande "xfs_quota>", saisissez la commande project -s prjdir20

  • xfs_quota pour plus d'info.

  • Affectation d'un quota de 20 Mo

 xfs_quota -x -c 'limit -p bhard=20m prjdir20' /media/mount.xfs
  • Vérification de l'enregistrement du project quota auprès du système de fichier :

 xfs_quota -x -c report /media/mount.xfs
   Project quota on /media/mount.xfs (/dev/loop1)
                                  Blocks
   Project ID       Used       Soft       Hard    Warn/Grace
   ---------- --------------------------------------------------
   prjdir20            0          0      20480     00 [--------]
  • Création d'un sous répertoire subdir :

 mkdir /media/mount.xfs/dir20/subdir

Test de saturation

  • Création d'un fichier de 5 Mo dans subdir :

  dd if=/dev/zero of=/media/mount.xfs/dir20/subdir/5Mo.file bs=1M count=5
   5+0 enregistrements lus
   5+0 enregistrements écrits
   5242880 bytes (5,2 MB) copied, 0,0131463 s, 399 MB/s
  • Vérification de l'enregistrement du project quota auprès du système de fichier :

 xfs_quota -x -c report /media/mount.xfs
   Project quota on /media/mount.xfs (/dev/loop1)
                                  Blocks
   Project ID       Used       Soft       Hard    Warn/Grace
   ---------- --------------------------------------------------
   prjdir20         '''5120'''          0      20480     00 [--------]
  • Test de saturation avec l'utilisateur root :

 dd if=/dev/zero of=/media/mount.xfs/dir20/subdir/20Mo.file bs=1M count=20
   dd: écriture de `/media/mount.xfs/dir20/subdir/20Mo.file': Aucun espace disponible sur le périphérique
   15+0 enregistrements lus
   14+0 enregistrements écrits
   15724544 bytes (16 MB) copied, 1,53576 s, 10,2 MB/s
  • Suppression du test

 rm /media/mount.xfs/dir20/subdir/20Mo.file
  • Création d'un utilisateur lambda :

 useradd usertest
  • Création d'un groupe dédié aux accès liés à subdir

 groupadd access-subdir-rw
  • Affectation au répertoire subdir des droits d'accès lecture/écriture pour le groupe access-subdir-rw :

 setfacl -R -m g:access-subdir-rw:rwx /media/mount.xfs/dir20/subdir
  • Affectation de l'héritage du droits d'accès :

  setfacl -R -m d:g:access-subdir-rw:rwx /media/mount.xfs/dir20/subdir
  • Vérification de la bonne affectation des droits d'accès :

 getfacl -R /media/mount.xfs/dir20/subdir
   getfacl: Removing leading '/' from absolute path names
   # file: media/mount.xfs/dir20/subdir
   # owner: root
   # group: root
   user::rwx
   group::r-x
   group:access-subdir-rw:rwx
   mask::rwx
   other::r-x
   default:user::rwx
   default:group::r-x
   default:group:access-subdir-rw:rwx
   default:mask::rwx
   default:other::r-x
   
   # file: media/mount.xfs/dir20/subdir/5Mo.file
   # owner: root
   # group: root
   user::rw-
   group::r--
   group:access-subdir-rw:rwx
   mask::rwx
   other::r--
  • Rendre l'utilisateur usertest membre du groupe access-subdir-rw

 usermod -a -G access-subdir-rw usertest
  • Vérification :

 id usertest
   uid=1001(usertest) gid=1004(usertest) groupes=1004(usertest),1005(access-subdir-rw)
  • Passage sous l'identité de l'utilisateur usertest

 su - usertest
  • Vérification de l'impossibilité d'écrire dans le répertoire dir20 :

 touch /media/mount.xfs/dir20/file3
   touch: ne peut faire un touch sur `/media/mount.xfs/dir20/file3': Permission non accordée
  • Vérification de l'impossibilité d'écrire dans le répertoire dir20 :

 touch /media/mount.xfs/dir20/subdir/file3
  • Contrôle du bon héritage du quota et des droits d'accès :

 getfacl /media/mount.xfs/dir20/subdir/file3
   getfacl: Removing leading '/' from absolute path names
   # file: media/mount.xfs/dir20/subdir/file3
   # owner: usertest
   # group: usertest
   user::rw-
   group::r-x                      #effective:r--
   group:access-subdir-rw:rwx      #effective:rw-
   mask::rw-
   other::r--
  • Test d'écriture avec un premier fichier de 10Mo:

 dd if=/dev/zero of=/media/mount.xfs/dir20/subdir/10Mo.file1 bs=1M count=10
   10+0 enregistrements lus
   10+0 enregistrements écrits
   10485760 bytes (10 MB) copied, 0,0249121 s, 421 MB/s
  • Contrôle avec l'utilisateur root de l'état du quota quota-dir20 :

 exit
 xfs_quota -x -c report /media/mount.xfs
   Project quota on /media/mount.xfs (/dev/loop1)
                                  Blocks
   Project ID       Used       Soft       Hard    Warn/Grace
   ---------- --------------------------------------------------
   prjdir20        15364          0      20480     00 [--------]
  • Passage sous l'identité de l'utilisateur usertest

 su - usertest
  • Test de saturation du quota avec un fichier supplémentaire de 10 Mo :

 dd if=/dev/zero of=/media/mount.xfs/dir20/subdir/10Mo.file2 bs=1M count=10
   dd: écriture de `/media/mount.xfs/dir20/subdir/10Mo.file2': Aucun espace disponible sur le périphérique
   5+0 enregistrements lus
   4+0 enregistrements écrits
   5234688 bytes (5,2 MB) copied, 1,51469 s, 3,5 MB/s
  • Test d'une copie:

 cp /media/mount.xfs/dir20/subdir/10Mo.file1 /media/mount.xfs/dir20/subdir/10Mo.file3
   cp: ne peut créer le fichier régulier `/media/mount.xfs/dir20/subdir/10Mo.file3': Débordement du quota d'espace disque

Quotas imbriqués

  • Déclaration du project quota lié au répertoire subdir. Nous donnons de manière arbitraire l'identifiant n°2 à ce projet. A noter que ce nouveau project quota est imbriqué dans prjdir20. Ce qui n'est pas faisable avec la méthode group quota

 echo 2:/media/mount.xfs/dir20/subdir >> /etc/projects
  • Affectation d'un nom "prjsubdir" à ce project quota n°2 :

 echo prjsubdir:2 >> /etc/projid
  • Enregistrement du project quota prjdir20 sur le système de fichier :

 xfs_quota -x -c 'project -s prjsubdir' /media/mount.xfs
   Setting up project prjsubdir (path /media/mount.xfs/dir20/subdir)...
   Processed 1 /etc/projects paths for project prjsubdir
  • Affectation d'un quota de 10Mo

 xfs_quota -x -c 'limit -p bhard=10m prjsubdir' /media/mount.xfs
  • Vérification de l'enregistrement du project quota auprès du système de fichier :

 xfs_quota -x -c report /media/mount.xfs
   Project quota on /media/mount.xfs (/dev/loop1)
                                  Blocks
   Project ID       Used       Soft       Hard    Warn/Grace
   ---------- --------------------------------------------------
   prjdir20            0          0      20480     00 [--------]
   prjsubdir       20476          0      10240     00 [--none--]
  • Suppression des fichiers de test :

 rm /media/mount.xfs/dir20/subdir/*
  • Vérification :

 xfs_quota -x -c report /media/mount.xfs
   Project quota on /media/mount.xfs (/dev/loop1)
                                  Blocks
   Project ID       Used       Soft       Hard    Warn/Grace
   ---------- --------------------------------------------------
   prjdir20            0          0      20480     00 [--------]
   prjsubdir           4          0      10240     00 [--------]
  • Ecriture dans prjdir20, mais pas dans prjsubdir :

 dd if=/dev/zero of=/media/mount.xfs/dir20/5Mo.file bs=1M count=5
   5+0 enregistrements lus
   5+0 enregistrements écrits
   5242880 bytes (5,2 MB) copied, 0,0131275 s, 399 MB/s
  • Vérification

 xfs_quota -x -c report /media/mount.xfs
   Project quota on /media/mount.xfs (/dev/loop1)
                                  Blocks
   Project ID       Used       Soft       Hard    Warn/Grace
   ---------- --------------------------------------------------
   prjdir20         5120          0      20480     00 [--------]
   prjsubdir           4          0      10240     00 [--------]
  • Ecriture dans prjsubdir. Est-ce que le fichier est aussi comptabilisé dans prjdir20 ?

 dd if=/dev/zero of=/media/mount.xfs/dir20/subdir/5Mo.file bs=1M count=5
   5+0 enregistrements lus
   5+0 enregistrements écrits
   5242880 bytes (5,2 MB) copied, 0,0133598 s, 392 MB/s
  • Les quotas imbriqués ne cumulent pas les données. Les espaces sont comptabilisés de manière scindée.

 xfs_quota -x -c report /media/mount.xfs
   Project quota on /media/mount.xfs (/dev/loop1)
                                  Blocks
   Project ID       Used       Soft       Hard    Warn/Grace
   ---------- --------------------------------------------------
   prjdir20         5120          0      20480     00 [--------]
   prjsubdir        5124          0      10240     00 [--------]

Remarque(s):

  • Attention à bien comprendre cette gestion où les quotas imbriqués se décomptent les uns des autres. Prennez bonne note de l'effet de bord suivant :
  • Soit un système de fichier de 35Go /fs
  • J'ai un répertoire /fs/a sur lequel j'affecte un project quota de 30 Go
  • J'utilise deux sous-répertoires /fs/a/b1 et /fs/a/b2 contenant un volume de données respectif de 15 Go et 10 Go
  • A ce stade, mon quota est à 25Go sur 30Go d'utilisation et mon système de fichier n'est pas saturé.
  • Si je crée un fichier de 15 Go dans /fs/a/b2, je me heurte au project quota défini sur /fs/a et je ne sature pas mon système de fichier /fs
  • Maintenant je souhaite définir un nouveau project quota sur /fs/a/b1 de 20Go ù Si je créé un fichier de 15 Go dans /fs/a/b2, je ne me heurte pas au project quota défini sur /fs/a car il ne prend plus en compte les données dans /fs/a/b1. Par contre je viens de saturer mon système de fichier.... J'aurais dû exclure manuellement le quota de /fs/a/b1 en redéfinissant le quota de /fs/a à (30 - 20 = 10Go) En tant que procédure de contrôle, vérifiez que la somme des quota ne dépasse pas la taille du système de fichier !

ToDo


Voir aussi: