Como montar um contêiner de Armazenamento de Blob do Azure no Linux com BlobFuse2
Este artigo mostra como instalar e configurar o BlobFuse2, montar um contêiner de blob do Azure e acessar dados no contêiner. Os passos básicos são:
Como instalar o BlobFuse2
Você tem duas opções para instalar o BlobFuse2:
- Instale BlobFuse2 a partir dos repositórios de software da Microsoft para Linux - Este é o método preferido de instalação. BlobFuse2 está disponível nos repositórios para várias distribuições Linux comuns.
- Construir os binários BlobFuse2 a partir do código-fonte - Você pode construir 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 suportadas, consulte Versões BlobFuse2.
Para obter informações sobre o suporte a libfuse, consulte o Leiame BlobFuse2.
Para verificar a sua versão do Linux, execute o seguinte comando:
cat /etc/*-release
Se nenhum binário estiver disponível para sua distribuição, você pode Opção 2: Construir 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 Linux para produtos 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 mesma forma, altere o URL para .../rhel/7/...
apontar para uma distribuição Redhat Enterprise Linux 7.
Instalar o BlobFuse2
Opção 2: Construir os binários a partir do código-fonte
Para criar os binários BlobFuse2 a partir do código-fonte:
Instale as dependências:
Instale o Git:
sudo apt-get install git
Instale as dependências do BlobFuse2.
No Ubuntu:
sudo apt-get install libfuse3-dev fuse3 -y
Clone o repositório:
sudo git clone https://github.com/Azure/azure-storage-fuse/ sudo cd ./azure-storage-fuse sudo git checkout main
Construir BlobFuse2:
go get go build -tags=fuse3
Gorjeta
Se precisar de instalar o Go, consulte Transferir e instalar o Go.
Como configurar o BlobFuse2
Você pode configurar BlobFuse2 usando várias configurações. Algumas das configurações típicas incluem:
- Local e opções de registro
- 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 de configuração YAML, usando variáveis de ambiente, ou como parâmetros passados para os comandos BlobFuse2. O método preferido é usar o arquivo de configuração.
Para obter detalhes sobre cada um dos parâmetros de configuração para BlobFuse2 e como especificá-los, consulte estes artigos:
- Definir configurações para BlobFuse2
- Arquivo de configuração BlobFuse2
- Variáveis de ambiente BlobFuse2
- Comandos de montagem BlobFuse2
Para configurar o BlobFuse2 para montagem:
- Configure o cache.
- Crie um diretório vazio para montar o contêiner de blob.
- Autorize o acesso à sua conta de armazenamento.
Configurar a colocação em cache
BlobFuse2 fornece desempenho nativo usando técnicas de cache de arquivos locais. A configuração e o comportamento do cache variam, dependendo se você está transmitindo arquivos grandes ou acessando arquivos menores.
Configurar o cache para streaming de arquivos grandes
BlobFuse2 suporta 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, tanto para leitura quanto para gravação. As definições de configuração relacionadas ao cache para streaming estão sob as stream:
configurações em seu 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 no file_cache:
arquivo de configuração:
file_cache:
path: <path to local disk cache>
Nota
BlobFuse2 armazena todo o conteúdo do arquivo aberto no caminho temporário. Certifique-se de que tem espaço suficiente para conter todos os ficheiros abertos.
Você tem três opções comuns para configurar o caminho temporário para 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 ofereça o melhor desempenho possível, como um disco de estado sólido (SSD).
Usar um disco RAM
O exemplo a seguir cria um disco RAM de 16 GB e um diretório para BlobFuse2. Escolha um tamanho que atenda às suas necessidades. BlobFuse2 usa o disco RAM para abrir arquivos de até 16 GB de tamanho.
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
Utilizar uma SSD
No Azure, você pode usar os discos efêmeros SSD que estão disponíveis em suas VMs para fornecer um buffer de baixa latência para BlobFuse2. Dependendo do agente de provisionamento usado, monte o disco efêmero em /mnt para cloud-init ou /mnt/resource para VMs do Microsoft Azure Linux Agent (waagent).
Verifique se o usuário tem 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 o acesso à sua conta de armazenamento
Você deve conceder acesso à conta de armazenamento para o usuário que monta 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 partilhado
- Identidade gerida
- Service principal (Principal 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 configurações para BlobFuse2.
Como montar um contêiner de blob
Importante
BlobFuse2 não suporta caminhos de montagem sobrepostos. Se você executar várias instâncias de BlobFuse2, certifique-se de que cada instância tenha um ponto de montagem exclusivo e não sobreposto.
BlobFuse2 não suporta coexistência com NFS no mesmo caminho de montagem. Os resultados da execução de 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 bloco do Azure usando BlobFuse2, execute o seguinte comando. O comando monta o contêiner especificado no ./config.yaml
local ~/mycontainer
:
sudo blobfuse2 mount ~/mycontainer --config-file=./config.yaml
Nota
Para obter uma lista completa das opções de montagem, consulte Comandos de montagem BlobFuse2.
Agora você deve ter acesso aos seus blobs de bloco através do sistema de arquivos Linux e 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 aceder aos dados
Geralmente, você pode trabalhar com o armazenamento montado no BlobFuse2 como faria 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 suporta operações básicas do sistema de arquivos, como mkdir
, opendir
, readdir
, rmdir
, open
, read
unlink
create
close
truncate
write
stat
e .rename
No entanto, você deve estar ciente de algumas diferenças importantes na funcionalidade:
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 | NFS 3,0 1 | SFTP 1 |
---|---|---|---|---|
Padrão de uso geral v2 | ||||
Blobs de bloco premium |
1 O Armazenamento Azure Data Lake, o protocolo NFS (Network File System) 3.0 e o suporte ao SSH File Transfer Protocol (SFTP) exigem uma conta de armazenamento com um namespace hierárquico habilitado.