Condividi tramite


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. I BLOB di pagine non sono supportati.

Informazioni sul progetto open source BlobFuse2

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

Il progetto BlobFuse2 open source è disponibile in GitHub:

Licenze

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

Funzionalità

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

  • Montare un contenitore Archiviazione BLOB di Azure o un file system di Azure Data Lake Archiviazione Gen2 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, readdiropendir, rmdir, , 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 un elenco completo dei miglioramenti, vedere BLOBFuse2 README. Ecco un riepilogo dei miglioramenti in BlobFuse2 da BlobFuse v1:

  • Memorizzazione nella cache migliorata
  • Maggiore supporto per la gestione tramite nuovi comandi dell'interfaccia della riga di comando di Azure
  • Maggiore supporto per la registrazione
  • L'aggiunta di streaming di scrittura per file di grandi dimensioni (in precedenza era supportata solo la funzionalità di streaming di lettura)
  • 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 della versione 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 tecnico

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

Limiti

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, opendirreaddir, rmdir, open, read, closewriteunlinktruncatecreatestate rename funzionano come nel file system Linux.

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

  • Readdir count of hard links :Readdir count of hard links:

    Per motivi di prestazioni, BlobFuse2 non segnala correttamente i collegamenti rigidi 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 rigidi.

  • Ridenominazione non atomica:

    Archiviazione BLOB di Azure non supporta le 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:

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

  • File o pipe del dispositivo:

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

  • 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 potrebbe 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 blob Archiviazione montaggio del file system. È consigliabile usare la modalità di streaming con file di grandi dimensioni, che supporta lo streaming per operazioni di lettura e scrittura. BlobFuse2 memorizza nella cache 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 la cache dei file per i carichi di lavoro che non contengono file di grandi dimensioni, ad esempio quando i file vengono archiviati su disco nell'intero disco.

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, soprattutto 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 è 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 nel BLOB Archiviazione solo dopo la chiusura dell'handle di file. Se si verifica un problema durante il tentativo di rendere persistenti i dati nel BLOB Archiviazione, 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 sporchi.

La lettura dello stesso BLOB da più thread simultanei è supportata. Tuttavia, le operazioni di scrittura simultanee possono comportare risultati imprevisti dei dati dei file, inclusa la perdita di dati. L'esecuzione simultanea di operazioni di lettura e una singola operazione di scrittura sono supportate, 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 Archiviazione 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à.

Storage account type Archiviazione BLOB (supporto predefinito) Data Lake Archiviazione 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 Archiviazione 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