教程:通过 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 | ||
---|---|---|---|---|---|
磁盘类型 | 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 磁盘的大小。 预配后,可能需要对磁盘进行扩展或重新分区,以利用整个空间。 详细了解如何在 Windows 或 Linux 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 实例使用自定义映像。