你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:通过 Azure CLI 对虚拟机规模集创建和使用磁盘

虚拟机规模集使用磁盘来存储虚拟机 (VM) 实例的操作系统、应用程序和数据。 创建和管理规模集时,请务必选择适用于所需工作负载的磁盘大小和配置。 本教程介绍如何创建和管理 VM 磁盘。 在本教程中,你将学习:

  • OS 磁盘和临时磁盘
  • 数据磁盘数
  • 标准磁盘和高级磁盘
  • 磁盘性能
  • 附加和准备数据磁盘

如果还没有 Azure 订阅,可以在开始前创建一个免费帐户

先决条件

  • 本文需要 Azure CLI 2.0.29 或更高版本。 如果使用 Azure Cloud Shell,则最新版本已安装。

默认 Azure 磁盘

大多数 VM SKU 都包含一个自动创建的临时本地磁盘,在扩展时该磁盘会添加到虚拟机规模集实例中。 但是,某些 SKU 不使用临时磁盘。 在这种情况下,扩展操作不会自动创建临时磁盘并将其添加到新建的实例。 有关使用和不使用临时磁盘的 VM SKU 的详细信息,请参阅不使用本地临时磁盘的 Azure VM 大小

操作系统磁盘 - 操作系统磁盘大小可达 2 TB,并可托管 VM 实例的操作系统。 默认情况下,操作系统磁盘在 Linux 上标有 /dev/sda,在 Windows 上标有 C:。 已针对 OS 性能优化了 OS 磁盘的磁盘缓存配置。 由于此配置,OS 磁盘不应 托管应用程序或数据。 对于应用程序和数据,请使用数据磁盘,本文后面会对其进行详细介绍。

临时磁盘 - 临时磁盘使用 VM 实例所在的 Azure 主机上的固态硬盘。 临时磁盘具有高性能,可用于临时数据处理等操作。 但是,如果将 VM 实例移到新的主机,临时磁盘上存储的数据都会删除。 VM 实例大小决定了临时磁盘的大小。

Azure 数据磁盘

如果你需要安装应用程序并存储数据,可以添加额外的数据磁盘。 在任何需要持久和灵敏数据存储的情况下,都应使用数据磁盘。 每个数据磁盘的最大容量为 4 TB。 VM 实例的大小决定可附加的数据磁盘数。 可以为每个 VM vCPU 附加两个数据磁盘,直至达到每个虚拟机 64 个磁盘的绝对上限。

VM 磁盘类型

Azure 提供两种类型的磁盘。

标准磁盘

标准存储受 HDD 或 SSD 支持,可以提供经济高效的存储和性能优势。 标准磁盘非常适合经济高效的开发和测试工作负载。

高级磁盘

高级磁盘由基于 SSD 的高性能、低延迟磁盘提供支持。 建议对运行生产工作负荷的 VM 使用这些磁盘。 高级存储支持 DS 系列、DSv2 系列、GS 系列和 FS 系列 VM。 有关详细信息,请参阅 Azure 托管磁盘类型

创建并附加磁盘

可以在创建规模集时创建和附加磁盘,也可以对现有的规模集创建和附加磁盘。

从 API 版本 2019-07-01 开始,可以使用 storageProfile.osDisk.diskSizeGb 属性设置虚拟机规模集中 OS 磁盘的大小。 预配后,可能需要对磁盘进行扩展或重新分区,以利用整个空间。 详细了解如何在 WindowsLinux OS 中扩展卷。

创建规模集时附加磁盘

首先,使用 az group create 命令创建资源组。 在此示例中,在“eastus” 区域中创建了名为“myResourceGroup” 的资源组。

az group create --name myResourceGroup --location eastus

请使用 az vmss create 命令创建虚拟机规模集。 以下示例创建名为“myScaleSet”的规模集,并生成 SSH 密钥(如果不存在)。 两个磁盘都是 --data-disk-sizes-gb 参数创建的。 第一个磁盘的大小为 64 GB,第二个磁盘的大小为 128 GB

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --image Ubuntu2204 \
  --orchestration-mode Flexible \
  --admin-username azureuser \
  --generate-ssh-keys \
  --data-disk-sizes-gb 64 128

创建和配置所有的规模集资源和 VM 实例需要几分钟时间。

将磁盘附加到现有规模集

还可以将额外的磁盘附加到现有规模集的每个实例。 若要使用 az vmss disk attach 添加另一磁盘,请使用在上一步骤中创建的规模集。 以下示例附加另一个 128 GB 的磁盘:

az vmss disk attach \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --size-gb 128

或者,如果要将数据磁盘添加到规模集中的单个实例,请使用 az vm disk attach

az vm disk attach \
  --vm-name myScaleSet_Instance1 \
  --resource-group myResourceGroup \
  --size-gb 30 \
  --name disk_name \
  --new

列出附加的磁盘

若要查看附加到规模集的磁盘的相关信息,请使用 az vmss show 命令并对 virtualMachineProfile.storageProfile.dataDisks 进行查询:

az vmss show \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --query virtualMachineProfile.storageProfile.dataDisks

还会显示有关磁盘大小、存储层和 LUN(逻辑单元号)的信息。 以下示例输出显示了有关三个附加到规模集的数据磁盘的详细信息:

[
  {
    "additionalProperties": {},
    "caching": "None",
    "createOption": "Empty",
    "diskSizeGb": 64,
    "lun": 0,
    "managedDisk": {
      "additionalProperties": {},
      "storageAccountType": "StandardSSD_LRS"
    },
    "name": null
  },
  {
    "additionalProperties": {},
    "caching": "None",
    "createOption": "Empty",
    "diskSizeGb": 128,
    "lun": 1,
    "managedDisk": {
      "additionalProperties": {},
      "storageAccountType": "StandardSSD_LRS"
    },
    "name": null
  },
  {
    "additionalProperties": {},
    "caching": "None",
    "createOption": "Empty",
    "diskSizeGb": 128,
    "lun": 2,
    "managedDisk": {
      "additionalProperties": {},
      "storageAccountType": "StandardSSD_LRS"
    },
    "name": null
  }
]

分离磁盘

不再需要某个给定的磁盘时,可以将其从规模集中分离。 该磁盘会从规模集的所有 VM 实例中删除。 若要从规模集中分离某个磁盘,请使用 az vmss disk detach 并指定磁盘的 LUN。 LUN 显示在上一部分的 az vmss show 命令的输出中。 以下示例从规模集分离 LUN 2

az vmss disk detach \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --lun 2

还可以使用 az vm disk detach 从单个实例中分离磁盘。

az vm disk detach \
  --vm-name myScaleSet_Instance1
  --name disk_name

清理资源

若要删除规模集和磁盘,请使用 az group delete 删除资源组及其所有资源。 --no-wait 参数会使光标返回提示符处,无需等待操作完成。 使用 --yes 参数将确认你希望删除资源,不会再通过其他提示进行询问。

az group delete --name myResourceGroup --no-wait --yes

后续步骤

本教程介绍了如何通过 Azure CLI 创建和使用规模集的磁盘:

  • OS 磁盘和临时磁盘
  • 数据磁盘数
  • 标准磁盘和高级磁盘
  • 磁盘性能
  • 附加和准备数据磁盘

请继续学习下一教程,了解如何对规模集 VM 实例使用自定义映像。