Cloud Storage FUSE

Questo documento fornisce una panoramica di Cloud Storage FUSE, un adattatore FUSE che consente di montare e accedere ai bucket Cloud Storage come file system locali, in modo che le applicazioni possano leggere e scrivere oggetti nel bucket utilizzando la semantica del file system standard.

Questa documentazione riflette l'ultima versione di Cloud Storage FUSE. Per informazioni dettagliate sull'ultima versione, consulta Release di Cloud Storage FUSE su GitHub.

Cloud Storage FUSE è un prodotto open source supportato da Google. Cloud Storage FUSE utilizza le API FUSE e API Storage per esporre in modo trasparente i bucket come cartelle montate localmente nel file system.

Per utilizzare Cloud Storage FUSE, installa il pacchetto Cloud Storage FUSE su una macchina con un sistema operativo compatibile come Linux o Windows Subsystem for Linux, assicurati di disporre di Google Cloud autenticazione e autorizzazioni appropriate, quindi esegui il comando gcsfuse per montare un bucket Cloud Storage specifico in una directory locale.

Cloud Storage FUSE è integrato con altri servizi Google Cloud . Ad esempio, il driver CSI di Cloud Storage FUSE ti consente di utilizzare l'API Google Kubernetes Engine (GKE) per utilizzare i bucket come volumi, in modo da poter leggere e scrivere su Cloud Storage dall'interno dei tuoi pod Kubernetes. Per saperne di più su altre integrazioni, consulta Integrazioni.

Come funziona Cloud Storage FUSE

Cloud Storage FUSE funziona traducendo i nomi dell'archivio di oggetti in una struttura simile a una directory, interpretando la barra (/) nei nomi degli oggetti come separatore di directory. Gli oggetti con lo stesso prefisso comune vengono trattati come file nella stessa directory, consentendo alle applicazioni di interagire con il bucket montato come un file system. Gli oggetti possono anche essere organizzati in una struttura di file system logica utilizzando lo spazio dei nomi gerarchico, che consente di organizzare gli oggetti in cartelle.

Cloud Storage FUSE può essere eseguito da qualsiasi luogo con connettività a Cloud Storage, tra cui Google Kubernetes Engine, VM di Compute Engine o sistemi on-premise.

Supporto di Rapid Bucket

A partire dalla versione 3.7.1, Cloud Storage FUSE supporta Rapid Bucket con un percorso di lettura ottimizzato, che consente un accesso più rapido ai dati e prestazioni migliori.

Cloud Storage FUSE per il machine learning

Cloud Storage FUSE è ideale per i casi d'uso in cui Cloud Storage ha le caratteristiche di prestazioni e scalabilità adatte per un'applicazione che richiede la semantica del file system. Ad esempio, Cloud Storage FUSE è utile per i progetti di machine learning (ML) perché fornisce un modo per archiviare dati, modelli, checkpoint e log direttamente in Cloud Storage. Per saperne di più, consulta Cloud Storage FUSE per i workload di ML.

Cloud Storage FUSE è una scelta comune per gli sviluppatori che vogliono archiviare e accedere ai dati di addestramento e dei modelli ML come oggetti in Cloud Storage. Cloud Storage FUSE offre diversi vantaggi per lo sviluppo di progetti ML:

  • Cloud Storage FUSE ti consente di montare i bucket Cloud Storage come file system locale in modo che le tue applicazioni possano accedere ai dati di addestramento e del modello utilizzando la semantica del file system standard. Ciò significa che puoi evitare i costi di riscrittura o rifattorizzazione del codice della tua applicazione quando utilizzi Cloud Storage per archiviare i dati di ML.

  • Dall'addestramento all'inferenza, Cloud Storage FUSE ti consente di utilizzare l'elevata scalabilità, le prestazioni e l'economicità integrate di Cloud Storage, in modo da poter eseguire i carichi di lavoro di ML su larga scala.

  • Cloud Storage FUSE ti consente di avviare rapidamente i job di addestramento fornendo alle risorse di computing l'accesso diretto ai dati in Cloud Storage, in modo da non dover scaricare i dati di addestramento nella risorsa di computing.

Per maggiori informazioni, consulta Framework, sistemi operativi e architetture supportati da Cloud Storage FUSE.

Framework, sistemi operativi e architetture

Cloud Storage FUSE è stato convalidato con i seguenti framework:

  • TensorFlow V2.x

  • TensorFlow V1.x

  • PyTorch V2.x

  • PyTorch V1.x

  • JAX 0.4.x

Cloud Storage FUSE supporta i seguenti sistemi operativi e architetture:

  • Rocky Linux 8.9 o versioni successive

  • Ubuntu 18.04 o versioni successive

  • Debian 10 o versioni successive

  • CentOS 7.9 o versioni successive

  • RHEL 7.9 o versioni successive

  • SLES 15 o versioni successive

  • x86_64

  • ARM64

Integrazioni con altri Google Cloud prodotti

Cloud Storage FUSE si integra con i seguenti Google Cloud prodotti:

Prodotto Come viene integrato Cloud Storage FUSE
AI Hypercomputer

Cloud Storage FUSE è consigliato per i casi d'uso di AI e ML perché consente di montare i bucket come file system locali e scalare lo spazio di archiviazione dei dati con una maggiore efficienza in termini di costi rispetto ai servizi di file system. Per saperne di più, consulta Servizi di archiviazione.

Batch

Cloud Storage FUSE consente di montare i bucket Cloud Storage come volumi di archiviazione quando crei ed esegui job Batch. Puoi specificare un bucket nella definizione di un job e il bucket viene montato automaticamente sulle VM per il job quando il job viene eseguito.

Managed Service for Apache Airflow

Quando crei un ambiente, Managed Service for Apache Airflow memorizza il codice sorgente per i tuoi workflow e le relative dipendenze in cartelle specifiche di un bucket Cloud Storage. Managed Service for Apache Airflow utilizza Cloud Storage FUSE per mappare le cartelle nel bucket ai componenti Airflow nell'ambiente Managed Service for Apache Airflow.

Cloud Run

Cloud Run ti consente di montare un bucket Cloud Storage come volume e presenta i contenuti del bucket come file nel file system del container. Per configurare il montaggio del volume, consulta Montare un volume Cloud Storage.

Cluster Toolkit

Cluster Toolkit consente di creare o montare un bucket Cloud Storage come file system. Puoi specificare il bucket in un file YAML del blueprint utilizzando il modulo appropriato. Il bucket viene quindi creato o montato automaticamente quando viene eseguito il deployment.

Dataflow

Quando utilizzi Cloud Storage FUSE per montare i bucket Cloud Storage direttamente sul file system dei worker, il codice della pipeline Apache Beam alla base di Dataflow può accedere ai file in Cloud Storage direttamente utilizzando la semantica del file system standard. Ciò è particolarmente utile quando si utilizza Dataflow per attività di AI/ML che coinvolgono set di dati di grandi dimensioni e software che richiedono l'accesso ai file.

Deep Learning Containers

Per montare i bucket Cloud Storage per Deep Learning Containers, puoi utilizzare il driver CSI di Cloud Storage FUSE (consigliato) o installare Cloud Storage FUSE.

Deep Learning VM Image

Cloud Storage FUSE è preinstallato con Deep Learning VM Image.

Google Kubernetes Engine (GKE)

Il driver CSI di Cloud Storage FUSE gestisce l'integrazione di Cloud Storage FUSE con l'API Kubernetes per utilizzare i bucket Cloud Storage come volumi. Puoi utilizzare il driver CSI di Cloud Storage FUSE per montare i bucket come file system sui nodi Google Kubernetes Engine.

Vertex AI Training

Puoi accedere ai dati da un bucket Cloud Storage come file system montato quando esegui l'addestramento personalizzato su Vertex AI. Per saperne di più, consulta Leggi e scrivi file Cloud Storage con Cloud Storage FUSE.

Vertex AI Workbench

Le istanze Vertex AI Workbench includono un'integrazione di Cloud Storage che ti consente di sfogliare i bucket e lavorare con i file compatibili che si trovano in Cloud Storage dall'interfaccia JupyterLab. L'integrazione di Cloud Storage ti consente di accedere a tutti i bucket e i file Cloud Storage a cui la tua istanza ha accesso all'interno dello stesso progetto della tua istanza Vertex AI Workbench. Per configurare l'integrazione, consulta le istruzioni di Vertex AI Workbench su come accedere ai bucket Cloud Storage e ai file in JupyterLab.

Per un elenco dei prodotti Google Cloud integrati con Cloud Storage in generale, consulta Integrazione con i servizi e gli strumenti Google Cloud .

Memorizzazione nella cache

Cloud Storage FUSE offre tre tipi di memorizzazione nella cache per contribuire ad aumentare le prestazioni e ridurre i costi: memorizzazione nella cache dei file, memorizzazione nella cache delle statistiche e memorizzazione nella cache degli elenchi. Per saperne di più su queste cache, consulta Panoramica della memorizzazione nella cache.

Semantica della directory

Cloud Storage offre bucket con uno spazio dei nomi piatto e bucket con spazio dei nomi gerarchico abilitato. Per impostazione predefinita, Cloud Storage FUSE può dedurre le directory definite in modo esplicito, note anche come cartelle, nei bucket con lo spazio dei nomi gerarchico abilitato, ma non può dedurre le directory definite in modo implicito nei bucket con uno spazio dei nomi semplice, incluse le cartelle simulate e le cartelle gestite.

Le directory definite in modo esplicito sono cartelle rappresentate dai propri oggetti nei bucket Cloud Storage. Le directory definite in modo implicito sono directory che non hanno oggetti corrispondenti nei bucket Cloud Storage.

Ad esempio, supponiamo che tu monti un bucket denominato my-bucket, che contiene un oggetto denominato my-directory/my-object.txt, dove my-directory/ è una cartella simulata. Quando esegui ls sul punto di montaggio del bucket, per impostazione predefinita Cloud Storage FUSE non può accedere alla directory simulata my-bucket/my-directory/ né all'oggetto my-object.txt al suo interno. Per consentire a Cloud Storage FUSE di dedurre la cartella simulata e l'oggetto al suo interno, includi l'opzione --implicit-dirs gcsfuse o il campo del file di configurazione implicit-dirs come parte del comando gcsfuse mount quando monti un bucket dello spazio dei nomi piatto.

Se devi archiviare i dati e accedervi utilizzando un file system, utilizza i bucket con lo spazio dei nomi gerarchico abilitato. Per scoprire come creare questi bucket, consulta Crea bucket con spazio dei nomi gerarchico abilitato.

Per saperne di più sulla semantica delle directory, incluso come montare i bucket con directory definite in modo implicito, consulta File e directory nella documentazione di GitHub di Cloud Storage FUSE.

Strategie di ripetizione di Cloud Storage FUSE

Per impostazione predefinita, le richieste non riuscite da Cloud Storage FUSE a Cloud Storage vengono ritentate con backoff esponenziale fino a una durata massima di backoff specificata, che per impostazione predefinita ha un valore di 30s (30 secondi). Una volta che la durata del backoff supera la durata massima specificata, il tentativo continua con la durata massima specificata. Puoi utilizzare l'opzione --max-retry-sleep o il campo gcs-retries:max-retry-sleep come parte di una chiamata gcsfuse mount per specificare la durata del backoff.

Strategia di ripetizione dei tentativi per le richieste GET o READ bloccate

Quando esegui una richiesta GET o READ con Cloud Storage FUSE, viene applicato un periodo di timeout. Se la richiesta supera il periodo di timeout, Cloud Storage FUSE la annulla e riprova utilizzando un algoritmo di backoff esponenziale.

Il timeout è dinamico e si basa sulla latenza del 99° percentile delle richieste GET o READ riuscite o annullate in passato, con un minimo di 1,5 secondi. In questo modo, vengono ripetute solo l'1% delle richieste più lente, ovvero quelle che superano la latenza storica del 99° percentile.

Strategia di ripetizione dei tentativi per i caricamenti bloccati

Le scritture di file di grandi dimensioni vengono caricate in blocchi. Per contribuire a ridurre le latenze di scrittura alla fine, se un'operazione di scrittura a livello di blocco si blocca o non va a buon fine, Cloud Storage FUSE tenta un nuovo tentativo dopo 10 secondi. Per ogni blocco bloccato vengono eseguite al massimo quattro operazioni di nuovo tentativo.

Operazioni Cloud Storage FUSE associate alle operazioni Cloud Storage

Quando esegui un'operazione utilizzando Cloud Storage FUSE, esegui anche le operazioni Cloud Storage associate all'operazione Cloud Storage FUSE. La tabella seguente descrive i comandi comuni di Cloud Storage FUSE e le operazioni dell'API JSON di Cloud Storage associate. Puoi visualizzare informazioni sulle operazioni di Cloud Storage FUSE impostando l'opzione --log-severity o il campo logging:severity su TRACE nel comando gcsfuse.

Comando Operazioni API JSON
gcsfuse --log-severity=TRACE example-bucket mp Objects.list (per controllare le credenziali)
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"), per creare un oggetto vuoto

Objects.insert("subdir/local.txt"), when closing after done writing

rm -rf subdir

Objects.list("subdir")

Objects.list("subdir/")

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

Objects.list("subdir/")

Objects.delete("subdir/")

Metriche

Cloud Storage offre metriche approfondite che possono aiutarti a ottimizzare le prestazioni e i costi di Cloud Storage FUSE. Per saperne di più sulle metriche per Cloud Storage FUSE, consulta Metriche di Cloud Storage FUSE.

Sicurezza

Cloud Storage FUSE applica l'autenticazione standard di Google Cloudtramite le Credenziali predefinite dell'applicazione per identificare gli utenti o i service account. L'accesso ai contenuti dei bucket è regolato dalle autorizzazioni di Identity and Access Management. Le autorizzazioni di sistema locali proteggono il punto di montaggio stesso e tutti i dati memorizzati nella cache locale.

Prezzi di Cloud Storage FUSE

Cloud Storage FUSE è disponibile senza costi, ma l'archiviazione, i metadati e l'I/O di rete che genera da e verso Cloud Storage vengono addebitati come qualsiasi altra interfaccia Cloud Storage. In altre parole, tutti i trasferimenti di dati e le operazioni eseguiti da Cloud Storage FUSE vengono mappati ai trasferimenti e alle operazioni di Cloud Storage e vengono addebitati di conseguenza. Per ulteriori informazioni sulle operazioni comuni di Cloud Storage FUSE e sulla loro mappatura alle operazioni di Cloud Storage, consulta la mappatura delle operazioni.

Per evitare sorprese, devi stimare in che modo l'utilizzo di Cloud Storage FUSE si traduce in addebiti per Cloud Storage. Ad esempio, se utilizzi Cloud Storage FUSE per archiviare i file di log, potresti incorrere rapidamente in addebiti se i log vengono svuotati in modo aggressivo su centinaia o migliaia di macchine contemporaneamente.

Consulta la pagina Prezzi di Cloud Storage per informazioni su addebiti quali archiviazione, utilizzo della rete e operazioni.

Limitazioni

Sebbene Cloud Storage FUSE abbia un'interfaccia del file system, non è come un file system NFS o CIFS nel backend. Inoltre, Cloud Storage FUSE non è conforme a POSIX. Per un prodotto di file system POSIX in Google Cloud, consulta Google Cloud Managed Lustre o Filestore.

Quando utilizzi Cloud Storage FUSE, tieni presente le sue limitazioni e la sua semantica, che sono diverse da quelle dei file system POSIX. Cloud Storage FUSE deve essere utilizzato solo entro i limiti delle sue funzionalità.

Limitazioni e differenze rispetto ai file system POSIX

Il seguente elenco descrive le limitazioni di Cloud Storage FUSE:

  • Metadati: Cloud Storage FUSE non trasferisce i metadati degli oggetti quando carica i file su Cloud Storage, ad eccezione dei target mtime e dei collegamenti simbolici. Ciò significa che non puoi impostare i metadati degli oggetti quando carichi i file utilizzando Cloud Storage FUSE. Se devi conservare i metadati degli oggetti, valuta la possibilità di caricare i file utilizzando Google Cloud CLI, l'API JSON o la consoleGoogle Cloud .
  • Concorrenza: quando configuri più punti di montaggio per accedere allo stesso bucket Cloud Storage e due o più montaggi tentano di scrivere nello stesso oggetto Cloud Storage contemporaneamente, viene salvato il primo montaggio che completa l'operazione di scrittura e scarica correttamente le modifiche nell'oggetto. Altri montaggi che non hanno aggiornato i descrittori del file locali dopo la modifica dell'oggetto riscontrano un errore syscall.ESTALE quando tentano di salvare le modifiche a causa dei controlli delle precondizioni. Per garantire che i dati vengano scritti in modo coerente, sconsigliamo vivamente di modificare lo stesso oggetto da più origini.

    Tieni presente che più lettori possono accedere agli stessi oggetti o a oggetti diversi all'interno di un bucket e più autori possono modificare contemporaneamente oggetti diversi nello stesso bucket. Le scritture simultanee nello stesso oggetto Cloud Storage sono supportate dallo stesso punto di montaggio e si comportano in modo simile ai file system integrati.

  • Collegamento: Cloud Storage FUSE non supporta i collegamenti fisici.
  • Blocco e applicazione di patch ai file: Cloud Storage FUSE non supporta il blocco o l'applicazione di patch ai file. Pertanto, non devi archiviare i repository del sistema di controllo delle versioni nei punti di montaggio di Cloud Storage FUSE, in quanto i sistemi di controllo delle versioni si basano sul blocco e sulla patch dei file. Inoltre, non devi utilizzare Cloud Storage FUSE come sostituto dei file.
  • Semantica: la semantica in Cloud Storage FUSE è diversa da quella di un file system convenzionale. Ad esempio, i metadati come l'ora dell'ultimo accesso non sono supportati e alcune operazioni sui metadati, come la ridenominazione delle directory, non sono atomiche, a meno che non utilizzi bucket con lo spazio dei nomi gerarchico abilitato. Per un elenco delle differenze tra la semantica di Cloud Storage FUSE e quella dei file system convenzionali, consulta Semantica di Cloud Storage FUSE nella documentazione di GitHub di Cloud Storage FUSE. Per scoprire come Cloud Storage FUSE deduce le directory in Cloud Storage, consulta la sezione Semantica delle directory.
  • Workload che eseguono il patching dei file (o sovrascritture in loco): Cloud Storage FUSE può scrivere solo oggetti interi alla volta in Cloud Storage e non fornisce un meccanismo per il patching. Se provi a applicare una patch a un file, Cloud Storage FUSE ricaricherà l'intero file. L'unica eccezione a questo comportamento è che puoi aggiungere contenuti alla fine di un file di almeno 2 MB, nel qual caso Cloud Storage FUSE ricaricherà solo i contenuti aggiunti.
  • Accesso: l'autorizzazione per i file è regolata dalle autorizzazioni di Cloud Storage. Controllo dell'accesso in stile POSIX non funziona.
  • Prestazioni: Cloud Storage FUSE ha una latenza molto più elevata rispetto a un file system locale e, pertanto, non deve essere utilizzato come backend per l'archiviazione di un database. Il throughput potrebbe essere ridotto durante la lettura o la scrittura di un file di piccole dimensioni alla volta. L'utilizzo di file più grandi o il trasferimento di più file contemporaneamente contribuirà ad aumentare la velocità effettiva.
  • Disponibilità: a volte possono verificarsi errori temporanei quando utilizzi Cloud Storage FUSE per accedere a Cloud Storage. Ti consigliamo di riprovare le operazioni non riuscite utilizzando strategie di ripetizione.
  • Controllo delle versioni degli oggetti: Cloud Storage FUSE non supporta formalmente l'utilizzo con bucket per cui è abilitato il controllo delle versioni degli oggetti. Il tentativo di utilizzare Cloud Storage FUSE con bucket in cui è abilitato il controllo delle versioni degli oggetti può produrre un comportamento imprevedibile.
  • Transcodifica dei file:

    Oggetti con content-encoding: gzip nei metadati: qualsiasi oggetto di questo tipo in una directory montata su Cloud Storage FUSE non viene sottoposto a transcodifica di decompressione. L'oggetto rimane invece compresso nello stesso modo in cui è archiviato nel bucket.

    Ad esempio, un file di 1000 byte, caricato in un bucket utilizzando il comando gcloud storage cp con il flag --gzip-local, potrebbe diventare 60 byte (la dimensione compressa effettiva dipende dal contenuto e dall'implementazione di gzip utilizzata da gcloud CLI) come oggetto Cloud Storage. Se il bucket è montato utilizzando `gcsfuse` e il file corrispondente viene elencato o letto dalla directory di montaggio, le sue dimensioni vengono restituite come 60 byte e i suoi contenuti sono una versione compressa dei contenuti originali di 1000 byte.

    Ciò è in contrasto con un download che utilizza gcloud storage cp gs://bucket/path /local/path che viene sottoposto a transcodifica decompressiva: nel comando gcloud, i contenuti vengono decompressi automaticamente durante il download e vengono pubblicati i contenuti originali non compressi.

  • Policy di conservazione: Cloud Storage FUSE non supporta la scrittura nei bucket con una policy di conservazione. Se tenti di scrivere in un bucket con una policy di conservazione, le scritture non andranno a buon fine.

    Cloud Storage FUSE supporta la lettura di oggetti da bucket con una policy di conservazione, ma il bucket deve essere montato come Read-Only passando il flag -o RO durante il montaggio del bucket.

  • Archiviazione locale: gli oggetti nuovi o modificati vengono archiviati interamente in un file temporaneo locale finché non vengono chiusi o sincronizzati. Quando lavori con file di grandi dimensioni, assicurati di avere spazio di archiviazione locale sufficiente per le copie temporanee dei file, in particolare se lavori con istanze Compute Engine. Per saperne di più, consulta il file di panoramica README di Cloud Storage FUSE nella documentazione di GitHub di Cloud Storage FUSE.
  • Limiti degli handle di file: il kernel Linux ha un limite predefinito di 1024 handle di file aperti. Se utilizzi Cloud Storage FUSE come server per gestire più connessioni contemporanee, potresti superare questo limite. Per evitare problemi, assicurati che il numero di connessioni simultanee a un singolo host rimanga al di sotto del limite e valuta la possibilità di aumentarlo. Gli scenari in cui questo è importante includono l'utilizzo di un montaggio FUSE di Cloud Storage per pubblicare contenuti web, ospitareNetwork Attached Storagee (NAS) o ospitare un server FTP (File Transfer Protocol). Quando vengono pubblicati contenuti web su Cloud Run da un punto di montaggio FUSE di Cloud Storage, il numero massimo di richieste simultanee per istanza è limitato a meno di 1000.
  • Limitazioni di rsync: la latenza del file system di Cloud Storage FUSE influisce su rsync, che legge e scrive un solo file alla volta. Per trasferire più file da o verso il bucket in parallelo, utilizza Google Cloud CLI eseguendo gcloud storage rsync. Per saperne di più, consulta la documentazione di rsync.
  • Limitazioni delle operazioni di elenco: quando elenchi tutti gli oggetti in un bucket montato, ad esempio eseguendo ls, Cloud Storage FUSE chiama l'API Objects: list su Cloud Storage. L'API impagina i risultati, il che significa che Cloud Storage FUSE potrebbe dover inviare più chiamate, a seconda del numero di oggetti presenti nel bucket, il che può rendere un'operazione di elenco costosa e lenta.

Problemi noti

Per un elenco dei problemi noti in Cloud Storage FUSE, consulta i problemi aperti di Cloud Storage FUSE su GitHub.

Assistenza

Puoi ricevere assistenza, inviare domande generali e richiedere nuove funzionalità utilizzando uno dei canali di assistenza ufficiali diGoogle Cloud. Puoi anche ricevere assistenza inviando segnalazioni in GitHub.

Per soluzioni ai problemi più comuni, consulta Risoluzione dei problemi di produzione nella documentazione di GitHub di Cloud Storage FUSE.

Passaggi successivi