Quotas du système de fichiers

Les systèmes de fichiers Lustre gérés par Google Cloud sont compatibles avec les quotas d'utilisateurs, de groupes et de projets. Les administrateurs peuvent ainsi gérer la consommation de stockage et assurer une répartition équitable des ressources. Ce document explique comment configurer, afficher et gérer ces quotas.

Que sont les quotas de système de fichiers ?

Les quotas dans Managed Lustre vous permettent de définir des limites sur la quantité d'espace disque et le nombre de fichiers que les utilisateurs, les groupes ou les projets peuvent consommer dans votre système de fichiers.

Les quotas sont appliqués à différentes entités :

  • Les quotas d'utilisateur limitent l'espace de stockage consommé par un utilisateur non racine.
  • Les quotas de groupe limitent l'espace de stockage consommé par tous les membres non racine d'un groupe spécifique.
  • Les quotas de projet limitent l'espace de stockage consommé par les fichiers et les répertoires associés à un ID de projet spécifique. Cet ID de projet est un identifiant de système de fichiers Lustre, défini à l'aide de lfs project. Il ne s'agit pas de votre ID de projetGoogle Cloud . Pour en savoir plus, consultez Définir un quota de projet.

Les quotas sont configurés pour deux types de ressources :

  • Les limites de blocs sont des limites sur la quantité d'espace disque pouvant être utilisée.
  • Les limites d'inodes sont des limites sur le nombre de fichiers et de répertoires pouvant être créés.

Chaque type de ressource peut comporter deux niveaux de limites :

  • Une limite flexible est un seuil de quota qui déclenche un délai de grâce configurable lorsqu'il est dépassé. Pendant ce délai de grâce, les utilisateurs, les groupes ou les projets peuvent temporairement dépasser la limite flexible, jusqu'à la limite stricte, le cas échéant. Ils ont ainsi le temps de réduire leur utilisation avant d'être bloqués. Une fois le délai de grâce expiré, si l'utilisation est toujours supérieure à la limite flexible, celle-ci est appliquée en tant que limite stricte, ce qui bloque toutes les nouvelles écritures jusqu'à ce que l'espace disque ou le nombre d'inodes soit inférieur à la limite flexible.

    Par défaut, le délai de grâce est d'une semaine.

  • Une limite stricte définit le maximum absolu. Si cette limite est atteinte, toute opération d'écriture supplémentaire échoue et renvoie une erreur "Quota de disque dépassé".

Administrer les utilisateurs et les groupes

Lustre s'appuie sur les attributs POSIX du client pour les noms et ID d'utilisateur et de groupe.

Lorsqu'un client effectue une requête de système de fichiers, il envoie l'UID et le GID locaux aux serveurs Lustre. Les serveurs utilisent ces attributs POSIX pour appliquer les autorisations de fichier standards et suivre l'utilisation du quota.

Pour un comportement cohérent dans un environnement multi-utilisateur, tous les clients qui montent le système de fichiers Lustre doivent avoir des mappages UID et GID synchronisés, généralement gérés par un service centralisé tel que LDAP ou NIS.

Les utilisateurs racine ne sont pas soumis à des quotas. Les commandes exécutées avec sudo contournent également les vérifications de quota.

Avant de commencer

Pour gérer les quotas Lustre, vous devez :

  • Accès client à un système de fichiers Google Cloud Managed Lustre actif.
  • Vous devez disposer des droits sudo ou racine sur le système client pour exécuter les commandes lfs.

Définir des quotas

Utilisez la commande lfs setquota pour configurer les limites de blocs et d'inodes. Vous pouvez spécifier uniquement des limites de blocs, uniquement des limites d'inodes, ou les deux. De même, vous pouvez spécifier des limites strictes, des limites souples ou les deux.

sudo lfs setquota -u | g | p | U | G | P UGP_VALUE \
      -b SOFT_BLOCK_LIMIT -B HARD_BLOCK_LIMIT \
      -i SOFT_INODE_LIMIT -I HARD_INODE_LIMIT \
      MOUNT_DIR

Où :

  • -u spécifie un utilisateur par son nom d'utilisateur ou son UID.
  • -g spécifie un groupe par nom ou par GID.
  • -p spécifie un projet par ID de projet.
  • U, G et P définissent le quota par défaut pour les utilisateurs, groupes ou projets pour lesquels aucun quota spécifique n'a été défini.
  • UGP_VALUE correspond au nom d'utilisateur, au nom de groupe, à l'UID, au GID ou à l'ID de projet. Ignorez cette valeur si vous spécifiez des quotas par défaut pour les utilisateurs, les groupes ou les projets.
  • -b et -B sont des limites flexibles et strictes pour l'utilisation des blocs. Les limites souples doivent être inférieures aux limites strictes. Les valeurs peuvent être spécifiées en octets (B), en kilo-octets (K), en mégaoctets (M), en gigaoctets (G) ou en téraoctets (T). L'unité par défaut est le kilo-octet.
  • -i et -I sont des limites flexibles et strictes pour l'utilisation des inodes. Les limites souples doivent être inférieures aux limites strictes.
  • MOUNT_DIR est le point d'installation du système de fichiers Managed Lustre.

Notez que vous ne pouvez pas configurer le délai de grâce en même temps que vous créez un quota. Le délai de grâce par défaut pour les limites souples est d'une semaine. Pour modifier le délai de grâce, consultez Configurer des délais de grâce.

Exemples

Définir un quota utilisateur

Définissez une limite de bloc souple de 100 Go, une limite de bloc stricte de 120 Go, une limite d'inode souple de 10 000 et une limite d'inode stricte de 12 000 pour user1 sur /mnt/lustre :

sudo lfs setquota -u user1 -b 100G -B 120G -i 10000 -I 12000 /mnt/lustre

Définir un quota de groupe

Définissez une limite de blocage stricte de 50 To pour groupA sur /mnt/lustre :

sudo lfs setquota -g groupA -B 50T /mnt/lustre

Définir un quota de projet

Les quotas de projet nécessitent une étape supplémentaire pour associer les répertoires et les fichiers à un ID de projet :

  1. Utilisez la commande lfs project pour attribuer un ID de projet. Cet ID est un nombre entier arbitraire qui identifie le projet.

    sudo lfs project -spr LFS_PROJECT_ID PATH/TO/DIR/OR/FILE
    

    Où :

    • -s définit l'héritage afin que les nouveaux fichiers et répertoires créés dans le répertoire spécifié héritent de l'ID du projet.
    • -r applique l'ID du projet de manière récursive à tous les fichiers et répertoires enfants.
    • -p indique à la commande de définir l'ID de projet donné sur le fichier ou le répertoire spécifié.
    • PATH/TO/DIR/OR/FILE correspond au chemin d'accès à un répertoire ou à un fichier sur lequel définir l'ID de projet. Vous ne pouvez spécifier qu'un seul chemin d'accès ou fichier.

    Pour obtenir d'autres indicateurs et informations, exécutez man lfs project depuis votre client.

    Par exemple, pour attribuer le projet 101 à /mnt/lustre/my-project et à tous les enfants nouveaux et existants :

    sudo lfs project -spr 101 /mnt/lustre/my-project
    
  2. Définissez le quota à l'aide de lfs setquota :

    sudo lfs setquota -p LFS_PROJECT_ID \
      -b SOFT_BLOCK_LIMIT -B HARD_BLOCK_LIMIT \
      -i SOFT_INODE_LIMIT -I HARD_INODE_LIMIT \
      MOUNT_DIR
    

Définir un quota par défaut

Définissez une limite de blocage strict de 50 To pour tous les utilisateurs sans paramètre de quota spécifique :

sudo lfs setquota -U -B 50T /mnt/lustre

Modifier les quotas

Pour modifier un quota existant, exécutez à nouveau lfs setquota avec les nouvelles valeurs. La commande écrase les paramètres précédents pour l'utilisateur, le groupe ou le projet spécifiés.

Configurer des périodes de grâce

Les périodes de grâce définissent la durée pendant laquelle un utilisateur, un groupe ou un projet peuvent dépasser une limite flexible avant que celle-ci ne devienne une limite stricte. Par défaut, cette valeur est d'une semaine. Les périodes de grâce sont définies pour tous les utilisateurs, groupes ou projets. Elles ne peuvent pas être définies pour des ID spécifiques.

Pour mettre à jour un délai de grâce, utilisez la commande lfs setquota -t :

sudo lfs setquota -t -u | g | p \
  -b BLOCK_GRACE_PERIOD -i INODE_GRACE_PERIOD \
  MOUNT_DIR

Où :

  • -u applique le délai de grâce aux quotas d'utilisateurs.
  • -g applique le délai de grâce aux quotas de groupe.
  • -p applique le délai de grâce aux quotas de projet.
  • -b et -i spécifient respectivement les périodes de grâce des blocs et des inodes. L'unité par défaut est la seconde. Vous pouvez utiliser d'autres unités avec le format XwXdXhXmXs (semaines, jours, heures, minutes, secondes). Vous pouvez définir des limites pour l'un ou l'autre des types de quotas, ou les deux.

    Spécifiez 'notify' au lieu d'une valeur temporelle pour marquer la sortie de lfs quota d'un astérisque lorsque la limite flexible a été dépassée. Les nouvelles écritures ne sont pas bloquées lorsque 'notify' est spécifié, jusqu'à ce que la limite stricte soit atteinte.

Par exemple, pour définir un délai de grâce de sept jours pour toutes les quotas d'utilisateurs :

sudo lfs setquota -t -u -b 7d /mnt/lustre

Pour définir un délai de grâce de 24 heures pour les quotas de projet :

sudo lfs setquota -t -p -i 24h /mnt/lustre

Pour recevoir une notification lorsqu'une limite flexible de bloc est dépassée :

sudo lfs setquota -t -u -b 'notify' /mnt/lustre

Afficher les quotas existants

La commande lfs quota affiche l'utilisation et les limites pour l'utilisateur actuel :

lfs quota MOUNT_DIR

Pour obtenir la liste complète des options, exécutez man lfs quota depuis votre client.

Par exemple, pour afficher le quota de user1 sur /mnt/lustre :

sudo lfs quota -u user1 /mnt/lustre

Notez que pour afficher le quota et l'utilisation d'un autre utilisateur, vous devez exécuter la commande avec sudo.

Le résultat suivant s'affiche :

  • Filesystem : point d'installation Lustre.
  • kbytes : utilisation actuelle du disque en kilo-octets.
  • bquota : limite de blocage temporaire en kilo-octets.
  • blimit : limite de blocage strict en kilo-octets.
  • bgrace : période de grâce restante si la limite flexible de blocage est dépassée. Un astérisque (*) indique que la limite flexible a été dépassée.
  • files : nombre d'inodes utilisés.
  • iquota : limite flexible d'inodes.
  • ilimit : limite stricte du nombre d'inodes.
  • igrace : délai de grâce restant si la limite logicielle d'inodes est dépassée. Un astérisque (*) indique que la limite flexible a été dépassée.

Pour afficher les périodes de grâce configurées pour tous les quotas d'utilisateurs :

lfs quota -t -u /mnt/lustre

Supprimer des quotas

Pour supprimer un quota, définissez ses limites flexibles et strictes sur 0.

sudo lfs setquota -u | g | p | U | G | P UGP_VALUE -b 0 -B 0 -i 0 -I 0 MOUNT_DIR

Par exemple, pour supprimer les quotas de blocs et d'inodes de user1 :

sudo lfs setquota -u user1 -b 0 -B 0 -i 0 -I 0 /mnt/lustre

Pour supprimer la limite de blocage du projet par défaut :

sudo lfs setquota -P -b 0 -B 0 /mnt/lustre

Problèmes courants

Lorsque vous travaillez avec des quotas Lustre, tenez compte des problèmes courants suivants :

  • Cache accordé : le cache accordé est une fonctionnalité Lustre qui permet aux clients de recevoir un bloc de stockage sous forme d'autorisation de la cible de stockage d'objets (OST) pour écrire des données. Lorsqu'un client dispose de ce cache accordé, il peut immédiatement renvoyer un message de réussite à l'utilisateur pour une opération d'écriture, même si les données se trouvent toujours dans le cache local du client et avant qu'elles ne soient physiquement écrites sur le disque. Il s'agit d'une optimisation des performances qui minimise la latence.

    Le cache accordé peut entraîner des dépassements de quota. Étant donné que le cache accordé permet aux clients de continuer à écrire des données dans leur cache même si leur quota côté serveur a été épuisé entre-temps, il est possible qu'un utilisateur dépasse sa limite stricte.

  • Attribution incorrecte de l'ID de projet : pour que les quotas de projet fonctionnent, un ID de projet doit être attribué correctement aux répertoires et aux fichiers à l'aide de lfs project -spr. Si vous omettez -r, l'ID de projet ne sera pas appliqué aux fichiers et sous-répertoires existants. Si vous omettez -s, les nouveaux fichiers et répertoires créés ultérieurement n'hériteront pas de l'ID du projet.

  • Quotas multiples et "le plus restrictif l'emporte" : un utilisateur peut être soumis simultanément à un quota d'utilisateur, à un ou plusieurs quotas de groupe, et à un ou plusieurs quotas de projet. Lustre applique la limite la plus restrictive. Cela signifie qu'un utilisateur peut disposer d'un quota personnel important, mais être limité par un quota de projet plus petit pour les fichiers se trouvant dans le répertoire de ce projet.

  • Contournement du quota pour l'utilisateur racine : les écritures d'un utilisateur root contournent l'application du quota. Cela peut entraîner le remplissage du système de fichiers par des tâches administratives, même lorsque des quotas sont en place pour d'autres utilisateurs.

  • fallocate ne respecte pas les quotas : les utilisateurs peuvent utiliser fallocate pour réserver de l'espace sur le système de fichiers au-delà de la limite stricte.