O que é o BlobFuse? - BlobFuse2
O BlobFuse é um driver de sistema de arquivos virtual para Armazenamento de Blobs do Azure. Use o BlobFuse para acessar seus dados de blob de blocos existentes do Azure por meio do sistema de arquivos do Linux. Blobs de páginas não têm suporte.
Sobre o projeto de código aberto do blobFuse2
O BlobFuse2 é um projeto de código aberto que usa a biblioteca de software livre do libfuse (fuse3) para se comunicar com o módulo de kernel do Linux FUSE. O BlobFuse2 implementa as operações do sistema de arquivos usando as APIs REST do Armazenamento do Microsoft Azure.
O projeto de código aberto do BlobFuse2 está no GitHub:
Licenciamento
O projeto do BlobFuse2 foi lançado sob a licença MIT.
Recursos
Encontre uma lista completa de recursos do BlobFuse2 no arquivo LEIAME do BLOBFuse2. Estas são algumas das principais tarefas que você pode executar usando o BlobFuse2:
- Monte um contêiner do Armazenamento de Blobs do Azure ou um sistema de arquivos do Azure Data Lake Storage no Linux. (O BlobFuse2 dá suporte a contas de armazenamento com namespaces simples ou o namespace hierárquico configurado.)
- Use operações básicas do sistema de arquivos como
mkdir
,opendir
,readdir
,rmdir
,open
,read
,create
,write
,close
,unlink
,truncate
,stat
erename
. - Use o armazenamento no cache de arquivos local para aprimorar os tempos de acesso posteriores.
- Obtenha insights sobre as atividades de montagem e o uso de recursos usando o Monitor de Integridade do BlobFuse2.
Outros recursos importantes no BlobFuse2 incluem:
- Transmitir por streaming para dar suporte à leitura e gravação de arquivos grandes
- Fazer downloads e uploads paralelos para melhorar o tempo de acesso para arquivos grandes
- Várias montagens no mesmo contêiner para cargas de trabalho somente leitura
Importante
Se você estiver usando as versões 2.2.0, 2.2.1 ou 2.3.0, evite usar o modo Block-cache
e alterne para o modo file-cache
até que os problemas conhecidos sejam corrigidos.
Aprimoramentos no BlobFuse2 em comparação ao BlobFuse v1
O BlobFuse2 tem mais suporte a recursos e melhor desempenho em vários cenários de usuário em relação ao BlobFuse v1. Para obter a extensa lista de aprimoramentos, confira o Arquivo LEIAME do BlobFuse2. Aqui está um resumo dos aprimoramentos no BlobFuse2 em comparação ao BlobFuse v1:
- Cache aprimorado
- Mais suporte de gerenciamento por meio de novos comandos da CLI do Azure
- Mais suporte de registro em log
- A adição de streaming de gravação para arquivos grandes (anteriormente, havia suporte apenas para streaming de leitura)
- Novo Monitor de Integridade do BlobFuse2 para ajudá-lo a obter insights sobre as atividades de montagem e o uso de recursos
- Opções de compatibilidade e atualização para usuários do BlobFuse v1
- Verificação de versão e solicitação de atualização
- Suporte para criptografia de arquivo de configuração
Confira a lista de aprimoramentos de desempenho do BlobFuse2 em comparação com o BlobFuse v1.
Para usuários do BlobFuse v1
Os aprimoramentos fornecidos pelo BlobFuse2 são bons motivos para você atualizar e migrar para o BlobFuse2. Se você não estiver pronto para migrar, pode usar o BlobFuse2 para montar um contêiner de blob usando as mesmas opções de configuração e os parâmetros da CLI do Azure usados com o BlobFuse v1.
O guia de migração do BlobFuse2 fornece todos os detalhes necessários sobre compatibilidade e migração de suas cargas de trabalho atuais.
Suporte
A Microsoft dá suporte ao BlobFuse2 se ele for usado dentro dos limites especificados. Se você encontrar um problema, relate-o no GitHub.
Limitações
O BlobFuse2 não garante 100% de conformidade com POSIX, pois o BlobFuse2 simplesmente move solicitações em APIs REST de Blob. Por exemplo, as operações de renomeação são atômicas no POSIX, mas não em BlobFuse2.
Confira a lista completa de diferenças entre um sistema de arquivos nativo e o BlobFuse2.
Diferenças entre o sistema de arquivos Linux e o BlobFuse2
Em muitos aspectos, você pode usar o armazenamento montado no BlobFuse2 exatamente como o sistema de arquivos nativo do Linux. O esquema de diretório virtual é o mesmo e usa uma barra (/
) como um delimitador. Operações básicas do sistema de arquivos, como mkdir
, opendir
, readdir
, rmdir
, open
, read
, create
, write
, close
, unlink
, truncate
, stat
e rename
funcionam da mesma forma que no sistema de arquivos Linux.
O BlobFuse2 é diferente do sistema de arquivos Linux de algumas maneiras:
Contagem de links físicos do Readdir:
Por motivos de desempenho, o BlobFuse2 não relata corretamente os links físicos dentro de um diretório. O número de links físicos para diretórios vazios retorna 2. O número de diretórios não vazios sempre retorna 3, independentemente do número real de links físicos.
Renomeações não atômicas:
O Armazenamento de Blobs do Azure não dá suporte a operações de renomeação atômica. As renomeações de arquivo único são, na verdade, duas operações: uma cópia, seguida de uma exclusão do original. Os diretórios renomeiam recursivamente todos os arquivos no diretório e renomeiam cada arquivo.
Arquivos especiais:
O BlobFuse2 dá suporte apenas a diretórios, arquivos regulares e links simbólicos. Não há suporte para arquivos especiais, como arquivos de dispositivo, pipes e soquetes.
mkfifo:
O BlobFuse2 não dá suporte à criação de PEPS (primeiro a entrar, primeiro a sair). Tentar essa ação resulta em um erro "função não implementada".
chown e chmod:
As contas de armazenamento do Data Lake Storage dão suporte a ACLs e permissões por objeto, mas não a blobs de blocos de namespace simples (FNS). Como resultado, o BlobFuse2 não dá suporte às operações
chown
echmod
para contêineres de blob de blocos montados. As operações são compatíveis com o Data Lake Storage.Arquivos de dispositivo ou pipes:
O BlobFuse2 não dá suporte à criação de arquivos ou pipes de dispositivo.
Atributos estendidos (x-attrs):
O BlobFuse2 não dá suporte a operações de atributos estendidos (
x-attrs
).Streaming de gravação:
O streaming simultâneo de operações de leitura e gravação em dados de arquivos grandes pode produzir resultados imprevisíveis. Não há suporte para gravação simultânea no mesmo blob de threads diferentes.
Integridade de dados
O cache de arquivos desempenha um papel importante na integridade dos dados lidos e gravados em uma montagem do sistema de arquivos do Armazenamento de Blobs. É recomendável usar o modo de streaming com arquivos grandes, que dá suporte ao streaming para operações de leitura e gravação. O BlobFuse2 armazena em cache blocos de arquivos de streaming na memória. Para arquivos menores que não consistem em blocos, todo o arquivo é armazenado na memória. O cache de arquivos é o segundo modo. Recomendamos o cache de arquivos para cargas de trabalho que não contenham arquivos grandes, como quando os arquivos são totalmente armazenados em disco.
O BlobFuse2 oferece suporte a operações de leitura e gravação. A sincronização contínua de dados gravados no armazenamento usando outras APIs ou outras montagens do BlobFuse2 não é garantida. Para integridade de dados, é recomendável que várias fontes não modifiquem o mesmo blob, especialmente ao mesmo tempo. Se um ou mais aplicativos tentarem gravar no mesmo arquivo simultaneamente, os resultados poderão ser inesperados. Dependendo do tempo de várias operações de gravação e da atualização do cache para cada operação, o resultado pode ser que a última gravação ganhe e as gravações anteriores sejam perdidas ou geralmente que o arquivo atualizado não esteja no estado desejado.
Cache de arquivo no disco
Quando um arquivo é objeto de uma operação de gravação, os dados são persistidos primeiro para armazenar em cache em um disco local. Os dados são gravados no armazenamento de blobs somente depois que o identificador de arquivo é fechado. Se houver um problema ao tentar persistir os dados no Armazenamento de Blobs, você receberá uma mensagem de erro.
Streaming
Para streaming durante as operações de leitura e gravação, os blocos de dados são armazenados em cache na memória conforme são lidos ou atualizados. As atualizações são liberadas para o Armazenamento do Azure quando um arquivo é fechado ou quando o buffer é preenchido com blocos sujos.
Há suporte para a leitura do mesmo blob de vários threads simultâneos. No entanto, as operações de gravação simultâneas podem resultar em dados de arquivo inesperados, incluindo perda de dados. Há suporte para executar operações de leitura simultâneas e uma única operação de gravação, mas os dados sendo lidos de alguns threads podem não ser atuais.
Permissões
Quando um contêiner é montado com as opções padrão, todos os arquivos recebem 770 permissões e só podem ser acessados pelo usuário fazendo a montagem. Para permitir que qualquer usuário acesse a montagem do BlobFuse2, monte o BlobFuse2 usando a opção --allow-other
. Essa opção também pode ser configurada no arquivo de configuração YAML.
Conforme indicado anteriormente, há suporte para operações chown
e chmod
para o Data Lake Storage, mas não para blobs de blocos FNS. Executar uma operação chmod
em um contêiner de blob de bloco de FNS montado retorna uma mensagem de sucesso, mas a operação não tem êxito.
Suporte a recursos
Esta tabela mostra como a sua conta dá suporte a esse recurso e o efeito nesse suporte quando você habilita determinadas funcionalidades.
Tipo de conta de armazenamento | Armazenamento de Blobs (suporte padrão) | Data Lake Storage 1 | NFS (Sistema de arquivos de rede) 3.0 1 | SFTP (Protocolo FTP SSH) 1 |
---|---|---|---|---|
Uso geral v2 Standard | ||||
Blobs de blocos Premium |
1 Data Lake Storage, o protocolo NFS 3.0 e suporte a SFTP exigem uma conta de armazenamento que tenha um namespace hierárquico habilitado.