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:
Como instalar o BlobFuse2
Há duas opções para instalar o BlobFuse2:
- Instalar o BlobFuse2 dos repositórios de software da Microsoft para Linux – esse é o método preferencial de instalação. O BlobFuse2 está disponível nos repositórios para várias distribuições comuns do Linux.
- Criar os binários BlobFuse2 a partir do código-fonte – você pode criar os binários BlobFuse2 a partir do código-fonte se ele não estiver disponível nos repositórios para sua distribuição.
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
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
Opção 2: criar os binários do código-fonte
Para criar binários do BlobFuse2 do código-fonte:
Instalar as dependências:
Instalar o Git:
sudo apt-get install git
Instalar dependências do BlobFuse2.
No Ubuntu:
sudo apt-get install libfuse3-dev fuse3 -y
Clonar o repositório:
sudo git clone https://github.com/Azure/azure-storage-fuse/ sudo cd ./azure-storage-fuse sudo git checkout main
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:
- Definir as configurações do BlobFuse2
- Arquivo de configuração do BlobFuse2
- Variáveis de ambiente do BlobFuse2
- Comandos de montagem do BlobFuse2
Para configurar o BlobFuse2 para montagem:
- Configure armazenamento em cache.
- Criar um diretório vazio para montar o contêiner de blob.
- 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
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 1 | NFS 3.0 1 | SFTP 1 |
---|---|---|---|---|
Uso geral v2 Standard | ||||
Blobs de blocos Premium |
1 O Azure Data Lake Storage, o protocolo NFS 3.0 e o protocolo FTP Seguro (SFTP) são compatíveis com todos os requisitos de uma conta de armazenamento com um namespace hierárquico habilitado.