Cloud Storage FUSE

Cette page présente Cloud Storage FUSE, un adaptateur FUSE qui permet d'installer des buckets Cloud Storage en tant que systèmes de fichiers locaux et d'y accéder. Ainsi les applications peuvent lire et écrire des objets dans votre bucket à l'aide d'une sémantique standard de système de fichiers.

Cette documentation reflète toujours la dernière version de Cloud Storage FUSE. Pour en savoir plus sur la dernière version, consultez la page décrivant les versions de Cloud Storage FUSE sur GitHub.

Présentation

Cloud Storage FUSE est un produit Open Source compatible avec Google. Cloud Storage FUSE utilise les API FUSE et Cloud Storage pour exposer de manière transparente les buckets en tant que dossiers installés localement sur votre système de fichiers.

Cloud Storage FUSE est intégré à d'autres services Google Cloud. Par exemple, le pilote CSI Cloud Storage FUSE vous permet d'utiliser l'API Google Kubernetes Engine (GKE) pour utiliser des buckets en tant que volumes, ce qui vous permet de lire et d'écrire dans Cloud Storage depuis vos pods Kubernetes. Pour en savoir plus sur les autres intégrations, consultez la page Intégrations.

Fonctionnement de Cloud Storage FUSE

Cloud Storage FUSE convertit les noms de stockage d'objets en une structure semblable à un répertoire, en interprétant le caractère de barre oblique (/) dans les noms d'objet comme un séparateur de répertoires. Les objets partageant un préfixe commun sont traités comme des fichiers du même répertoire, ce qui permet aux applications d'interagir avec le bucket installé comme un système de fichiers. Les objets peuvent également être organisés dans une structure de système de fichiers logique à l'aide d'un espace de noms hiérarchique, ce qui vous permet de les organiser dans des dossiers.

Cloud Storage FUSE peut être exécuté n'importe où du moment que la connectivité à Cloud Storage est assurée, y compris sur Google Kubernetes Engine, sur des VM Compute Engine ou sur des systèmes sur site.

Cas d'utilisation de Cloud Storage FUSE

Cloud Storage FUSE est idéal pour les cas d'utilisation où Cloud Storage présente les caractéristiques de performances et d'évolutivité adéquates pour une application nécessitant une sémantique de système de fichiers. Par exemple, Cloud Storage FUSE est utile pour les projets de machine learning (ML), car il permet de stocker des données, des modèles, des points de contrôle et des journaux directement dans Cloud Storage. Pour en savoir plus, consultez la page Cloud Storage FUSE pour les charges de travail de ML.

Cloud Storage FUSE pour le machine learning

Cloud Storage FUSE est une solution couramment utilisée par les développeurs qui souhaitent stocker et accéder aux données d'entraînement et de modèle de ML en tant qu'objets dans Cloud Storage. Cloud Storage FUSE offre plusieurs avantages pour le développement de projets de ML:

  • Cloud Storage FUSE vous permet d'installer des buckets Cloud Storage en tant que système de fichiers local afin que vos applications puissent accéder aux données d'entraînement et de modèle à l'aide d'une sémantique standard de système de fichiers. Cela signifie que vous pouvez éviter les coûts de réécriture ou de refactorisation du code de votre application lorsque vous utilisez Cloud Storage pour stocker des données de ML.

  • De l'entraînement à l'inférence, Cloud Storage FUSE vous permet d'utiliser l'évolutivité, les performances et la rentabilité élevées de Cloud Storage, afin que vous puissiez exécuter vos charges de travail de ML à grande échelle.

  • Cloud Storage FUSE vous permet de démarrer rapidement des jobs d'entraînement en fournissant des ressources de calcul avec un accès direct aux données dans Cloud Storage. Vous n'avez donc pas besoin de télécharger des données d'entraînement dans la ressource de calcul.

Pour en savoir plus, consultez la page Frameworks, systèmes d'exploitation et architectures compatibles avec Cloud Storage FUSE.

Frameworks, systèmes d'exploitation et architectures

Cloud Storage FUSE a été validé avec les frameworks suivants :

  • TensorFlow V2.x

  • TensorFlow V1.x

  • PyTorch V2.x

  • PyTorch V1.x

  • JAX 0.4.x

Cloud Storage FUSE est compatible avec les systèmes d'exploitation et architectures suivants :

  • Rocky Linux 8.9 ou version ultérieure

  • Ubuntu 18.04 ou version ultérieure

  • Debian 10 ou version ultérieure

  • CentOS 7.9 ou version ultérieure

  • RHEL 7.9 ou version ultérieure

  • SLES 15 ou version ultérieure

  • x86_64

  • ARM64

Intégrations de Cloud Storage FUSE aux produits Google Cloud

Cloud Storage FUSE s'intègre aux produits Google Cloud suivants:

Produit Intégration de Cloud Storage FUSE
Google Kubernetes Engine (GKE)

Le pilote CSI Cloud Storage FUSE gère l'intégration de Cloud Storage FUSE à l'API Kubernetes pour consommer les buckets Cloud Storage en tant que volumes. Vous pouvez utiliser le pilote CSI Cloud Storage FUSE pour installer des buckets en tant que systèmes de fichiers sur des nœuds Google Kubernetes Engine.

Vertex AI Training

Vous pouvez accéder aux données d'un bucket Cloud Storage en tant que système de fichiers installé lorsque vous effectuez un entraînement personnalisé sur Vertex AI. Pour en savoir plus, consultez la section Préparer le code d'entraînement.

Vertex AI Workbench

Les instances Vertex AI Workbench incluent une intégration de Cloud Storage qui vous permet de parcourir des buckets et d'utiliser des fichiers compatibles situés dans Cloud Storage à partir de l'interface JupyterLab. L'intégration de Cloud Storage vous permet d'accéder à tous les buckets et fichiers Cloud Storage auxquels votre instance a accès dans le même projet que votre instance Vertex AI Workbench. Pour configurer l'intégration, consultez les instructions de Vertex AI Workbench pour savoir comment accéder aux buckets et aux fichiers Cloud Storage dans JupyterLab.

Instances Deep Learning VM Image

Cloud Storage FUSE est préinstallé avec Deep Learning VM Image.

Conteneurs de deep learning

Pour installer des buckets Cloud Storage pour les conteneurs de deep learning, vous pouvez utiliser le Pilote CSI Cloud Storage FUSE (recommandé) ou installer Cloud Storage FUSE.

Batch

Cloud Storage FUSE vous permet d'installer des buckets Cloud Storage en tant que volumes de stockage lorsque vous créez et exécutez des jobs par lot. Vous pouvez spécifier un bucket dans la définition d'un job pour qu'il soit automatiquement installé sur les VM du job lors de son exécution.

Cloud Run

Cloud Run vous permet d'installer un bucket Cloud Storage en tant que volume et présente le contenu du bucket sous forme de fichiers dans le système de fichiers du conteneur. Pour configurer l'installation de volume, consultez la page Installer un volume Cloud Storage.

Cloud Composer

Lorsque vous créez un environnement, Cloud Composer stocke le code source de vos workflows et de leurs dépendances dans des dossiers spécifiques d'un bucket Cloud Storage. Cloud Composer utilise Cloud Storage FUSE pour mapper les dossiers du bucket aux composants Airflow de l'environnement Cloud Composer.

Pour obtenir la liste des produits Google Cloud intégrés à Cloud Storage de manière générale, consultez la section Intégration aux services et outils Google Cloud.

Mise en cache

Cloud Storage FUSE propose quatre types de mise en cache pour vous aider à augmenter les performances et à réduire les coûts : mise en cache des fichiers, des statistiques, des types et des listes. Pour en savoir plus sur ces caches, consultez la section Présentation de la mise en cache.

Sémantique des répertoires

Cloud Storage propose des buckets avec un espace de noms plat et des buckets avec un espace de noms hiérarchique activé. Par défaut, Cloud Storage FUSE peut déduire les répertoires définis explicitement, également appelés dossiers, dans les buckets avec un espace de noms hiérarchique activé, mais il ne peut pas déduire les répertoires définis implicitement dans les buckets avec un espace de noms plat. Les répertoires définis implicitement incluent les dossiers simulés et les dossiers gérés.

Par exemple, supposons que vous installiez un bucket nommé my-bucket, qui contient un objet nommé my-directory/my-object.txt, où my-directory/ est un dossier simulé. Lorsque vous exécutez ls sur le point d'installation du bucket, Cloud Storage FUSE ne peut pas accéder au répertoire simulé my-bucket/my-directory/ ni à l'objet my-object.txt qu'il contient, par défaut. Pour permettre à Cloud Storage FUSE d'inférer le dossier simulé et l'objet qu'il contient, incluez l'option --implicit-dirs dans votre commande gcsfuse mount lorsque vous installez un bucket d'espace de noms plat. Pour en savoir plus sur l'option --implicit-dirs, consultez la documentation de la ligne de commande Cloud Storage FUSE.

Si vous devez stocker et accéder à vos données à l'aide d'un système de fichiers, utilisez des buckets avec un espace de noms hiérarchique activé. Pour savoir comment créer de tels buckets, consultez la section Créer des buckets avec l'espace de noms hiérarchique activé.

Pour en savoir plus sur la sémantique des répertoires, y compris sur l'installation de buckets avec des répertoires définis implicitement, consultez la page Fichiers et répertoires dans la documentation GitHub.

Stratégie de nouvelle tentative

Par défaut, les requêtes ayant échoué depuis Cloud Storage FUSE vers Cloud Storage sont renouvelées avec un intervalle exponentiel entre les tentatives jusqu'à une durée d'intervalle maximale spécifiée, avec une valeur par défaut de 30s (30 secondes). Une fois que l'intervalle entre les tentatives dépasse la durée maximale spécifiée, la nouvelle tentative se poursuit avec la durée maximale spécifiée. Vous pouvez utiliser l'option --max-retry-sleep dans le cadre d'un appel gcsfuse pour spécifier l'intervalle entre les tentatives.

Pour en savoir plus sur l'option --max-retry-sleep, consultez la documentation de la ligne de commande gcsfuse.

Opérations Cloud Storage FUSE associées aux opérations Cloud Storage

Lorsque vous effectuez une opération à l'aide de Cloud Storage FUSE, vous effectuez également les opérations Cloud Storage associées à l'opération Cloud Storage FUSE. Le tableau suivant décrit les commandes Cloud Storage FUSE courantes et les opérations de l'API JSON Cloud Storage associées. Vous pouvez afficher des informations sur les opérations Cloud Storage FUSE en définissant l'option --log-severity sur TRACE dans votre commande gcsfuse.

Commande Opérations de l'API JSON
gcsfuse --log-severity=TRACE example-bucket mp Objects.list (pour vérifier les identifiants)
cd mp n/a
ls mp Objects.list("")
mkdir subdir

Objects.get("subdir")

Objects.get("subdir/")

Objects.insert("subdir/")

cp ~/local.txt subdir/

Objects.get("subdir/local.txt")

Objects.get("subdir/local.txt/")

Objects.insert("subdir/local.txt"), pour créer un objet vide

Objects.insert("subdir/local.txt"), lors de la fermeture une fois l'écriture terminée

rm -rf subdir

Objects.list("subdir")

Objects.list("subdir/")

Objects.delete("subdir/local.txt")

Objects.list("subdir/")

Objects.delete("subdir/")

Tarifs de Cloud Storage FUSE

Cloud Storage FUSE est disponible gratuitement. Toutefois, le stockage, les métadonnées et les E/S réseau qu'il génère vers et depuis Cloud Storage sont facturés comme toute autre interface Cloud Storage. En d'autres termes, l'ensemble des opérations et des transferts de données effectués par Cloud Storage FUSE correspondent à des transferts et des opérations Cloud Storage, et sont facturés en conséquence. Pour en savoir plus sur les opérations Cloud Storage FUSE courantes et leur correspondance avec les opérations Cloud Storage, consultez la section Correspondance des opérations.

Pour éviter les mauvaises surprises, il est recommandé d'estimer les frais Cloud Storage que votre utilisation de Cloud Storage FUSE va entraîner. Par exemple, si vous utilisez Cloud Storage FUSE pour stocker des fichiers journaux, des frais peuvent rapidement vous être facturés si les journaux sont vidés de manière agressive sur des centaines, voire des milliers de machines en même temps.

Pour en savoir plus sur les frais tels que le stockage, l'utilisation du réseau et les opérations, consultez la page Tarifs de Cloud Storage.

Limites

Bien que Cloud Storage FUSE possède une interface de système de fichiers, il ne ressemble pas à un système de fichiers NFS ou CIFS sur le backend. De plus, Cloud Storage FUSE n'est pas compatible avec POSIX. Si vous utilisez un produit exploitant un système de fichiers POSIX dans Google Cloud, consultez la page Filestore.

Lorsque vous utilisez Cloud Storage FUSE, tenez compte de ses limites et de sa sémantique, qui sont différentes de celles des systèmes de fichiers POSIX. Cloud Storage FUSE ne doit être utilisé que dans les limites de ses capacités.

Limites et différences par rapport aux systèmes de fichiers POSIX

La liste suivante décrit les limites de Cloud Storage FUSE :

  • Métadonnées : Cloud Storage FUSE ne transfère pas les métadonnées d'objets lors de l'importation de fichiers dans Cloud Storage, à l'exception des cibles mtime et symlink. Cela signifie que vous ne pouvez pas définir de métadonnées d'objet lorsque vous importez des fichiers à l'aide de Cloud Storage FUSE. Si vous souhaitez conserver des métadonnées d'objet, envisagez d'importer les fichiers à l'aide de la Google Cloud CLI, de l'API JSON ou de la console Google Cloud.
  • Simultanéité : Cloud Storage FUSE ne permet pas de contrôler la simultanéité pour plusieurs écritures dans un même fichier. Lorsque plusieurs écritures tentent de remplacer un fichier, la dernière écriture l'emporte et toutes les écritures précédentes sont perdues. Il n'y a ni fusion, ni contrôle de version, ni notification de l'utilisateur en cas d'écrasement ultérieur.
  • Liaison : Cloud Storage FUSE n'est pas compatible avec les liens matériels.
  • Verrouillage de fichiers et correction de fichiers : Cloud Storage FUSE n'est pas compatible avec le verrouillage de fichiers ni l'application de correctifs. Par conséquent, vous ne devez pas stocker de dépôts du système de contrôle des versions dans les points d'installation de Cloud Storage FUSE, car les systèmes de contrôle des versions reposent sur le verrouillage de fichiers et l'application de correctifs. De plus, vous ne devez pas utiliser Cloud Storage FUSE comme remplacement de fichier.
  • Sémantique : la sémantique dans Cloud Storage FUSE est différente de la sémantique dans un système de fichiers traditionnel. Par exemple, les métadonnées telles que l'heure du dernier accès ne sont pas compatibles, et certaines opérations de métadonnées telles que le changement de nom d'un répertoire ne sont pas atomiques, sauf si vous utilisez des buckets avec l'espace de noms hiérarchique activé. Pour obtenir la liste des différences entre la sémantique de Cloud Storage FUSE et la sémantique traditionnelle du système de fichiers, consultez la page Sémantique dans la documentation GitHub de Cloud Storage FUSE. Pour découvrir comment Cloud Storage FUSE infère des répertoires dans Cloud Storage, consultez la section Sémantique des répertoires.
  • Charges de travail qui effectuent l'application de correction de fichiers (ou écrasent des fichiers en place) : Cloud Storage FUSE ne peut écrire que des objets entiers à la fois dans Cloud Storage et ne fournit pas de mécanisme pour appliquer des correctifs. Si vous essayez d'appliquer un correctif à un fichier, Cloud Storage FUSE réimportera l'intégralité du fichier. La seule exception à ce comportement est que vous pouvez ajouter du contenu à la fin d'un fichier de plus de 2 Mo, où Cloud Storage FUSE ne réimportera que le contenu ajouté.
  • Accès : l'accès aux fichiers est régi par les autorisations Cloud Storage. Le contrôle d'accès de style POSIX ne fonctionne pas.
  • Performances : Cloud Storage FUSE a une latence bien supérieure à celle d'un système de fichiers local et ne doit donc pas être utilisé comme backend pour le stockage d'une base de données. Le débit peut être réduit lors de la lecture ou de l'écriture d'un petit fichier à la fois. L'utilisation de fichiers plus volumineux ou le transfert de plusieurs fichiers simultanément contribueront à augmenter le débit.
  • Disponibilité : des erreurs transitoires peuvent parfois se produire lorsque vous utilisez Cloud Storage FUSE pour accéder à Cloud Storage. Il est recommandé d'effectuer de nouvelles tentatives sur les opérations ayant échoué à l'aide de stratégies de nouvelle tentative.
  • Gestion des versions des objets : Cloud Storage FUSE n'est pas officiellement compatible avec l'utilisation des buckets pour lesquels la gestion des versions d'objets est activée. Toute tentative d'utilisation de Cloud Storage FUSE avec des buckets pour lesquels la gestion des versions d'objets est activée peut produire un comportement imprévisible.
  • Transcodage de fichiers:

    Objets avec content-encoding: gzip dans les métadonnées: tout objet de ce type dans un répertoire installé sur Cloud Storage FUSE ne fait pas l'objet d'un transcodage par décompression. Au lieu de cela, l'objet reste compressé de la même manière qu'il est stocké dans le bucket.

    Par exemple, un fichier de 1 000 octets, importé dans un bucket à l'aide de la commande gcloud storage cp avec l'option --gzip-local, peut devenir 60 octets (la taille réelle compressée dépend du contenu et de la mise en œuvre gzip utilisée par la gcloud CLI) en tant qu'objet Cloud Storage. Si le bucket est installé à l'aide de gcsfuse et que le fichier correspondant est répertorié ou lu dans le répertoire d'installation, sa taille est renvoyée à 60 octets et son contenu est une version compressée du contenu de 1 000 octets d'origine.

    En revanche, ce processus n'a pas lieu dans un téléchargement utilisant gcloud storage cp gs://bucket/path /local/path qui fait l'objet d'un transcodage par décompression: dans la commande gcloud, le contenu est automatiquement décompressé pendant le téléchargement et le contenu d'origine non compressé est diffusé.

  • Règles de conservation : Cloud Storage FUSE n'est pas compatible avec l'écriture de buckets comportant une règle de conservation. Si vous tentez d'écrire des données dans un bucket comportant une règle de conservation, vos écritures échoueront.

    Cloud Storage FUSE accepte la lecture d'objets à partir de buckets comportant une règle de conservation, mais le bucket doit être installé en tant que Read-Only en transmettant l'option -o RO au moment de l'installation.

  • Stockage local : les nouveaux objets, ou les objets modifiés, sont stockés intégralement dans un fichier temporaire local jusqu'à ce qu'ils soient fermés ou synchronisés. Lorsque vous utilisez des fichiers volumineux, assurez-vous que vous disposez d'une capacité de stockage local suffisante pour les copies temporaires des fichiers, en particulier si vous utilisez des instances Compute Engine. Pour en savoir plus, consultez le fichier README dans la documentation GitHub de Cloud Storage FUSE.
  • Limites de gestion des fichiers: le noyau Linux est limité par défaut à 1 024 commandes d'ouverture de fichier. Lorsque vous utilisez Cloud Storage FUSE comme serveur pour gérer plusieurs connexions simultanées, vous pouvez dépasser cette limite. Pour éviter les problèmes, assurez-vous que le nombre de connexions simultanées à un hôte unique reste inférieur à la limite et envisagez d'augmenter la limite. Par exemple, vous pouvez utiliser un montage FUSE Cloud Storage pour diffuser du contenu Web, héberger un stockage en réseau (NAS) ou héberger un serveur FTP (File Transfer Protocol). Lorsque vous diffusez du contenu Web sur Cloud Run à partir d'un montage Cloud Storage FUSE, le nombre maximal de requêtes simultanées par instance est limité à moins de 1 000.
  • Limites de rsync: la latence du système de fichiers de Cloud Storage FUSE affecte rsync, qui ne lit et n'écrit qu'un seul fichier à la fois. Pour transférer plusieurs fichiers en parallèle vers ou depuis votre bucket, utilisez la Google Cloud CLI en exécutant la commande gcloud storage rsync. Pour en savoir plus, consultez la documentation rsync.
  • Limites des opérations de liste: lorsque vous listez tous les objets d'un bucket installé, par exemple en exécutant ls, Cloud Storage FUSE appelle l'API Objects: list sur Cloud Storage. L'API pagine les résultats, ce qui signifie que Cloud Storage FUSE peut avoir besoin d'émettre plusieurs appels, en fonction du nombre d'objets dans votre bucket, ce qui peut rendre une opération de liste coûteuse et lente.

Problèmes connus

Pour obtenir la liste des problèmes connus dans Cloud Storage FUSE, rendez-vous sur GitHub.

Obtenir de l'aide

Vous pouvez obtenir de l'aide, envoyer des questions d'ordre général et demander de nouvelles fonctionnalités en utilisant l'un des canaux d'assistance officiels de Google Cloud. Vous pouvez également obtenir de l'aide en signalant les problèmes dans GitHub.

Pour obtenir des solutions aux problèmes courants, consultez la page Dépannage de la documentation GitHub de Cloud Storage FUSE.

Étape suivante