Quotas du système de fichiers

Les systèmes de fichiers Google Cloud Managed Lustre sont compatibles avec les quotas d'utilisateur, de groupe et de projet, ce qui permet aux administrateurs de gérer la consommation de stockage et de garantir une allocation é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 le stockage consommé par un utilisateur individuel non racine.
  • Les quotas de groupe limitent le stockage consommé par tous les membres non racine d'un groupe spécifique.
  • Les quotas de projet limitent le stockage consommé par les fichiers et les répertoires associés à un ID de projet particulier. Cet ID de projet est un identifiant de système de fichiers Lustre, défini à l'aide de lfs project, et n'est pas votre Google Cloud ID du projet. Pour en savoir plus, consultez la section Définir un quota de projet.

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

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

Chaque type de ressource peut avoir 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 dépasser temporairement la limite flexible, jusqu'à la limite stricte s'il en existe une, ce qui leur donne 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, bloquant 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, toutes les opérations d'écriture supplémentaires échouent et renvoient une erreur "Disk quota exceeded" (Quota de disque dépassé).

Administrer les utilisateurs et les groupes

Lustre s'appuie sur les attributs POSIX du client pour les noms et les 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 des quotas.

Pour un comportement cohérent dans un environnement multi-utilisateurs, tous les clients installant le système de fichiers Lustre doivent avoir des mappages UID et GID synchronisés, généralement gérés via 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 avez besoin des éléments suivants :

  • Accès client à un système de fichiers Google Cloud Managed Lustre actif.
  • Privilèges 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 les limites de blocs, uniquement les limites d'inodes, ou les deux. De même, vous pouvez spécifier des limites strictes, des limites flexibles, 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 nom d'utilisateur ou UID. Lustre résout les noms d'utilisateur à l'aide des attributs POSIX du client.
  • -g spécifie un groupe par nom de groupe ou GID. Lustre résout les noms de groupe à l'aide des attributs POSIX du client.
  • -p spécifie un projet par nom de projet ou ID du projet. Si vous spécifiez un nom de projet, il doit être mappé à un ID de projet à l'aide d'un fichier de mappage tel que /etc/projid sur le client.
  • U, G et P définissent le quota par défaut pour tous les utilisateurs, groupes ou projets pour lesquels aucun quota spécifique n'est défini.
  • UGP_VALUE correspond au nom d'utilisateur, au nom de groupe, au nom de projet, à l'UID, au GID ou à l'ID du projet. Les ID doivent être des entiers compris entre 0 et 4294967295. Omettez cette valeur si vous spécifiez des quotas d'utilisateur, de groupe ou de projet par défaut.
  • -b et -B sont respectivement les limites flexibles et strictes pour l'utilisation des blocs. Les limites flexibles 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 respectivement les limites flexibles et strictes pour l'utilisation des inodes. Les limites flexibles 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 flexibles est d'une semaine. Pour modifier le délai de grâce, consultez la section Configurer des délais de grâce.

Exemples

Définir un quota d'utilisateur

Définissez une limite de blocs flexible de 100 Go, une limite de blocs stricte de 120 Go, une limite d'inodes flexible de 10 000 et une limite d'inodes 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 blocs 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 des répertoires et des fichiers à un ID de projet :

  1. Utilisez la commande lfs project pour attribuer un ID de projet. Cet ID est un 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, de sorte que les nouveaux fichiers et répertoires créés dans le répertoire spécifié héritent de l'ID du projet.
    • -p indique à la commande de définir l'ID du projet donné sur le fichier ou le répertoire spécifié.
    • -r applique l'ID du projet de manière récursive à tous les fichiers et répertoires enfants.
    • PATH/TO/DIR/OR/FILE est le chemin d'accès à un répertoire ou à un fichier sur lequel définir l'ID du projet. Vous ne pouvez spécifier qu'un seul chemin d'accès ou fichier.

    Pour obtenir des informations et des options supplémentaires, exécutez man lfs project à partir de 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 blocs stricte de 50 To pour tous les utilisateurs sans paramètre de quota spécifique :

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

Modifier des quotas

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

Configurer des délais de grâce

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

Pour modifier 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'utilisateur.
  • -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 délais de grâce pour les blocs et les inodes. L'unité par défaut est la seconde. Vous pouvez utiliser d'autres unités au format suivant : XwXdXhXmXs (semaines, jours, heures, minutes, secondes). Vous pouvez définir des limites pour l'un ou les deux types de quotas.

    Spécifiez 'notify' au lieu d'une valeur temporelle pour marquer la sortie de lfs quota avec 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é tant que la limite stricte n'est pas atteinte.

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

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 envoyer une notification lorsqu'une limite flexible de blocs 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 à partir de 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 indique que :

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

Pour afficher les délais de grâce configurés pour tous les quotas d'utilisateur :

lfs quota -t -u /mnt/lustre

Surveiller les quotas dans Cloud Monitoring

En plus d'utiliser la commande lfs quota sur un client, vous pouvez afficher l'utilisation et les limites des quotas de système de fichiers via Cloud Monitoring. Cela vous permet de surveiller la consommation de stockage par utilisateur, groupe ou projet depuis la Google Cloud console.

Les métriques de quota sont associées à la ressource surveillée Entité de quota Lustre. Voici la liste des métriques disponibles :

  • Octets : octets utilisés, limite flexible et limite stricte.
  • Inodes : inodes utilisés, limite flexible et limite stricte.

Pour afficher ces métriques, procédez comme suit :

  1. Dans la Google Cloud console, accédez à la page Monitoring > Explorateur de métriques.

    Accéder à l'explorateur de métriques

  2. Dans le champ Sélectionner une métrique, recherchez et sélectionnez la ressource Entité de quota Lustre.

  3. Sélectionnez la métrique de quota spécifique que vous souhaitez afficher (par exemple, Quota Used Bytes (Octets utilisés du quota) ou Quota Hard Limit Inodes (Inodes de limite stricte du quota)).

  4. Vous pouvez également utiliser les options de Filtre pour afficher des entités spécifiques en filtrant sur le libellé accounting_type (par exemple, user, group, project) ou le libellé id (par exemple, l'UID, le GID ou l'ID du projet spécifique).

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 blocs de projet par défaut :

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

Problèmes courants

Lorsque vous utilisez 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 en tant qu'« 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 que les données ne soient physiquement écrites sur le disque. Il s'agit d'une optimisation des performances qui réduit la latence.

    Le cache accordé introduit le risque de dépassement 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 correctement attribué aux répertoires et aux fichiers à l'aide de lfs project -spr. Si vous omettez -r, l'ID de projet n'est 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.

  • Plusieurs quotas 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 plus restrictive de ces limites. 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 du répertoire de ce projet.

  • Contournement du quota d'utilisateur racine : les écritures d'un utilisateur root contournent l'application des quotas. 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 qui dépasse la limite stricte.