有关临时 OS 磁盘的常见问题解答

问:临时 OS 磁盘的大小是多少?

答:我们支持平台、共享映像库和自定义映像。 临时 OS 磁盘的大小取决于虚拟机 (VM) 上可用的本地存储(缓存磁盘或临时磁盘)。 临时 OS 磁盘的最大大小可以为 2 TiB。 对 OS 磁盘的所有写入都是在虚拟机所在同一节点上的本地操作。

问:可以重设临时 OS 磁盘的大小吗?

答:否。预配临时 OS 磁盘以后,无法重设其大小。

问:创建 VM 后能否修改临时 OS 磁盘位置?

答:否,预配临时 OS 磁盘后,无法更改 OS 磁盘放置。 但是,通过更新所选 OS 磁盘位置,可以通过 ARM 模板部署/PowerShell/CLI 重新创建 VM。 这将导致在删除 OS 磁盘上数据的情况下重新创建虚拟机,然后重新预配 OS。

问:如果映像大小等于所选 VM 大小的临时磁盘大小,是否会创建任何临时磁盘?

答:否。在这种情况下,不会创建临时磁盘。

问:低优先级 VM 和 Spot VM 是否支持临时 OS 磁盘?

A:是的。 临时 VM 未提供“停止-解除分配”选项,因为用户需要删除它们而不是解除其分配。

问:是否可以将托管磁盘附加到临时 VM?

A:是的,可以将托管数据磁盘附加到使用临时 OS 磁盘的 VM。

问:临时 OS 磁盘是否支持所有 VM 大小?

答:否,支持大多数高级存储 VM 大小(DS、ES、FS、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

问:是否可以对现有的 VM 和规模集应用临时 OS 磁盘?

答:否。只能在 VM 和规模集创建期间使用临时 OS 磁盘。

问:是否可以在规模集中混合使用临时 OS 磁盘和常规 OS 磁盘?

答:否。不能在同一规模集中混合使用临时 OS 磁盘实例和持久 OS 磁盘实例。

问:是否可以通过 PowerShell 或 CLI 创建临时 OS 磁盘?

答:是的,可以使用 REST、模板、PowerShell 和 CLI 创建带有临时 OS 磁盘的 VM。