分享方式:


暫時性 OS 磁碟相關的常見問題集

問:暫時OS磁碟的大小為何?

答:我們支援平臺、共用映像庫 和自定義映像。 暫時 OS 磁碟的大小取決於虛擬機上可用的本機記憶體(快取磁碟、暫存磁碟或 NVMe 磁碟)。 暫時 OS 磁碟的大小上限可以是 2 TiB。 所有對 OS 磁碟的寫入都是與虛擬機位於相同節點上的本機。

問:暫時性 OS 磁碟可以調整大小嗎?

答:否,布建暫時OS磁碟之後,就無法調整OS磁碟的大小。

問:建立 VM 之後,是否可以修改暫時性 OS 磁碟放置?

答:否,布建暫時OS磁碟之後,就無法變更OS磁碟位置。 但可以透過 ARM 範本部署/PowerShell/CLI,利用更新選擇的 OS 磁碟放置來重新建立 VM。 這會導致 VM 重新建立已刪除 OS 磁碟上的資料,並重新佈建 OS。

問:如果映像大小等於所選 VM 大小的暫存磁碟大小,是否會建立任何暫存磁碟?

答:在此情況下,不會建立暫存磁碟。

問:NVMe 磁碟放置與暫存磁碟位置如何不同?

答:Nvme 磁碟放置會利用整個 Nvme 磁碟,而暫存磁碟放置會利用等於 OS 磁碟大小的空間。 例如,如果您在Standard_D2ads_v5上使用標準 Ubuntu 映射與暫存磁碟位置,您會取得 30 GiB 的 OS 磁碟大小和 45 GiB 的暫存磁碟大小。 如果您在Standard_D2ads_v6上使用相同的標準 Ubuntu 映像與 NVMe 磁碟位置,則您會取得 30 GiB 且沒有 NVMe 磁碟的 OS 磁碟大小。

問:NVMe 磁碟放置如何適用於具有多個 NVMe 磁碟的 VM?

答:NVMe 磁碟放置會利用OS磁碟所需的最小磁碟數目。 例如,Standard_D16ads_v6兩個磁碟各有 440 GiB。 如果您建立大小小於 440 GiB 的暫時 OS 磁碟,則只會使用一個磁碟來建立暫時 OS 磁碟。 第二個 NVMe 磁碟會以原始本機磁碟的形式傳回您。

問:低優先順序 VM 和現成 VM 上是否支援暫時性 OS 磁碟?

A: 可以。 暫時 VM 沒有 [停止解除分配] 的選項,而是使用者需要刪除,而不是解除分配它們。

問:我可以將受控磁碟連結至暫時性 VM 嗎?

答:是的,您可以將受控資料磁碟連結至使用暫時性 OS 磁碟的 VM。

問:暫時性 OS 磁碟是否將支援所有 VM 大小?

答:不會,支援多數進階儲存體 VM 大小 (DS、ES、FS、GS、M 等)。 若要知道特定 VM 大小是否支援 OS 映射大小的暫時 OS 磁碟,您可以使用下列腳本。 它會採用OS映像大小和位置作為輸入,並提供支援的VM和對應的放置清單。 如果快取、暫存和 NVMe 磁碟放置標示為不支援,則暫時 OS 磁碟無法用於指定的 OS 映射大小。

[CmdletBinding()]
param([Parameter(Mandatory=$true)]
      [ValidateNotNullOrEmpty()]
      [string]$Location,
      [Parameter(Mandatory=$true)]
      [long]$OSImageSizeInGB
      )
 
Function HasSupportEphemeralOSDisk([object[]] $capability)
{
    return $capability | where { $_.Name -eq "EphemeralOSDiskSupported" -and $_.Value -eq "True"}
}
 
Function Get-MaxTempDiskAndCacheSize([object[]] $capabilities)
{
    $MaxResourceVolumeGB = 0;
    $CachedDiskGB = 0;
    $NvmeDiskGB = 0;
 
    foreach($capability in $capabilities)
    {
        if ($capability.Name -eq "MaxResourceVolumeMB")
        { $MaxResourceVolumeGB = [int]($capability.Value / 1024) }
 
        if ($capability.Name -eq "CachedDiskBytes")
        { $CachedDiskGB = [int]($capability.Value / (1024 * 1024 * 1024)) }

         if ($capability.Name -eq "NvmeDiskSizeInMiB")
        { $NvmeDiskGB = [int]($capability.Value / (1024)) }

        if ($capability.Name -eq "SupportedEphemeralOSDiskPlacements")
        { $NvmeSupported = [bool]($capability.Value -contains "NvmeDisk") }
    
    }
    
    if (!$NvmeSupported)
    { $NvmeDiskGB = 0; }
    return ($MaxResourceVolumeGB, $CachedDiskGB, $NvmeDiskGB)
}
 
Function Get-EphemeralSupportedVMSku
{
    [CmdletBinding()]
    Param
    (
        [Parameter(Mandatory=$true)]
        [long]$OSImageSizeInGB,
        [Parameter(Mandatory=$true)]
        [string]$Location
    )
 
    $VmSkus = Get-AzComputeResourceSku $Location | Where-Object { $_.ResourceType -eq "virtualMachines" -and (HasSupportEphemeralOSDisk $_.Capabilities) -ne $null }
 
    $Response = @()
    foreach ($sku in $VmSkus)
    {
        ($MaxResourceVolumeGB, $CachedDiskGB, $NvmeDiskGB) = Get-MaxTempDiskAndCacheSize $sku.Capabilities
 
        $Response += New-Object PSObject -Property @{
            ResourceSKU = $sku.Size
            NvmeDiskPlacement = @{ $true = "NOT SUPPORTED"; $false = "SUPPORTED"}[$NvmeDiskGB -lt $OSImageSizeInGB]
            TempDiskPlacement = @{ $true = "NOT SUPPORTED"; $false = "SUPPORTED"}[$MaxResourceVolumeGB -lt $OSImageSizeInGB]
            CacheDiskPlacement = @{ $true = "NOT SUPPORTED"; $false = "SUPPORTED"}[$CachedDiskGB -lt $OSImageSizeInGB]
         };
    }
 
    return $Response
}
 
Get-EphemeralSupportedVMSku -OSImageSizeInGB $OSImageSizeInGB -Location $Location | Format-Table

問:暫時性 OS 磁碟是否可以套用至現有的 VM 和擴展集?

答:不行,暫時性 OS 磁碟只能在 VM 和擴展集建立期間使用。

問:您可以將擴展集中的暫時和一般 OS 磁碟混合使用嗎?

答:否,您無法在相同擴展集內混合使用暫時和持續性 OS 磁碟執行個體。

問:可以使用 PowerShell 或 CLI 建立暫時性 OS 磁碟嗎?

答:是的,您可以使用 REST、範本、PowerShell 和 CLI 建立具有暫時性 OS 磁碟的 VM。