【问题标题】:Azure VM resize in same physical clusterAzure VM 在同一物理群集中调整大小
【发布时间】:2018-03-02 17:00:17
【问题描述】:

我正在尝试使用命令行调整 Azure VM 的大小。 VM 大小列在此 VM 可以调整大小的大小列表中。但是当我尝试调整这个虚拟机的大小时,由于这个错误我无法做到

无法调整 VM 'XYZ' 的大小,因为请求的大小为 Standard_F4s 在当前的硬件集群中不可用。

有没有一种方法可以让我们预先获取可以成功将此 VM 调整到的所有大小的信息?

【问题讨论】:

    标签: azure azure-virtual-machine azure-vm-templates


    【解决方案1】:

    您可以使用Get-AzureRmVmSize 检查虚拟机大小。下面的示例不仅检查硬件集群,还检查磁盘、区域可用性,以确保您可以调整 VM 的大小。

    $rg = "azuredev-rg"
    $vmName = "A0VM"
    Get-AzureRmVMSize -ResourceGroupName $rg -VMName $vmName
    

    请注意,输出取决于正在运行的 VM 状态。您可以在现有 VM 运行时更改它的大小。但是,如果 VM 正在运行,则不会列出所有可用大小。这意味着某些指定的大小需要先停止 VM 才能被释放(由于不同的硬件集群)

    对于防御性编程,可以考虑在执行调整大小之前检查 VM 状态

    $vm = (Get-AzureRmVM -ResourceGroupName $rg -Name $vmName -Status).Statuses
    $vm.DisplayStatus
    

    输出显示你

    Provisioning succeeded
    VM running
    

    以下是检查 VM 状态然后执行调整大小的示例 PowerShell 脚本

    $rg = "azuredev-rg"
    $vmName = "A0VM"
    $newSize = "Standard_B1s"
    
    $vm = Get-AzureRmVM -ResourceGroupName $rg -Name $vmName
    $vmS = Get-AzureRmVMSize -ResourceGroupName $rg -VMName $vmName
    
    if ($vmS.Name -contains $newSize) 
    {
        Write-Output "This size is supported"
        $vm.HardwareProfile.VmSize = $newSize
        Update-AzureRmVM -VM $vm -ResourceGroupName $rg
        Write-Output "The VM size is being updated"
    }
    
    else
    {
        while($vmStatus.DisplayStatus -contains "VM running")
        {
            $vmStatus = (Get-AzureRmVM -ResourceGroupName $rg -Name $vmName -Status).Statuses
            Write-Output $vmStatus
            Write-Output "VM is being stopped"
            Start-Sleep -Seconds 3
        }
        Stop-AzureRmVM -Name $vmName -ResourceGroupName $rg -Force
        $vm.HardwareProfile.VmSize = $newSize
        Update-AzureRmVM -VM $vm -ResourceGroupName $rg
    }
    

    【讨论】:

    【解决方案2】:

    同意Thuan Ng

    如果您的虚拟机是使用资源管理器 (ARM) 部署模型部署的,并且您需要更改为需要不同硬件的大小,那么您可以通过首先停止您的虚拟机来调整虚拟机的大小,选择新的 VM 大小,然后重新启动 VM。

    有没有一种方法可以让我们事先获取所有信息 可以成功调整此 VM 的大小吗?

    您的意思是要获得当前硬件中所有尺寸都可用的吗?

    据我所知,不可能

    resize 操作是一个简单的 reboot 操作,也许我们可以先停止它并调整它的大小,然后重新启动 VM。

    【讨论】:

      【解决方案3】:

      如果你的命令行是指 azure-cli,你总是可以使用:

      az vm list-vm-resize-options -g test-resourcegroup -n test-vm -o table

      因此,您将看到可以在az vm resize 中使用的虚拟机大小,而无需deallocate。如果您想检查您感兴趣的位置有什么可用的,您可以使用以下内容: az vm list-sizes -l westeurope -o table 当您az vm deallocate 此 VM 时,您可以使用上述命令输出中列出的任何大小。如果您有兴趣了解更多详情,可以查看this article

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多