O que é o BlobFuse? - BlobFuse2

O BlobFuse é um controlador do sistema de ficheiros virtual para Armazenamento de Blobs do Azure. Utilize BlobFuse para aceder aos dados de blobs de blocos do Azure existentes através do sistema de ficheiros Linux.

Acerca do projeto blobFuse2 open source

O BlobFuse2 é um projeto open source que utiliza a biblioteca libfuse open source (fuse3) para comunicar com o módulo kernel FUSE do Linux. O BlobFuse2 implementa operações do sistema de ficheiros com as APIs REST do Armazenamento do Azure.

O projeto open source BlobFuse2 está no GitHub:

Licenciamento

O projeto BlobFuse2 é licenciado ao abrigo da licença do MIT.

Funcionalidades

Uma lista completa das funcionalidades do BlobFuse2 está no README BlobFuse2. Estas são algumas das principais tarefas que pode realizar com BlobFuse2:

  • Monte um contentor de Armazenamento de Blobs do Azure ou Azure Data Lake Storage Gen2 sistema de ficheiros no Linux. (BlobFuse2 suporta contas de armazenamento com espaços de nomes simples ou espaço de nomes hierárquico configurado.)
  • Utilize operações básicas do sistema de ficheiros, como mkdir, opendir, readdir, rmdiropen, read, create, write, close, unlink, truncate, state rename.
  • Utilize a colocação em cache de ficheiros local para melhorar os tempos de acesso subsequentes.
  • Obtenha informações sobre as atividades de montagem e a utilização de recursos com o BlobFuse2 Health Monitor.

Outras funcionalidades principais no BlobFuse2 incluem:

  • Transmissão em fluxo para suportar a leitura e escrita de ficheiros grandes
  • Transferências e carregamentos paralelos para melhorar o tempo de acesso para ficheiros grandes
  • Várias montagens no mesmo contentor para cargas de trabalho só de leitura

Melhorias do BlobFuse2 do BlobFuse v1

O BlobFuse2 tem mais suporte de funcionalidades e desempenho melhorado em vários cenários de utilizador do BlobFuse v1. Para obter a extensa lista de melhorias, veja o README BlobFuse2. Eis um resumo das melhorias no BlobFuse2 a partir de BlobFuse v1:

  • Colocação em cache melhorada
  • Mais suporte de gestão através de novos comandos da CLI do Azure
  • Mais suporte de registo
  • A adição da transmissão em fluxo de escrita para ficheiros grandes (anteriormente, apenas era suportada a transmissão em fluxo de leitura)
  • Novo Monitor de Estado de Funcionamento do BlobFuse2 para o ajudar a obter informações sobre atividades de montagem e utilização de recursos
  • Opções de compatibilidade e atualização para utilizadores existentes do BlobFuse v1
  • Pedido de verificação e atualização de versões
  • Suporte para encriptação de ficheiros de configuração

Veja a lista de melhorias de desempenho do BlobFuse2 a partir de BlobFuse v1.

Para utilizadores do BlobFuse v1

Os melhoramentos fornecidos pelo BlobFuse2 são motivos apelativos para atualizar e migrar para BlobFuse2. Se não estiver pronto para migrar, pode utilizar BlobFuse2 para montar um contentor de blobs com as mesmas opções de configuração e os parâmetros da CLI do Azure que utiliza com BlobFuse v1.

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

Suporte

O BlobFuse2 é suportado pela Microsoft se for utilizado dentro dos limites especificados. Se encontrar um problema, comunique-o no GitHub.

Limitações

O BlobFuse2 não garante a conformidade 100% POSIX porque o BlobFuse2 traduz simplesmente pedidos em APIs REST de Blobs. Por exemplo, as operações de mudança de nome são atómicas em POSIX, mas não em BlobFuse2.

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

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

Em muitos aspectos, pode utilizar o armazenamento montado em BlobFuse2, tal como o sistema de ficheiros Linux nativo. O esquema de diretório virtual é o mesmo e utiliza uma barra/ () como delimitador. Operações básicas do sistema de ficheiros, como mkdir, opendir, readdir, openrmdir, read, create, write, close, unlinktruncate, state rename funcionam da mesma forma que no sistema de ficheiros Linux.

O BlobFuse2 é diferente do sistema de ficheiros Linux de algumas formas principais:

  • Contagem de ligações rígidas de readdir:

    Por motivos de desempenho, o BlobFuse2 não comunica corretamente as ligações rígidas dentro de um diretório. O número de ligações rígidas para diretórios vazios devolve como 2. O número de diretórios não vazios devolve sempre como 3, independentemente do número real de ligações rígidas.

  • Nomes não atómicos:

    Armazenamento de Blobs do Azure não suporta operações de mudança de nome atómica. Os nomes de ficheiro único são, na verdade, duas operações: uma cópia e, em seguida, uma eliminação do original. O nome do diretório muda recursivamente para enumerar todos os ficheiros no diretório e muda o nome de cada ficheiro.

  • Ficheiros especiais:

    O BlobFuse2 suporta apenas diretórios, ficheiros regulares e ligações simbólicas. Não são suportados ficheiros especiais, como ficheiros de dispositivos, pipes e sockets.

  • mkfifo:

    A criação de Fifo não é suportada pelo BlobFuse2. Tentar esta ação resulta num erro "função não implementada".

  • chown e chmod:

    Data Lake Storage Gen2 contas de armazenamento suportam permissões e ACLs por objeto, mas os blobs de blocos de espaço de nomes simples (FNS) não. Como resultado, o BlobFuse2 não suporta as chown operações e chmod para contentores de blobs de blocos montados. As operações são suportadas para Data Lake Storage Gen2.

  • Ficheiros ou pipes do dispositivo:

    O BlobFuse2 não suporta a criação de ficheiros ou pipes de dispositivos.

  • Atributos expandidos (x-attrs):

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

  • Transmissão em fluxo de escrita:

    A transmissão em fluxo simultânea de operações de leitura e escrita em dados de ficheiros grandes pode produzir resultados imprevisíveis. A escrita em simultâneo no mesmo blob a partir de threads diferentes não é suportada.

Integridade dos dados

A colocação em cache de ficheiros desempenha uma função importante na integridade dos dados lidos e escritos numa montagem do sistema de ficheiros do Armazenamento de Blobs. Recomendamos o modo de transmissão em fluxo para utilização com ficheiros grandes, que suportam a transmissão em fluxo para operações de leitura e escrita. BlobFuse2 coloca em cache blocos de ficheiros de transmissão em fluxo na memória. Para ficheiros mais pequenos que não consistem em blocos, todo o ficheiro é armazenado na memória. A cache de ficheiros é o segundo modo. Recomendamos a cache de ficheiros para cargas de trabalho que não contenham ficheiros grandes, como quando os ficheiros são armazenados no disco na totalidade.

O BlobFuse2 suporta operações de leitura e escrita. A sincronização contínua de dados escritos no armazenamento com outras APIs ou outras montagens de BlobFuse2 não é garantida. Para a integridade dos dados, recomendamos que várias origens não modifiquem o mesmo blob, especialmente ao mesmo tempo. Se uma ou mais aplicações tentarem escrever no mesmo ficheiro em simultâneo, os resultados poderão ser inesperados. Dependendo da temporização de múltiplas operações de escrita e da frescura da cache para cada operação, o resultado pode ser que o último escritor ganhe e as escritas anteriores sejam perdidas ou geralmente que o ficheiro atualizado não esteja no estado pretendido.

Colocação em cache de ficheiros no disco

Quando um ficheiro é o assunto de uma operação de escrita, os dados são mantidos pela primeira vez em cache num disco local. Os dados só são escritos no Armazenamento de Blobs depois de a alça de ficheiro ser fechada. Se ocorrer um problema ao tentar manter os dados no Armazenamento de Blobs, é apresentada uma mensagem de erro.

Transmissão em Fluxo

Para transmissão em fluxo durante operações de leitura e escrita, os blocos de dados são colocados em cache na memória à medida que são lidos ou atualizados. Atualizações são removidas para o Armazenamento do Azure quando um ficheiro é fechado ou quando a memória intermédia é preenchida com blocos sujos.

É suportado ler o mesmo blob a partir de vários threads simultâneos. No entanto, as operações de escrita simultâneas podem resultar em resultados de dados de ficheiro inesperados, incluindo perda de dados. A execução de operações de leitura simultâneas e uma única operação de escrita são suportadas, mas os dados que estão a ser lidos a partir de alguns threads podem não estar atualizados.

Permissões

Quando um contentor é montado com as opções predefinidas, todos os ficheiros obtêm 770 permissões e só são acessíveis pelo utilizador que faz a montagem. Para permitir que qualquer utilizador aceda à montagem BlobFuse2, monte BlobFuse2 com a opção --allow-other . Também pode configurar esta opção no ficheiro de configuração YAML.

Conforme indicado anteriormente, as chown operações e chmod são suportadas para Data Lake Storage Gen2, mas não para blobs de bloco FNS. Executar uma chmod operação num contentor de blobs de bloco FNS montado devolve uma mensagem de êxito, mas a operação não é realmente bem-sucedida.

Suporte de funcionalidades

Esta tabela mostra como esta funcionalidade é suportada na sua conta e o efeito no suporte quando ativa determinadas capacidades.

Tipo de conta de armazenamento Armazenamento de Blobs (suporte predefinido) Data Lake Storage Gen2 1 Sistema de Ficheiros de Rede (NFS) 3.0 1 SSH File Transfer Protocol (SFTP) 1
Standard para fins gerais v2 Yes Yes Yes Yes
Blobs de blocos Premium Yes Yes Yes Yes

1 Data Lake Storage Gen2, o protocolo NFS 3.0 e o suporte SFTP necessitam de uma conta de armazenamento que tenha um espaço de nomes hierárquico ativado.

Ver também

Passos seguintes