Opções de armazenamento e movimentação de dados para renderizar arquivos de ativos e de saída
Há várias opções para disponibilizar os arquivos de cena e ativos para os aplicativos de renderização nas VMs do pool:
- Armazenamento de Blobs do Azure:
- Os arquivos de cena e de ativos são carregados para o armazenamento de blob a partir de um sistema de arquivos local. Quando o aplicativo é executado por uma tarefa, os arquivos necessários são copiados do armazenamento de blob para a VM para que possam ser acessados pelo aplicativo de renderização. Os arquivos de saída são gravados pelo aplicativo de renderização no disco da VM e, em seguida, copiados para o armazenamento de blobs. Se necessário, os arquivos de saída podem ser baixados do armazenamento de blob para um sistema de arquivos local.
- O Armazenamento de Blobs do Azure é uma opção simples e econômica para projetos menores. Como todos os arquivos de ativos são necessários em cada VM de pool, uma vez que o número e o tamanho dos arquivos de ativos aumenta, é necessário tomar cuidado para garantir que as transferências de arquivos sejam tão eficientes quanto possível.
- Armazenamento do Azure como um sistema de arquivos usando blobfuse:
- Para VMs Linux, uma conta de armazenamento pode ser exposta e usada como um sistema de arquivos quando o driver do sistema de arquivos virtual blobfuse é usado.
- Essa opção tem a vantagem de ser muito econômica, já que nenhuma VM é necessária para o sistema de arquivos, além de que o cache de blobfuse nas VMs evita downloads repetidos dos mesmos arquivos para vários trabalhos e tarefas. A movimentação de dados também é simples, pois os arquivos são simplesmente blobs e APIs e ferramentas padrão, como azcopy, podem ser usadas para copiar arquivos entre um sistema de arquivos local e o armazenamento do Azure.
- Sistema de arquivos ou compartilhamento de arquivos:
- Dependendo do sistema operacional da VM e dos requisitos de desempenho/escala, as opções incluem Arquivos do Azure, usando uma VM com discos anexados para NFS, usando várias VMs com discos conectados para um sistema de arquivos distribuído como o GlusterFS ou usando uma oferta de terceiros.
- A Avere Systems agora faz parte da Microsoft e terá soluções em um futuro próximo que são ideais para renderização em grande escala e de alto desempenho. A solução Avere permitirá a criação de um cache NFS ou SMB baseado no Azure que funcione em conjunto com o armazenamento de blob ou com dispositivos NAS locais.
- Com um sistema de arquivos, os arquivos podem ser lidos ou gravados diretamente no sistema de arquivos ou podem ser copiados entre o sistema de arquivos e as VMs do pool.
- Um sistema de arquivos compartilhado permite que um grande número de ativos compartilhados entre projetos e trabalhos sejam utilizados, com tarefas de renderização acessando apenas o necessário.
Usando o Armazenamento de Blobs do Azure
Uma conta de armazenamento de blob ou uma conta de armazenamento v2 de uso geral deve ser usada. Esses dois tipos de conta de armazenamento podem ser configurados com limites significativamente mais altos em comparação com uma conta de armazenamento v1 de uso geral, conforme detalhado nesta postagem do blog. Quando configurados, os limites mais altos permitirão um desempenho e escalabilidade muito melhores, especialmente quando há muitas VMs de pool acessando a conta de armazenamento.
Copiando arquivos entre o cliente e o armazenamento de blob
Para copiar arquivos de e para o armazenamento do Azure, vários mecanismos podem ser usados, incluindo a API de blob de armazenamento, a Biblioteca de Movimentação de Dados de Armazenamento do Azure, a ferramenta de linha de comando azcopy para Windows ou Linux, o Gerenciador de Armazenamento do Azure e o Azure Batch Explorer.
Por exemplo, usando azcopy, todos os ativos em uma pasta podem ser transferidos da seguinte maneira:
azcopy /source:. /dest:https://account.blob.core.windows.net/rendering/project /destsas:"?st=2018-03-30T16%3A26%3A00Z&se=2020-03-31T16%3A26%3A00Z&sp=rwdl&sv=2017-04-17&sr=c&sig=sig" /Y
Para copiar apenas arquivos modificados, o parâmetro /XO pode ser usado:
azcopy /source:. /dest:https://account.blob.core.windows.net/rendering/project /destsas:"?st=2018-03-30T16%3A26%3A00Z&se=2020-03-31T16%3A26%3A00Z&sp=rwdl&sv=2017-04-17&sr=c&sig=sig" /XO /Y
Copiando arquivos de ativos de entrada do armazenamento de blob para VMs de pool de lotes
Há algumas abordagens diferentes para copiar arquivos com a melhor abordagem determinada pelo tamanho dos ativos de trabalho. A abordagem mais simples é copiar todos os arquivos de ativos para as VMs do pool para cada trabalho:
- Quando há arquivos exclusivos para um trabalho, mas são necessários para todas as tarefas de um trabalho, então uma tarefa de preparação de trabalho pode ser especificada para copiar todos os arquivos. A tarefa de preparação de trabalho é executada uma vez quando a primeira tarefa de trabalho é executada em uma VM, mas não é executada novamente para tarefas de trabalho subsequentes.
- Uma tarefa de liberação de trabalho deve ser especificada para remover os arquivos por trabalho assim que o trabalho for concluído, isso evitará que o disco da VM seja preenchido por todos os arquivos de ativos de trabalho.
- Quando há vários trabalhos usando os mesmos ativos, com apenas alterações incrementais nos ativos de cada trabalho, todos os arquivos de ativos ainda são copiados, mesmo que apenas um subconjunto tenha sido atualizado. Isso seria ineficiente quando há muitos arquivos de ativos grandes.
Quando os arquivos de ativos são reutilizados entre trabalhos, com apenas alterações incrementais entre trabalhos, uma abordagem mais eficiente, mas um pouco mais envolvida, é armazenar ativos na pasta compartilhada na VM e sincronizar arquivos alterados.
- A tarefa de preparação do trabalho executaria a cópia usando azcopy com o parâmetro /XO para a pasta compartilhada da VM especificada por AZ_BATCH_NODE_SHARED_DIR variável de ambiente. Isso só copiará os arquivos alterados para cada VM.
- Será necessário pensar no tamanho de todos os ativos para garantir que eles se encaixem na unidade temporária das VMs do pool.
O Azure Batch tem suporte interno para copiar arquivos entre uma conta de armazenamento e VMs do pool de lotes. Os arquivos de recursos de tarefas copiam arquivos do armazenamento para VMs de pool e podem ser especificados para a tarefa de preparação do trabalho. Infelizmente, quando há centenas de arquivos é possível atingir um limite e as tarefas falhar. Quando há um grande número de ativos, recomenda-se usar a linha de comando azcopy na tarefa de preparação do trabalho, que pode usar curingas e não tem limite.
Copiando arquivos de saída para o armazenamento de blob de VMs de pool de lotes
Os arquivos de saída podem ser usados para copiar arquivos de uma VM de pool para o armazenamento. Um ou mais arquivos podem ser copiados da VM para uma conta de armazenamento especificada assim que a tarefa for concluída. A saída renderizada deve ser copiada, mas também pode ser desejável armazenar arquivos de log.
Usando um sistema de arquivos virtual blobfuse para pools de VMs Linux
Blobfuse é um driver de sistema de arquivos virtual para o Armazenamento de Blobs do Azure, que permite acessar arquivos armazenados como blobs em uma conta de Armazenamento por meio do sistema de arquivos Linux.
Os nós do pool podem montar o sistema de arquivos quando iniciados ou a montagem pode acontecer como parte de uma tarefa de preparação de trabalho – uma tarefa que só é executada quando a primeira tarefa de um trabalho é executada em um nó. O Blobfuse pode ser configurado para aproveitar um ramdisk e o SSD local de VMs para armazenamento em cache de arquivos, o que aumentará significativamente o desempenho se várias tarefas em um nó acessarem alguns dos mesmos arquivos.
Modelos de exemplo estão disponíveis para executar renderizações V-Ray autônomas usando um sistema de arquivos blobfuse e podem ser usados como base para modelos para outros aplicativos.
Acesso a ficheiros
As tarefas de trabalho especificam caminhos para arquivos de entrada e arquivos de saída usando o sistema de arquivos montado.
Copiando arquivos de ativos de entrada do armazenamento de blob para VMs de pool de lotes
Como os arquivos são simplesmente blobs no Armazenamento do Azure, APIs, ferramentas e interfaces do usuário de blob padrão podem ser usadas para copiar arquivos entre um sistema de arquivos local e o armazenamento de blobs; por exemplo, azcopy, Storage Explorer, Batch Explorer, etc.
Usando arquivos do Azure com VMs do Windows
Os Arquivos do Azure oferecem compartilhamentos de arquivos totalmente gerenciados na nuvem que podem ser acessados por meio do protocolo SMB. Os Arquivos do Azure são baseados no Armazenamento de Blobs do Azure; Ele é econômico e pode ser configurado com replicação de dados para outra região, de modo globalmente redundante. As metas de escala devem ser revisadas para determinar se os Arquivos do Azure devem ser usados dado o tamanho do pool de previsão e o número de arquivos de ativos.
Há documentação que abrange como montar um compartilhamento de arquivos do Azure.
Montando um compartilhamento de Arquivos do Azure
Para usar no Batch, uma operação de montagem precisa ser executada sempre que uma tarefa estiver em execução, pois não é possível persistir a conexão entre as tarefas. A maneira mais fácil de fazer isso é usar cmdkey para persistir credenciais usando a tarefa iniciar na configuração do pool e, em seguida, montar o compartilhamento antes de cada tarefa.
Exemplo de uso de cmdkey em um modelo de pool (com escape para uso no arquivo JSON) – observe que, ao separar a chamada cmdkey da chamada net use, o contexto do usuário para a tarefa inicial deve ser o mesmo usado para executar as tarefas:
"startTask": {
"commandLine": "cmdkey /add:storageaccountname.file.core.windows.net
/user:AZURE\\markscuscusbatch /pass:storage_account_key",
"userIdentity":{
"autoUser": {
"elevationLevel": "nonadmin",
"scope": "pool"
}
}
Exemplo de linha de comando de tarefa de trabalho:
"commandLine":"net use S:
\\\\storageaccountname.file.core.windows.net\\rendering &
3dsmaxcmdio.exe -v:5 -rfw:0 -10 -end:10
-bitmapPath:\"s:\\3dsMax\\Dragon\\Assets\"
-outputName:\"s:\\3dsMax\\Dragon\\RenderOutput\\dragon.jpg\"
-w:1280 -h:720
\"s:\\3dsMax\\Dragon\\Assets\\Dragon_Character_Rig.max\""
Acesso a ficheiros
As tarefas de trabalho especificam caminhos para arquivos de entrada e arquivos de saída usando o sistema de arquivos montado, usando uma unidade mapeada ou um caminho UNC.
Copiando arquivos de ativos de entrada do armazenamento de blob para VMs de pool de lotes
Os Arquivos do Azure são suportados por todas as principais APIs e ferramentas que têm suporte ao Armazenamento do Azure; por exemplo, azcopy, CLI do Azure, Gerenciador de Armazenamento, Azure PowerShell, Batch Explorer, etc.
A Sincronização de Arquivos do Azure está disponível para sincronizar automaticamente arquivos entre um sistema de arquivos local e um compartilhamento de Arquivos do Azure.
Próximos passos
Para obter mais informações sobre as opções de armazenamento, consulte a documentação detalhada: