Como montar o Armazenamento de Blobs do Azure como um sistema de arquivos com BlobFuse v1

Cuidado

Este artigo faz referência ao CentOS, uma distribuição do Linux que está se aproximando do status de EOL (fim da vida útil). Considere seu uso e planeje adequadamente. Para obter mais informações, veja as Diretrizes sobre fim da vida útil do CentOS.

Importante

BlobFuse2 é a versão mais recente do BlobFuse e possui muitas melhorias significativas em relação à versão abordada neste artigo, BlobFuse v1. Para saber mais sobre os aprimoramentos feitos no BlobFuse2, consulte a lista de aprimoramentos do BlobFuse2.

O BlobFuse é um driver de sistema de arquivos virtual para Armazenamento de Blobs do Azure. O BlobFuse permite que você acesse os dados de blob de blocos existentes em sua conta de armazenamento por meio do sistema de arquivos Linux. O BlobFuse usa o esquema de diretório virtual com a barra “/” como um delimitador.

Este guia mostra como usar o BlobFuse v1 e montar um contêiner de Armazenamento de Blobs no Linux e acessar dados. Para saber mais sobre o BlobFuse v1, consulte o Leiame e o wiki.

Aviso

O BlobFuse não garante 100% de conformidade com POSIX, pois 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 no BlobFuse. Para obter uma lista completa de diferenças entre um sistema de arquivos nativo e BlobFuse, visite o repositório de código-fonte do BlobFuse.

Instalar o BlobFuse v1 no Linux

Os binários do BlobFuse estão disponíveis nos repositórios de software da Microsoft para Linux para distribuições Ubuntu, Debian, SUSE, CentOS, Oracle Linux e RHEL. Para instalar o BlobFuse nessas distribuições, configure um dos repositórios da lista. Você também pode criar os binários a partir do código-fonte seguindo as etapas de instalação do Armazenamento do Microsoft Azure, se não houver binários disponíveis para sua distribuição.

O BlobFuse é publicado no repositório do Linux para versões do Ubuntu: 16.04, 18.04 e 20.04, versões RHEL: 7.5, 7.8, 7.9, 8.0, 8.1, 8.2, versões CentOS: 7.0, 8.0, versões Debian: 9.0, 10.0, versão SUSE: 15, Oracle Linux 8.1. Execute este comando para garantir que uma dessas versões seja implementada:

cat /etc/*-release

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 BlobFuse v1

sudo yum install blobfuse

Preparar para a montagem

O BlobFuse fornece desempenho semelhante ao nativo, exigindo um caminho temporário no sistema de arquivos para armazenar em buffer e cache todos os arquivos abertos. Para esse caminho temporário, escolha o disco de alto desempenho ou use um ramdisk para obter melhor desempenho.

Observação

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

(Opcional) Use um ramdisk para o caminho temporário

O exemplo a seguir cria um ramdisk de 16 GB e um diretório para BlobFuse. Escolha o tamanho com base nas suas necessidades. Esse ramdisk permite que BlobFuse abra arquivos com até 16 GB de tamanho.

sudo mkdir /mnt/ramdisk
sudo mount -t tmpfs -o size=16g tmpfs /mnt/ramdisk
sudo mkdir /mnt/ramdisk/blobfusetmp
sudo chown <youruser> /mnt/ramdisk/blobfusetmp

Usar um SSD como um caminho temporário

No Azure, é possível usar os discos efêmeros (SSD) disponíveis em suas VMs para fornecer um buffer de baixa latência para BlobFuse. Dependendo do agente de provisionamento usado, o disco efêmero seria montado em '/mnt' para cloud-init ou '/mnt/resource' para VMs waagent.

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

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

Autorizar acesso à conta de armazenamento

Você pode autorizar o acesso à conta de armazenamento usando a chave de acesso da conta, uma assinatura de acesso compartilhado, uma identidade gerenciada ou uma entidade de serviço. As informações de autorização podem ser fornecidas na linha de comando, em um arquivo de configuração ou em variáveis de ambiente. Para obter detalhes, confira Configurações de autenticação válidas no leiame do BlobFuse.

Por exemplo, suponha que você autorize com as chaves de acesso da conta e armazene-as em um arquivo de configuração. O arquivo de configuração deve ter o formato a seguir:

accountName myaccount
accountKey storageaccesskey
containerName mycontainer
authType Key

O accountName é o nome da conta de armazenamento e não é a URL completa. Você precisa atualizar myaccount, storageaccesskeye mycontainer com suas informações de armazenamento.

Crie esse arquivo usando:

sudo touch /path/to/fuse_connection.cfg

Após criar e editar esse arquivo, restrinja o acesso para que nenhum outro usuário possa fazer a leitura.

sudo chmod 600 /path/to/fuse_connection.cfg

Observação

Se você criou o arquivo de configuração no Windows, certifique-se de executar dos2unix para higienizar e converter o arquivo para o formato Unix.

Criar um diretório vazio para montagem

sudo mkdir ~/mycontainer

Montar

Observação

Para obter uma lista completa de opções de montagem, verifique o repositório do BlobFuse.

Para montar o BlobFuse, execute o comando a seguir com seu usuário. Esse comando monta o contêiner especificado em '/path/to/fuse_connection.cfg' no local '/mycontainer'.

sudo blobfuse ~/mycontainer --tmp-path=/mnt/resource/blobfusetmp  --config-file=/path/to/fuse_connection.cfg -o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120

Observação

Se você usar uma conta do ADLS, deverá incluir --use-adls=true.

Agora você deverá ter acesso aos blobs de blocos através das APIs do sistema de arquivos regulares. O usuário que monta o diretório é a única pessoa que pode acessá-lo, por padrão, o que garante o acesso. Para permitir acesso a todos os usuários, é possível montar através da opção -o allow_other.

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

Persista a montagem

Para saber como persistir a montagem, confira Persistência no wiki do BlobFuse.

Suporte a recursos

O suporte para esse recurso pode ser afetado ao habilitar o Data Lake Storage Gen2, o protocolo NFS (Sistema de Arquivos de Rede) 3.0 ou o protocolo SFTP (Protocolo de Transferência de Arquivo SSH). Se você tiver habilitado qualquer um desses recursos, consulte o Suporte a recursos de Armazenamento de Blobs nas contas de Armazenamento do Azure para avaliar o suporte para esse recurso.

Próximas etapas