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

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

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

如果没有 Azure 订阅,可在开始前创建一个试用帐户

先决条件

  • 如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI

    • 如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录

    • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展

    • 运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade

  • 本文需要 Azure CLI 2.0.29 或更高版本。

默认 Azure 磁盘

创建或缩放规模集时,会自动将两个磁盘附加到每个 VM 实例。

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

临时磁盘 - 临时磁盘使用 VM 实例所在的 Azure 主机上的固态硬盘。 临时磁盘具有高性能,可用于临时数据处理等操作。 但是,如果将 VM 实例移到新的主机,临时磁盘上存储的数据都会删除。 临时磁盘的大小由 VM 实例大小决定。 临时磁盘标记为“/dev/sdb” ,且装载点为 /mnt 。

Azure 数据磁盘

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

VM 磁盘类型

Azure 提供两种类型的磁盘。

标准磁盘

标准存储受 HDD 支持,可以在确保性能的同时提供经济高效的存储。 标准磁盘适用于经济高效的开发和测试工作负荷。

高级磁盘

高级磁盘由基于 SSD 的高性能、低延迟磁盘提供支持。 建议对运行生产工作负荷的 VM 使用这些磁盘。 高级存储支持 DS 系列、DSv2 系列、GS 系列和 FS 系列 VM。 选择磁盘大小时,大小值将向上舍入到下一类型。 例如,如果磁盘大小小于 128 GB,则磁盘类型为 P10。 如果磁盘大小介于 129 GB 和 512 GB 之间,则大小为 P20。 如果超过 512 GB,则大小为 P30。

创建并附加磁盘

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

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

创建规模集时附加磁盘

重要

从 2023 年 11 月开始,使用 PowerShell 和 Azure CLI 创建的 VM 规模集将默认为灵活业务流程模式(如果未指定业务流程模式)。 若要详细了解此更改以及你应采取哪些操作,请访问针对 VMSS PowerShell/CLI 客户的中断性变更 - Microsoft 社区中心

首先,使用 az group create 命令创建资源组。 本示例在 chinanorth2 区域中创建名为 myResourceGroup 的资源组 。

az group create --name myResourceGroup --location chinanorth2

请使用 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 实例使用自定义映像。