針對 Azure Batch 集區使用暫時性 OS 磁碟節點

某些 Azure 虛擬機器 (VM) 系列支援使用暫時性 OS 磁碟,其會在節點虛擬機器本機儲存體上建立 OS 磁碟。 預設 Batch 集區組態會針對節點 OS 磁碟使用 Azure 受控磁碟,其中受控磁碟就像實體磁碟,但經過虛擬化並保存在遠端 Azure 儲存體中。

針對 Batch 工作負載,使用暫時性 OS 磁碟的主要優點是降低與集區相關聯的成本、有望加快節點啟動時間,以及因為 OS 磁碟效能更好而改善應用程式的效能。 選擇是否應該將暫時性 OS 磁碟用於工作負載時,請考慮下列影響:

  • 暫時性 OS 磁碟的讀取/寫入延遲較低,這可能會提升應用程式效能。
  • 暫時性 OS 磁碟沒有儲存體成本,而每個受控 OS 磁碟都有成本。
  • Batch 支援的情況下,相較於受控磁碟,暫時性磁碟計算節點的重新安裝映像的速度較快。
  • 使用暫時性 OS 磁碟時,節點啟動時間可能會稍微加快。
  • 暫時性 OS 磁碟不是高度持久可用,如出於任何原因而移除 VM 時,OS 磁碟就會遺失。 由於 Batch 工作負載原本是無狀態的,而且通常不會依賴所保存 OS 磁碟的變更,因此暫時性 OS 磁碟適用於大部分的 Batch 工作負載。
  • 所有 Azure VM 系列目前不支援暫時性 OS 磁碟。 如果 VM 大小不支援暫時性 OS 磁碟,則必須使用受控 OS 磁碟。

注意

暫時性 OS 磁碟設定僅適用於 [virtualMachineConfiguration] 集區,而且 [cloudServiceConfiguration] 集區不會提供支援。 建議針對您的 Batch 集區使用 [virtualMachineConfiguration],因為 [cloudServiceConfiguration] 集區不支援所有功能,而且並未規劃任何新功能。 您無法在 2024 年 2 月 29 日之後建立新的 [cloudServiceConfiguration] 集區,或將新的節點新增至現有的集區。 如需詳細資訊,請參閱將 Batch 集區組態從雲端服務移轉至虛擬機器

VM 系列支援

若要判斷 VM 系列是否支援暫時性 OS 磁碟,請檢查每個 VM 執行個體的文件。 例如,Ddv4 和 Ddsv4 系列 支援暫時性 OS 磁碟。

或者,您也可以透過程式設計方式查詢,來查看 [EphemeralOSDiskSupported] 的功能。 暫時性 OS 磁碟常見問題提供了查詢這項功能的範例 PowerShell Cmdlet。

建立使用暫時性 OS 磁碟的集區

預設不會設定 EphemeralOSDiskSettings 屬性。 您必須設定這個屬性,才能設定暫時性 OS 磁碟在集區節點上使用。

提示

因為服務受控收回原則,暫時性 OS 磁碟無法與 Batch 集區中的現成 VM 搭配使用。

下列範例示範如何建立 Batch 集區,其中節點使用暫時性 OS 磁碟而非受控磁碟。

程式碼範例

此程式碼片段示範如何使用 Azure Batch Python SDK 建立內含暫時性 OS 磁碟的集區,以及使用暫存磁碟 (快取) 建立內含暫時性 OS 磁碟的集區。

virtual_machine_configuration=batch.models.VirtualMachineConfiguration(
    image_reference=image_ref_to_use,
    node_agent_sku_id=node_sku_id,
    os_disk=batch.models.OSDisk(
        ephemeral_os_disk_settings=batch.models.DiffDiskSettings(
            placement=batch.models.DiffDiskPlacement.cache_disk
        )
    )
)

這是相同的程式碼片段,但用於使用 Azure Batch .NET SDK 和 C# 建立具有暫時性 OS 磁碟的集區。

VirtualMachineConfiguration virtualMachineConfiguration = new VirtualMachineConfiguration(
        imageReference: imageReference,
        nodeAgentSkuId: nodeAgentSku
        );
virtualMachineConfiguration.OSDisk = new OSDisk();
virtualMachineConfiguration.OSDisk.EphemeralOSDiskSettings = new DiffDiskSettings();
virtualMachineConfiguration.OSDisk.EphemeralOSDiskSettings.Placement = DiffDiskPlacement.CacheDisk;

下一步