【问题标题】: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。