Cloud Storage FUSE

Cloud Storage FUSE ist ein Open-Source FUSE-Adapter, mit dem Sie Buckets von Google Cloud Storage als Dateisysteme auf Linux- oder macOS-Systemen zur Verfügung stellen können. Außerdem werden Anwendungen damit in die Lage versetzt, Cloud Storage-Objekte mit der Standardsemantik von Dateisystemen hoch- und herunterzuladen. Cloud Storage FUSE kann überall ausgeführt werden, wo eine Verbindung zu Cloud Storage besteht, auch auf Google Compute Engine-VMs oder lokalen Systemen1.

Cloud Storage FUSE ist ein von Google entwickeltes und von der Community unterstütztes Open-Source-Tool, das in Go geschrieben ist und auf GitHub gehostet wird. Cloud Storage FUSE unterliegt nur der Apache-Lizenz und keinen sonstigen Nutzungsbedingungen. Es wird in seinem aktuellen Zustand und ohne jegliche Gewährleistung angeboten. Unterstützung erhalten Sie in der Community und auf Server Fault mit den Tags google-cloud-platform und gcsfuse. Prüfen Sie die früheren Fragen und Antworten dahingehend, ob Ihre Frage bereits beantwortet wurde.

Technische Übersicht

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 interagieren wie mit einem einfachen Dateisystem, wodurch praktisch unbegrenzter Dateispeicher in der Cloud zur Verfügung steht.

Obwohl Cloud Storage FUSE eine Dateisystemschnittstelle hat, unterscheidet es sich von einem NFS- oder CIFS-Dateisystem im Back-End. Cloud Storage FUSE behält die grundlegenden Eigenschaften von Cloud Storage bei, sowohl dessen Skalierbarkeit in Bezug auf die Größe und Gesamtleistung als auch die gleiche Latenz und Leistung auf Objektebene. Wie bei den anderen Zugriffsmethoden unterstützt Cloud Storage keine Gleichzeitigkeit und kein Sperren. Wenn beispielsweise mehrere Cloud Storage FUSE-Clients in dieselbe Datei schreiben, wird der jeweils letzte Vorgang ausgeführt.

Weitere Informationen zur Verwendung von Cloud Storage FUSE sowie die Möglichkeit, ein Problem zu melden, erhalten Sie im GitHub-Repository der Google Cloud Platform. Im Repository sollten Sie die Dokumente README, semantics (Semantik), installing (Installation) und mounting (Bereitstellung) lesen.

Cloud Storage FUSE verwenden

Ausführliche Informationen zur Installation und zur Arbeit mit Cloud Storage FUSE finden Sie im GitHub-Repository GoogleCloudPlatform/gcsfuse. Die nachfolgend beschriebenen Schritte geben einen schnellen Überblick darüber, wie Sie interaktiv mit Cloud Storage FUSE arbeiten können, das heißt, wie Sie Ihren Bucket manuell bereitstellen.

  1. Befolgen Sie die Anleitungen zur Installation von Cloud Storage FUSE und dessen Abhängigkeiten.

  2. Richten Sie die Anmeldedaten für Cloud Storage FUSE ein.

    Cloud Storage FUSE erkennt Anmeldedaten automatisch basierend auf den Standardanmeldedaten für Anwendungen:

    1. Wenn Sie mit einer Google Compute Engine-Instanz arbeiten, für die der Bereich storage-full konfiguriert ist, kann Cloud Storage FUSE das in Compute Engine integrierte Dienstkonto verwenden. Weitere Informationen finden Sie unter Dienstkonten mit Anwendungen nutzen.

    2. Wenn Sie das Google Cloud SDK eingerichtet und gcloud auth application-default login ausgeführt haben, kann Cloud Storage FUSE diese Anmeldedaten verwenden.

    3. Wenn Sie für die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS den Pfad zur JSON-Schlüsseldatei eines Dienstkontos einstellen, verwendet Cloud Storage FUSE diese Anmeldedaten. Weitere Informationen zum Erstellen einer JSON-Schlüsseldatei für ein Dienstkonto mithilfe der Google Cloud Platform Console finden Sie unter Dienstkontoschlüssel erstellen.

    Wenn mehr als ein Anmeldedatentyp festgelegt ist, finden Sie unter Funktionsweise der Standardanmeldedaten für Anwendungen Informationen über die Reihenfolge, in der die Anmeldedaten verwendet werden.

  3. Erstellen Sie ein Verzeichnis.

    $ mkdir /path/to/mount
    
  4. Erstellen Sie den bereitzustellenden Bucket. Sollte er noch nicht existieren, nutzen Sie dafür die Google Cloud Platform Console.

  5. Stellen Sie den Bucket mit Cloud Storage FUSE bereit, z. B. example-bucket.

    $ gcsfuse example-bucket /path/to/mount
    
  6. Beginnen Sie, mit dem bereitgestellten Bucket zu arbeiten.

    $ ls /path/to/mount
    

Hauptunterschiede zu einem POSIX-Dateisystem

Mit Cloud Storage FUSE nutzen Sie Cloud Storage besser und schneller, da dateibasierte Anwendungen Cloud Storage nutzen können, ohne den E/A-Code neu schreiben zu müssen. Diese Lösung ist optimal für Anwendungsfälle, in denen Cloud Storage die richtige Leistung und Skalierbarkeit für eine Anwendung bietet und nur die Semantik des Dateisystems fehlt. Bei der Überlegung, ob Cloud Storage FUSE eine geeignete Lösung ist, gibt es einige weitere Unterschiede zu lokalen Dateisystemen, die Sie berücksichtigen sollten:

Preise: Zugriff auf Cloud Storage FUSE bedeutet Zugriff auf Cloud Storage. Alle von Cloud Storage FUSE ausgeführten Datenübertragungen und Vorgänge sind Übertragungen und Vorgängen von Cloud Storage zugeordnet und werden entsprechend berechnet. Im Abschnitt Preise weiter unten können Sie sich ausführlich informieren, bevor Sie Cloud Storage FUSE nutzen.

Leistung: Cloud Storage FUSE hat eine erheblich höhere Latenz als ein lokales Dateisystem. Daher kann der Durchsatz 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.

  • Einzelne E/A-Streams laufen ungefähr so schnell wie gsutil.
  • Der Befehl gsutil rsync kann besonders von der Latenz beeinflusst werden, da er Dateien einzeln liest und schreibt. Die Verwendung des Top-Level-m-Flags zusammen mit dem Befehl geht oft schneller.
  • Kleine, zufällige Lesevorgänge verlangsamen sich aufgrund der Latenz des ersten Bytes. Führen Sie über Cloud Storage FUSE keine Datenbank aus.
  • Bei zufälligen Schreibvorgängen wird der gesamte Blob gelesen, lokal bearbeitet und der gesamte geänderte Blob zurück in Cloud Storage geschrieben. Kleine Schreibvorgänge in große Dateien funktionieren wie erwartet, sind jedoch langsam und teuer.

Metadaten: Cloud Storage FUSE überträgt beim Upload auf Cloud Storage zusammen mit der Datei keine Metadaten. Das heißt, wenn Sie Cloud Storage FUSE als Uploadtool verwenden, können Sie keine Metadaten wie Inhaltstyp oder ACLs festlegen, wie bei anderen Uploadmethoden. Wenn die Metadatenattribute wichtig sind, verwenden Sie stattdessen gsutil, die JSON API oder die Google Cloud Platform Console.

  • Die Ausnahme hiervon ist, dass Cloud Storage FUSE mtime- und symlink-Ziele speichert.

Gleichzeitigkeit: Es gibt keine Gleichzeitigkeitserkennung für mehrere Autoren in einer Datei. Wenn mehrere Autoren versuchen, eine Datei zu ersetzen, wird der letzte Schreibvorgang ausgeführt und alle vorherigen gehen verloren. Es gibt kein Zusammenführen, keine Versionsverwaltung und keine Nutzerbenachrichtigungen bei späterem Überschreiben.

Verknüpfen: Cloud Storage FUSE unterstützt keine harten Links.

Semantik: Einige Teile der Semantik sind mit der eines herkömmlichen Dateisystems nicht identisch. Die Liste der Ausnahmen finden Sie hier. 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.

Zugriff: Die Autorisierung für Dateien wird über die Cloud Storage-Berechtigungen gesteuert. Die Zugriffssteuerung im POSIX-Stil ist nicht möglich.

Verfügbarkeit: In verteilten Systemen wie Cloud Storage können gelegentlich temporäre Fehler auftreten, wodurch weniger als 100 % Verfügbarkeit gewährleistet sind. Es wird empfohlen, in Bezug auf Neuversuche die Richtlinien zum abgeschnittenen exponentiellen Backoff zu beachten.

Lokaler Speicher: Neue oder geänderte Objekte werden komplett in einer lokalen temporären Datei gespeichert, bis sie geschlossen oder synchronisiert werden. Achten Sie bei der Arbeit mit großen Dateien darauf, dass Sie über genügend lokale Speicherkapazität für temporäre Kopien der Dateien verfügen, vor allem wenn Sie mit Google Compute Engine-Instanzen arbeiten. Weitere Informationen finden Sie in der Readme-Dokumentation.

Verzeichnisse: Standardmäßig werden im Dateisystem nur Verzeichnisse angezeigt, die explizit definiert sind, also als separates Objekt in Cloud Storage. Implizite Verzeichnisse, also solche, die nur Teile des Pfadnamens anderer Dateien oder Verzeichnisse sind, werden standardmäßig nicht angezeigt. Dateien, deren Pfadname ein implizites Verzeichnis enthält, werden im Gesamtverzeichnisbaum nicht aufgeführt, da das implizite Verzeichnis, das sie enthält, nicht angezeigt wird. Zum Ändern dieses Verhaltens steht ein Flag zur Verfügung. Weitere Informationen finden Sie in der Semantik-Dokumentation.

Gebühren 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. 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 Protokolldateien verwenden, können schnell Gebühren entstehen, wenn die Protokolle auf Hunderten oder Tausenden von Rechnern gleichzeitig geleert werden.

Folgende Gebührenkategorien sollten Ihnen bei der Nutzung von Cloud Storage FUSE bekannt sein:

  • Für normale Objektvorgänge (Erstellen, Löschen und Auflisten) werden die Gebühren berechnet, die auf der Preisseite für Cloud Storage im Abschnitt Vorgänge aufgeführt sind.

  • Für Google Cloud Storage Nearline-Buckets entstehen Kosten für das Abrufen und das vorzeitige Löschen. Weitere Informationen finden Sie auf der Preisseite für Cloud Storage im Abschnitt Nearline Storage.

  • Gebühren für Netzwerkausgänge und Datenübertragung zwischen regionalen und überregionalen Standorten. Weitere Informationen finden Sie auf der Preisseite für Cloud Storage im Abschnitt Netzwerk.

Beispiel für die Kostenaufschlüsselung

Sehen Sie sich die nachstehende Befehlsfolge und die zugehörigen JSON API-Vorgänge an, um eine Vorstellung davon zu erhalten, wie sich die Verwendung von Cloud Storage FUSE auf die Kosten für Cloud Storage auswirkt. Informationen über Vorgänge können Sie mit dem Flag --debug_gcs aufrufen.

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/")

Auf Grundlage der Vorgangsgebühren für die JSON API berechnen wir für die 14 Vorgänge 8 Vorgänge der Klasse A, 4 Vorgänge der Klasse B und 2 kostenlose Vorgänge. Außerdem fällt eine Gebühr für das Speichern der Datei local.txt an. Wenn Sie die Datei bald nach dem Erstellen löschen, ist diese Gebühr unerheblich. Die Kosten für diese Befehlsfolge mit den 12 berechneten Vorgängen belaufen sich auf 0,000084 $.


 
Cloud Storage FUSE wird ab Linux Kernel-Version 3.10 unterstützt. Verwenden Sie den Befehl "uname -a", um Ihre Kernel-Version zu überprüfen,

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...