Questa pagina 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 standard del file system.
Questa documentazione riflette sempre l'ultima versione di Cloud Storage FUSE. Per informazioni dettagliate sull'ultima versione, consulta Release di Cloud Storage FUSE su GitHub.
Panoramica
Cloud Storage FUSE è un prodotto open source supportato da Google. Cloud Storage FUSE utilizza le API FUSE e Cloud Storage per esporre in modo trasparente i bucket come cartelle montate localmente nel file system.
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 in Cloud Storage dall'interno dei pod Kubernetes. Per saperne di più su altre integrazioni, consulta Integrazioni.
Come funziona Cloud Storage FUSE
Cloud Storage FUSE funziona traducendo i nomi di archiviazione degli 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 logica del file system
utilizzando lo spazio dei nomi gerarchico, che consente di organizzare gli oggetti
in cartelle.
Cloud Storage FUSE può essere eseguito ovunque sia disponibile la connettività a Cloud Storage, inclusi Google Kubernetes Engine, VM Compute Engine o sistemi on-premise.
Casi d'uso di Cloud Storage FUSE
Cloud Storage FUSE è ideale per i casi d'uso in cui Cloud Storage ha le caratteristiche di prestazioni e scalabilità giuste 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 maggiori informazioni, consulta Cloud Storage FUSE per i carichi di lavoro ML.
Cloud Storage FUSE per il machine learning
Cloud Storage FUSE è una scelta comune per gli sviluppatori che vogliono archiviare e accedere ai dati di addestramento e dei modelli di ML come oggetti in Cloud Storage. Cloud Storage FUSE offre diversi vantaggi per lo sviluppo di progetti ML:
Cloud Storage FUSE consente di montare i bucket Cloud Storage come file system locale, in modo che le applicazioni possano accedere ai dati di addestramento e del modello utilizzando la semantica standard del file system. Ciò significa che puoi evitare il costo di riscrivere o refactoring del codice dell'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 risorse di calcolo con accesso diretto ai dati in Cloud Storage, in modo da non dover scaricare i dati di addestramento nella risorsa di calcolo.
Per ulteriori 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 di Cloud Storage FUSE con i prodotti Google Cloud
Cloud Storage FUSE si integra con i seguenti prodotti: Google Cloud
Prodotto | Come viene integrato Cloud Storage FUSE |
---|---|
AI Hypercomputer | Cloud Storage con Cloud Storage FUSE è la soluzione di archiviazione consigliata per la maggior parte dei casi d'uso di AI e ML perché ti consente di scalare l'archiviazione dei dati in modo più conveniente rispetto ai servizi di file system. Per saperne di più, vedi Servizi di archiviazione. |
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 ulteriori informazioni, consulta Preparare il codice di addestramento. |
Vertex AI Workbench | Le istanze di 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 file e ai bucket Cloud Storage in JupyterLab. |
Deep Learning VM Images | Cloud Storage FUSE è preinstallato con le immagini VM di Deep Learning. |
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. |
Batch | Cloud Storage FUSE ti 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 viene eseguito. |
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 la sezione Montare un volume Cloud Storage. |
Cloud Composer | Quando crei un ambiente, Cloud Composer memorizza il codice sorgente per i tuoi flussi di lavoro e le relative dipendenze in cartelle specifiche di un bucket Cloud Storage. Cloud Composer utilizza Cloud Storage FUSE per mappare le cartelle nel bucket ai componenti Airflow nell'ambiente Cloud Composer. |
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 del worker, il codice della pipeline Apache Beam sottostante Dataflow può accedere direttamente ai file in Cloud Storage utilizzando la semantica standard del file system. 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. |
Per un elenco dei prodotti Google Cloud integrati con Cloud Storage in generale, consulta Integrazione con Google Cloud servizi e strumenti.
Memorizzazione nella cache
Cloud Storage FUSE offre quattro tipi di memorizzazione nella cache per contribuire ad aumentare le prestazioni e ridurre i costi: memorizzazione nella cache dei file, delle statistiche, dei tipi e degli elenchi. Per ulteriori informazioni su queste cache, consulta la panoramica della memorizzazione nella cache.
Semantica della directory
Cloud Storage offre bucket con uno spazio dei nomi piatto e bucket con lo 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. Le directory definite implicitamente includono cartelle simulate e cartelle gestite.
Ad esempio, supponiamo di montare 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
nel comando gcsfuse mount
quando monti un bucket con spazio dei nomi piatto. Per ulteriori informazioni sull'opzione --implicit-dirs
, consulta la documentazione della riga di comando di Cloud Storage FUSE.
Se devi archiviare i dati e accedervi utilizzando un file system, utilizza bucket con lo spazio dei nomi gerarchico abilitato. Per scoprire come creare questi bucket, consulta Creare bucket con lo spazio dei nomi gerarchico abilitato.
Per maggiori informazioni sulla semantica delle directory, incluso come montare i bucket con directory definite implicitamente, consulta File e directory nella documentazione di GitHub.
Strategia di ripetizione
Per impostazione predefinita, i tentativi non riusciti da Cloud Storage FUSE a Cloud Storage vengono
ripetuti con backoff esponenziale fino a una durata massima specificata del backoff, che ha un valore di 30s
(30 secondi) per impostazione predefinita. 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
nell'ambito
di una chiamata gcsfuse
per specificare la durata del backoff.
Per saperne di più sull'opzione --max-retry-sleep
, consulta la
documentazione della riga di comando gcsfuse
.
Strategia di nuovi 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. Vengono eseguite al massimo quattro operazioni di riprova per ogni blocco bloccato.
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 FUSE di Cloud Storage comuni e
le operazioni dell'API JSON di Cloud Storage associate. Puoi visualizzare
informazioni sulle operazioni Cloud Storage FUSE impostando il
flag --log-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 dettagliate 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.
Prezzi di Cloud Storage FUSE
Cloud Storage FUSE è disponibile senza costi aggiuntivi, 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 e le operazioni di dati 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 costi di Cloud Storage. Ad esempio, se utilizzi Cloud Storage FUSE per archiviare i file di log, puoi 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 file system POSIX in Google Cloud, consulta Filestore.
Quando utilizzi Cloud Storage FUSE, tieni presente le sue limitazioni e la sua semantica, che è diversa da quella dei file system POSIX. Cloud Storage FUSE deve essere utilizzato solo all'interno 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 durante il caricamento dei file in Cloud Storage, ad eccezione di mtime e delle destinazioni dei link simbolici. Ciò significa che non puoi impostare i metadati dell'oggetto quando carichi 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 contemporaneamente nello stesso oggetto Cloud Storage, viene salvato il primo montaggio che completa l'operazione di scrittura e scarica correttamente le modifiche nell'oggetto. Gli altri montaggi che non hanno aggiornato i descrittori di 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 sullo 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 rigidi.
- 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 sull'applicazione di patch dei file. Inoltre, non devi utilizzare Cloud Storage FUSE come sostituzione di 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 della directory non sono atomiche, a meno che tu non utilizzi bucket con spazio dei nomi gerarchico abilitato. Per un elenco delle differenze tra la semantica di Cloud Storage FUSE e la semantica convenzionale del file system, consulta la sezione Semantica 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.
- Carichi di lavoro che eseguono l'applicazione di patch ai file (o sovrascritture sul posto): Cloud Storage FUSE può scrivere solo interi oggetti alla volta in Cloud Storage e non fornisce un meccanismo per l'applicazione di patch. 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 2 MB o più, in cui Cloud Storage FUSE caricherà nuovamente solo i contenuti aggiunti.
- Accesso: l'autorizzazione per i file è regolata dalle autorizzazioni di Cloud Storage. Controllo dell'accesso in stile POSIX non funziona.
- Rendimento: 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. La velocità effettiva potrebbe essere ridotta durante la lettura o la scrittura di un piccolo file 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 in cui è abilitato il controllo delle versioni degli oggetti. Il tentativo di utilizzare Cloud Storage FUSE con bucket con il controllo delle versioni degli oggetti abilitato può produrre un comportamento imprevedibile.
- Transcodifica dei file:
Oggetti con
content-encoding: gzip
nei metadati: qualsiasi oggetto di questo tipo in una directory montata con Cloud Storage FUSE non viene sottoposto a transcodifica decompressiva. L'oggetto rimane 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 di 60 byte (le dimensioni effettive compresse dipendono dal contenuto e dall'implementazione 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 comandogcloud
, 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 un criterio di conservazione, le scritture non
andranno a buon fine.
Cloud Storage FUSE supporta la lettura di oggetti da bucket con un criterio di conservazione, ma il bucket deve essere montato come
Read-Only
passando il flag-o RO
durante il montaggio del bucket. - Archivio locale: gli oggetti nuovi o modificati vengono memorizzati per intero 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, soprattutto se lavori con istanze Compute Engine. Per maggiori informazioni, consulta il file README nella documentazione di Cloud Storage FUSE su GitHub.
- Limiti degli handle di file: il kernel Linux ha un limite predefinito di 1024 handle di file aperti. Quando utilizzi Cloud Storage FUSE come server per gestire più connessioni simultanee, 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 fornisci 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 sursync
, che legge e scrive un solo file alla volta. Per trasferire più file da o verso il bucket in parallelo, utilizza Google Cloud CLI eseguendogcloud storage rsync
. Per saperne di più, consulta la documentazione dirsync
. - 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 effettuare più chiamate, a seconda del numero di oggetti 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 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 su GitHub.
Per soluzioni ai problemi più comuni, consulta la sezione Risoluzione dei problemi nella documentazione di GitHub di Cloud Storage FUSE.
Passaggi successivi
Scopri come installare gcsfuse CLI.
Scopri Cloud Storage FUSE completando una guida rapida.
Scopri come montare i bucket.
Scopri come configurare il comportamento di Cloud Storage FUSE utilizzando lo strumento a riga di comando
gcsfuse
o un file di configurazione.