Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Azure Batch dá suporte à montagem de armazenamento em nuvem ou a um sistema de arquivos externo em nós de computação Windows ou Linux em pools do Batch. Quando um nó de computação se junta ao pool, o sistema de arquivos virtual é montado e atua como uma unidade local nesse nó. Este artigo mostra como montar um sistema de arquivos virtual em um pool de nós de computação usando a Biblioteca de Gerenciamento de Lote para .NET.
Montar o sistema de arquivos no pool torna o acesso aos dados mais fácil e eficiente do que exigir tarefas para obter seus próprios dados de um grande conjunto de dados compartilhados. Considere um cenário em que várias tarefas precisam de acesso a um conjunto comum de dados, como renderizar um filme. Cada tarefa renderiza um ou mais quadros de uma só vez a partir dos arquivos de cena. Ao montar uma unidade que contém os ficheiros de cenas, facilita o acesso de cada nó de computação aos dados partilhados.
Além disso, pode escolher o sistema de ficheiros subjacente para atender aos requisitos de desempenho, taxa de transferência e operações de entrada/saída por segundo (IOPS). Você pode dimensionar o sistema de arquivos de forma independente com base no número de nós de computação que acessam simultaneamente os dados.
Por exemplo, você pode usar um cache distribuído na memória do Avere vFXT para oferecer suporte a renderizações em grande escala de filme com milhares de nós de renderização simultâneos que acessam dados de origem locais. Ou, para dados que já estão no armazenamento de blob baseado em nuvem, você pode usar BlobFuse para montar os dados como um sistema de arquivos local. Os Arquivos do Azure fornecem um fluxo de trabalho semelhante ao do BlobFuse e estão disponíveis no Windows e no Linux.
Configurações suportadas
Você pode montar os seguintes tipos de sistemas de arquivos:
- Ficheiros do Azure
- Armazenamento de Blobs do Azure
- Network File System (NFS), incluindo um cache Avere vFXT
- Sistema comum de arquivos da Internet (CIFS)
O Batch suporta os seguintes tipos de sistema de arquivos virtuais para agentes de nó que são produzidos para seus respetivos editores e ofertas.
| Tipo de SO | Compartilhamento de arquivos do Azure | Contêiner de Blob do Azure | Montagem NFS | Montagem CIFS |
|---|---|---|---|---|
| Linux | ✔️ | ✔️ | ✔️ | ✔️ |
| Windows | ✔️ | ❌ | ❌ | ❌ |
Nota
A montagem de um sistema de arquivos virtual não é suportada em pools de lotes criados antes de 8 de agosto de 2019.
Requisitos de rede
Ao usar montagens de arquivos virtuais com pools de lotes em uma rede virtual, lembre-se dos seguintes requisitos e certifique-se de que nenhum tráfego necessário seja bloqueado. Para obter mais informações, consulte Pools de lotes em uma rede virtual.
As partilhas de Arquivos do Azure exigem que a porta TCP 445 esteja aberta para o tráfego de e para a
storageetiqueta de serviço. Para obter mais informações, consulte Usar um compartilhamento de arquivos do Azure com o Windows.Os containers de Blobs do Azure exigem que a porta TCP 443 esteja aberta para o tráfego de e para a
storagetag de serviço. As máquinas virtuais (VMs) devem ter acesso parahttps://packages.microsoft.combaixar osblobfusepacotes egpg. Dependendo da sua configuração, você pode precisar de acesso a outros URLs.O Network File System (NFS) requer acesso à porta 2049 por padrão. Sua configuração pode ter outros requisitos. As VMs devem ter acesso ao gerenciador de pacotes apropriado para baixar os
nfs-commonpacotes (para Debian ou Ubuntu). O URL pode variar de acordo com a versão do seu sistema operacional. Dependendo da sua configuração, você também pode precisar de acesso a outras URLs.A montagem do Azure Blob ou dos Arquivos do Azure através de NFS pode ter mais requisitos de rede. Por exemplo, seus nós de computação podem precisar usar a mesma sub-rede de rede virtual que a conta de armazenamento.
Common Internet File System (CIFS) requer acesso à porta TCP 445. As VMs devem ter acesso ao gerenciador de pacotes apropriado para baixar o
cifs-utilspacote. O URL pode variar de acordo com a versão do seu sistema operacional.
Configuração de montagem e implementação
A montagem de um sistema de arquivos virtual em um pool torna o sistema de arquivos disponível para cada nó de computação no pool. A configuração do sistema de arquivos acontece quando um nó de computação se junta a um pool, é reiniciado ou é reimaginado.
Para montar um sistema de arquivos em um pool, crie um objeto MountConfiguration que corresponda ao seu sistema de arquivos virtual: AzureBlobFileSystemConfiguration, AzureFileShareConfiguration, NfsMountConfigurationou CifsMountConfiguration.
Todos os objetos de configuração de montagem precisam dos seguintes parâmetros básicos. Algumas configurações de montagem têm parâmetros próprios para o respetivo sistema de arquivos, que os exemplos de código apresentam com mais detalhes.
Nome da conta ou origem da conta de armazenamento.
Caminho de montagem relativo ou origem, o local do sistema de arquivos a ser montado no nó de computação, relativo ao diretório \fsmounts padrão, acessível via
AZ_BATCH_NODE_MOUNTS_DIR.A localização exata do diretório \fsmounts varia consoante o sistema operativo do nó. Por exemplo, o local em um nó do Ubuntu mapeia para mnt\batch\tasks\fsmounts.
Opções de montagem ou opções de BlobFuse que descrevem parâmetros específicos para montar um sistema de arquivos.
Ao criar o pool e o MountConfiguration objeto, você atribui o objeto à MountConfigurationList propriedade. A montagem para o sistema de arquivos acontece quando um nó se junta ao pool, é reiniciado ou é recriado.
O agente Batch implementa a montagem de forma diferente no Windows e Linux.
No Linux, o Batch instala o pacote
cifs-utils. Em seguida, Batch emite o comando mount.No Windows, o Batch usa
cmdkeypara adicionar suas credenciais de conta do Batch. Em seguida, Batch emite o comando mount através denet use. Por exemplo:net use S: \\<storage-account-name>.file.core.windows.net\<fileshare> /u:AZURE\<storage-account-name> <storage-account-key>
A montagem do sistema de arquivos cria uma variável AZ_BATCH_NODE_MOUNTS_DIRde ambiente , que aponta para o local do sistema de arquivos montado e dos arquivos de log. Você pode usar os arquivos de log para solução de problemas e depuração.
Montar um compartilhamento de Arquivos do Azure com o PowerShell
Você pode usar o Azure PowerShell para montar uma partilha de ficheiros do Azure num pool de Batch do Windows ou Linux. O procedimento a seguir orienta na configuração e montagem de um sistema de ficheiros de partilha do Azure num pool de lotes.
Importante
O número máximo de sistemas de arquivos montados em um pool é 10. Para obter detalhes e outros limites, consulte Cotas e limites de serviço em lote.
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa.
- Azure PowerShell instalado ou use o Azure Cloud Shell e selecione PowerShell para a interface.
- Uma conta em lote existente com uma conta de Armazenamento do Azure vinculada que tenha um compartilhamento de arquivos.
Entre em sua assinatura do Azure, substituindo o espaço reservado pela sua ID de assinatura.
Connect-AzAccount -Subscription "<subscription-ID>"Obtenha o contexto da sua conta Batch. Substitua o
<batch-account-name>pelo nome da sua conta Batch.$context = Get-AzBatchAccount -AccountName <batch-account-name>Crie um pool de lotes com as seguintes configurações. Substitua os
<storage-account-name>espaços reservados ,<storage-account-key>e pelos<file-share-name>valores da conta de armazenamento vinculada à sua conta de lote. Substitua o marcador de posição<pool-name>pelo nome que você quer para o pool.O script a seguir cria um pool com um nó Windows Server 2016 Datacenter de tamanho Standard_D2_V2 e, em seguida, monta o compartilhamento de ficheiros do Azure na unidade S do nó.
$fileShareConfig = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSAzureFileShareConfiguration" -ArgumentList @("<storage-account-name>", "https://<storage-account-name>.file.core.windows.net/batchfileshare1", "S", "<storage-account-key>") $mountConfig = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSMountConfiguration" -ArgumentList @($fileShareConfig) $imageReference = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSImageReference" -ArgumentList @("WindowsServer", "MicrosoftWindowsServer", "2016-Datacenter", "latest") $configuration = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSVirtualMachineConfiguration" -ArgumentList @($imageReference, "batch.node.windows amd64") New-AzBatchPool -Id "<pool-name>" -VirtualMachineSize "STANDARD_D2_V2" -VirtualMachineConfiguration $configuration -TargetDedicatedComputeNodes 1 -MountConfiguration @($mountConfig) -BatchContext $contextConecte-se ao nó e verifique se o arquivo de saída está correto.
Aceda aos ficheiros montados
As tarefas do Lote do Azure podem aceder aos arquivos montados usando o caminho direto do disco, por exemplo:
cmd /c "more S:\folder1\out.txt & timeout /t 90 > NULL"
O agente Azure Batch concede acesso apenas para tarefas Azure Batch. Se você usar o protocolo RDP (Remote Desktop Protocol) para se conectar ao nó, sua conta de usuário não terá acesso automático à unidade de montagem. Quando você se conecta ao nó através de RDP, você deve adicionar credenciais para a conta de armazenamento para acessar a unidade S diretamente.
Utilize cmdkey para adicionar as credenciais. Substitua os espaços reservados <storage-account-name> e <storage-account-key> pelas suas próprias informações.
cmdkey /add:"<storage-account-name>.file.core.windows.net" /user:"Azure\<storage-account-name>" /pass:"<storage-account-key>"
Solucionar problemas de montagem
Se uma configuração de montagem falhar, o nó de computação falhará e o estado do nó será definido como Inutilizável. Para diagnosticar uma falha de configuração de montagem, inspecione a propriedade ComputeNodeError para obter detalhes sobre o erro.
Para obter arquivos de log para depuração, você pode usar a API OutputFiles para carregar os arquivos *.log . Os arquivos *.log contêm informações sobre a montagem do AZ_BATCH_NODE_MOUNTS_DIR sistema de arquivos no local. Os arquivos de log de montagem têm o formato: <type>-<mountDirOrDrive>.log para cada montagem. Por exemplo, uma montagem CIFS em um diretório de montagem chamado test tem um arquivo de log de montagem chamado: cifs-test.log.
Investigar erros de montagem
Você pode usar RDP ou SSH para aceder ao nó e verificar os arquivos de log relacionados com as montagens do sistema de ficheiros. A seguinte mensagem de erro de exemplo é possível quando você tenta montar um compartilhamento de arquivos do Azure em um nó Batch:
Mount Configuration Error | An error was encountered while configuring specified mount(s)
Message: System error (out of memory, cannot fork, no more loop devices)
MountConfigurationPath: S
Caso receba este erro, use RDP ou SSH no nó para verificar os ficheiros de log relacionados. O agente Batch implementa a montagem de forma diferente em compartilhamentos de arquivos do Azure no Windows e no Linux. No Linux, o Batch instala o pacote cifs-utils. Em seguida, Batch emite o comando mount. No Windows, o Batch usa cmdkey para adicionar suas credenciais de conta do Batch. Em seguida, Batch emite o comando mount através de net use. Por exemplo:
net use S: \\<storage-account-name>.file.core.windows.net\<fileshare> /u:AZURE\<storage-account-name> <storage-account-key>
Conecte-se ao nó pelo RDP.
Abra o arquivo de log fshare-S.log, em D:\batch\tasks\fsmounts.
Analise as mensagens de erro, por exemplo:
CMDKEY: Credential added successfully. System error 86 has occurred. The specified network password is not correct.Solucione o problema usando a solução de problemas de compartilhamentos de arquivos do Azure.
Se você não puder usar RDP ou SSH para verificar os arquivos de log no nó, poderá carregar os logs em sua conta de armazenamento do Azure. Você pode usar esse método para logs do Windows e Linux.
No portal do Azure, procure e selecione a conta Batch que tem o seu pool.
Na página Conta de lote, selecione Pools na navegação à esquerda.
Na página Pools, selecione o nome do pool.
Na página do pool, selecione Nós na barra de navegação à esquerda.
Na página de nós, selecione o nome do nó.
Na página do nó, selecione Carregar registos em lote.
No painel Carregar logs em lote, selecione Escolher contentor de armazenamento.
Na página Contas de armazenamento, selecione uma conta de armazenamento.
Na página Contêineres, selecione ou crie um contêiner para carregar os arquivos e selecione Selecionar.
Selecione Iniciar carregamento.
Quando o carregamento estiver concluído, faça download dos ficheiros e abra agent-debug.log.
Analise as mensagens de erro, por exemplo:
..20210322T113107.448Z.00000000-0000-0000-0000-000000000000.ERROR.agent.mount.filesystems.basefilesystem.basefilesystem.py.run_cmd_persist_output_async.59.2912.MainThread.3580.Mount command failed with exit code: 2, output: CMDKEY: Credential added successfully. System error 86 has occurred. The specified network password is not correct.Solucione o problema usando a solução de problemas de compartilhamentos de arquivos do Azure.
Montar manualmente uma partilha de ficheiros com o PowerShell
Se não for possível diagnosticar ou corrigir erros de montagem, você poderá usar o PowerShell para montar o compartilhamento de arquivos manualmente.
Crie um pool sem uma configuração de montagem. Por exemplo:
$imageReference = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSImageReference" -ArgumentList @("WindowsServer", "MicrosoftWindowsServer", "2016-Datacenter", "latest") $configuration = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSVirtualMachineConfiguration" -ArgumentList @($imageReference, "batch.node.windows amd64") New-AzBatchPool -Id "<pool-name>" -VirtualMachineSize "STANDARD_D2_V2" -VirtualMachineConfiguration $configuration -TargetDedicatedComputeNodes 1 -BatchContext $ContextAguarde até que o nó esteja no estado Ocioso .
No portal do Azure, procure e selecione a conta de armazenamento que contém a sua partilha de ficheiros.
No menu da página da conta de armazenamento, selecione Compartilhamentos de arquivos na navegação à esquerda.
Na página Partilhas de arquivos, selecione a partilha de arquivos que deseja montar.
Na página do compartilhamento de arquivos, selecione Conectar.
No painel Conectar, selecione a guia Windows.
Em Letra da unidade, introduza a unidade que pretende utilizar. O padrão é Z.
Em Método de autenticação, selecione como você deseja se conectar ao compartilhamento de arquivos.
Selecione Mostrar Script e copie o script do PowerShell para montar o compartilhamento de arquivos.
Conecte-se ao nó pelo RDP.
Execute o comando copiado para montar o compartilhamento de arquivos.
Observe todas as mensagens de erro na saída. Use essas informações para solucionar problemas relacionados à rede.
Exemplo de configurações de montagem
As configurações de exemplo de código a seguir demonstram a montagem de vários sistemas de compartilhamento de arquivos em um pool de nós de computação.
Compartilhamento de arquivos do Azure
O Azure Files é a oferta padrão do sistema de arquivos na nuvem do Azure. A configuração a seguir monta uma partilha de Azure Files chamada <file-share-name> na unidade S. Para obter informações sobre os parâmetros no exemplo, consulte Montar compartilhamento de arquivos do Azure SMB no Windows ou Criar um compartilhamento de arquivos do Azure NFS e montá-lo em uma VM Linux usando o portal do Azure.
new PoolAddParameter
{
Id = poolId,
MountConfiguration = new[]
{
new MountConfiguration
{
AzureFileShareConfiguration = new AzureFileShareConfiguration
{
AccountName = "<storage-account-name>",
AzureFileUrl = "https://<storage-account-name>.file.core.windows.net/<file-share-name>",
AccountKey = "<storage-account-key>",
RelativeMountPath = "S",
MountOptions = "-o vers=3.0,dir_mode=0777,file_mode=0777,sec=ntlmssp"
},
}
}
}
Contêiner de Blob do Azure
Outra opção é usar o armazenamento de Blob do Azure via BlobFuse. A montagem de um sistema de arquivos blob requer uma chave de conta, uma chave de assinatura de acesso compartilhado (SAS) ou uma identidade gerenciada com acesso à sua conta de armazenamento.
Para obter informações sobre como obter essas chaves ou identidade, consulte os seguintes artigos:
Configurar as identidades geridas em conjuntos do Batch
Gorjeta
Se você usar uma identidade gerenciada, verifique se a identidade foi atribuída ao pool para que esteja disponível na VM que está fazendo a montagem. A identidade também deve ter a função de Colaborador de Dados de Blob de Armazenamento .
A seguinte configuração monta um sistema de ficheiros blob com opções de BlobFuse. Para fins de ilustração, o exemplo mostra AccountKey, SasKey e IdentityReference, mas na verdade você pode especificar apenas um desses métodos.
new PoolAddParameter
{
Id = poolId,
MountConfiguration = new[]
{
new MountConfiguration
{
AzureBlobFileSystemConfiguration = new AzureBlobFileSystemConfiguration
{
AccountName = "<storage-account-name>",
ContainerName = "<container-name>",
// Use only one of the following three lines:
AccountKey = "<storage-account-key>",
SasKey = "<sas-key>",
IdentityReference = new ComputeNodeIdentityReference("/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>"),
RelativeMountPath = "<relative-mount-path>",
BlobfuseOptions = "-o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120 "
},
}
}
}
Para obter acesso padrão ao diretório montado BlobFuse, execute a tarefa como administrador. BlobFuse monta o diretório no espaço do usuário e, na criação do pool, monta o diretório como root. No Linux, todas as tarefas do administrador são root. A página de referência FUSE descreve todas as opções para o módulo FUSE.
Para obter mais informações e dicas sobre como usar o BlobFuse, consulte as seguintes referências:
- Projeto Blobfuse2
- Perguntas frequentes sobre solução de problemas de Blobfuse
- Problemas do GitHub no repositório azure-storage-fuse
NFS
Você pode montar compartilhamentos NFS em nós de pool para permitir que o Batch acesse sistemas de arquivos tradicionais. A configuração pode ser um único servidor NFS implantado na nuvem ou um servidor NFS local acessado por uma rede virtual. As montagens NFS suportam Avere vFXT, um cache distribuído na memória para tarefas de computação de alto desempenho (HPC) com uso intensivo de dados. As montagens NFS também oferecem suporte a outras interfaces padrão compatíveis com NFS, como NFS para Blob do Azure e NFS para Arquivos do Azure.
O exemplo a seguir mostra uma configuração para uma montagem do sistema de arquivos NFS:
new PoolAddParameter
{
Id = poolId,
MountConfiguration = new[]
{
new MountConfiguration
{
NfsMountConfiguration = new NFSMountConfiguration
{
Source = "<source>",
RelativeMountPath = "<relative-mount-path>",
MountOptions = "options ver=3.0"
},
}
}
}
CIFS
Montar CIFS nos nós do pool é outra forma de fornecer acesso aos sistemas de ficheiros tradicionais. O CIFS é um protocolo de compartilhamento de arquivos que fornece um mecanismo aberto e multiplataforma para solicitar arquivos e serviços de servidor de rede. O CIFS baseia-se na versão melhorada do protocolo SMB para partilha de ficheiros na Internet e intranet.
O exemplo a seguir mostra uma configuração para uma montagem de arquivo CIFS.
new PoolAddParameter
{
Id = poolId,
MountConfiguration = new[]
{
new MountConfiguration
{
CifsMountConfiguration = new CIFSMountConfiguration
{
Username = "<storage-account-name>",
RelativeMountPath = "<relative-mount-path>",
Source = "<source>",
Password = "<storage-account-key>",
MountOptions = "-o vers=3.0,dir_mode=0777,file_mode=0777,serverino,domain=<domain-name>"
},
}
}
}
Nota
Procurando um exemplo usando o PowerShell em vez de C#? Você pode encontrar outro ótimo exemplo aqui: Mount Azure File to Azure Batch Pool.
Próximos passos
- Montar um compartilhamento de Arquivos do Azure com o Windows
- Monte um compartilhamento de Arquivos do Azure com Linux
- Blobfuse2 - Um driver FUSE de armazenamento do Azure com suporte da Microsoft
- Visão geral do sistema de arquivos de rede
- Visão geral do protocolo SMB da Microsoft e do protocolo CIFS