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

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

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

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

默认 Azure 磁盘

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

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

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

Azure 数据磁盘

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

VM 磁盘类型

下表比较了五种磁盘类型,方便用户确定使用哪种磁盘类型。

超级磁盘 高级 SSD v2 高级·SSD 标准 SSD 标准 HDD
磁盘类型 SSD SSD SSD SSD HDD
方案 SAP HANA、顶层数据库(例如 SQL、Oracle)等 IO 密集型工作负载,以及其他事务密集型工作负载。 一致需要低延迟、高 IOPS 和吞吐量的生产和性能敏感型工作负载 生产和性能敏感型工作负荷 Web 服务器、不常使用的企业应用程序和开发/测试 备份、非关键、不常访问
最大磁盘大小 65,536 GiB 65,536 GiB 32,767 GiB 32,767 GiB 32,767 GiB
最大吞吐量 4,000 MB/秒 1,200 MB/秒 900 MB/秒 750 MB/秒 500 MB/秒
最大 IOPS 160,000 80,000 20,000 6,000 2,000,3,000*
可用作 OS 磁盘? No

*仅适用于已启用增强性能(预览版)的磁盘。

创建并附加磁盘

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

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

创建规模集时附加磁盘

使用 New-AzVmss 创建虚拟机规模集。 出现提示时,请提供 VM 实例的用户名和密码。 若要将流量分配到单独的 VM 实例,则还要创建负载均衡器。 负载均衡器包含的规则可在 TCP 端口 80 上分配流量,并允许 TCP 端口 3389 上的远程桌面流量,以及 TCP 端口 5985 上的 PowerShell 远程流量。

两个磁盘都是 -DataDiskSizeGb 参数创建的。 第一个磁盘的大小为 64 GB,第二个磁盘的大小为 128 GB。 出现提示时,请针对规模集中的 VM 实例提供自己的所需管理凭据:

New-AzResourceGroup -Name "myResourceGroup" -Location "China North 2"
New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Location "chinanorth2" `
  -OrchestrationMode "Flexible" `
  -VMScaleSetName "myScaleSet" `
  -VirtualNetworkName "myVnet" `
  -SubnetName "mySubnet" `
  -PublicIpAddressName "myPublicIPAddress" `
  -LoadBalancerName "myLoadBalancer" `
  -DataDiskSizeInGb 64,128

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

将磁盘附加到现有规模集

还可以将磁盘附加到现有的规模集。 使用在上一步创建的规模集通过 Add-AzVmssDataDisk 添加另一磁盘。 以下示例将另一个 128 GB 的磁盘附加到现有规模集:

# Get scale set object
$vmss = Get-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet"

# Attach a 128 GB data disk to LUN 2
Add-AzVmssDataDisk `
  -VirtualMachineScaleSet $vmss `
  -CreateOption Empty `
  -Lun 2 `
  -DiskSizeGB 128

# Update the scale set to apply the change
Update-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet" `
  -VirtualMachineScaleSet $vmss

或者,如果要将数据磁盘添加到规模集中的单个实例,请使用 Add-AzVmssVMDataDisk

$VirtualMachine = Get-AzVmssVM -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId 1
Add-AzVmssVMDataDisk -VirtualMachineScaleSetVM $VirtualMachine -LUN 2 -DiskSizeInGB 1 -CreateOption Empty -StorageAccountType Standard_LRS
Update-AzVmssVM -VirtualMachineScaleSetVM $VirtualMachine

列出附加的磁盘

若要查看有关附加到规模集的磁盘的信息,请使用 Get-AzVmss,如下所示:

Get-AzVmss -ResourceGroupName "myResourceGroup" -Name "myScaleSet"

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

DataDisks[0]                            :
  Lun                                   : 0
  Caching                               : None
  CreateOption                          : Empty
  DiskSizeGB                            : 64
  ManagedDisk                           :
    StorageAccountType                  : PremiumLRS
DataDisks[1]                            :
  Lun                                   : 1
  Caching                               : None
  CreateOption                          : Empty
  DiskSizeGB                            : 128
  ManagedDisk                           :
    StorageAccountType                  : PremiumLRS
DataDisks[2]                            :
  Lun                                   : 2
  Caching                               : None
  CreateOption                          : Empty
  DiskSizeGB                            : 128
  ManagedDisk                           :
    StorageAccountType                  : PremiumLRS

分离磁盘

不再需要某个给定的磁盘时,可以将其从规模集中分离。 该磁盘会从规模集的所有 VM 实例中删除。 若要从规模集中分离某个磁盘,请使用 Remove-AzVmssDataDisk 并指定磁盘的 LUN。 LUN 将显示在上一部分的 Get-AzVmss 的输出中。 以下示例从规模集分离 LUN 3

# Get scale set object
$vmss = Get-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet"

# Detach a disk from the scale set
Remove-AzVmssDataDisk `
  -VirtualMachineScaleSet $vmss `
  -Lun 2

# Update the scale set and detach the disk from the VM instances
Update-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet" `
  -VirtualMachineScaleSet $vmss

或者,如果要从规模集的单个实例中删除数据磁盘,请使用 Remove-AzVmssVMDataDisk

$VirtualMachine = Get-AzVmssVM -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "c91dfbd9"
Remove-AzVmssVMDataDisk -VirtualMachineScaleSetVM $VirtualMachine -Lun 2
Update-AzVmssVM -VirtualMachineScaleSetVM -VM $VirtualMachine

清理资源

若要删除规模集和磁盘,请使用 Remove-AzResourceGroup 删除资源组及其所有资源。 -Force 参数将确认是否希望删除资源,而不会有额外提示。 -AsJob 参数会使光标返回提示符处,无需等待操作完成。

Remove-AzResourceGroup -Name "myResourceGroup" -Force -AsJob

后续步骤

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

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

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