如何扩展附加到 Windows 虚拟机的虚拟硬盘
适用于:✔️ Windows VM ✔️ 灵活规模集
在资源组中通过从 Azure 市场部署映像来创建新的虚拟机 (VM) 时,默认的操作系统 (OS) 磁盘通常为 127 GiB(某些映像的 OS 磁盘大小默认更小)。 可以将数据磁盘添加到 VM(可添加的量取决于所选的 VM SKU),建议在数据磁盘上安装应用程序和 CPU 密集型工作负载。 如果你要支持在 OS 磁盘上安装组件的旧版应用程序,或者如果要从本地迁移具有较大 OS 磁盘的物理电脑或 VM,则可能需要扩展 OS 磁盘。 本文介绍如何扩展 OS 磁盘或数据磁盘。
OS 磁盘的最大容量为 4,095 GiB。 但许多操作系统默认使用主启动记录 (MBR) 进行分区。 MBR 将可用大小限制为 2 TiB。 如果需要超过 2 TiB,请创建并附加数据磁盘并将其用于数据存储。 如果需要在 OS 磁盘上存储数据并需要额外空间,请将其转换为 GUID 分区表 (GPT)。 若要了解 MBR 和 GPT 在 Windows 部署中的区别,请参阅 Windows 和 GPT 常见问题解答。
在不停机的情况下扩展
你可以在不解除分配虚拟机的情况下扩展数据磁盘。 磁盘的主机缓存设置不会更改你是否可以在不解除分配虚拟机的情况下扩展数据磁盘。
此功能具有以下限制:
- 仅支持数据磁盘。
- 如果标准 HDD、标准 SSD 或高级 SSD 磁盘小于或等于 4 TiB,则解除分配 VM 并拆离磁盘,然后再将其扩展到 4 TiB 以上。 如果上述某个磁盘类型已经大于 4 TiB,则可以在不解除分配 VM 和拆离磁盘的情况下对其进行扩展。 这不适用于高级 SSD v2 或超级磁盘。
- 不支持共享磁盘。
- 安装并使用以下任一项:
- 最新 Azure CLI
- 最新的 Azure PowerShell 模块
- Azure 门户
- 或 API 版本为
2021-04-01
或更高版本的 Azure 资源管理器模板。
- 在某些经典 VM 上不可用。 使用此脚本可获取支持在不停机的情况下扩展的经典 VM SKU 列表。
重设 Azure 门户中的托管磁盘的大小
重要
如果磁盘满足在不停机的情况下扩展中的要求,则可以跳过第 1 步。
在 Azure 门户中,转到要在其中扩展磁盘的虚拟机。 选择“停止”以解除分配 VM。
在左侧菜单中的“设置”下,选择“磁盘” 。
在“磁盘名称”下,选择要扩展的磁盘。
在左侧菜单中的“设置”下,选择“大小 + 性能” 。
在“大小和性能”中,选择所需的磁盘大小。
警告
新大小应该大于现有磁盘大小。 对于 OS 磁盘来说,允许的最大值为 4,095 GB。 (可以扩展 VHD Blob,使之超出该大小,但 OS 只能使用前 4,095 GB 空间。)
选择页面底部的“保存” 。
使用 PowerShell 重设托管磁盘的大小
在管理模式下打开 PowerShell ISE 或 PowerShell 窗口,执行以下步骤:
在资源管理模式下登录 Azure 帐户,然后选择订阅:
Connect-AzAccount -Environment AzureChinaCloud
Select-AzSubscription -SubscriptionName 'my-subscription-name'
设置资源组名称和 VM 名称:
$rgName = 'my-resource-group-name'
$vmName = 'my-vm-name'
$diskName = 'my-disk-name'
获取对 VM 的引用:
$vm = Get-AzVM -ResourceGroupName $rgName -Name $vmName
重要
如果磁盘满足在不停机的情况下扩展中的要求,则可以跳过第 4 步和第 6 步。
在重设磁盘大小之前停止 VM:
Stop-AzVM -ResourceGroupName $rgName -Name $vmName
获取对托管 OS 磁盘的引用。 将托管 OS 磁盘的大小设置为所需值,并更新磁盘:
$disk= Get-AzDisk -ResourceGroupName $rgName -DiskName $diskName
$disk.DiskSizeGB = 1023
Update-AzDisk -ResourceGroupName $rgName -Disk $disk -DiskName $disk.Name
警告
新大小应该大于现有磁盘大小。 对于 OS 磁盘来说,允许的最大值为 4,095 GB。 (可以扩展 VHD Blob,使之超出该大小,但 OS 只能使用前 4,095 GB 空间。)
更新 VM 可能需要几秒钟时间。 命令执行完后,请重启 VM:
Start-AzVM -ResourceGroupName $rgName -Name $vmName
通过远程访问 VM,打开“计算机管理”(或“磁盘管理”),然后使用刚刚分配的空间扩展驱动器 。
在操作系统中扩展卷
扩展 VM 的磁盘后,需要进入 OS 并扩展卷,使之包含新的空间。 以下几种方法可用于扩展分区。 本部分介绍如何使用 RDP 连接来连接 VM 以通过使用 Diskpart 或使用磁盘管理器扩展分区。
使用 DiskPart
扩展 VM 的磁盘后,需要进入 OS 并扩展卷,使之包含新的空间。 以下几种方法可用于扩展分区。 本部分介绍了如何使用 RDP 连接来连接 VM 以使用 DiskPart 展开分区。
打开与 VM 的 RDP 连接。
打开命令提示符并键入 diskpart
在 DISKPART 提示符处,键入
list volume
。 记下要扩展的卷。在 DISKPART 提示符处,键入
select volume <volumenumber>
。 这将选择将扩展到同一磁盘上的连续可用空间的卷 volumenumber。在 DISKPART 提示符处,键入
extend [size=<size>]
。 这将按大小(MB)扩展所选的卷。
使用磁盘管理器
启动与 VM 的远程桌面会话。
打开“磁盘管理”。
右键单击现有的 C: 驱动器分区 ->“扩展卷”。
按照应能查看具有更新容量的磁盘的步骤进行操作:
不停机扩展经典 VM SKU 支持
如果使用经典 VM SKU,可能不支持在不停机的情况下扩展磁盘。
使用以下 PowerShell 脚本确定其可用的 VM SKU:
Connect-AzAccount -Environment AzureChinaCloud
$subscriptionId="yourSubID"
$location="desiredRegion"
Set-AzContext -Subscription $subscriptionId
$vmSizes=Get-AzComputeResourceSku -Location $location | where{$_.ResourceType -eq 'virtualMachines'}
foreach($vmSize in $vmSizes){
foreach($capability in $vmSize.Capabilities)
{
if(($capability.Name -eq "EphemeralOSDiskSupported" -and $capability.Value -eq "True") -or ($capability.Name -eq "PremiumIO" -and $capability.Value -eq "True") -or ($capability.Name -eq "HyperVGenerations" -and $capability.Value -match "V2"))
{
$vmSize.Name
}
}
}
后续步骤
还可以使用 Azure 门户来附加磁盘。