Cloud Storage FUSE

Diese Seite bietet einen Überblick über Cloud Storage FUSE, einen FUSE-Adapter, mit dem Sie Cloud Storage-Buckets als lokale Dateisysteme bereitstellen und aufrufen können, damit Anwendungen Objekte in Ihrem Bucket mit der Standardsemantik des Dateisystems lesen und schreiben können. Cloud Storage FUSE ist ein Open-Source-Produkt, das von Google unterstützt wird.

In der folgenden Dokumentation wird die Nutzung von Cloud Storage FUSE erläutert:

In dieser Dokumentation wird immer die neueste Version von Cloud Storage FUSE beschrieben. Weitere Informationen zur neuesten Version finden Sie unter Cloud Storage FUSE-Releases auf GitHub.

Funktionsweise von Cloud Storage FUSE

Cloud Storage FUSE verwendet FUSE und Cloud Storage APIs, um Buckets transparent als lokal bereitgestellte Ordner in Ihrem Dateisystem verfügbar zu machen.

Cloud Storage FUSE übersetzt Objektspeichernamen in ein Datei- und Verzeichnissystem. Dabei wird das Zeichen "/" in Objektnamen als Trennzeichen für Verzeichnisse interpretiert, sodass Objekte mit dem gleichen Präfix wie Dateien in demselben Verzeichnis behandelt werden. Anwendungen können mit dem so erstellten Bucket wie mit einem Dateisystem interagieren, wodurch praktisch unbegrenzter Dateispeicher in der Cloud zur Verfügung steht. Cloud Storage FUSE kann von überall aus ausgeführt werden, wo eine Verbindung zu Cloud Storage besteht, unter anderem auf Google Kubernetes Engine, Compute Engine-VMs oder lokalen Systemen.

Cloud Storage FUSE ist ideal für Anwendungsfälle, in denen Cloud Storage die richtige Leistung und Skalierbarkeit für eine Anwendung bietet, die eine Dateisystemsemantik erfordert. Cloud Storage FUSE ist beispielsweise nützlich für ML-Projekte, da damit Daten, Modelle, Prüfpunkte und Logs direkt in Cloud Storage gespeichert werden können. Weitere Informationen finden Sie unter Cloud Storage FUSE für ML-Arbeitslasten.

Cloud Storage FUSE ist in andere Google Cloud-Dienste eingebunden. Mit dem Cloud Storage FUSE CSI-Treiber können Sie beispielsweise die Google Kubernetes Engine (GKE) API verwenden, um Buckets als Volumes zu nutzen, sodass Sie aus Ihren Kubernetes-Pods heraus von Cloud Storage lesen und darauf schreiben können. Weitere Informationen zu anderen Integrationen finden Sie unter Integrationen.

Beschränkungen

Obwohl Cloud Storage FUSE eine Dateisystemschnittstelle hat, unterscheidet es sich von einem NFS- oder CIFS-Dateisystem im Backend. Darüber hinaus ist Cloud Storage FUSE nicht POSIX-konform. Informationen zu einem POSIX-Dateisystem-Produkt in Google Cloud finden Sie unter Filestore.

Beachten Sie bei der Verwendung von Cloud Storage FUSE die Einschränkungen und Semantik, die sich von POSIX-Dateisystemen unterscheiden. Cloud Storage FUSE sollte nur im Rahmen seiner Funktionen verwendet werden.

Einschränkungen und Unterschiede zu POSIX-Dateisystemen

In der folgenden Liste werden die Einschränkungen von Cloud Storage FUSE beschrieben:

  • Metadaten: Cloud Storage FUSE überträgt beim Hochladen von Dateien in Cloud Storage keine Objektmetadaten, mit Ausnahme von mtime- und symlink-Zielen. Das bedeutet, dass Sie keine Objektmetadaten festlegen können, wenn Sie Dateien mit Cloud Storage FUSE hochladen. Wenn Sie Objektmetadaten beibehalten möchten, können Sie Dateien mit der Google Cloud CLI, der JSON API oder der Google Cloud Console hochladen.
  • Nebenläufigkeit: Cloud Storage FUSE bietet keine Nebenläufigkeitserkennung für mehrere Schreibvorgänge in derselben Datei. Wenn mehrere Schreibvorgänge versuchen, eine Datei zu ersetzen, wird der letzte Schreibvorgang ausgeführt und alle vorherigen gehen verloren. Es gibt keine Zusammenführung, keine Versionsverwaltung und keine Nutzerbenachrichtigungen bei späterem Überschreiben.
  • Verknüpfen: Cloud Storage FUSE unterstützt keine harten Links.
  • Dateisperren und Dateipatching: Cloud Storage FUSE unterstützt weder das Sperren von Dateien noch das Patchen von Dateien. Daher sollten Sie keine Repositories zur Versionsverwaltung in Cloud Storage FUSE-Bereitstellungspunkten speichern, da Versionsverwaltungssysteme auf Dateisperren und Patches angewiesen sind. Darüber hinaus sollten Sie Cloud Storage FUSE nicht als Filer-Ersatz verwenden.
  • Semantik: Die Semantik in Cloud Storage FUSE unterscheidet sich von der Semantik in einem herkömmlichen Dateisystem. Metadaten wie zum Beispiel die Zeit des letzten Zugriffs werden nicht unterstützt und einige Metadatenvorgänge wie das Umbenennen von Verzeichnissen sind nicht unteilbar. Eine Liste der Unterschiede zwischen der Cloud Storage FUSE-Semantik und der herkömmlichen Dateisystemsemantik finden Sie unter Semantik in der GitHub-Dokumentation zu Cloud Storage FUSE.
  • Arbeitslasten, die Datei-Patching durchführen (oder direkt überschreiben): Cloud Storage FUSE kann nur ganze Objekte gleichzeitig in Cloud Storage schreiben und bietet keinen Mechanismus zum Patchen. Wenn Sie versuchen, eine Datei zu patchen, lädt Cloud Storage FUSE die gesamte Datei noch einmal hoch. Die einzige Ausnahme besteht darin, dass Sie Inhalte an das Ende einer Datei anhängen können, die mindestens 2 MB groß ist. Dann lädt Cloud Storage FUSE nur den angehängten Inhalt noch einmal hoch.
  • Zugriff: Die Autorisierung für Dateien wird über die Cloud Storage-Berechtigungen gesteuert. Die Zugriffssteuerung im POSIX-Stil ist nicht möglich.
  • Leistung: Cloud Storage FUSE hat eine erheblich höhere Latenz als ein lokales Dateisystem und sollte daher nicht als Backend zum Speichern einer Datenbank verwendet werden. Der Durchsatz kann verringert sein, wenn Sie kleine Dateien einzeln lesen oder schreiben. Wenn Sie größere Dateien und/oder mehrere Dateien gleichzeitig übertragen, erhöhen Sie den Durchsatz.
  • Verfügbarkeit: Wenn Sie Cloud Storage FUSE für den Zugriff auf Cloud Storage verwenden, können vorübergehende Fehler auftreten. Es wird empfohlen, fehlgeschlagene Vorgänge mithilfe von Wiederholungsstrategien zu wiederholen.
  • Objektversionsverwaltung: Cloud Storage FUSE unterstützt derzeit nicht die Verwendung mit Buckets, für die die Objektversionsverwaltung aktiviert ist. Der Versuch, Cloud Storage FUSE mit Buckets zu verwenden, für die die Objektversionsverwaltung aktiviert ist, kann zu unerwarteten Ergebnissen führen.
  • Dateitranscodierung: Objekte mit content-encoding: gzip in Metadaten: Bei solchen Objekten in einem von Cloud Storage FUSE bereitgestellten Verzeichnis wird keine dekomprimierende Transcodierung durchgeführt. Stattdessen bleibt das Objekt auf dieselbe Weise komprimiert, wie es im Bucket gespeichert ist.
    Beispielsweise kann eine Datei mit 1.000 Byte, die mit dem Befehl gcloud storage cp und dem Flag --gzip-local in einen Bucket hochgeladen wurde, mit 60 Byte (die tatsächliche komprimierte Größe hängt vom Inhalt und der von der gcloud CLI verwendeten gzip-Implementierung ab) zum Cloud Storage-Objekt werden. Wenn der Bucket mit gcsfuse bereitgestellt wird und die entsprechende Datei aufgelistet oder aus dem Bereitstellungsverzeichnis gelesen wird, wird seine Größe als 60 Byte zurückgegeben und der Inhalt ist eine komprimierte Version der ursprünglichen 1.000 Byte. .
    Dies unterscheidet sich von einem Download mit gcloud storage cp gs://bucket/path /local/path, der einer dekomprimierenden Transcodierung unterzogen wird: Im Befehl gcloud werden die Inhalte während des Downloads automatisch dekomprimiert und die unkomprimierte Originalinhalte werden bereitgestellt.
    Hinweis: Der Versuch, Cloud Storage FUSE zum Bearbeiten oder Ändern von Objekten mit content-encoding: gzip zu verwenden, kann zu unerwarteten Ergebnissen führen. Dies liegt daran, dass Cloud Storage FUSE den Objektinhalt unverändert (ohne Komprimierung) und unter Beibehaltung von content-encoding: gzip hochlädt. Wenn dieser Inhalt nicht ordnungsgemäß mit GZIP komprimiert ist, kann er vom Server nicht von anderen Clients wie die gcloud CLI gelesen werden. Dies liegt daran, dass andere Clients beim Lesen eine dekomprimierende Transcodierung nutzen und bei fehlerhaften gzip-Inhalten ein Fehler auftritt.
  • Aufbewahrungsrichtlinien: Cloud Storage FUSE unterstützt nicht das Schreiben in Buckets mit einer Aufbewahrungsrichtlinie. Wenn Sie versuchen, in einen Bucket mit einer Aufbewahrungsrichtlinie zu schreiben, schlagen die Schreibvorgänge fehl.

    Cloud Storage FUSE unterstützt das Lesen von Objekten aus Buckets mit einer Aufbewahrungsrichtlinie. Der Bucket muss jedoch als Read-Only bereitgestellt sein, da das -o RO-Flag während der Bucket-Bereitstellung übergeben wird.

  • Lokaler Speicher: Neue oder geänderte Objekte werden komplett in einer lokalen temporären Datei gespeichert, bis sie geschlossen oder synchronisiert werden. Achten Sie beim Verwenden großer Dateien darauf, dass Sie genügend lokale Speicherkapazität für temporäre Kopien der Dateien haben, vor allem wenn Sie mit Compute Engine-Instanzen arbeiten. Weitere Informationen finden Sie in der README-Datei in der GitHub-Dokumentation zu Cloud Storage FUSE.
  • Verzeichnisse: Cloud Storage arbeitet mit einem flachen Namespace. Standardmäßig können im bereitgestellten Dateisystem nur Verzeichnisse angezeigt werden, die explizit definiert (als Objekte in Cloud Storage vorhanden) sind. Implizite Verzeichnisse, also solche, die nur Teile des Pfads anderer Dateien oder Verzeichnisse sind, werden standardmäßig nicht angezeigt. Bei Dateien mit einem Pfad, der ein implizites Verzeichnis enthält, wird die Datei nicht im Gesamtverzeichnisbaum angezeigt, da das implizite Verzeichnis, in dem sie enthalten sind, nicht angezeigt wird. Sie können dieses Verhalten jedoch mit einem Flag ändern. Weitere Informationen finden Sie in der Dokumentation zur Cloud Storage FUSE CLI unter dem Flag --implicit-dirs.

    Cloud Storage FUSE unterstützt nicht das Umbenennen von Verzeichnissen. Das Umbenennen eines Verzeichnisses kann in Cloud Storage nicht atomar durchgeführt werden. Stattdessen wird beim Umbenennen eines Verzeichnisses ein Objekt mit einem neuen Namen kopiert und das ursprüngliche Objekt gelöscht.

  • Dateihandle-Limits: Der Linux-Kernel lässt standardmäßig maximal 1.024 offene Dateihandles zu. Cloud Storage FUSE sollte nicht als Server verwendet werden, der gleichzeitige parallele Verbindungen von externen Clients verarbeitet, da dies möglicherweise die maximale Anzahl offener Dateihandles überschreitet. die folgenden gängigen Anwendungsfälle sollten vermeiden werden: Offenlegen von Inhalten aus einer Cloud Storage FUSE-Bereitstellung, Veröffentlichen einer Cloud Storage FUSE-Bereitstellung als NAS (Network Attached Storage) über Dateifreigabeprotokolle (z. B. NFS oder SMB) und Hosten eines FTP-Servers (File Transfer Protocol), der durch eine Cloud Storage FUSE-Bereitstellung gesichert ist.

Frameworks, Betriebssysteme und Architekturen

Cloud Storage FUSE wurde mit den folgenden Frameworks validiert:

  • TensorFlow V2.x

  • TensorFlow V1.x

  • PyTorch V2.x

  • PyTorch V1.x

  • JAX 0.4.x

Cloud Storage FUSE unterstützt die folgenden Betriebssysteme und Architekturen:

  • Ubuntu 18.04 oder höher

  • Debian 10 oder höher

  • CentOS 7.9 oder höher

  • RHEL 7.9 oder höher

  • x86_64

  • ARM64

Support kontaktieren

Über den offiziellen Google Cloud-Supportkanal können Sie Support erhalten, allgemeine Fragen stellen und neue Features anfordern. Support erhalten Sie auch, wenn Sie Probleme in GitHub melden.

Lösungen für häufig auftretende Probleme finden Sie unter Fehlerbehebung in der GitHub-Dokumentation zu Cloud Storage FUSE.

Preise für Cloud Storage FUSE

Cloud Storage FUSE selbst ist kostenlos, aber der Speicherplatz, die Metadaten und die Netzwerk-E/A, die es zu und von Cloud Storage generiert, werden wie jede andere Cloud Storage-Benutzeroberfläche in Rechnung gestellt. Mit anderen Worten: Alle von Cloud Storage FUSE ausgeführten Datenübertragungen und Vorgänge sind Cloud Storage-Übertragungen und -Vorgängen zugeordnet und werden entsprechend berechnet. Weitere Informationen zu gängigen Cloud Storage FUSE-Vorgängen und ihrer Zuordnung zu Cloud Storage-Vorgängen finden Sie in der Vorgangszuordnung.

Um Überraschungen zu vermeiden, sollten Sie abschätzen, wie sich Ihre Verwendung von Cloud Storage FUSE auf die Cloud Storage-Gebühren auswirkt. Wenn Sie Cloud Storage FUSE beispielsweise zum Speichern von Logdateien verwenden, können schnell Gebühren entstehen, wenn die Logs auf Hunderten oder Tausenden von Rechnern gleichzeitig geleert werden.

Weitere Informationen zu Gebühren für Speicher, Netzwerknutzung und Vorgänge finden Sie unter Cloud Storage – Preise.

Zuordnung von Cloud Storage FUSE-Vorgängen zu Cloud Storage-Vorgängen

Wenn Sie einen Vorgang mit Cloud Storage FUSE ausführen, führen Sie auch die Cloud Storage-Vorgänge aus, die mit dem Cloud Storage FUSE-Vorgang verknüpft sind. In der folgenden Tabelle werden gängige Cloud Storage FUSE-Befehle und die zugehörigen Vorgänge der Cloud Storage JSON API beschrieben. Informationen über die Vorgänge von Cloud Storage FUSE können mit dem Flag --debug_gcs angezeigt werden.

Befehl JSON API-Vorgänge
gcsfuse --debug_gcs example-bucket mp Objects.list (zum Prüfen von Anmeldedaten)
cd mp n. v.
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"), um ein leeres Objekt zu erstellen

Objects.insert("subdir/local.txt"), beim Schließen nach dem Schreiben

rm -rf subdir

Objects.list("subdir")

Objects.list("subdir/")

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

Objects.list("subdir/")

Objects.delete("subdir/")

Bekannte Probleme

Eine Liste bekannter Probleme in Cloud Storage FUSE finden Sie auf GitHub.

Nächste Schritte