Изменение размера виртуальной машины Azure в том же физическом кластере
Я пытаюсь изменить размер виртуальной машины Azure с помощью командной строки. Размер виртуальной машины указан в списке размеров, до которых может быть изменен размер этой виртуальной машины. Но когда я пытаюсь изменить размер этой виртуальной машины, я не могу сделать из-за этой ошибки
Невозможно изменить размер виртуальной машины "XYZ", поскольку запрошенный размер Standard_F4s недоступен в текущем аппаратном кластере.
Есть ли способ получить информацию заранее, до каких размеров можно успешно изменить размер этой виртуальной машины?
3 ответа
Ты можешь использовать Get-AzureRmVmSize
проверить размер ВМ. В приведенном ниже примере проверяется не только аппаратный кластер, но и доступность диска и региона, чтобы убедиться, что вы можете изменить размер своей виртуальной машины.
$rg = "azuredev-rg"
$vmName = "A0VM"
Get-AzureRmVMSize -ResourceGroupName $rg -VMName $vmName
Обратите внимание, что вывод зависит от состояния работающей виртуальной машины. Вы можете изменить существующий размер виртуальной машины, когда она работает. Однако не все доступные размеры перечислены, если эта виртуальная машина работает. Это означает, что для некоторых назначенных размеров сначала требуется отключение виртуальной машины (из-за разного аппаратного кластера).
Для защитного программирования нижеприведенный пример будет рассматриваться для проверки состояния виртуальной машины перед выполнением изменения размера.
$vm = (Get-AzureRmVM -ResourceGroupName $rg -Name $vmName -Status).Statuses
$vm.DisplayStatus
Вывод показывает вам
Provisioning succeeded
VM running
Ниже приведен пример сценария 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.
Если ваши виртуальные машины развернуты с использованием модели развертывания Resource Manager (ARM), и вам нужно изменить размер, который требует другого оборудования, вы можете изменить размер виртуальных машин, сначала остановив свою виртуальную машину, выбрав новый размер виртуальной машины, а затем перезапустив виртуальную машину.,
Есть ли способ получить информацию заранее, до каких размеров можно успешно изменить размер этой виртуальной машины?
Ты имеешь в виду, что ты хочешь получить, какие все размеры в текущем оборудовании доступны?
Исходя из моих знаний, это невозможно.
Операция изменения размера - это простая операция перезагрузки, может быть, мы можем сначала остановить ее и изменить ее размер, а затем перезапустить виртуальную машину.
Если в командной строке вы имеете в виду azure-cli, вы всегда можете использовать:
az vm list-vm-resize-options -g test-resourcegroup -n test-vm -o table
В результате вы увидите размеры VM, которые вы можете использовать в az vm resize
без необходимости deallocate
, Если вы хотите проверить, что доступно в интересующем вас месте, вы можете использовать что-то вроде: az vm list-sizes -l westeurope -o table
Вы можете использовать любой размер, указанный в выводе команды выше, когда вы az vm deallocate
это ВМ. Если вы заинтересованы в более подробной информации, вы можете проверить эту статью.