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

扩展附加到 Windows 虚拟机的虚拟硬盘

适用于:✔️ Windows VM ✔️ 灵活规模集

在资源组中通过从 Azure 市场部署映像来创建新的虚拟机 (VM) 时,默认的操作系统 (OS) 磁盘通常为 127 GiB。 (默认情况下,某些映像的 OS 磁盘大小较小。可以将数据磁盘添加到 VM。 金额取决于所选的 VM 版本。

应在数据磁盘上安装应用程序和 CPU 密集型工作负荷。 如果您支持在 OS 磁盘上安装组件的旧版应用程序,或者从本地将具有较大 OS 磁盘的物理电脑或虚拟机迁移过来,则可能需要扩展 OS 磁盘。 本文介绍如何扩展 OS 磁盘或数据磁盘。

OS 磁盘的最大容量为 4,095 GiB。 但许多操作系统默认使用主启动记录 (MBR) 进行分区。 MBR 将可用大小限制为 2 TiB。 如果需要超过 2 TiB,请创建并附加数据磁盘并将其用于数据存储。 如果需要将数据存储在 OS 磁盘上并需要额外的空间, 请将其转换为 GUID 分区表 (GPT)。 若要了解 MBR 和 GPT 在 Windows 部署中的区别,请参阅 Windows 和 GPT 常见问题解答

除非使用在不停机的情况下扩展,否则扩展数据磁盘需要解除分配 VM。 不支持收缩现有磁盘,可能会导致数据丢失。

扩展磁盘后,在操作系统中扩展卷以利用更大的磁盘。 无法扩展条带卷的大小。

在不停机的情况下扩展

你可以在不解除分配虚拟机的情况下扩展数据磁盘。 磁盘的主机缓存设置不会更改你是否可以在不解除分配虚拟机的情况下扩展数据磁盘。

此功能存在以下限制。

重要

此限制不适用于高级 SSD v2 或超级磁盘。

如果标准 HDD、标准 SSD 或高级 SSD 磁盘为 4 TiB 或更少,请解除分配 VM 并分离磁盘,然后再将其扩展到 4 TiB 以上。 如果上述某个磁盘类型已经大于 4 TiB,则可以在不解除分配 VM 和拆离磁盘的情况下对其进行扩展。

使用超级磁盘和高级 SSD v2 进行扩展

在不停机的情况下扩展 Ultra Disks 和高级 SSD v2 磁盘还存在以下其他限制:

  • 当该磁盘上同时正在进行后台数据复制时,无法扩展该磁盘。 一个示例是当磁盘正在从快照回填数据时。
  • 可以使用具有超级磁盘或高级 SSD v2 磁盘的 NVMe 控制器来扩展 VM,而无需在此公共预览版中停机。 由于此版本是公共预览版,因此应仅使用它来测试在不停机的情况下扩展的功能。 不要在生产环境中扩展 VM。

在以下区域中,你可以在不停机的情况下扩展使用 NVMe 控制器且搭配 Ultra Disks 或高级 SSD v2 磁盘的虚拟机。 使用 Azure 门户、Azure CLI 或 Azure PowerShell 模块:

  • 东南亚
  • 巴西南部
  • 加拿大中部
  • 德国中西部
  • 印度中部(V6 VM 目前不支持)

在以下区域中,你可以在不停机的情况下扩展使用 NVMe 控制器且搭配 Ultra Disks 或高级 SSD v2 磁盘的虚拟机。 仅使用 Azure CLI 或 Azure PowerShell 模块。 目前无法使用 Azure 门户:

  • 东亚
  • 美国中西部(V6 VM 目前不支持)

预计最多 10 分钟后就会在 Windows VM 和 Linux VM 中反映正确的大小。 对于 Linux VM,必须执行 Linux rescan 函数。 对于没有工作负荷的 Windows VM,必须执行 Windows 重新扫描功能。 可以立即重新扫描,但如果时间在 10 分钟内,可能需要再次重新扫描以显示正确的大小。

重设 Azure 门户中的托管磁盘的大小

重要

如果磁盘满足在不停机的情况下扩展中的要求,则可以跳过第 1 步。

  1. Azure 门户中,转到您要扩展磁盘的 VM。 选择“停止”以解除分配 VM。

  2. 在左侧菜单中的 “设置”下,选择“ 磁盘”。

    显示在菜单的“设置”部分中选择了“磁盘”选项的屏幕截图。

  3. “磁盘名称”下,选择要展开的磁盘。

    显示“磁盘”窗格的屏幕截图,其中选择了一个磁盘名称。

  4. 在左侧菜单中的 “设置”下,选择“ 大小 + 性能”。

    此屏幕截图显示已在菜单的“设置”部分选择了“大小和性能”选项。

  5. “大小 + 性能”上,选择所需的磁盘大小。

    新大小应该大于现有磁盘大小。 对于 OS 磁盘来说,允许的最大值为 4,095 GB。 可以扩展虚拟硬盘 (VHD) Blob,使之超出该大小,但 OS 只能使用前 4,095 GB 空间。

    此屏幕截图显示了“大小和性能”窗格,其中已选择磁盘大小。

  6. 在页面底部选择“重设大小”。

    此屏幕截图显示了“大小和性能”窗格,其中已选择“重设大小”按钮。

使用 PowerShell 重设托管磁盘的大小

在管理模式下打开 PowerShell 窗口,并按照以下步骤作:

  1. 在资源管理模式下登录到 Azure 帐户,并选择订阅:

    Connect-AzAccount
    Select-AzSubscription –SubscriptionName 'my-subscription-name'
    
  2. 设置资源组名称和 VM 名称:

    $rgName = 'my-resource-group-name'
    $vmName = 'my-vm-name'
    $diskName = 'my-disk-name'
    
  3. 获取对 VM 的引用:

    $vm = Get-AzVM -ResourceGroupName $rgName -Name $vmName
    

    重要

    如果磁盘满足 Expand 中的要求 而不停机,则可以跳过步骤 4 和 6。

  4. 在调整磁盘大小之前停止 VM:

    Stop-AzVM -ResourceGroupName $rgName -Name $vmName
    
  5. 获取对托管 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 块扩展到超过该大小,但操作系统只会使用前 4,095 GB 的空间。

  6. 更新 VM 可能需要几秒钟时间。 命令完成运行后,重启 VM:

    Start-AzVM -ResourceGroupName $rgName -Name $vmName
    

远程连接到 VM,打开 计算机管理 (或 磁盘管理),并使用新分配的空间扩展驱动器。

在操作系统中扩展卷

为虚拟机扩展磁盘后,进入操作系统并扩展卷以包含新空间。 以下几种方法可用于扩展分区。 本部分介绍如何使用远程桌面协议(RDP)连接来连接 VM,以使用 DiskPart磁盘管理器扩展分区。

使用 DiskPart

  1. 打开与 VM 的 RDP 连接。

  2. 打开命令提示符并输入 diskpart

  3. DISKPART 提示符下,输入 list volume。 记下要扩展的卷。

  4. DISKPART 提示符下,输入 select volume <volumenumber>。 该操作将选择要扩展到同一磁盘的连续可用空间的卷 volumenumber

  5. DISKPART 提示符下,输入 extend [size=<size>]。 该操作将按大小 (MB) 扩展所选的卷。

使用磁盘管理器

  1. 启动与 VM 的远程桌面会话。

  2. 打开“磁盘管理”。

    显示磁盘管理的屏幕截图。

  3. 右键单击现有的 C: 驱动器分区,然后选择“扩展卷”

    显示如何扩展卷的屏幕截图。

  4. 按照向导中的步骤查看具有更新容量的磁盘。

    显示磁盘管理器中较大的 C: 卷的屏幕截图。

在不中断服务的情况下扩展经典 VM SKU 的支持

如果使用经典 VM SKU 或版本,则它可能不支持在不停机的情况下扩展磁盘。

使用以下 PowerShell 脚本确定其可用的 VM 版本:

Connect-AzAccount
$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 门户附加磁盘。