我正在尝试使用命令行调整Azure VM的大小。 VM大小列在可以调整此VM的大小列表中。但是当我尝试调整此VM的大小时,由于此错误,我无法执行此操作
无法调整VM'XYZ'的大小,因为请求的大小为Standard_F4s 在当前硬件群集中不可用。
我们是否有办法预先获取可以成功调整此VM大小的所有大小的信息?
答案 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 table
当az vm deallocate
此VM时,您可以使用上面命令输出中列出的任何大小。如果您对更多细节感兴趣,可以查看this article。