Alternativ för lagring och dataflytt för rendering av tillgångs- och utdatafiler
Det finns flera alternativ för att göra scen- och tillgångsfilerna tillgängliga för renderingsprogram på de virtuella pooldatorerna:
- Azure Blob Storage:
- Scen- och tillgångsfiler laddas upp till bloblagring från ett lokalt filsystem. När programmet körs av en uppgift kopieras de nödvändiga filerna från bloblagringen till den virtuella datorn så att de kan nås av renderingsprogrammet. Utdatafilerna skrivs av renderingsprogrammet till den virtuella datordisken och kopieras sedan till bloblagring. Om det behövs kan utdatafilerna laddas ned från bloblagring till ett lokalt filsystem.
- Azure Blob Storage är ett enkelt och kostnadseffektivt alternativ för mindre projekt. Eftersom alla tillgångsfiler krävs på varje virtuell pooldator måste du, när antalet och storleken på tillgångsfilerna ökar, vara noga med att se till att filöverföringarna är så effektiva som möjligt.
- Azure Storage som ett filsystem med blobfuse:
- För virtuella Linux-datorer kan ett lagringskonto exponeras och användas som ett filsystem när drivrutinen för det virtuella filsystemet blobfuse används.
- Det här alternativet har fördelen att det är mycket kostnadseffektivt eftersom inga virtuella datorer krävs för filsystemet, plus blobfuse-cachelagring på de virtuella datorerna undviker upprepade nedladdningar av samma filer för flera jobb och uppgifter. Dataflytt är också enkelt eftersom filerna bara är blobar och standard-API:er och verktyg, till exempel azcopy, kan användas för att kopiera filer mellan ett lokalt filsystem och Azure Storage.
- Filsystem eller filresurs:
- Beroende på vm-operativsystem och krav på prestanda/skalning inkluderar alternativen azure files, användning av en virtuell dator med anslutna diskar för NFS, användning av flera virtuella datorer med anslutna diskar för ett distribuerat filsystem som GlusterFS eller användning av ett erbjudande från tredje part.
- Avere Systems är nu en del av Microsoft och kommer att ha lösningar inom en snar framtid som är idealiska för storskalig rendering med höga prestanda. Med Avere-lösningen kan du skapa en Azure-baserad NFS- eller SMB-cache som fungerar tillsammans med bloblagring eller med lokala NAS-enheter.
- Med ett filsystem kan filer läsas eller skrivas direkt till filsystemet eller kopieras mellan filsystemet och de virtuella pooldatorerna.
- Ett delat filsystem gör att ett stort antal tillgångar som delas mellan projekt och jobb kan användas, med renderingsuppgifter som endast har åtkomst till vad som krävs.
Använda Azure Blob Storage
Ett bloblagringskonto eller ett generellt v2-lagringskonto ska användas. Dessa två lagringskontotyper kan konfigureras med betydligt högre gränser jämfört med ett allmänt v1-lagringskonto, enligt beskrivningen i det här blogginlägget. När de är konfigurerade ger de högre gränserna mycket bättre prestanda och skalbarhet, särskilt när det finns många virtuella pooldatorer som har åtkomst till lagringskontot.
Kopiera filer mellan klient- och bloblagring
Om du vill kopiera filer till och från Azure Storage kan du använda olika mekanismer, till exempel storage blob-API:et , Azure Storage Data Movement Library, kommandoradsverktyget azcopy för Windows eller Linux, Azure Storage Explorer och Azure Batch Explorer.
Om du till exempel använder azcopy kan alla tillgångar i en mapp överföras på följande sätt:
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
Om du bara vill kopiera ändrade filer kan parametern /XO användas:
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
Kopiera indatatillgångsfiler från bloblagring till virtuella datorer i Batch-poolen
Det finns ett par olika metoder för att kopiera filer med den bästa metoden som bestäms av storleken på jobbtillgångarna. Den enklaste metoden är att kopiera alla tillgångsfiler till de virtuella pooldatorerna för varje jobb:
- När det finns filer som är unika för ett jobb, men krävs för alla uppgifter i ett jobb, kan en jobbförberedelseaktivitet anges för att kopiera alla filer. Jobbförberedelseaktiviteten körs en gång när den första jobbaktiviteten körs på en virtuell dator men inte körs igen för efterföljande jobbaktiviteter.
- En jobbversionsaktivitet bör anges för att ta bort filerna per jobb när jobbet har slutförts. Detta förhindrar att den virtuella datordisken fylls i av alla jobbtillgångsfiler.
- När det finns flera jobb som använder samma tillgångar, med endast inkrementella ändringar av tillgångarna för varje jobb, kopieras fortfarande alla tillgångsfiler, även om endast en delmängd uppdaterades. Detta skulle vara ineffektivt när det finns många stora tillgångsfiler.
När tillgångsfiler återanvänds mellan jobb, med endast inkrementella ändringar mellan jobb, är en mer effektiv men något mer involverad metod att lagra tillgångar i den delade mappen på den virtuella datorn och synkronisera ändrade filer.
- Jobbförberedelseaktiviteten utför kopian med azcopy med parametern /XO till den delade mappen för den virtuella datorn som anges av AZ_BATCH_NODE_SHARED_DIR miljövariabeln. Detta kopierar endast ändrade filer till varje virtuell dator.
- Man måste tänka på storleken på alla tillgångar för att säkerställa att de får plats på den tillfälliga enheten för de virtuella pooldatorerna.
Azure Batch har inbyggt stöd för att kopiera filer mellan ett lagringskonto och virtuella Datorer i Batch-poolen. Aktivitetsresursfiler kopierar filer från lagring till virtuella pooldatorer och kan anges för jobbförberedelseaktiviteten. Tyvärr, när det finns hundratals filer är det möjligt att nå en gräns och uppgifter att misslyckas. När det finns ett stort antal tillgångar rekommenderar vi att du använder kommandoraden azcopy i jobbförberedelseaktiviteten, som kan använda jokertecken och inte har någon gräns.
Kopiera utdatafiler till bloblagring från virtuella Datorer i Batch-poolen
Utdatafiler kan användas för att kopiera filer från en virtuell pooldator till lagring. En eller flera filer kan kopieras från den virtuella datorn till ett angivet lagringskonto när uppgiften har slutförts. De renderade utdata bör kopieras, men det kan också vara önskvärt att lagra loggfiler.
Använda ett virtuellt blobfuse-filsystem för virtuella Linux-pooler
Blobfuse är en virtuell filsystemdrivrutin för Azure Blob Storage, som gör att du kan komma åt filer som lagras som blobar i ett lagringskonto via Linux-filsystemet.
Poolnoder kan montera filsystemet när det startas eller monteringen kan ske som en del av en jobbförberedelseaktivitet – en uppgift som bara körs när den första aktiviteten i ett jobb körs på en nod. Blobfuse kan konfigureras för att utnyttja både en ramdisk och de virtuella datorernas lokala SSD för cachelagring av filer, vilket ökar prestanda avsevärt om flera uppgifter på en nod kommer åt några av samma filer.
Exempelmallar är tillgängliga för att köra fristående V-Ray-återgivningar med hjälp av ett blobfuse-filsystem och kan användas som grund för mallar för andra program.
Åtkomst till filer
Jobbaktiviteter anger sökvägar för indatafiler och utdatafiler med hjälp av det monterade filsystemet.
Kopiera indatatillgångsfiler från bloblagring till virtuella datorer i Batch-poolen
Eftersom filer bara är blobar i Azure Storage kan standardblob-API:er, verktyg och UIs användas för att kopiera filer mellan ett lokalt filsystem och bloblagring. till exempel azcopy, Storage Explorer, Batch Explorer osv.
Använda Azure Files med virtuella Windows-datorer
Azure Files erbjuder fullständigt hanterade filresurser i molnet som är tillgängliga via SMB-protokollet. Azure Files baseras på Azure Blob Storage. Det är kostnadseffektivt och kan konfigureras med datareplikering till en annan region så globalt redundant. Skalningsmål bör granskas för att avgöra om Azure Files ska användas med tanke på prognospoolens storlek och antalet tillgångsfiler.
Det finns dokumentation som beskriver hur du monterar en Azure-filresurs.
Montera en Azure Files-resurs
Om du vill använda i Batch måste en monteringsåtgärd utföras varje gång en aktivitet körs eftersom det inte går att bevara anslutningen mellan aktiviteter. Det enklaste sättet att göra detta är att använda cmdkey för att spara autentiseringsuppgifter med hjälp av startaktiviteten i poolkonfigurationen och sedan montera resursen före varje aktivitet.
Exempel på användning av cmdkey i en poolmall (undantagen för användning i JSON-fil) – Observera att när du separerar cmdkey-anropet från net use-anropet måste användarkontexten för startaktiviteten vara densamma som den som används för att köra aktiviteterna:
"startTask": {
"commandLine": "cmdkey /add:storageaccountname.file.core.windows.net
/user:AZURE\\markscuscusbatch /pass:storage_account_key",
"userIdentity":{
"autoUser": {
"elevationLevel": "nonadmin",
"scope": "pool"
}
}
Exempel på kommandorad för jobbaktivitet:
"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\""
Åtkomst till filer
Jobbuppgifter anger sökvägar för indatafiler och utdatafiler med hjälp av det monterade filsystemet, antingen med hjälp av en mappad enhet eller en UNC-sökväg.
Kopiera indatatillgångsfiler från bloblagring till virtuella datorer i Batch-poolen
Azure Files stöds av alla huvud-API:er och verktyg som har Stöd för Azure Storage. t.ex. azcopy, Azure CLI, Storage Explorer, Azure PowerShell, Batch Explorer osv.
Azure File Sync är tillgängligt för att automatiskt synkronisera filer mellan ett lokalt filsystem och en Azure-filresurs.
Nästa steg
Mer information om lagringsalternativen finns i den djupgående dokumentationen: