Che cos'è BlobFuse? - BlobFuse2
BlobFuse è un driver virtuale file system 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 FUSE. Implementa le operazioni del file system usando le API REST di 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 LEGGIMI di BlobFuse2. Queste sono alcune delle attività principali che è possibile eseguire usando BlobFuse2:
- Montare un contenitore di Archiviazione BLOB di Azure o un file system di Azure Data Lake Storage Gen2 in Linux. BlobFuse2 supporta gli account di archiviazione con spazi dei nomi flat o spazi dei nomi gerarchici configurati.
- Usare le operazioni di file system di base, ad esempio
mkdir
,opendir
,readdir
,rmdir
,open
,read
,create
,write
,close
,unlink
,truncate
,stat
erename
. - 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 tramite BlobFuse2 Health Monitor.
Le altre funzionalità principali di 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
Importante
Se si stanno usando le versioni 2.2.0, 2.2.1 o 2.3.0, non usare la modalità Block-cache
e passare alla modalità file-cache
finché non vengono risolti i problemi noti.
Miglioramenti apportati a BlobFuse2 rispetto a BlobFuse v1
BlobFuse2 offre più supporto per le funzionalità e prestazioni migliorate in più scenari utente rispetto a BlobFuse v1. Per un elenco completo dei miglioramenti, vedere il file LEGGIMI di BLOBFuse2. Un riepilogo dei miglioramenti apportati a BlobFuse2 rispetto a BlobFuse v1 è il seguente:
- 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
- Aggiunta dello streaming di scrittura per file di grandi dimensioni (in precedenza era supportata solo la funzionalità di streaming di lettura)
- BlobFuse2 Health Monitor, una nuova funzionalità che consente di 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 invio di richieste di aggiornamento
- Supporto per la crittografia dei file di configurazione
Vedere l'elenco dei miglioramenti delle prestazioni apportati a BlobFuse2 rispetto a BlobFuse v1.
Per gli utenti di BlobFuse v1
I miglioramenti forniti da BlobFuse2 sono motivi convincenti 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 usato entro i limitispecificati. Se si verifica un problema, segnalarlo in GitHub.
Limiti
BlobFuse2 non garantisce la conformità POSIX al 100% perché converte semplicemente le richieste in API REST BLOB. Le operazioni di ridenominazione, ad esempio, 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
Per molti versi, è possibile usare l'archiviazione montata su BlobFuse2 proprio come il file system Linux nativo. Lo schema della directory virtuale è lo stesso e usa una barra (/
) come delimitatore. Le operazioni del file system di base,ad esempio mkdir
, opendir
, readdir
, rmdir
, open
, read
, create
, write
, close
, unlink
, truncate
, stat
e rename
, funzionano come nel file system Linux.
BlobFuse2 differisce dal file system di Linux per alcune caratteristiche principali:
Numero readdir dei collegamenti reali:
Per motivi di prestazioni, BlobFuse2 non segnala correttamente i collegamenti reali all'interno di una directory. Il numero di collegamenti reali e delle directory vuote viene restituito come 2. Il numero delle directory non vuote viene sempre restituito sempre come 3, indipendentemente dal numero effettivo di collegamenti reali.
Ridenominazioni non atomiche:
Archiviazione BLOB di Azure non supporta operazioni di ridenominazione atomica. Le ridenominazione di singoli file prevede in realtà due operazioni: una copia e quindi un'eliminazione dell'originale. Le ridenominazioni delle directory enumera in modo ricorsivo tutti i file nella directory, rinominando ogni file.
File speciali:
BlobFuse2 supporta solo directory, file normali e collegamenti simbolici. Non supporta file speciali come file di dispositivo, pipe e socket.
mkfifo:
BlobFuse2 non supporta la creazione FIFO. Se si tenta di eseguire questa azione viene generato un errore “Funzione non implementata".
chown e chmod:
Gli account di archiviazione di Data Lake Storage Gen2 supportano le autorizzazioni per oggetto e gli elenchi controllo dell’accesso diversamente dai BLOB in blocchi degli spazi dei nomi flat (FNS). Di conseguenza, BlobFuse2 non supporta le operazioni
chown
echmod
per i contenitori BLOB in blocchi montati. Tali operazioni sono supportate in Data Lake Storage 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 può risultati imprevedibili. Non è supportata la scrittura simultanea nello stesso BLOB da thread diversi.
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 in quanto supporta lo streaming per operazioni di lettura e scrittura. BlobFuse2 memorizza nella cache blocchi dei file di streaming in memoria. Per i file più piccoli che non sono costituiti da blocchi, viene archiviato in memoria l’intero file. La cache dei file è la seconda modalità. È consigliabile usare la cache dei file per i carichi di lavoro che non contengono file di grandi dimensioni, ad esempio quando i file vengono integralmente archiviati su disco.
BlobFuse2 supporta operazioni di lettura e scrittura. La sincronizzazione continua dei dati scritti nello spazio di archiviazione tramite altre API o altri montaggi di BlobFuse2 non è garantita. Per assicurare 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 della validità della cache per ogni operazione, potrebbe accadere che l'ultimo writer venga mantenuto e che le scritture precedenti vengano perse o in genere che lo stato del file aggiornato non sia quello previsto.
Memorizzazione dei file nella cache su disco
Quando un file è oggetto di un'operazione di scrittura, i dati vengono prima salvati in modo permanente 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 permanenti 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. Gli aggiornamenti vengono scaricati in Archiviazione di Azure al momento della chiusura di un file o se il buffer è pieno di blocchi dirty.
La lettura dello stesso BLOB da più thread simultanei è supportata. Tuttavia, le operazioni di scrittura simultanee possono causare risultati imprevisti nei dati dei file, inclusa la perdita di dati. L'esecuzione simultanea di operazioni di lettura e di una singola operazione di scrittura sono supportate, ma i dati letti da alcuni thread potrebbero non essere attuali.
Autorizzazioni
Quando un contenitore viene montato con le opzioni predefinite, tutti i file ottengono l’autorizzazione 770 e sono accessibili solo all'utente che esegue il montaggio. Per consentire a qualsiasi utente di accedere al montaggio di BlobFuse2, montare BlobFuse2 usando l'opzione --allow-other
. È anche possibile configurare questa opzione nel file di configurazione YAML.
Come indicato in precedenza, le operazioni chown
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 di fatto l’operazione non viene completata.
Supporto funzionalità
Questa tabella mostra 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 Storage Gen2 1 | File system di rete (NFS) 3.0 1 | SSH File Transfer Protocol (SFTP) 1 |
---|---|---|---|---|
Utilizzo generico v2 Standard | ||||
BLOB in blocchi Premium |
1 Data Lake Storage Gen2, il protocollo NFS 3.0 e il supporto di SFTP richiedono tutti un account di archiviazione con uno spazio dei nomi gerarchico abilitato.
Vedi anche
- Eseguire la migrazione a BlobFuse2 da BlobFuse v1
- Comandi di BlobFuse2
- Risolvere problemi relativi a BlobFuse2