Partilhar via


O que é BlobFuse? - BlobFuse2

BlobFuse é um driver de sistema de arquivos virtual para o Armazenamento de Blobs do Azure. Use o BlobFuse para acessar seus dados de blob de bloco do Azure existentes por meio do sistema de arquivos Linux. Os blobs de páginas não são suportados.

Sobre o projeto de código aberto BlobFuse2

BlobFuse2 é um projeto de código aberto que usa a biblioteca de código aberto libfuse (fuse3) para se comunicar com o módulo do kernel Linux FUSE. BlobFuse2 implementa operações do sistema de arquivos usando as APIs REST do Armazenamento do Azure.

O projeto de código aberto BlobFuse2 está no GitHub:

Licenciamento

O projeto BlobFuse2 é licenciado sob a licença MIT.

Funcionalidades

Uma lista completa dos recursos do BlobFuse2 está no Leiame do BlobFuse2. Estas são algumas das principais tarefas que você pode executar usando BlobFuse2:

  • Monte um contêiner de Armazenamento de Blobs do Azure ou um sistema de arquivos do Armazenamento Azure Data Lake no Linux. (BlobFuse2 suporta contas de armazenamento com namespaces simples ou namespace hierárquico configurado.)
  • Use operações básicas do sistema de arquivos como mkdir, opendir, , readdir, rmdir, openread, create, write, close, statunlinktruncatee rename.
  • Use o cache de arquivos local para melhorar os tempos de acesso subsequentes.
  • Obtenha informações sobre as atividades de montagem e o uso de recursos usando o BlobFuse2 Health Monitor.

Outros recursos importantes do BlobFuse2 incluem:

  • Streaming para suportar a leitura e gravação de arquivos grandes
  • Downloads e uploads paralelos para melhorar o tempo de acesso a arquivos grandes
  • Várias montagens no mesmo contêiner para cargas de trabalho somente leitura

Importante

Devido a problemas conhecidos de consistência de dados ao usar versões mais antigas do Blobfuse2 no streaming com block-cache o modo, é altamente recomendável que todas as instalações do Blobfuse2 sejam atualizadas para a versão 2.3.2 ou superior. Para obter mais informações, consulte isto.

Aprimoramentos do BlobFuse2 do BlobFuse v1

O BlobFuse2 tem mais suporte a recursos e melhor desempenho em vários cenários de usuário do BlobFuse v1. Para obter a extensa lista de melhorias, consulte o Leiame BlobFuse2. Aqui está um resumo dos aprimoramentos no BlobFuse2 do BlobFuse v1:

  • Cache melhorado
  • Mais suporte de gerenciamento por meio de novos comandos da CLI do Azure
  • Mais suporte para registro em log
  • A adição de streaming de gravação para arquivos grandes (anteriormente, apenas o streaming de leitura era suportado)
  • Novo Monitor de Integridade BlobFuse2 para ajudá-lo a obter informações sobre atividades de montagem e uso de recursos
  • Opções de compatibilidade e atualização para usuários existentes do BlobFuse v1
  • Verificação de versão e solicitação de atualização
  • Suporte para criptografia de arquivo de configuração

Consulte a lista de aprimoramentos de desempenho do BlobFuse2 do BlobFuse v1.

Para usuários do BlobFuse v1

Os aprimoramentos fornecidos pelo BlobFuse2 são motivos convincentes para atualizar e migrar para o BlobFuse2. Se você não estiver pronto para migrar, poderá usar BlobFuse2 para montar um contêiner de blob usando as mesmas opções de configuração e parâmetros da CLI do Azure que você usa com BlobFuse v1.

O guia de migração BlobFuse2 fornece todos os detalhes necessários para compatibilidade e migração de suas cargas de trabalho atuais.

Suporte

BlobFuse2 é suportado pela Microsoft se for usado dentro dos limites especificados. Se você encontrar um problema, denuncie-o no GitHub.

Limitações

O BlobFuse2 não garante 100% de conformidade com POSIX porque o BlobFuse2 simplesmente traduz solicitações em APIs REST do Blob. Por exemplo, as operações de renomeação são atômicas em POSIX, mas não em BlobFuse2.

Veja a lista completa de diferenças entre um sistema de arquivos nativo e BlobFuse2.

Diferenças entre o sistema de arquivos Linux e o BlobFuse2

De muitas maneiras, você pode usar o armazenamento montado em BlobFuse2 como o sistema de arquivos Linux nativo. O esquema de diretório virtual é o mesmo e usa uma barra (/) como delimitador. Operações básicas do sistema de arquivos como mkdir, opendir, , readdir, openrmdir, read, closewriteunlinkcreate, e truncatestatrename funcionam da mesma forma que no sistema de arquivos Linux.

BlobFuse2 é diferente do sistema de arquivos Linux de algumas maneiras principais:

  • Contagem de readdir de links físicos:

    Por motivos de desempenho, 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 como 2. O número para diretórios não vazios sempre retorna como 3, independentemente do número real de links físicos.

  • Renomeações não atômicas:

    O Armazenamento de Blobs do Azure não oferece suporte a operações de renomeação atômica. Renomeações de arquivo único são, na verdade, duas operações: uma cópia e, em seguida, uma exclusão do original. O diretório renomeia recursivamente todos os arquivos no diretório e renomeia cada arquivo.

  • Ficheiros especiais:

    BlobFuse2 suporta apenas diretórios, arquivos regulares e links simbólicos. Arquivos especiais, como arquivos de dispositivo, tubos e soquetes, não são suportados.

  • MKFIFO:

    A criação do Fifo não é suportada pelo BlobFuse2. A tentativa dessa ação resulta em um erro de "função não implementada".

  • chown e chmod:

    As contas de armazenamento do Armazenamento Data Lake suportam permissões por objeto e ACLs, mas os blobs de bloco de namespace simples (FNS) não. Como resultado, BlobFuse2 não suporta as chown operações e chmod para contêineres de blob de bloco montados. As operações são suportadas para o Armazenamento Data Lake.

  • Arquivos ou pipes do dispositivo:

    BlobFuse2 não suporta a criação de arquivos de dispositivo ou pipes.

  • Atributos estendidos (x-attrs):

    BlobFuse2 não suporta operações de atributos estendidos (x-attrs).

  • Transmissão 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 a partir de threads diferentes.

Integridade dos dados

O cache de arquivos desempenha um papel importante na integridade dos dados lidos e gravados em uma montagem do sistema de arquivos de armazenamento de Blob. Recomendamos o modo de streaming para uso com arquivos grandes, que suporta streaming para operações de leitura e gravaçã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 contêm arquivos grandes, como quando os arquivos são armazenados em disco em sua totalidade.

BlobFuse2 suporta operações de leitura e gravação. A sincronização contínua de dados gravados no armazenamento usando outras APIs ou outras montagens de BlobFuse2 não é garantida. Para a integridade dos dados, recomendamos 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 podem 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 o último gravador ganhe e as gravações anteriores sejam perdidas ou, geralmente, que o arquivo atualizado não esteja no estado pretendido.

Cache de arquivos no disco

Quando um arquivo é objeto de uma operação de gravação, os dados são primeiro mantidos em cache em um disco local. Os dados são gravados no Armazenamento de Blob somente depois que o identificador de arquivo é fechado. Se ocorrer um problema ao tentar persistir os dados para o Armazenamento de Blob, será exibida uma mensagem de erro.

Transmissão

Para streaming durante operações de leitura e gravação, os blocos de dados são armazenados em cache na memória à medida que 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.

A leitura do mesmo blob de vários threads simultâneos é suportada. No entanto, operações de gravação simultâneas podem resultar em resultados inesperados de dados de arquivo, incluindo perda de dados. A execução simultânea de operações de leitura e uma única operação de gravação é suportada, mas os dados que estão 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ão acessíveis apenas pelo usuário que faz a montagem. Para permitir que qualquer usuário acesse a montagem BlobFuse2, monte BlobFuse2 usando a --allow-other opção. Você também pode configurar essa opção no arquivo de configuração YAML.

Como dito anteriormente, as operações e chmod são suportadas para o chown Armazenamento Data Lake, mas não para blobs de bloco FNS. A execução de uma chmod operação em um contêiner de blob de bloco FNS montado retorna uma mensagem de êxito, mas a operação não é bem-sucedida.

Suporte de funcionalidades

Esta tabela mostra como esse recurso é suportado em sua conta e o efeito no suporte quando você habilita determinados recursos.

Storage account type Armazenamento de Blob (suporte padrão) Armazenamento Data Lake 1 Sistema de arquivos de rede (NFS) 3.0 1 Protocolo de transferência de arquivos SSH (SFTP) 1
Padrão de uso geral v2 Sim Sim Sim Sim
Blobs de bloco premium Sim Sim Sim Sim

1 O armazenamento Data Lake, o protocolo NFS 3.0 e o suporte a SFTP exigem uma conta de armazenamento que tenha um namespace hierárquico habilitado.

Consulte também

Próximos passos