Che cos'è BlobFuse? - BlobFuse2

BlobFuse è un driver del file system virtuale per Archiviazione BLOB di Azure. Usare BlobFuse per accedere ai dati BLOB in blocchi di Azure esistenti tramite il file system Linux.

Informazioni sul progetto open source BlobFuse2

BlobFuse2 è un progetto di open source che usa la libreria libfuse open source (fuse3) per comunicare con il modulo kernel FUSE linux. BlobFuse2 implementa le operazioni del file system usando le API REST di Archiviazione di Azure.

Il progetto open source BlobFuse2 è disponibile in GitHub:

Gestione delle licenze

Il progetto BlobFuse2 è concesso in licenza con la licenza MIT.

Funzionalità

Un elenco completo delle funzionalità di BlobFuse2 è disponibile nel file README BlobFuse2. Ecco alcune delle attività chiave che è possibile eseguire usando BlobFuse2:

  • Montare un contenitore Archiviazione BLOB di Azure o Azure Data Lake Storage Gen2 file system in Linux. BlobFuse2 supporta gli account di archiviazione con spazi dei nomi flat o spazi dei nomi gerarchici configurati.
  • Usare operazioni di file system di base come mkdir, opendir, readdirrmdir, , open, readcreate, closeunlinktruncatewritestate .rename
  • Usare la memorizzazione nella cache dei file locali per migliorare i tempi di accesso successivi.
  • Ottenere informazioni dettagliate sulle attività di montaggio e sull'utilizzo delle risorse usando BlobFuse2 Health Monitor.

Altre funzionalità chiave in BlobFuse2 includono:

  • Streaming per supportare la lettura e la scrittura di file di grandi dimensioni
  • Download e caricamenti paralleli per migliorare il tempo di accesso per file di grandi dimensioni
  • Più montaggi nello stesso contenitore per carichi di lavoro di sola lettura

Miglioramenti di BlobFuse2 da BlobFuse v1

BlobFuse2 offre più supporto delle funzionalità e prestazioni migliorate in più scenari utente da BlobFuse v1. Per l'elenco completo dei miglioramenti, vedere il file README BlobFuse2. Ecco un riepilogo dei miglioramenti in BlobFuse2 da BlobFuse v1:

  • Memorizzazione nella cache migliorata
  • Ulteriore supporto per la gestione tramite nuovi comandi dell'interfaccia della riga di comando di Azure
  • Altre funzionalità di supporto per la registrazione
  • L'aggiunta dello streaming di scrittura per file di grandi dimensioni (in precedenza era supportata solo la modalità di lettura-streaming)
  • Nuovo Monitoraggio integrità BlobFuse2 per ottenere informazioni dettagliate sulle attività di montaggio e sull'utilizzo delle risorse
  • Opzioni di compatibilità e aggiornamento per gli utenti BlobFuse v1 esistenti
  • Controllo delle versioni e richiesta di aggiornamento
  • Supporto per la crittografia dei file di configurazione

Vedere l'elenco dei miglioramenti delle prestazioni di BlobFuse2 da BlobFuse v1.

Per gli utenti di BlobFuse v1

I miglioramenti forniti da BlobFuse2 sono motivi interessanti per eseguire l'aggiornamento e la migrazione a BlobFuse2. Se non si è pronti per la migrazione, è possibile usare BlobFuse2 per montare un contenitore BLOB usando le stesse opzioni di configurazione e i parametri dell'interfaccia della riga di comando di Azure usati con BlobFuse v1.

La guida alla migrazione di BlobFuse2 fornisce tutti i dettagli necessari per la compatibilità e la migrazione dei carichi di lavoro correnti.

Supporto

BlobFuse2 è supportato da Microsoft se viene usato entro i limiti specificati. Se si verifica un problema, segnalarlo in GitHub.

Limitazioni

BlobFuse2 non garantisce la conformità POSIX al 100% perché BlobFuse2 converte semplicemente le richieste in API REST BLOB. Ad esempio, le operazioni di ridenominazione sono atomiche in POSIX ma non in BlobFuse2.

Vedere l'elenco completo delle differenze tra un file system nativo e BlobFuse2.

Differenze tra il file system Linux e BlobFuse2

In molti modi, è possibile usare l'archiviazione montata su BlobFuse2 proprio come il file system Linux nativo. Lo schema di directory virtuale è lo stesso e usa una barra (/) come delimitatore. Le operazioni di file system di base come mkdir, opendir, readdirrmdir, open, writeclosereadunlinktruncatecreate, state rename funzionano come nel file system Linux.

BlobFuse2 è diverso dal file system Linux in alcuni modi principali:

  • Numero di collegamenti reali readdir:

    Per motivi di prestazioni, BlobFuse2 non segnala correttamente i collegamenti reali all'interno di una directory. Il numero di collegamenti rigidi per le directory vuote restituisce come 2. Il numero per le directory non vuote restituisce sempre come 3, indipendentemente dal numero effettivo di collegamenti reali.

  • Ridenominazione non atomica:

    Archiviazione BLOB di Azure non supporta operazioni di ridenominazione atomica. Le ridenominazione a file singolo sono in realtà due operazioni: una copia e quindi un'eliminazione dell'originale. La directory rinomina in modo ricorsivo tutti i file nella directory e rinomina ogni file.

  • File speciali:

    BlobFuse2 supporta solo directory, file normali e collegamenti simbolici. File speciali come file di dispositivo, pipe e socket non sono supportati.

  • mkfifo:

    La creazione di Fifo non è supportata da BlobFuse2. Il tentativo di questa azione genera un errore "funzione non implementata".

  • chown e chmod:

    Data Lake Storage Gen2 gli account di archiviazione supportano le autorizzazioni per oggetto e gli ACL, ma i BLOB in blocchi dello spazio dei nomi flat (FNS) non lo fanno. Di conseguenza, BlobFuse2 non supporta le chown operazioni e chmod per i contenitori BLOB in blocchi montati. Le operazioni sono supportate per Data Lake Storage Gen2.

  • File o pipe del dispositivo:

    BlobFuse2 non supporta la creazione di file di dispositivo o pipe.

  • Attributi estesi (x-attrs):

    BlobFuse2 non supporta operazioni con attributi estesi (x-attrs).

  • Write-streaming:

    Lo streaming simultaneo di operazioni di lettura e scrittura su dati di file di grandi dimensioni può produrre risultati imprevedibili. La scrittura simultanea nello stesso BLOB da thread diversi non è supportata.

Integrità dei dati

La memorizzazione nella cache dei file svolge un ruolo importante nell'integrità dei dati letti e scritti in un montaggio del file system di archiviazione BLOB. È consigliabile usare la modalità di streaming con file di grandi dimensioni, che supporta lo streaming per le operazioni di lettura e scrittura. BlobFuse2 memorizza nella cache i blocchi di file di streaming in memoria. Per i file più piccoli che non sono costituiti da blocchi, l'intero file viene archiviato in memoria. La cache dei file è la seconda modalità. È consigliabile memorizzare nella cache dei file per i carichi di lavoro che non contengono file di grandi dimensioni, ad esempio quando i file vengono archiviati su disco nel loro insieme.

BlobFuse2 supporta operazioni di lettura e scrittura. La sincronizzazione continua dei dati scritti nell'archiviazione tramite altre API o altri montaggi di BlobFuse2 non è garantita. Per l'integrità dei dati, è consigliabile che più origini non modifichino lo stesso BLOB, in particolare contemporaneamente. Se una o più applicazioni tentano di scrivere nello stesso file contemporaneamente, i risultati potrebbero essere imprevisti. A seconda della tempistica di più operazioni di scrittura e dell'aggiornamento della cache per ogni operazione, il risultato potrebbe essere che l'ultimo writer vince e le scritture precedenti vengono perse o in genere che il file aggiornato non si trova nello stato previsto.

Memorizzazione nella cache dei file su disco

Quando un file è oggetto di un'operazione di scrittura, i dati vengono prima salvati nella cache in un disco locale. I dati vengono scritti nell'archivio BLOB solo dopo la chiusura dell'handle di file. Se si verifica un problema durante il tentativo di rendere persistenti i dati nell'archiviazione BLOB, viene visualizzato un messaggio di errore.

Streaming

Per lo streaming durante le operazioni di lettura e scrittura, i blocchi di dati vengono memorizzati nella cache durante la lettura o l'aggiornamento. Aggiornamenti vengono scaricati in Archiviazione di Azure quando un file viene chiuso o quando il buffer viene riempito con blocchi dirty.

È supportata la lettura dello stesso BLOB da più thread simultanei. Tuttavia, le operazioni di scrittura simultanee potrebbero comportare risultati imprevisti dei dati dei file, inclusa la perdita di dati. L'esecuzione di operazioni di lettura simultanee e di una singola operazione di scrittura è supportata, ma i dati letti da alcuni thread potrebbero non essere correnti.

Autorizzazioni

Quando un contenitore viene montato con le opzioni predefinite, tutti i file ottengono 770 autorizzazioni e sono accessibili solo dall'utente che esegue il montaggio. Per consentire a qualsiasi utente di accedere al montaggio BlobFuse2, montare BlobFuse2 usando l'opzione --allow-other . È anche possibile configurare questa opzione nel file di configurazione YAML.

Come indicato in precedenza, le chown operazioni e chmod sono supportate per Data Lake Storage Gen2, ma non per i BLOB in blocchi FNS. L'esecuzione di un'operazione chmod su un contenitore BLOB in blocchi FNS montato restituisce un messaggio di esito positivo, ma l'operazione non riesce effettivamente.

Supporto funzionalità

Questa tabella illustra come questa funzionalità è supportata nell'account e l'effetto sul supporto quando si abilitano determinate funzionalità.

Tipo di account di archiviazione Archiviazione BLOB (supporto predefinito) Data Lake Storage Gen2 1 Network File System (NFS) 3.0 1 SSH File Transfer Protocol (SFTP) 1
Utilizzo generico v2 Standard Sì Sì Sì Sì
BLOB in blocchi Premium Sì Sì Sì Sì

1 Data Lake Storage Gen2, il protocollo NFS 3.0 e SFTP supportano tutti richiedono un account di archiviazione con uno spazio dei nomi gerarchico abilitato.

Vedi anche

Passaggi successivi