Cloud Storage FUSE

Questa pagina fornisce una panoramica di Cloud Storage FUSE, un FUSE. che consente di montare e accedere ai bucket Cloud Storage file system locali, in modo che le applicazioni possano leggere e scrivere oggetti nel tuo bucket usando la semantica del file system standard. Cloud Storage FUSE è un prodotto open source supportata da Google.

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

Questa documentazione riflette sempre la versione più recente di Cloud Storage FUSE. Per informazioni dettagliate 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 i bucket come cartelle montate localmente sul file system.

Cloud Storage FUSE funziona traducendo i nomi degli oggetti archiviati in un sistema di file e directory, interpretando il carattere barra ("/") nei nomi degli oggetti come 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 con un file system, fornendo spazio di archiviazione di file praticamente illimitato nel cloud. Cloud Storage FUSE può essere eseguito ovunque con connettività Cloud Storage, tra cui Google Kubernetes Engine, VM di Compute Engine o sistemi on-premise.

Cloud Storage FUSE è ideale per i casi d'uso in cui le giuste caratteristiche di prestazioni e scalabilità per un'applicazione 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 maggiori informazioni, consulta Cloud Storage FUSE per i carichi di lavoro di 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 consumano i bucket come volumi, quindi puoi leggere e scrivere Cloud Storage dai tuoi pod Kubernetes. Per ulteriori informazioni su altre integrazioni, consulta la sezione Integrazioni.

Memorizzazione nella cache

Cloud Storage FUSE offre quattro tipi di memorizzazione nella cache per contribuire ad aumentare le prestazioni e riducono i costi: memorizzazione nella cache di file, memorizzazione nella cache delle statistiche, tipo di memorizzazione nella cache ed elenchi di memorizzazione nella cache. Per ulteriori informazioni su queste cache, consulta la Panoramica della memorizzazione nella cache.

Limitazioni

Sebbene Cloud Storage FUSE abbia un'interfaccia per il file system, non è come una NFS CIFS o CIFS sul backend. Inoltre, Cloud Storage FUSE Conforme a POSIX. Per un prodotto del file system POSIX in Google Cloud, consulta Filestore.

Quando utilizzi Cloud Storage FUSE, presta attenzione ai suoi limiti e alla sua semantica. diversi da quelli dei file system POSIX. Cloud Storage FUSE dovrebbe nell'ambito delle sue capacità.

Limitazioni e differenze rispetto ai file system POSIX

L'elenco seguente 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 dei target dei link simbolici. Ciò significa che non puoi impostare i metadati dell'oggetto quando carichi i file utilizzando Cloud Storage FUSE. Se devi conservare i metadati degli oggetti, ti consigliamo di caricare i file utilizzando Google Cloud CLI, l'API JSON o la console Google Cloud.
  • Contemporaneità: Cloud Storage FUSE non fornisce contemporaneità. per più scritture sullo stesso file. Quando più scritture tentano di sostituire un file, l'ultima scrittura ha la precedenza e tutte le scritture precedenti vengono perse. C'è Nessuna unione, controllo della versione o notifica all'utente della successiva sovrascrittura.
  • Collegamento: Cloud Storage FUSE non supporta i link diretti.
  • Blocco e patch dei file: Cloud Storage FUSE non supporta il blocco o il patching dei file. Di conseguenza, non devi archiviare la versione controllare i repository di sistema nei punti di montaggio di Cloud Storage FUSE, come versione sistemi di controllo si basano sul blocco e sull'applicazione di patch dei file. Inoltre, non devi usa Cloud Storage FUSE come sostituzione dei file.
  • Semantica: la semantica di Cloud Storage FUSE è diversa dalla semantica in un file system convenzionale. Ad esempio, metadati come l'ultimo l'accesso non è supportato e alcune operazioni sui metadati, come le rinominazioni non sono atomiche a meno che non utilizzi i bucket spazio dei nomi gerarchico abilitato. Per un elenco delle differenze la semantica di Cloud Storage FUSE e la semantica convenzionale del file system; consulta Semantica nella documentazione GitHub di Cloud Storage FUSE. Per scoprire come Cloud Storage FUSE deduce le directory in Cloud Storage, vedi semantica della directory.
  • Carichi di lavoro che eseguono il patching dei file (o le sovrascrivizioni in situ): Cloud Storage FUSE può scrivere in Cloud Storage solo oggetti interi alla volta e non fornisce un meccanismo per il patching. Se provi a eseguire il patching di un file, Cloud Storage FUSE ne caricherà di nuovo l'intero contenuto. L'unica eccezione a questo comportamento è che puoi aggiungere contenuti alla fine di un file di almeno 2 MB, in cui Cloud Storage FUSE ricaricherà solo i contenuti aggiunti.
  • Accesso: l'autorizzazione per i file è regolata da autorizzazioni per Cloud Storage. Il 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. La velocità effettiva potrebbe essere ridotta durante la lettura o la scrittura un file di piccole dimensioni alla volta. Uso di file di dimensioni maggiori o trasferimento di più file alla volta, 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 a eseguire le operazioni non riuscite riprovare le strategie.
  • 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. Tentativo di utilizzare Cloud Storage FUSE con bucket con controllo delle versioni degli oggetti possono generare comportamenti imprevedibili.
  • Transcodifica file:

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

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

    È in contrasto con un download che utilizza gcloud storage cp gs://bucket/path /local/path che viene sottoposta transcodifica decompressiva: nel comando gcloud, i contenuti viene decompresso automaticamente durante il download, mentre l'originale non compresso vengono pubblicati i contenuti.

  • Criteri di conservazione: Cloud Storage FUSE non per supportare la scrittura nei bucket criteri di conservazione. Se tenti di scrivere su un bucket con un criterio di conservazione, le scritture errore.

    Cloud Storage FUSE supporta la lettura degli 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.

  • Spazio di archiviazione locale: gli oggetti nuovi o modificati vengono memorizzati nella loro interezza 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 utilizzi Istanze di Compute Engine. Per maggiori informazioni, consulta il file README nella documentazione di GitHub di Cloud Storage FUSE.
  • Limiti per gli handle dei file: il kernel Linux ha un limite predefinito di 1024 handle dei 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 Cloud Storage per pubblicare contenuti web, ospitare un NAS (Network-attached Storage) o un server FTP (File Transfer Protocol). Quando vengono pubblicati contenuti web su Cloud Run da un montaggio di Cloud Storage FUSE, numero massimo di richieste in parallelo per istanza è limitato a meno di 1000.
  • Limitazioni rsync: file system di Cloud Storage FUSE la latenza influisce su rsync, che esegue solo operazioni di lettura e scrittura un file alla volta. Per trasferire più file da o verso il tuo bucket in in parallelo, utilizza Google Cloud CLI eseguendo gcloud storage rsync. Per ulteriori informazioni, consulta 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 esegue la paginazione dei risultati, il che significa che FUSE Cloud Storage potrebbe dover emettere più chiamate, a seconda del numero di oggetti nel bucket, il che può rendere un'operazione di elenco costosa e lenta.

Framework, sistemi operativi e architetture

Cloud Storage FUSE è stato convalidato con i seguenti framework:

  • TensorFlow 2.x

  • TensorFlow V1.x

  • PyTorch V2.x

  • PyTorch 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

Assistenza

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

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

Prezzi di Cloud Storage FUSE

Cloud Storage FUSE è disponibile senza costi, ma lo spazio di archiviazione, i metadati e l'I/O di rete generati da e verso Cloud Storage sono soggetti a pagamento come qualsiasi altra interfaccia di Cloud Storage. In altre parole, tutte le operazioni e i trasferimenti 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 Per le 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 usi Cloud Storage FUSE, per archiviare i file di log, potresti incorrere in addebiti rapidi se i log sono sono stati scaricati su centinaia o migliaia di macchine contemporaneamente.

Consulta i prezzi di Cloud Storage per informazioni su addebiti come 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, esegui anche Operazioni di Cloud Storage associate a Cloud Storage FUSE operativa. La tabella seguente descrive i comandi e i comandi FUSE di Cloud Storage più comuni e le operazioni associate dell'API JSON di Cloud Storage. Puoi visualizzare informazioni sulle operazioni di Cloud Storage FUSE utilizzando il flag --debug_gcs.

Comando Operazioni dell'API JSON
gcsfuse --debug_gcs 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"), 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/")

Semantica della directory

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

Ad esempio, supponi di montare un bucket denominato my-bucket, che contiene un oggetto denominata 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 maggiori informazioni informazioni sull'opzione --implicit-dirs, consulta le Documentazione sulla riga di comando di Cloud Storage FUSE.

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

Per ulteriori informazioni sulla semantica delle directory, inclusa la modalità di montaggio dei bucket con directory definite in modo implicito, consulta la sezione File e directory nella documentazione di GitHub.

Strategia di ripetizione

Per impostazione predefinita, le richieste non riuscite da Cloud Storage FUSE a Cloud Storage vengono riprovate con backoff esponenziale fino a una durata massima del backoff specificata, che ha un valore di 30s (30 secondi) per impostazione predefinita. Una volta eseguito il backoff, durata supera la durata massima specificata, il nuovo tentativo continua con durata massima specificata. Puoi utilizzare l'opzione --max-retry-sleep nell'ambito di una chiamata gcsfuse per specificare la durata del backoff.

Per ulteriori informazioni sull'opzione --max-retry-sleep, consulta le Documentazione relativa alla riga di comando gcsfuse.

Problemi noti

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

Passaggi successivi