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.

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.

Übersicht

Cloud Storage FUSE ist ein Open-Source-Produkt, das von Google unterstützt wird. Cloud Storage FUSE verwendet FUSE- und Cloud Storage APIs, um Buckets transparent als lokal bereitgestellte Ordner in Ihrem Dateisystem bereitzustellen.

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.

Funktionsweise von Cloud Storage FUSE

Cloud Storage FUSE übersetzt Objektspeichernamen in eine Verzeichnisstruktur. Dabei wird das Schrägstrich-Zeichen (/) in Objektnamen als Verzeichnistrennzeichen interpretiert. Objekte mit demselben gemeinsamen Präfix werden als Dateien im selben Verzeichnis behandelt. So können Anwendungen mit dem bereitgestellten Bucket wie mit einem Dateisystem interagieren. Objekte können auch mithilfe eines hierarchischen Namespace in einer logischen Dateisystemstruktur organisiert werden, sodass Sie Objekte in Ordnern anordnen können.

Cloud Storage FUSE kann überall ausgeführt werden, wo eine Verbindung zu Cloud Storage besteht, z. B. auf Google Kubernetes Engine-, Compute Engine-VMs oder lokalen Systemen.

Anwendungsfälle für Cloud Storage FUSE

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 für ML-Projekte (Machine Learning) nützlich, da damit Daten, Modelle, Prüfpunkte und Protokolle direkt in Cloud Storage gespeichert werden können. Weitere Informationen finden Sie unter Cloud Storage FUSE für ML-Arbeitslasten.

Cloud Storage FUSE für maschinelles Lernen

Cloud Storage FUSE wird häufig von Entwicklern verwendet, die ML-Trainings und -Modelldaten als Objekte in Cloud Storage speichern und darauf zugreifen möchten. Cloud Storage FUSE bietet mehrere Vorteile für die Entwicklung von ML-Projekten:

  • Mit Cloud Storage FUSE können Sie Cloud Storage-Buckets als lokales Dateisystem bereitstellen, damit Ihre Anwendungen mit der Standardsemantik des Dateisystems auf Trainings- und Modelldaten zugreifen können. Dadurch können Sie die Kosten für das Neuschreiben oder Refaktorieren des Anwendungscodes vermeiden, wenn Sie ML-Daten mit Cloud Storage speichern.

  • Vom Training bis zur Inferenz: Mit Cloud Storage FUSE können Sie die integrierte hohe Skalierbarkeit, Leistung und Kosteneffizienz von Cloud Storage nutzen und ML-Arbeitslasten in großem Maßstab ausführen.

  • Mit Cloud Storage FUSE können Sie Trainingsjobs schnell starten, da Rechenressourcen direkten Zugriff auf Daten in Cloud Storage erhalten, sodass Sie keine Trainingsdaten in die Rechenressource herunterladen müssen.

Weitere Informationen finden Sie unter Von Cloud Storage FUSE unterstützte Frameworks, Betriebssysteme und Architekturen.

Frameworks, Betriebssysteme und Architekturen

Cloud Storage FUSE wurde mit den folgenden Frameworks validiert:

  • TensorFlow 2.x

  • TensorFlow 1.x

  • PyTorch V2.x

  • PyTorch 1.x

  • JAX 0.4.x

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

  • Rocky Linux 8.9 oder höher

  • Ubuntu 18.04 oder höher

  • Debian 10 oder höher

  • CentOS 7.9 oder höher

  • RHEL 7.9 oder höher

  • SLES 15 oder höher

  • x86_64

  • ARM64

Einbindung von Cloud Storage FUSE in Google Cloud-Produkte

Cloud Storage FUSE kann in die folgenden Google Cloud-Produkte eingebunden werden:

Produkt Einbindung von Cloud Storage FUSE
Google Kubernetes Engine (GKE)

Der Cloud Storage FUSE CSI-Treiber verwaltet die Einbindung von Cloud Storage FUSE in die Kubernetes API, um Cloud Storage-Buckets als Volumes zu nutzen. Sie können den CSI-Treiber für Cloud Storage FUSE verwenden, um Buckets als Dateisysteme auf Google Kubernetes Engine-Knoten bereitzustellen.

Vertex AI-Training

Sie können auf Daten aus einem Cloud Storage-Bucket als bereitgestelltes Dateisystem zugreifen, wenn Sie ein benutzerdefiniertes Training in Vertex AI durchführen. Weitere Informationen finden Sie unter Trainingscode vorbereiten.

Vertex AI Workbench

Die verwalteten Notebook-Instanzen von Vertex AI Workbench umfassen eine Cloud Storage-Einbindung, mit der Sie Buckets durchsuchen und über die JupyterLab-Oberfläche mit kompatiblen Dateien in Cloud Storage arbeiten können. Mit der Cloud Storage-Einbindung können Sie auf alle Cloud Storage-Buckets und -Dateien zugreifen, auf die Ihre Instanz innerhalb des Projekts Ihrer Vertex AI Workbench-Instanz Zugriff hat. Informationen zum Einrichten der Integration finden Sie in den Vertex AI Workbench-Anleitungen zum Zugriff auf Cloud Storage-Buckets und -Dateien in JupyterLab.

Deep-Learning-VM-Images

In Cloud Storage FUSE sind Deep Learning VM Images vorinstalliert.

Deep Learning Container

Zum Bereitstellen von Cloud Storage-Buckets für Deep Learning Container können Sie entweder den Cloud Storage FUSE CSI-Treiber verwenden (empfohlen) oder Cloud Storage FUSE installieren.

Batch

Mit Cloud Storage FUSE können Sie Cloud Storage-Buckets als Speicher-Volumes bereitstellen, wenn Sie Batchjobs erstellen und ausführen. Sie können einen Bucket in der Definition eines Jobs angeben und der Bucket wird bei der Ausführung des Jobs automatisch für die VMs bereitgestellt.

Cloud Run

Mit Cloud Run können Sie einen Cloud Storage-Bucket als Volume bereitstellen und den Bucket-Inhalt als Dateien im Container-Dateisystem darstellen. Informationen zum Einrichten der Volume-Bereitstellung finden Sie unter Cloud Storage-Volume bereitstellen.

Cloud Composer

Beim Erstellen einer Umgebung wird der Quellcode für Ihre Workflows und deren Abhängigkeiten von Cloud Composer in bestimmten Ordnern in einem Cloud Storage-Bucket gespeichert. Cloud Composer verwendet Cloud Storage FUSE, um die Ordner im Bucket den Airflow-Komponenten in der Cloud Composer-Umgebung zuzuordnen.

Eine Liste der Google Cloud-Produkte, die im Allgemeinen in Cloud Storage eingebunden sind, finden Sie unter Einbindung in Google Cloud-Dienste und -Tools.

Caching

Cloud Storage FUSE bietet vier Arten von Caching, mit denen Sie die Leistung erhöhen und die Kosten senken können: Datei-Caching, Statistik-Caching, Typ-Caching und Listen-Caching. Weitere Informationen zu diesen Caches finden Sie unter Caching – Übersicht.

Verzeichnissemantik

Cloud Storage bietet Buckets mit einem flachen Namespace und Buckets mit aktiviertem hierarchischen Namespace. Standardmäßig kann Cloud Storage FUSE explizit definierte Verzeichnisse, auch Ordner genannt, in Buckets mit aktiviertem hierarchischem Namespace ableiten. Implizit definierte Verzeichnisse in Buckets mit einem flachen Namespace können jedoch nicht abgeleitet werden. Zu den implizit definierten Verzeichnissen gehören simulierte Ordner und verwaltete Ordner.

Angenommen, Sie stellen einen Bucket mit dem Namen my-bucket bereit, der ein Objekt mit dem Namen my-directory/my-object.txt enthält. Dabei ist my-directory/ ein simulierter Ordner. Wenn Sie ls am Bucket-Bereitstellungspunkt ausführen, kann Cloud Storage FUSE standardmäßig nicht auf das simulierte Verzeichnis my-bucket/my-directory/ oder das darin enthaltene Objekt my-object.txt zugreifen. Damit Cloud Storage FUSE den simulierten Ordner und das darin enthaltene Objekt ableiten kann, fügen Sie beim Bereitstellen eines Buckets mit flachem Namespace die Option --implicit-dirs in den Befehl gcsfuse mount ein. Weitere Informationen zur Option --implicit-dirs finden Sie in der Dokumentation zur Cloud Storage FUSE-Befehlszeile.

Wenn Sie Ihre Daten mit einem Dateisystem speichern und darauf zugreifen müssen, verwenden Sie Bucket mit aktiviertem hierarchischen Namespace. Informationen zum Erstellen solcher Buckets finden Sie unter Buckets mit aktiviertem hierarchischen Namespace erstellen.

Weitere Informationen zur Verzeichnissemantik sowie zum Bereitstellen von Buckets mit implizit definierten Verzeichnissen finden Sie unter Dateien und Verzeichnisse in der GitHub-Dokumentation.

Wiederholungsstrategie

Standardmäßig werden fehlgeschlagene Anfragen von Cloud Storage FUSE an Cloud Storage mit exponentiellem Backoff wiederholt, bis eine festgelegte maximale Backoff-Dauer erreicht wurde, die standardmäßig den Wert 30s (30 Sekunden) hat. Wenn die Backoff-Dauer die angegebene maximale Dauer überschreitet, wird der Wiederholungsversuch mit der angegebenen maximalen Dauer fortgesetzt. Sie können die Option --max-retry-sleep als Teil eines gcsfuse-Aufrufs verwenden, um die Backoff-Dauer anzugeben.

Weitere Informationen zur Option --max-retry-sleep finden Sie in der gcsfuse-Befehlszeilendokumentation.

Cloud Storage FUSE-Vorgänge, die mit Cloud Storage-Vorgängen verknüpft sind

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 Sie in Ihrem gcsfuse-Befehl durch Festlegen des --log-severity-Flags auf TRACE anzeigen lassen.

Befehl JSON API-Vorgänge
gcsfuse --log-severity=TRACE example-bucket mp Objects.list (zum Prüfen von Anmeldedaten)
cd mp
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/")

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.

Informationen zu Gebühren wie Speicher-, Netzwerknutzung und Vorgängen finden Sie unter Cloud Storage – Preise.

Beschränkungen

Obwohl Cloud Storage FUSE eine Dateisystemschnittstelle hat, unterscheidet es sich von einem NFS- oder CIFS-Dateisystem im Backend. Außerdem 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 innerhalb seiner Möglichkeiten 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.
  • Dateisperre und Datei-Patching: Cloud Storage FUSE unterstützt keine Dateisperren oder Datei-Patches. Daher sollten Sie Versionskontrollsystem-Repositories nicht an Cloud Storage FUSE-Anlegepunkten speichern, da Versionskontrollsysteme auf Dateisperren und ‑patches angewiesen sind. Außerdem sollten Sie Cloud Storage FUSE nicht als Dateiersatz 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, es sei denn, Sie verwenden Buckets mit aktiviertem hierarchischen Namespace. Eine Liste der Unterschiede zwischen der Semantik von Cloud Storage FUSE und der Semantik herkömmlicher Dateisysteme finden Sie unter Semantik in der GitHub-Dokumentation zu Cloud Storage FUSE. Weitere Informationen dazu, wie Cloud Storage FUSE Verzeichnisse in Cloud Storage ableitet, finden Sie unter Verzeichnissemantik.
  • Workloads, die Datei-Patches (oder In-Place-Überschreibungen) ausführen: Mit Cloud Storage FUSE können nur ganze Objekte gleichzeitig in Cloud Storage geschrieben werden. Es gibt keinen Mechanismus für das 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. Wir empfehlen, fehlgeschlagene Vorgänge mithilfe von Wiederholstrategien noch einmal auszuführen.
  • Objektversionsverwaltung: Cloud Storage FUSE unterstützt die Verwendung mit Buckets, für die die Objektversionsverwaltung aktiviert ist, nicht offiziell. 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 in derselben Weise komprimiert, wie es im Bucket gespeichert ist.

    Beispiel: Eine Datei mit 1.000 Byte, die mit dem Befehl gcloud storage cp und dem Flag --gzip-local in einen Bucket hochgeladen wurde, kann als Cloud Storage-Objekt 60 Byte groß werden (die tatsächliche komprimierte Größe hängt vom Inhalt und der von der gcloud CLI verwendeten gzip-Implementierung ab). Wird der Bucket mit gcsfuse bereitgestellt und die entsprechende Datei wird aus dem Bereitstellungsverzeichnis aufgelistet oder gelesen, wird ihre Größe als 60 Byte zurückgegeben und ihr Inhalt ist eine komprimierte Version des ursprünglichen Inhalts von 1.000 Byte.

    Dies unterscheidet sich von einem Download mit gcloud storage cp gs://bucket/path /local/path, bei dem eine dekomprimierende Transcodierung durchgeführt wird: Beim Befehl gcloud werden die Inhalte während des Downloads automatisch dekomprimiert und die ursprünglichen unkomprimierten Inhalte werden bereitgestellt.

  • 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.
  • Dateihandle-Limits: Der Linux-Kernel hat ein Standardlimit von 1.024 offenen Dateihandles. Wenn Sie Cloud Storage FUSE als Server verwenden, um mehrere gleichzeitige Verbindungen zu verarbeiten, wird dieses Limit möglicherweise überschritten. Um Probleme zu vermeiden, achten Sie darauf, dass die Anzahl der gleichzeitigen Verbindungen zu einem einzelnen Host unter dem Limit bleibt. Sie können das Limit auch erhöhen. Dies ist beispielsweise bei der Bereitstellung von Webinhalten, dem Hosten von NAS (Network Attached Storage) oder dem Hosten eines FTP-Servers (File Transfer Protocol) der Fall. Wenn Webinhalte in Cloud Run über ein Cloud Storage FUSE-Treiber bereitgestellt werden, ist die maximale Anzahl gleichzeitiger Anfragen pro Instanz auf weniger als 1.000 beschränkt.
  • rsync-Begrenzungen: Die Dateisystemlatenz von Cloud Storage FUSE wirkt sich auf rsync aus, das jeweils nur eine Datei liest und schreibt. Wenn Sie mehrere Dateien parallel in oder aus Ihrem Bucket übertragen möchten, verwenden Sie die Google Cloud CLI, indem Sie gcloud storage rsync ausführen. Weitere Informationen finden Sie in der Dokumentation zu rsync.
  • Einschränkungen bei Auflistungsvorgängen: Wenn Sie alle Objekte in einem bereitgestellten Bucket auflisten, z. B. durch Ausführen von ls, ruft Cloud Storage FUSE die Objects: list API in Cloud Storage auf. Die API paginiert Ergebnisse. Das bedeutet, dass Cloud Storage FUSE möglicherweise mehrere Aufrufe ausführen muss, je nachdem, wie viele Objekte sich im Bucket befinden. Dies kann einen Listenvorgang teuer und langsam machen.

Bekannte Probleme

Eine Liste der bekannten Probleme mit Cloud Storage FUSE finden Sie auf GitHub.

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.

Nächste Schritte