Cloud Storage FUSE

Cloud Storage FUSE est un adaptateur FUSE Open Source qui permet d'installer des buckets Cloud Storage en tant que systèmes de fichiers sous Linux ou macOS. Il représente également un moyen pour les applications d'importer et de télécharger des objets Cloud Storage à l'aide d'une sémantique standard de système de fichiers. Cloud Storage FUSE peut être exécuté n'importe où du moment que la connectivité à Cloud Storage est assurée, y compris sur des machines virtuelles Google Compute Engine ou des systèmes sur site1.

Cloud Storage FUSE est un outil Open Source développé par Google et soutenu par la communauté, écrit en Go et hébergé sur GitHub. Cloud Storage FUSE est régi uniquement par la licence Apache et par aucune autre condition d'utilisation. Il est distribué tel quel, sans garantie d'aucune sorte. L'assistance est assurée par la communauté et est disponible sur Server Fault avec les tags google-cloud-platform et gcsfuse. Consultez les questions et réponses précédentes pour voir si votre problème a déjà été résolu.

Présentation technique

Cloud Storage FUSE convertit les noms de stockage d'objets en un système de fichiers et de répertoires, en interprétant le caractère "/" dans les noms d'objet comme un séparateur de répertoires. De telle sorte, les objets partageant un préfixe commun sont traités comme des fichiers du même répertoire. Les applications peuvent interagir avec le bucket installé comme un simple système de fichiers, offrant ainsi un stockage de fichiers pratiquement illimité dans le cloud.

Bien que Cloud Storage FUSE ait une interface de système de fichiers, il ne ressemble pas à un système de fichiers NFS ou CIFS sur le backend. Cloud Storage FUSE conserve les caractéristiques fondamentales de Cloud Storage, préservant ainsi l'évolutivité de ce service en termes de taille et de performances globales, tout en maintenant la même latence et les mêmes performances d'objets individuels. À l'instar des autres méthodes d'accès, Cloud Storage n'est pas compatible avec la simultanéité ni avec le verrouillage. Par exemple, si plusieurs clients Cloud Storage FUSE écrivent dans le même fichier, le dernier vidage l'emporte.

Pour en savoir plus sur l'utilisation de Cloud Storage FUSE ou pour signaler un problème, accédez au dépôt GitHub de Google Cloud Platform. Dans ce dernier, nous vous recommandons de consulter les fichiers README, semantics, installing et mounting.

Utiliser Cloud Storage FUSE

Les détails complets de l'installation et de l'utilisation de Cloud Storage FUSE sont disponibles dans le dépôt GitHub GoogleCloudPlatform/gcsfuse. Les étapes suivantes offrent un aperçu rapide de l'utilisation interactive de Cloud Storage FUSE, c'est-à-dire de l'installation manuelle de votre bucket.

  1. Suivez les instructions relatives à l'installation de Cloud Storage FUSE et de ses dépendances.

  2. Configurez les identifiants pour Cloud Storage FUSE.

    Cloud Storage FUSE détecte automatiquement les identifiants en fonction des identifiants par défaut de l'application :

    1. Si vous exécutez Cloud Storage FUSE sur une instance Google Compute Engine pour laquelle le champ d'application storage-full est configuré, il peut utiliser le compte de service intégré de Compute Engine. Pour en savoir plus, consultez la section Utiliser les comptes de service avec les applications.

    2. Si vous avez installé le SDK Google Cloud et exécuté gcloud auth application-default login, Cloud Storage FUSE peut utiliser ces identifiants.

    3. Si vous définissez la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS sur le chemin du fichier de clé JSON d'un compte de service, Cloud Storage FUSE utilisera ces identifiants. Pour en savoir plus sur la création d'un fichier de clé JSON pour un compte de service à l'aide de la console Google Cloud Platform, consultez la section Créer des clés de compte de service.

    Si plusieurs types d'identifiants sont spécifiés, consultez la page expliquant comment les Identifiants par défaut de l'application fonctionnent pour en savoir plus sur l'ordre dans lequel les identifiants sont employés.

  3. Créez un répertoire.

    $ mkdir /path/to/mount
    
  4. Si le bucket que vous souhaitez installer n'existe pas déjà, créez-le à l'aide de la console Google Cloud Platform.

  5. Utilisez Cloud Storage FUSE pour installer le bucket (par exemple, example-bucket).

    $ gcsfuse example-bucket /path/to/mount
    
  6. Commencez à utiliser le bucket installé.

    $ ls /path/to/mount
    

Principales différences par rapport à un système de fichiers POSIX

Cloud Storage FUSE vous permet d'utiliser plus efficacement et plus rapidement Cloud Storage en permettant aux applications basées sur des fichiers d'utiliser ce dernier sans avoir à réécrire leur code d'E/S. Il s'agit de la solution idéale pour les cas d'utilisation où Cloud Storage présente les caractéristiques de performances et d'évolutivité adéquates pour une application, et où seule la sémantique de système de fichiers est manquante. Lorsque vous déterminez si Cloud Storage FUSE est une solution appropriée, vous devez prendre en compte certaines différences supplémentaires par rapport aux systèmes de fichiers locaux :

Tarifs : les frais d'accès à Cloud Storage FUSE correspondent au final à ceux de Cloud Storage. L'ensemble des opérations et des transferts de données effectués par Cloud Storage FUSE correspondent aux transferts et opérations Cloud Storage, et sont facturés en conséquence. Consultez la section sur les tarifs ci-dessous pour obtenir plus d'informations avant d'utiliser Cloud Storage FUSE.

Performances : Cloud Storage FUSE a une latence bien supérieure à celle d'un système de fichiers local. De ce fait, 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 et/ou le transfert de plusieurs fichiers simultanément contribueront à augmenter le débit.

  • Les flux d'E/S individuels s'exécutent à peu près aussi vite que gsutil.
  • La commande gsutil rsync peut être particulièrement affectée par la latence, car elle lit et écrit un fichier à la fois. Il est souvent plus rapide d'utiliser l'indicateur -m de premier niveau avec la commande.
  • Les petites lectures aléatoires sont lentes en raison de la latence jusqu'au premier octet (n'exécutez pas une base de données sur Cloud Storage FUSE !).
  • Les écritures aléatoires sont effectuées en lisant l'intégralité du blob, en le modifiant localement et en réécrivant l'intégralité du blob modifié dans Cloud Storage. Les petites écritures dans des fichiers volumineux fonctionnent comme prévu, mais sont lentes et coûteuses.

Métadonnées : Cloud Storage FUSE ne transfère pas les métadonnées avec le fichier lors de l'importation vers Cloud Storage. Cela signifie que, si vous souhaitez utiliser Cloud Storage FUSE en tant qu'outil d'importation, vous ne pourrez pas définir de métadonnées telles que le type de contenu et les listes de contrôle d'accès comme vous le feriez avec d'autres méthodes d'importation. Si les propriétés de métadonnées sont essentielles, envisagez d'utiliser gsutil, l'API JSON ou la console Google Cloud Platform.

  • L'exception à cette règle est que Cloud Storage FUSE stocke les cibles mtime et symlink.

Simultanéité : aucun contrôle de simultanéité n'est mis en place si plusieurs utilisateurs écrivent dans un fichier. Lorsque plusieurs rédacteurs 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.

Sémantique : certaines sémantiques ne sont pas exactement ce qu'elles seraient dans un système de fichiers traditionnel. La liste des exceptions est disponible ici. 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.

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.

Disponibilité : des erreurs transitoires se produisent parfois dans des systèmes distribués tels que Cloud Storage, entraînant une disponibilité inférieure à 100 %. Il est recommandé d'effectuer de nouvelles tentatives en suivant les consignes relatives à l'intervalle exponentiel entre les tentatives tronqué.

Stockage local : les objets nouveaux ou modifiés seront 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 Google Compute Engine. Pour plus d'informations, consultez le fichier README.

Répertoires : par défaut, seuls les répertoires définis explicitement (c'est-à-dire ceux qui constituent leur propre objet dans Cloud Storage) apparaissent dans le système de fichiers. Les répertoires implicites (à savoir ceux qui ne sont que des parties du chemin d'autres fichiers ou répertoires) n'apparaissent pas par défaut. S'il existe des fichiers dont le chemin d'accès contient un répertoire implicite, ils n'apparaissent pas dans l'arborescence globale de répertoires (car le répertoire implicite qui les contient n'apparaît pas). Un indicateur permet de modifier ce comportement. Pour plus d'informations, consultez la documentation sur la sémantique.

Frais encourus avec 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. Pour éviter les mauvaises surprises, vous devriez 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.

Vous devez connaître les catégories suivantes de frais liés à l'utilisation de Cloud Storage FUSE :

  • Les opérations normales sur les objets (création, suppression et listage) entraînent des frais, comme indiqué dans la section Opérations de la page "Tarifs de Cloud Storage".

  • Des coûts sont associés à la récupération et à la suppression anticipée pour les buckets Google Cloud Storage Nearline. Consultez la section Stockage Nearline de la page "Tarifs de Cloud Storage".

  • La sortie de réseau et le transfert de données entre des emplacements régionaux et multirégionaux entraînent des coûts. Consultez la section Réseau de la page "Tarifs de Cloud Storage".

Exemple de répartition des coûts

Pour vous faire une idée des coûts Cloud Storage engendrés par l'utilisation de Cloud Storage FUSE, prenez en compte la séquence de commandes suivante et les opérations de l'API JSON associées. Vous pouvez afficher des informations sur les opérations à l'aide de l'indicateur --debug_gcs.

Commande Opérations de l'API JSON
gcsfuse --debug_gcs 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/")

En nous basant sur les frais d'opération de l'API JSON, nous pouvons calculer que, sur les 14 opérations, 8 sont de classe A, 4 de classe B et 2 sont des opérations gratuites. Le stockage du fichier local.txt entraîne également des frais. Si vous supprimez ce fichier peu de temps après sa création, ces frais seront négligeables. Pour les 12 opérations facturées, le coût de cette séquence de commandes est de 0,000084 $.


 
Cloud Storage FUSE est compatible avec les versions 3.10 et ultérieures du noyau Linux. Pour vérifier la version de votre noyau, vous pouvez utiliser "uname -a".

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Besoin d'aide ? Consultez notre page d'assistance.