Opties voor opslag en gegevensverplaatsing voor het weergeven van asset- en uitvoerbestanden
Er zijn meerdere opties voor het beschikbaar maken van de scène- en assetbestanden voor de renderingtoepassingen op de pool-VM's:
- Azure Blob Storage:
- Scène- en assetbestanden worden vanuit een lokaal bestandssysteem geüpload naar blobopslag. Wanneer de toepassing wordt uitgevoerd door een taak, worden de vereiste bestanden gekopieerd van blobopslag naar de virtuele machine, zodat ze kunnen worden geopend door de renderingtoepassing. De uitvoerbestanden worden door de renderingtoepassing naar de VM-schijf geschreven en vervolgens gekopieerd naar blobopslag. Indien nodig kunnen de uitvoerbestanden worden gedownload van blobopslag naar een lokaal bestandssysteem.
- Azure Blob Storage is een eenvoudige en rendabele optie voor kleinere projecten. Aangezien alle assetbestanden vereist zijn op elke pool-VM, moet er zo efficiënt mogelijk worden gezorgd zodra het aantal en de grootte van assetbestanden groter wordt om ervoor te zorgen dat de bestandsoverdrachten zo efficiënt mogelijk zijn.
- Azure Storage als bestandssysteem met behulp van blobfuse:
- Voor Virtuele Linux-machines kan een opslagaccount worden weergegeven en gebruikt als bestandssysteem wanneer het stuurprogramma voor het virtuele bestandssysteem van blobfuse wordt gebruikt.
- Deze optie heeft het voordeel dat het zeer rendabel is, omdat er geen VM's nodig zijn voor het bestandssysteem, plus blobfuse caching op de VM's voorkomen dat herhaalde downloads van dezelfde bestanden voor meerdere taken en taken worden vermeden. Gegevensverplaatsing is ook eenvoudig omdat de bestanden gewoon blobs en standaard-API's en hulpprogramma's zijn, zoals azcopy, kunnen worden gebruikt om bestanden te kopiëren tussen een on-premises bestandssysteem en Azure Storage.
- Bestandssysteem of bestandsshare:
- Afhankelijk van het VM-besturingssysteem en de vereisten voor prestaties/schaalaanpassing, zijn opties Azure Files, met behulp van een VIRTUELE machine met gekoppelde schijven voor NFS, met behulp van meerdere VM's met gekoppelde schijven voor een gedistribueerd bestandssysteem, zoals GlusterFS, of met behulp van een aanbieding van derden.
- Avere Systems maakt nu deel uit van Microsoft en heeft in de nabije toekomst oplossingen die ideaal zijn voor grootschalige, krachtige rendering. Met de Avere-oplossing kan een op Azure gebaseerde NFS- of SMB-cache worden gemaakt die in combinatie met blobopslag of met on-premises NAS-apparaten werkt.
- Met een bestandssysteem kunnen bestanden rechtstreeks naar het bestandssysteem worden gelezen of geschreven of kunnen ze worden gekopieerd tussen het bestandssysteem en de pool-VM's.
- Met een gedeeld bestandssysteem kan een groot aantal assets die worden gedeeld tussen projecten en taken worden gebruikt, waarbij alleen renderingtaken toegang hebben tot wat vereist is.
Azure Blob Storage gebruiken
Er moet een blob-opslagaccount of een v2-opslagaccount voor algemeen gebruik worden gebruikt. Deze twee typen opslagaccounts kunnen worden geconfigureerd met aanzienlijk hogere limieten in vergelijking met een v1-opslagaccount voor algemeen gebruik, zoals beschreven in dit blogbericht. Wanneer deze optie is geconfigureerd, zorgen de hogere limieten voor veel betere prestaties en schaalbaarheid, met name wanneer er veel pool-VM's zijn die toegang hebben tot het opslagaccount.
Bestanden kopiëren tussen client- en blobopslag
Als u bestanden van en naar Azure Storage wilt kopiëren, kunnen verschillende mechanismen worden gebruikt, waaronder de opslagblob-API, de Azure Storage Data Movement Library, het azcopy-opdrachtregelprogramma voor Windows of Linux, Azure Storage Explorer en Azure Batch Explorer.
Als u bijvoorbeeld azcopy gebruikt, kunnen alle assets in een map als volgt worden overgedragen:
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
Als u alleen gewijzigde bestanden wilt kopiëren, kan de parameter /XO worden gebruikt:
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
Invoerassetbestanden kopiëren van blobopslag naar vm's van Batch-pool
Er zijn een aantal verschillende methoden om bestanden te kopiëren met de beste benadering die wordt bepaald door de grootte van de taakassets. De eenvoudigste methode is het kopiëren van alle assetbestanden naar de pool-VM's voor elke taak:
- Wanneer er bestanden zijn die uniek zijn voor een taak, maar vereist zijn voor alle taken van een taak, kan een jobvoorbereidingstaak worden opgegeven om alle bestanden te kopiëren. De taakvoorbereidingstaak wordt eenmaal uitgevoerd wanneer de eerste taaktaak wordt uitgevoerd op een virtuele machine, maar niet opnieuw wordt uitgevoerd voor volgende taaktaken.
- Er moet een taak voor taakrelease worden opgegeven om de bestanden per taak te verwijderen zodra de taak is voltooid. Hierdoor voorkomt u dat de VM-schijf wordt ingevuld door alle taakassetbestanden.
- Wanneer er meerdere taken zijn die gebruikmaken van dezelfde assets, waarbij alleen incrementele wijzigingen in de assets voor elke taak worden aangebracht, worden alle assetbestanden nog steeds gekopieerd, zelfs als er slechts een subset is bijgewerkt. Dit zou inefficiënt zijn wanneer er veel grote assetbestanden zijn.
Wanneer assetbestanden opnieuw worden gebruikt tussen taken, met alleen incrementele wijzigingen tussen taken, is een efficiëntere, maar iets meer betrokken benadering het opslaan van assets in de gedeelde map op de virtuele machine en het synchroniseren van gewijzigde bestanden.
- De taakvoorbereidingstaak voert de kopie uit met behulp van azcopy met de parameter /XO naar de gedeelde vm-map die is opgegeven door AZ_BATCH_NODE_SHARED_DIR omgevingsvariabele. Hiermee worden alleen gewijzigde bestanden naar elke VIRTUELE machine gekopieerd.
- Er moet worden nagedacht over de grootte van alle assets om ervoor te zorgen dat ze passen op de tijdelijke schijf van de pool-VM's.
Azure Batch biedt ingebouwde ondersteuning voor het kopiëren van bestanden tussen een opslagaccount en vm's van batchpools. Taakresourcebestanden kopiëren bestanden van opslag naar pool-VM's en kunnen worden opgegeven voor de taakvoorbereidingstaak. Als er honderden bestanden zijn, is het helaas mogelijk om een limiet te bereiken en taken te mislukken. Wanneer er grote aantallen assets zijn, is het raadzaam om de azcopy-opdrachtregel in de taakvoorbereidingstaak te gebruiken, die jokertekens kan gebruiken en geen limiet heeft.
Uitvoerbestanden kopiëren naar blobopslag vanuit VM's van Batch-pool
Uitvoerbestanden kunnen worden gebruikt om bestanden van een pool-VM naar opslag te kopiëren. Een of meer bestanden kunnen worden gekopieerd van de virtuele machine naar een opgegeven opslagaccount zodra de taak is voltooid. De gerenderde uitvoer moet worden gekopieerd, maar het kan ook wenselijk zijn om logboekbestanden op te slaan.
Een blobfuse virtueel bestandssysteem gebruiken voor Linux-VM-pools
Blobfuse is een stuurprogramma voor een virtueel bestandssysteem voor Azure Blob Storage, waarmee u toegang hebt tot bestanden die zijn opgeslagen als blobs in een opslagaccount via het Linux-bestandssysteem.
Poolknooppunten kunnen het bestandssysteem koppelen wanneer het is gestart of de koppeling kan plaatsvinden als onderdeel van een taakvoorbereidingstaak: een taak die alleen wordt uitgevoerd wanneer de eerste taak in een taak op een knooppunt wordt uitgevoerd. Blobfuse kan worden geconfigureerd om zowel een ramdisk als de lokale SSD van de VIRTUELE machines te gebruiken voor het opslaan van bestanden, wat de prestaties aanzienlijk verhoogt als meerdere taken op een knooppunt toegang hebben tot een aantal van dezelfde bestanden.
Voorbeeldsjablonen zijn beschikbaar voor het uitvoeren van zelfstandige V-Ray-renders met behulp van een blobfuse-bestandssysteem en kunnen worden gebruikt als basis voor sjablonen voor andere toepassingen.
Toegang tot bestanden
Taaktaken geven paden op voor invoerbestanden en uitvoerbestanden met behulp van het gekoppelde bestandssysteem.
Invoerassetbestanden kopiëren van blobopslag naar vm's van Batch-pool
Omdat bestanden gewoon blobs in Azure Storage zijn, kunnen standaard blob-API's, hulpprogramma's en UIs worden gebruikt om bestanden te kopiëren tussen een on-premises bestandssysteem en blobopslag; bijvoorbeeld azcopy, Storage Explorer, Batch Explorer, enzovoort.
Azure Files gebruiken met Windows-VM's
Azure Files biedt volledig beheerde bestandsshares in de cloud die toegankelijk zijn via het SMB-protocol. Azure Files is gebaseerd op Azure Blob Storage; het is kostenefficiënt en kan worden geconfigureerd met gegevensreplicatie naar een andere regio, dus wereldwijd redundant. Schaaldoelen moeten worden gecontroleerd om te bepalen of Azure Files moet worden gebruikt op basis van de grootte van de prognosegroep en het aantal assetbestanden.
Er is documentatie over het koppelen van een Azure-bestandsshare.
Een Azure Files-share koppelen
Als u in Batch wilt gebruiken, moet een koppelingsbewerking worden uitgevoerd telkens wanneer een taak wordt uitgevoerd, omdat het niet mogelijk is om de verbinding tussen taken te behouden. De eenvoudigste manier om dit te doen, is door cmdkey te gebruiken om referenties te behouden met behulp van de begintaak in de poolconfiguratie en vervolgens de share te koppelen vóór elke taak.
Voorbeeld van het gebruik van cmdkey in een poolsjabloon (escaped voor gebruik in JSON-bestand): houd er rekening mee dat bij het scheiden van de cmdkey-aanroep van de net use-aanroep de gebruikerscontext voor de begintaak hetzelfde moet zijn als die voor het uitvoeren van de taken:
"startTask": {
"commandLine": "cmdkey /add:storageaccountname.file.core.windows.net
/user:AZURE\\markscuscusbatch /pass:storage_account_key",
"userIdentity":{
"autoUser": {
"elevationLevel": "nonadmin",
"scope": "pool"
}
}
Voorbeeld van taaktaakopdrachtregel:
"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\""
Toegang tot bestanden
Taaktaken geven paden op voor invoerbestanden en uitvoerbestanden met behulp van het gekoppelde bestandssysteem, hetzij met behulp van een toegewezen station of een UNC-pad.
Invoerassetbestanden kopiëren van blobopslag naar vm's van Batch-pool
Azure Files wordt ondersteund door alle belangrijkste API's en hulpprogramma's die ondersteuning bieden voor Azure Storage; bijvoorbeeld azcopy, Azure CLI, Storage Explorer, Azure PowerShell, Batch Explorer, enzovoort.
Azure File Sync is beschikbaar om bestanden automatisch te synchroniseren tussen een on-premises bestandssysteem en een Azure-bestandsshare.
Volgende stappen
Zie de uitgebreide documentatie voor meer informatie over de opslagopties: