共用方式為


轉譯資產和輸出檔案的儲存體和資料移動選項

有多個選項可讓場景和資產檔案供集區 VM 上的轉譯應用程式使用:

  • Azure Blob 儲存體
    • 場景和資產檔案可從本機檔案系統上傳至 Blob 儲存體。 有工作執行應用程式時,所需的檔案會從 Blob 儲存體複製到 VM 上,使其可供轉譯應用程式存取。 輸出檔案會由轉譯應用程式寫入至 VM 磁碟,然後複製到 Blob 儲存體。 如有必要,可將輸出檔案從 Blob 儲存體下載到本機檔案系統。
    • Azure Blob 儲存體對較小的專案而言是簡單且符合成本效益的選項。 如果每個集區 VM 都需要所有的資產檔案,則在資產檔案的大小與數量增加時,則務必留意以確保檔案傳輸盡可能維持高效率。
  • 使用 blobfuse 將 Azure 儲存體作為檔案系統:
    • 針對 Linux VM,在使用 blobfuse 虛擬檔案系統驅動程式時,儲存體帳戶可公開並作為檔案系統。
    • 此選項的優點是符合成本效益,因為文件系統不需要任何 VM,而且 VM 上的 Blobfuse 快取可避免針對多個作業和工作重複下載相同的檔案。 資料移動也非常簡單,因為檔案都只是 Blob,並且可使用標準 API 和工具 (例如 azcopy) 在內部部署檔案系統與 Azure 儲存體之間檔案複製。
  • 檔案系統或檔案共用:
    • 根據 VM 作業系統和效能/調整需求,選項包括 Azure 檔案服務、將 VM 搭配連接的磁碟用於 NFS、將多個 VM 搭配連接的磁碟用於分散式檔案系統 (例如 GlusterFS),或使用第三方供應項目。
    • Avere Systems 現在是Microsoft的一部分,很快就會有適合大規模高效能轉譯的解決方案。 Avere 解決方案可建立 Azure 型 NFS 或 SMB 快取,以搭配 Blob 記憶體或內部部署 NAS 裝置使用。
    • 透過檔案系統,檔案將可直接讀取或寫入至檔案系統,或是在檔案系統與集區 VM 之間複製。
    • 共用的檔案系統可讓您在要使用的專案和工作之間共用大量資產,且轉譯工作只會存取所需的項目。

使用 Azure Blob 儲存體

您應使用 Blob 儲存體帳戶或一般用途 v2 儲存體帳戶。 相較於一般用途 v1 儲存體帳戶,這兩種記憶體帳戶類型可以設定較高的限制,如此部落格文章所述。 設定時,較高的限制可提升效能和延展性,尤其是在有許多集區 VM 存取記憶體帳戶時。

在用戶端與 Blob 儲存體之間複製檔案

若要將檔案複製到 Azure 儲存體或從中複製檔案,有多種機制可供使用,包括儲存體 Blob API、Azure 儲存體資料移動程式庫、適用於 WindowsLinux 的 azcopy 命令列工具、Azure 儲存體總管Azure Batch Explorer

以使用 azcopy 為例,資料夾中的所有資產都可傳輸如下:

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

若只要複製修改過的檔案,您可以使用 /XO 參數:

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

將輸入資產檔案從 Blob 儲存體複製到 Batch 集區 VM

有幾種不同的方法可用來複製檔案,最理想的方法取決於作業資產的大小。 最簡單的方法,是將每個作業的所有資產檔案複製到集區 VM:

  • 如果某些檔案專屬於某項作業,但同時也是該作業所有工作的必要檔案,則可以指定作業準備工作以複製所有檔案。 作業準備工作會在對 VM 執行第一個作業工作時執行,但對於後續的作業工作則不會再執行。
  • 當作業發行工作需要指定,以在作業完成之後移除個別作業檔案時,這會避免所有作業資產檔案填滿 VM 磁碟。
  • 如果有多個作業使用相同的資產,且僅對每個作業的資產進行累加式變更,則仍會複製所有資產檔案,即使只有子集更新亦然。 有許多大型資產檔案時,此方式將效率不彰。

如果在作業之間重複使用資產檔案,且僅在作業之間進行累加式變更,則將資產儲存在 VM 上的共用資料夾中,並同步變更的檔案,會是較有效率的方法,但也稍加複雜。

  • 作業準備工作會使用 azcopy 與 /XO 參數對 AZ_BATCH_NODE_SHARED_DIR 環境變數所指定的 VM 共用資料夾執行複製。 這只會將已變更的檔案複製到每個 VM。
  • 考慮必須提供給所有資產的大小,以確保它們符合集區 VM 的暫存磁碟驅動器。

Azure Batch 具有在儲存體帳戶與 Batch 集區 VM 之間複製檔案的內建支援。 工作資源檔會將檔案從儲存體複製到集區 VM,並且可指定於作業準備工作。 不幸的是,當有數百個檔案時,可能會達到限制並工作失敗。 當有大量的資產時,建議在作業準備工作中使用 azcopy 命令行,這可以使用通配符且沒有限制。

將輸出檔案從 Batch 集區 VM 複製到 Blob 儲存體

輸出檔案可用來將檔案從集區 VM 複製到儲存體。 在工作完成後,可以將一或多個檔案從 VM 複製到指定的儲存體帳戶。 此時應複製已轉譯的輸出,但可能也應儲存記錄檔。

將 blobfuse 虛擬檔案系統用於 Linux VM 集區

Blobfuse 是 Azure Blob 儲存體的虛擬檔案系統驅動程式,可讓您透過 Linux 檔案系統存取在儲存體帳戶中儲存為 Blob 的檔案。

集區節點可在啟動時掛接檔案系統,或在作業準備工作進行時執行掛接 – 該準備工作只會在作業中的第一個工作執行於節點時執行。 Blobfuse 可設定為同時使用 ramdisk 和 VM 本機 SSD 來快取檔案,這在節點上的多個工作存取某些相同的檔案時,將可大幅提升效能。

範例範本可供使用,以透過 blobfuse 檔案系統執行獨立 V-Ray 轉譯器,並且可作為其他應用程式範本的基礎。

存取檔案

作業工作會使用已掛接的檔案系統指定輸入檔案和輸出檔案的路徑。

將輸入資產檔案從 Blob 儲存體複製到 Batch 集區 VM

如果檔案只是 Azure 儲存體中的 Blob,則可以使用標準 Blob API、工具和 UI 在內部部署檔案系統與 Blob 儲存體之間複製檔案;例如 azcopy、儲存體總管、Batch Explorer 等。

搭配使用 Azure 檔案服務與 Windows VM

Azure 檔案服務可提供在雲端中完全受控、並且可透過 SMB 通訊協定來存取的檔案共用。 Azure 檔案儲存體 是以 Azure Blob 儲存體 為基礎;它是符合成本效益的,而且可以設定數據復寫至另一個區域,以便全域備援。 您應檢閱調整目標,以根據指定的預測集區大小和資產檔案數目,判斷是否應使用 Azure 檔案服務。

有文件涵蓋如何掛接 Azure 檔案共用。

掛接 Azure 檔案共用

若要在 Batch 中使用,每次執行中工作時,都必須執行掛接作業,因為無法保存工作之間的連線。 若要這樣做,最簡單的方式是透過 cmdkey 使用集區組態中的啟動工作來保存認證,然後在每個工作之前掛接共用。

集區範本中的 cmdkey 使用範例 (在 JSON 檔案中使用時須逸出) – 請注意,在區隔 cmdkey 呼叫與 net use 呼叫時,啟動工作的使用者內容必須與用來執行工作的內容相同:

"startTask": {
  "commandLine": "cmdkey /add:storageaccountname.file.core.windows.net
    /user:AZURE\\markscuscusbatch /pass:storage_account_key",
  "userIdentity":{
    "autoUser": {
      "elevationLevel": "nonadmin",
      "scope": "pool"
    }
}

範例作業工作命令列:

"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\""

存取檔案

作業工作會使用已掛接的檔案系統指定輸入檔案和輸出檔案的路徑 (使用對應磁碟機或 UNC 路徑)。

將輸入資產檔案從 Blob 儲存體複製到 Batch 集區 VM

所有具有 Azure 儲存體支援的主要 API 和工具均支援 Azure 檔案服務,例如 azcopy、Azure CLI、儲存體總管、Azure PowerShell、Batch Explorer 等。

Azure 檔案同步可用來在內部部署檔案系統與 Azure 檔案共用之間自動同步處理檔案。

下一步

如需記憶體選項的詳細資訊,請參閱深入檔: