Como montar um contêiner de Armazenamento de Blobs do Azure no Linux com o BlobFuse2

Este artigo mostra como instalar e configurar o BlobFuse2, montar um contêiner de blobs do Azure e acessar dados no contêiner. As etapas básicas são:

Instalar o BlobFuse2

Configurar o BlobFuse2

Montar um contêiner de blobs

Acessar dados

Como instalar o BlobFuse2

Há duas opções para instalar o BlobFuse2:

Opção 1: instalar o BlobFuse2 a partir dos repositórios de software da Microsoft para Linux

Para ver as distribuições com suporte, confira as Versões do BlobFuse2.

Para obter informações sobre o suporte ao libfuse, consulte o LEIAME do BlobFuse2.

Para verificar sua versão do Linux, execute o seguinte comando:

cat /etc/*-release

Se nenhum binário estiver disponível para sua distribuição, você poderá usar a Opção 2: criar os binários a partir do código-fonte.

Para instalar o BlobFuse2 a partir dos repositórios:

Configurar o repositório de pacotes da Microsoft

Instalar o BlobFuse2

Configurar o repositório de pacotes da Microsoft

Configure o Repositório de Pacotes do Linux para Produtos da Microsoft.

Como exemplo, em uma distribuição Redhat Enterprise Linux 8:

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm

Da forma similar, altere a URL para .../rhel/7/... a fim de apontar para uma distribuição Redhat Enterprise Linux 7.

Instalar o BlobFuse2

sudo yum install blobfuse2

Opção 2: criar os binários do código-fonte

Para criar binários do BlobFuse2 do código-fonte:

  1. Instalar as dependências:

    1. Instalar o Git:

      sudo apt-get install git
      
    2. Instalar dependências do BlobFuse2.

      No Ubuntu:

      sudo apt-get install libfuse3-dev fuse3 -y
      
  2. Clonar o repositório:

    sudo git clone https://github.com/Azure/azure-storage-fuse/
    sudo cd ./azure-storage-fuse
    sudo git checkout main
    
  3. Compilar BlobFuse2:

    go get
    go build -tags=fuse3
    

Dica

Se você precisar instalar o Go, consulte Fazer download e instalar o Go.

Como configurar o BlobFuse2

Você pode configurar o BlobFuse2 usando várias configurações. Algumas configurações típicas incluem:

  • Localização e opções de log
  • Caminho de arquivo temporário para cache
  • Informações sobre a conta de armazenamento do Azure e o contêiner de blob a ser montado

As configurações podem ser definidas em um arquivo YAML, usando variáveis de ambiente ou como parâmetros passados para os comandos do BlobFuse2. O método preferencial é usar o arquivo de configuração.

Para obter detalhes sobre cada parâmetro de configuração para BlobFuse2 e como especificá-los, consulte estes artigos:

Para configurar o BlobFuse2 para montagem:

  1. Configure armazenamento em cache.
  2. Criar um diretório vazio para montar o contêiner de blob.
  3. Autorize acesso à conta de armazenamento.

Configurar armazenamento em cache

O BlobFuse2 fornece desempenho nativo usando técnicas locais de cache de arquivos. A configuração e o comportamento do cache variam, dependendo se você está transmitindo arquivos grandes ou acessando arquivos menores.

Configurar o cache para transmitir arquivos grandes

O BlobFuse2 dá suporte ao streaming para operações de leitura e gravação como uma alternativa ao cache de disco para arquivos. No modo de streaming, o BlobFuse2 armazena em cache blocos de arquivos grandes na memória para leitura e gravação. As configurações relacionadas ao cache para streaming estão nas definições stream: do arquivo de configuração:

stream:
    block-size-mb:
        For read only mode, the size of each block to be cached in memory while streaming (in MB)
        For read/write mode, the size of newly created blocks
    max-buffers: The total number of buffers to store blocks in
    buffer-size-mb: The size for each buffer

Para começar rapidamente com algumas configurações para um cenário de streaming básico, consulte o arquivo de configuração de streaming de exemplo.

Configurar o cache para arquivos menores

Arquivos menores são armazenados em cache em um caminho temporário especificado em file_cache: no arquivo de configuração:

file_cache:
    path: <path to local disk cache>

Observação

O BlobFuse2 armazena todos os conteúdos do arquivo aberto no caminho temporário. Certifique-se de ter espaço suficiente para conter todos os arquivos abertos.

Você tem três opções comuns para configurar o caminho temporário para o cache de arquivos:

Usar um disco local de alto desempenho

Se você usar um disco local existente para cache de arquivos, escolha um disco que forneça o melhor desempenho possível, como um SSD (disco de estado sólido).

Usar um disco de RAM

O exemplo a seguir cria um disco de RAM de 16 GB e um diretório para o BlobFuse2. Escolha um tamanho que atenda aos seus requisitos. O BlobFuse2 usa o disco de RAM para abrir arquivos de até 16 GB.

sudo mkdir /mnt/ramdisk
sudo mount -t tmpfs -o size=16g tmpfs /mnt/ramdisk
sudo mkdir /mnt/ramdisk/blobfuse2tmp
sudo chown <youruser> /mnt/ramdisk/blobfuse2tmp
Usar um SSD

No Azure, é possível usar os discos efêmeros SSD que estão disponíveis em suas VMs para fornecer um buffer de baixa latência para o BlobFuse2. Dependendo do agente de provisionamento usado, monte o disco efêmero em /mnt para cloud-init ou /mnt/resource para VMs do Agente Linux do Microsoft Azure (waagent).

Certifique-se de que seu usuário tenha acesso ao caminho temporário:

sudo mkdir /mnt/resource/blobfuse2tmp -p
sudo chown <youruser> /mnt/resource/blobfuse2tmp

Criar um diretório vazio para montar o contêiner de blob

Para criar um diretório vazio para montar o contêiner de blob:

mkdir ~/mycontainer

Autorizar acesso à conta de armazenamento

Você deve conceder acesso à conta de armazenamento para o usuário montando o contêiner. As maneiras mais comuns de conceder acesso são usando uma das seguintes opções:

  • Chave de acesso da conta de armazenamento
  • Assinatura de acesso compartilhado
  • Identidade gerenciada
  • Entidade de serviço

Você pode fornecer informações de autorização em um arquivo de configuração ou em variáveis de ambiente. Para obter mais informações, consulte Definir as configurações do BlobFuse2.

Como montar um contêiner de blobs

Importante

O BlobFuse2 não dá suporte a caminhos de montagem sobrepostos. Se você executar várias instâncias do BlobFuse2, verifique se cada instância tem um ponto de montagem exclusivo e não sobreposto.

O BlobFuse2 não dá suporte à coexistência com o NFS no mesmo caminho de montagem. Os resultados da execução do BlobFuse2 no mesmo caminho de montagem que o NFS são indefinidos e podem resultar em corrupção de dados.

Para montar um contêiner de blob de blocos do Azure usando BlobFuse2, execute o comando a seguir. O comando monta o contêiner especificado em ./config.yaml no local ~/mycontainer:

sudo blobfuse2 mount ~/mycontainer --config-file=./config.yaml

Observação

Para obter uma lista completa das opções de montagem, consulte Comandos de montagem do BlobFuse2.

Agora você deverá ter acesso aos blobs de blocos através do sistema de arquivos Linux e das APIs relacionadas. Para testar sua implantação, tente criar um novo diretório e arquivo:

cd ~/mycontainer
mkdir test
echo "hello world" > test/blob.txt

Como acessar os dados

Em geral, você pode trabalhar com o armazenamento montado no BlobFuse2, como trabalharia com o sistema de arquivos Linux nativo. Ele usa o esquema de diretório virtual com uma barra (/) como um delimitador no caminho do arquivo e dá suporte a operações básicas do sistema de arquivos, como mkdir, opendir, readdir, rmdir, open, read, create, write, close, unlink, truncate, stat e rename.

No entanto, você deve estar ciente de algumas das principais diferenças na funcionalidade:

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 Gen2 1 NFS 3.0 1 SFTP 1
Uso geral v2 Standard Sim Sim Sim Sim
Blobs de blocos Premium Sim Sim Sim Sim

1 O Azure Data Lake Storage Gen2, o protocolo NFS 3.0 e o SFTP (Protocolo de transferência de arquivos SSH) exigem uma conta de armazenamento com um namespace hierárquico habilitado.

Confira também

Próximas etapas