-1

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

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

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

4

3 回答 3

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
}
于 2018-03-02T17:11:43.087 回答
0

同意Thuan Ng的观点。

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

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

你的意思是你想得到当前硬件中所有尺寸的可用吗?

根据我的知识,这是不可能的。

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

于 2018-03-05T06:47:43.067 回答
0

如果通过命令行你的意思是 azure-cli,你总是可以使用:

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

结果,您将看到az vm resize无需deallocate. 如果你想检查你感兴趣的位置有什么可用的,你可以使用类似的东西: 当你使用这个 VMaz vm list-sizes -l westeurope -o table 时,你可以使用上面命令输出中列出的任何大小。az vm deallocate如果您对更多细节感兴趣,可以查看这篇文章

于 2018-04-04T06:25:08.890 回答