Azure VM在同一物理群集中调整大小

时间:2018-03-02 17:00:17

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

我正在尝试使用命令行调整Azure VM的大小。 VM大小列在可以调整此VM的大小列表中。但是当我尝试调整此VM的大小时,由于此错误,我无法执行此操作

  

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

我们是否有办法预先获取可以成功调整此VM大小的所有大小的信息?

3 个答案:

答案 0 :(得分:3)

您可以使用Get-AzureRmVmSize来检查VM大小。下面的示例不仅检查硬件群集,还检查磁盘,区域可用性,以确保您可以调整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
}

答案 1 :(得分:0)

同意Thuan Ng

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

  

有没有办法可以事先得到所有信息   这个VM的大小可以成功调整大小吗?

您的意思是想知道当前硬件中的所有尺寸都可用吗?

根据我的知识,可能。

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

答案 2 :(得分:0)

如果命令行是指azure-cli,您可以随时使用:

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

因此,您可以查看az vm resize中可以使用的vm尺寸,而无需deallocate。如果您想查看您感兴趣的位置可用的内容,可以使用以下内容:     az vm list-sizes -l westeurope -o tableaz vm deallocate此VM时,您可以使用上面命令输出中列出的任何大小。如果您对更多细节感兴趣,可以查看this article