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.

Si vous recherchez un produit de système de fichiers entièrement compatible avec Google Cloud, consultez la page Filestore.

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. Les objets partageant un préfixe commun sont ainsi 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 possède une interface de système de fichiers, il ne s'agit pas d'un système de fichiers semblable à NFS ou CIFS pour les backends. 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 plus d'informations sur l'utilisation de Cloud Storage FUSE ou pour signaler un problème, accédez au dépôt GitHub Google Cloud. Dans ce dépôt, nous vous recommandons de consulter les fichiers README, semantics, installing et mounting.

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

Cloud Storage FUSE vous aide à utiliser plus efficacement et plus rapidement Cloud Storage en permettant aux applications basées sur des fichiers d'accéder à ce dernier sans qu'il soit nécessaire de 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 niveau supérieur 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 Google Cloud Console.

  • 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 indiquées sur la page 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). Une option permet de modifier ce comportement. Pour plus d'informations, consultez le fichier semantics.

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, 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.

Soyez conscient des différentes catégories de frais liées à l'utilisation de Cloud Storage FUSE :

  • Les opérations normales sur les objets (create, delete et list) 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 d'objets de stockage Nearline, Coldline et Archive. Consultez la section Récupération et suppression anticipée de la page "Tarifs de Cloud Storage".

  • La sortie de réseau et le transfert de données entre emplacements 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 $.

1 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.