我正在尝试使用命令行调整 Azure VM 的大小。VM 大小列在此 VM 可以调整大小的大小列表中。但是,当我尝试调整此 VM 的大小时,由于此错误,我无法做到
无法调整 VM 'XYZ' 的大小,因为请求的大小 Standard_F4s 在当前硬件集群中不可用。
有没有一种方法可以预先获取该 VM 可以成功调整到的所有大小的信息?
我正在尝试使用命令行调整 Azure VM 的大小。VM 大小列在此 VM 可以调整大小的大小列表中。但是,当我尝试调整此 VM 的大小时,由于此错误,我无法做到
无法调整 VM 'XYZ' 的大小,因为请求的大小 Standard_F4s 在当前硬件集群中不可用。
有没有一种方法可以预先获取该 VM 可以成功调整到的所有大小的信息?
您可以使用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
}
同意Thuan Ng的观点。
如果您的虚拟机是使用资源管理器 (ARM) 部署模型部署的,并且您需要更改为需要不同硬件的大小,那么您可以通过首先停止虚拟机、选择新的虚拟机大小然后重新启动虚拟机来调整虚拟机的大小.
有没有一种方法可以预先获取该 VM 可以成功调整到的所有大小的信息?
你的意思是你想得到当前硬件中所有尺寸的可用吗?
根据我的知识,这是不可能的。
调整大小操作是一个简单的重启操作,也许我们可以先停止它并调整它的大小,然后重新启动虚拟机。
如果通过命令行你的意思是 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
如果您对更多细节感兴趣,可以查看这篇文章。