如何为 Azure VM 部署临时 OS 磁盘

适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集 ✔️ 统一规模集

本文演示如何通过门户、ARM 模板部署、CLI 和 PowerShell 创建包含临时 OS 磁盘的虚拟机或虚拟机规模集。

门户

在 Azure 门户中,可以通过打开“磁盘”选项卡的“高级”部分,在部署虚拟机或虚拟机规模集时选择使用临时磁盘。要选择临时 OS 磁盘的位置,请选择“OS 缓存位置”或“临时磁盘位置” 。

Screenshot showing the radio button for choosing to use an ephemeral OS disk

如果使用临时磁盘或 OS 缓存放置或临时磁盘放置的选项呈灰色显示,则你选择的 VM 大小可能没有大于 OS 映像的缓存/临时大小或不支持高级存储。 返回到“基本信息”页,尝试选择另一 VM 大小。

规模集模板部署

创建一个使用临时 OS 磁盘的规模集时,其过程很简单,就是将 diffDiskSettings 属性添加到模板中的 Microsoft.Compute/virtualMachineScaleSets/virtualMachineProfile 资源类型。 另外,对于临时 OS 磁盘,必须将缓存策略设置为 ReadOnly。 对于 OS 缓存磁盘放置,可以将放置更改为 CacheDisk

{
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  "name": "myScaleSet",
  "location": "China North 2",
  "apiVersion": "2019-12-01",
  "sku": {
    "name": "Standard_DS2_v2",
    "capacity": "2"
  },
  "properties": {
    "upgradePolicy": {
      "mode": "Automatic"
    },
    "virtualMachineProfile": {
       "storageProfile": {
        "osDisk": {
          "diffDiskSettings": {
            "option": "Local" ,
            "placement": "ResourceDisk"
          },
          "caching": "ReadOnly",
          "createOption": "FromImage"
        },
        "imageReference":  {
          "publisher": "publisherName",
          "offer": "offerName",
          "sku": "skuName",
          "version": "imageVersion"
        }
      },
      "osProfile": {
        "computerNamePrefix": "myvmss",
        "adminUsername": "azureuser",
        "adminPassword": "P@ssw0rd!"
      }
    }
  }
}

注意

相应地替换所有其他值。

VM 模板部署

可以通过模板部署使用临时 OS 磁盘的 VM。 创建使用临时 OS 磁盘的 VM 的过程是将 diffDiskSettings 属性添加到模板中的 Microsoft.Compute/virtualMachines 资源类型。 另外,对于临时 OS 磁盘,必须将缓存策略设置为 ReadOnly。 对于 OS 缓存磁盘放置,放置选项可以更改为 CacheDisk

{
  "type": "Microsoft.Compute/virtualMachines",
  "name": "myVirtualMachine",
  "location": "China North 2",
  "apiVersion": "2019-12-01",
  "properties": {
       "storageProfile": {
            "osDisk": {
              "diffDiskSettings": {
                "option": "Local" ,
                "placement": "ResourceDisk"
              },
              "caching": "ReadOnly",
              "createOption": "FromImage"
            },
            "imageReference": {
                "publisher": "MicrosoftWindowsServer",
                "offer": "WindowsServer",
                "sku": "2016-Datacenter-smalldisk",
                "version": "latest"
            },
            "hardwareProfile": {
                 "vmSize": "Standard_DS2_v2"
             }
      },
      "osProfile": {
        "computerNamePrefix": "myvirtualmachine",
        "adminUsername": "azureuser",
        "adminPassword": "P@ssw0rd!"
      }
    }
 }

CLI

若要将临时磁盘用于 CLI VM 部署,请将 az vm create 中的 --ephemeral-os-disk 参数设置为 true,将 --ephemeral-os-disk-placement 参数设置为 ResourceDisk(对于临时磁盘放置)或 CacheDisk(对于缓存磁盘放置),并将 --os-disk-caching 参数设置为 ReadOnly

az vm create \
  --resource-group myResourceGroup \
  --name myVM \
  --image imageName \
  --ephemeral-os-disk true \
  --ephemeral-os-disk-placement ResourceDisk \
  --os-disk-caching ReadOnly \
  --admin-username azureuser \
  --generate-ssh-keys

注意

相应地替换 myVMmyResourceGroupimageNameazureuser

对于规模集,可对 az-vmss-create 使用相同的 --ephemeral-os-disk true 参数,并将 --os-disk-caching 参数设置为 ReadOnly,将 --ephemeral-os-disk-placement 参数设置为 ResourceDisk(对于临时磁盘放置)或 CacheDisk(对于缓存磁盘放置)。

使用 REST 重置 VM 映像

可以按如下所述使用 REST API 对具有临时 OS 磁盘的虚拟机实例进行重置映像,并通过 Azure 门户转到 VM 的“概述”窗格。 对于规模集,已经可以通过 PowerShell、CLI 和门户进行重置映像。

POST https://management.chinacloudapi.cn/subscriptions/{sub-
id}/resourceGroups/{rgName}/providers/Microsoft.Compute/VirtualMachines/{vmName}/reimage?api-version=2019-12-01"

PowerShell

若要将临时磁盘用于 PowerShell VM 部署,请在 VM 配置中使用 Set-AzVMOSDisk。 将 -DiffDiskSetting 设为 Local-Caching 设为 ReadOnly-DiffDiskPlacement 设为 ResourceDisk

Set-AzVMOSDisk -DiffDiskSetting Local -DiffDiskPlacement ResourceDisk -Caching ReadOnly

若要将缓存磁盘上的临时磁盘用于 PowerShell VM 部署,请在 VM 配置中使用 Set-AzVMOSDisk。 将 -DiffDiskSetting 设为 Local-Caching 设为 ReadOnly-DiffDiskPlacement 设为 CacheDisk

Set-AzVMOSDisk -DiffDiskSetting Local -DiffDiskPlacement CacheDisk -Caching ReadOnly

对于规模集部署,请在配置中使用 Set-AzVmssStorageProfile cmdlet。 将 -DiffDiskSetting 设为 Local-Caching 设为 ReadOnly-DiffDiskPlacement 设为 ResourceDiskCacheDisk

Set-AzVmssStorageProfile -DiffDiskSetting Local -DiffDiskPlacement ResourceDisk -OsDiskCaching ReadOnly

后续步骤

详细了解临时 OS 磁盘