Cloud Storage FUSE

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 del file system standard. Cloud Storage FUSE è un prodotto open source supportato da Google.

Consulta la documentazione seguente per istruzioni su come utilizzare Cloud Storage FUSE:

Questa documentazione riflette sempre l'ultima versione di Cloud Storage FUSE. Per i dettagli sulla versione più recente, consulta le release di Cloud Storage FUSE su GitHub.

Come funziona Cloud Storage FUSE

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 converte i nomi di archiviazione degli oggetti in un file e in un sistema di directory, interpretando il carattere della barra ("/") nei nomi degli oggetti come un separatore di directory, in modo che gli oggetti con lo stesso prefisso comune vengano trattati come file nella stessa directory. Le applicazioni possono interagire con il bucket montato come un file system, fornendo uno spazio di archiviazione dei file praticamente illimitato in esecuzione nel cloud. Cloud Storage FUSE può essere eseguito ovunque con connettività a Cloud Storage, inclusi Google Kubernetes Engine, VM di Compute Engine o sistemi on-premise.

Cloud Storage FUSE è ideale per i casi d'uso in cui Cloud Storage ha le giuste caratteristiche di prestazioni e scalabilità per un'applicazione che richiede la semantica del file system. Ad esempio, Cloud Storage FUSE è utile per i progetti di machine learning (ML) perché consente di archiviare dati, modelli, checkpoint e log direttamente in Cloud Storage. Per ulteriori informazioni, consulta Cloud Storage FUSE per i carichi di lavoro ML.

Cloud Storage FUSE è integrato con altri servizi Google Cloud. Ad esempio, il driver CSI di Cloud Storage FUSE 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 maggiori informazioni su altre integrazioni, vedi Integrazioni.

Limitazioni

Sebbene Cloud Storage FUSE abbia un'interfaccia per il 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 Filestore.

Quando utilizzi Cloud Storage FUSE, presta attenzione alle sue limitazioni e alla sua semantica, che sono diverse da quelle dei file system POSIX. Cloud Storage FUSE deve essere utilizzato solo all'interno delle sue funzionalità.

Limitazioni e differenze rispetto ai file system POSIX

Nell'elenco seguente sono descritte 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 delle destinazioni mtime e symlink. Ciò significa che non puoi impostare metadati degli oggetti 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 console Google Cloud.
  • Contemporaneità: Cloud Storage FUSE non fornisce il controllo della contemporaneità per più scritture sullo stesso file. Quando più scritture tentano di sostituire un file, l'ultima scrittura vince e tutte le scritture precedenti vanno perse. Non sono previste unione, controllo della versione o notifica all'utente della successiva sovrascrittura.
  • Collegamento: Cloud Storage FUSE non supporta i link diretti.
  • Blocco dei file e applicazione di patch ai file: Cloud Storage FUSE non supporta il blocco o l'applicazione di patch dei file. Di conseguenza, non devi archiviare i repository del sistema di controllo della versione nei punti di montaggio di Cloud Storage FUSE, poiché i sistemi di controllo della versione si basano sul blocco e sull'applicazione di patch dei file. Inoltre, non utilizzare Cloud Storage FUSE come sostituzione del filer.
  • Semantica: la semantica di Cloud Storage FUSE è diversa dalla semantica in un file system convenzionale. Ad esempio, metadati come l'ora dell'ultimo accesso non sono supportati e alcune operazioni sui metadati, come la ridenominazione delle directory, non sono atomiche. Per un elenco delle differenze tra la semantica di Cloud Storage FUSE e la semantica del file system convenzionale, consulta la sezione Semantica nella documentazione GitHub di Cloud Storage FUSE.
  • Carichi di lavoro che eseguono l'applicazione di patch ai file (o che eseguono la sovrascrittura): Cloud Storage FUSE può scrivere solo oggetti interi alla volta in Cloud Storage e non fornisce un meccanismo per l'applicazione di patch. Se provi ad 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 dimensioni pari o superiori a 2 MB, dove Cloud Storage FUSE ricarica 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, per questo motivo, non deve essere utilizzato come backend per l'archiviazione di un database. La velocità effettiva può essere ridotta quando leggi o scrivi un file di piccole dimensioni. L'utilizzo di file di dimensioni maggiori o il trasferimento di più file contemporaneamente contribuisce ad aumentare la velocità effettiva.
  • Disponibilità: a volte si possono verificare errori temporanei quando utilizzi Cloud Storage FUSE per accedere a Cloud Storage. Ti consigliamo di riprovare le operazioni non riuscite utilizzando le strategie di ripetizione.
  • Controllo delle versioni degli oggetti: Cloud Storage FUSE non supporta formalmente l'utilizzo con i bucket in cui è abilitato il controllo delle versioni degli oggetti. Il tentativo di utilizzare Cloud Storage FUSE con i bucket in cui è abilitato il controllo delle versioni degli oggetti può produrre un comportamento imprevedibile.
  • Transcodifica file: oggetti con content-encoding: gzip nei metadati. Qualsiasi oggetto di questo tipo in una directory montata su Cloud Storage FUSE non viene sottoposto alla transcodifica decompressiva. L'oggetto rimane compresso nello stesso modo in cui viene archiviato nel bucket.
    Ad esempio, un file di 1000 byte, caricato in un bucket usando il comando gcloud storage cp con il flag --gzip-local, potrebbe diventare 60 byte (la dimensione compressa effettiva dipende dai contenuti e dall'implementazione di gzip utilizzata da gcloud CLI) come oggetto Cloud Storage. Se il bucket viene montato utilizzando gcsfuse e il file corrispondente viene elencato o letto dalla directory di montaggio, la sua dimensione viene restituita come 60 byte e i suoi contenuti sono una versione compressa dei contenuti originali di 1000 byte.
    A differenza di 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.
    Nota: il tentativo di utilizzare Cloud Storage FUSE per modificare o modificare gli oggetti con content-encoding: gzip può produrre un comportamento imprevedibile. Questo perché Cloud Storage FUSE carica il contenuto dell'oggetto così com'è (senza comprimerlo) conservando content-encoding: gzip. Inoltre, se i contenuti non vengono compressi correttamente con gzip, potrebbero non essere letti dal server da altri client, ad esempio gcloud CLI. Questo perché altri client utilizzano la transcodifica decompressiva durante la lettura e l'operazione non riesce a causa di contenuti gzip non corretti.
  • Criteri di conservazione: Cloud Storage FUSE non supporta la scrittura nei bucket con un criterio 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 dai 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.

  • Archiviazione locale: gli oggetti nuovi o modificati vengono archiviati per intero in un file temporaneo locale fino a quando non vengono chiusi o sincronizzati. Quando lavori con file di grandi dimensioni, assicurati di disporre di capacità di archiviazione locale sufficiente per le copie temporanee dei file, in particolare se utilizzi le istanze di Compute Engine. Per maggiori informazioni, consulta il README nella documentazione GitHub di Cloud Storage FUSE.
  • Directory: Cloud Storage opera con uno spazio dei nomi semplice. Per impostazione predefinita, solo le directory definite esplicitamente (ossia esistono come oggetti in Cloud Storage) possono essere visualizzate nel file system montato. Le directory implicite (quelle che sono solo parti del percorso di altri file o directory) non vengono visualizzate per impostazione predefinita. Se hai file con un percorso che contiene una directory implicita, il file non viene visualizzato nella struttura generale delle directory, poiché la directory implicita che li contiene non viene visualizzata. Tuttavia, puoi utilizzare un flag per modificare questo comportamento. Per ulteriori informazioni, consulta il flag --implicit-dirs nella documentazione dell'interfaccia a riga di comando di Cloud Storage FUSE.

    Cloud Storage FUSE non supporta la ridenominazione delle directory. La ridenominazione di una directory non può essere eseguita a livello atomico in Cloud Storage. La ridenominazione di una directory comporta la copia di un oggetto con un nuovo nome e l'eliminazione dell'oggetto originale.

  • Limiti relativi agli handle di file: per impostazione predefinita, il kernel Linux consente un massimo di 1024 handle di file aperti. Cloud Storage FUSE non deve essere utilizzato come server per la gestione di connessioni parallele simultanee da client esterni, in quanto potrebbe superare il numero massimo di handle di file aperti. Alcuni casi d'uso comuni da evitare sono i contenuti di pubblicazione web da un montaggio di Cloud Storage FUSE, l'esposizione di un montaggio Cloud Storage FUSE come Network Attached Storage (NAS) tramite protocolli di condivisione file (ad esempio, NFS o SMB) e l'hosting di un server FTP (File Transfer Protocol) supportato da un montaggio 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 versione 1.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

  • x86_64

  • ARM64

Richiedi assistenza

Puoi ricevere assistenza, inviare domande di carattere generale e richiedere nuove funzionalità utilizzando uno dei canali di assistenza ufficiali di Google Cloud. Puoi anche ricevere assistenza compilando i problemi in GitHub.

Per soluzioni ai problemi più comuni, consulta la pagina relativa alla risoluzione dei problemi nella documentazione GitHub 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 di Cloud Storage. In altre parole, tutti i trasferimenti di dati e le operazioni eseguite 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 su come vengono mappate alle operazioni di Cloud Storage, consulta la mappatura delle operazioni.

Per evitare sorprese, valuta 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, ti possono essere addebitati costi rapidamente se i log vengono svuotati in modo aggressivo su centinaia o migliaia di macchine contemporaneamente.

Consulta i prezzi di Cloud Storage per informazioni su addebiti quali spazio di archiviazione, utilizzo della rete e operazioni.

Mappa delle operazioni di Cloud Storage FUSE alle operazioni di Cloud Storage

Quando esegui un'operazione utilizzando Cloud Storage FUSE, vengono eseguite anche le operazioni di Cloud Storage associate all'operazione Cloud Storage FUSE. La seguente tabella descrive i comandi comuni di Cloud Storage FUSE e le relative operazioni dell'API JSON Cloud Storage associate. Puoi visualizzare informazioni sulle operazioni di Cloud Storage FUSE utilizzando il flag --debug_gcs.

Comando Operazioni delle API JSON
gcsfuse --debug_gcs example-bucket mp Objects.list (per controllare le credenziali)
cd mp n/d
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"), alla chiusura dopo il completamento della scrittura

rm -rf subdir

Objects.list("subdir")

Objects.list("subdir/")

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

Objects.list("subdir/")

Objects.delete("subdir/")

Problemi noti

Per un elenco dei problemi noti di Cloud Storage FUSE, consulta GitHub.

Passaggi successivi