После того как вы создали виртуальную машину, ее можно масштабировать, изменяя размер. В некоторых случаях сначала необходимо освободить виртуальную машину. Размещение сделки может потребоваться, если новый размер недоступен в том же аппаратном кластере, который в настоящее время размещает виртуальную машину. Важно понимать, что даже если размещение сделки не требуется, если виртуальная машина в настоящее время запущена, изменение его размера приведет к перезапуску. По этой причине следует рассмотреть возможность изменения размера виртуальной машины в качестве разрушительной процедуры, особенно для рабочих нагрузок с отслеживанием состояния, размещенных на виртуальной машине.
Если виртуальная машина использует хранилище класса Premium, выберите версию размера s, чтобы получить поддержку этого хранилища. Например, выберите Standard_E4s_v3 вместо Standard_E4_v3.
В поле поиска введите виртуальные машины. В разделе Службы выберите Виртуальные машины.
На странице Виртуальные машины выберите виртуальную машину, которую нужно перезапустить.
В меню слева выберите Размер. Выберите новый совместимый размер из списка доступных размеров
После выбора размера нажмите кнопку "Изменить размер".
Примечание.
Если виртуальная машина запущена в данный момент, изменение его размера приведет к перезапуску.
Если виртуальная машина работает, но нужный размер не отображается в списке, можно остановить эту виртуальную машину, чтобы увидеть дополнительные размеры.
Предупреждение
Освобождение виртуальной машины также освобождает все назначенные ей динамические IP-адреса. Это не влияет на диски ОС и данных.
Если вы изменяете размер рабочей виртуальной машины, рассмотрите возможность резервирования емкости Azure для резервирования вычислительной мощности в регионе.
Задайте переменные имени группы ресурсов и имени виртуальной машины. Замените значения данными виртуальной машины, размер которой необходимо изменить.
Использование PowerShell для изменения размера виртуальной машины, не включенной в группу доступности.
Этот скрипт PowerShell Cloud Shell инициализирует переменные $resourceGroup, $vmа $size также имя группы ресурсов, имя виртуальной машины и требуемый размер виртуальной машины соответственно. Затем он извлекает объект виртуальной машины из Azure с помощью командлета Get-AzVM . Скрипт изменяет VmSize свойство профиля оборудования виртуальной машины на нужный размер. Наконец, он применяет эти изменения к виртуальной машине в Azure с помощью командлета Update-AzVM .
# Set variables
$resourceGroup = 'myResourceGroup'
$vmName = 'myVM'
$size = 'Standard_DS3_v2'
# Get the VM
$vm = Get-AzVM -ResourceGroupName $resourceGroup -Name $vmName
# Change the VM size
$vm.HardwareProfile.VmSize = $size
# Update the VM
Update-AzVM -ResourceGroupName $resourceGroup -VM $vm
В качестве альтернативы запуску скрипта в Azure Cloud Shell можно также выполнить локально на компьютере. Эта локальная версия скрипта PowerShell включает дополнительные шаги для импорта модуля Azure и проверки подлинности учетной записи Azure.
Примечание.
Локальная среда PowerShell может потребовать, чтобы виртуальная машина вступила в силу.
# Import the Azure module
Import-Module Az
# Login to your Azure account
Connect-AzAccount
# Set variables
$resourceGroup = 'myResourceGroup'
$vmName = 'myVM'
$size = 'Standard_DS3_v2'
# Select the subscription
Select-AzSubscription -SubscriptionId '<subscriptionID>'
# Get the VM
$vm = Get-AzVM -ResourceGroupName $resourceGroup -Name $vmName
# Change the VM size
$vm.HardwareProfile.VmSize = $size
# Update the VM
Update-AzVM -ResourceGroupName $resourceGroup -VM $vm
Предупреждение
Освобождение виртуальной машины также освобождает все назначенные ей динамические IP-адреса. Это не влияет на диски ОС и данных.
Если вы изменяете размер рабочей виртуальной машины, рассмотрите возможность резервирования емкости Azure для резервирования вычислительной мощности в регионе.
Изменение размера виртуальной машины в группе доступности с помощью PowerShell
Если новый размер виртуальной машины в группе доступности недоступен в кластере оборудования, на котором размещена виртуальная машина, необходимо освободить все виртуальные машины в группе доступности, чтобы изменить размер виртуальной машины. После изменения размера одной виртуальной машины может также потребоваться обновить размер остальных виртуальных машин в группе доступности. Чтобы изменить размер виртуальной машины в группе доступности, выполните приведенный ниже сценарий. Значения , $vmName$newVmSizeа $availabilitySetName также собственные$resourceGroup.
# Set variables
$resourceGroup = "myResourceGroup"
$vmName = "myVM"
$newVmSize = "<newVmSize>"
$availabilitySetName = "<availabilitySetName>"
# Check if the desired VM size is available
$availableSizes = Get-AzVMSize `
-ResourceGroupName $resourceGroup `
-VMName $vmName |
Select-Object -ExpandProperty Name
if ($availableSizes -notcontains $newVmSize) {
# Deallocate all VMs in the availability set
$as = Get-AzAvailabilitySet `
-ResourceGroupName $resourceGroup `
-Name $availabilitySetName
$virtualMachines = $as.VirtualMachinesReferences | Get-AzResource | Get-AzVM
$virtualMachines | Stop-AzVM -Force -NoWait
# Resize and restart the VMs in the availability set
$virtualMachines | Foreach-Object { $_.HardwareProfile.VmSize = $newVmSize }
$virtualMachines | Update-AzVM
$virtualMachines | Start-AzVM
exit
}
# Resize the VM
$vm = Get-AzVM `
-ResourceGroupName $resourceGroup `
-VMName $vmName
$vm.HardwareProfile.VmSize = $newVmSize
Update-AzVM `
-VM $vm `
-ResourceGroupName $resourceGroup
Этот скрипт задает переменные $resourceGroup, $vmName$newVmSizeи $availabilitySetName. Затем он проверяет, доступен ли нужный размер виртуальной машины с помощью Get-AzVMSize и проверьте, содержит ли выходные данные нужный размер. Если нужный размер недоступен, скрипт освобождает все виртуальные машины в группе доступности, изменяет их размер и снова запускает их. Если нужный размер доступен, скрипт изменяет размер виртуальной машины.
Чтобы изменить размер виртуальной машины, необходимо установить и войти в учетную запись Azure с помощью az sign-in.
Приведенный ниже сценарий проверяет, доступен ли требуемый размер виртуальной машины перед изменением размера. Если нужный размер недоступен, скрипт завершает работу с сообщением об ошибке. Если нужный размер доступен, скрипт освобождает виртуальную машину, изменяет его размер и снова запускает его. Значения , vmа size также собственныеresourceGroup.
# Set variables
resourceGroup=myResourceGroup
vm=myVM
size=Standard_DS3_v2
# Check if the desired VM size is available
if ! az vm list-vm-resize-options --resource-group $resourceGroup --name $vm --query "[].name" | grep -q $size; then
echo "The desired VM size is not available."
exit 1
fi
# Deallocate the VM
az vm deallocate --resource-group $resourceGroup --name $vm
# Resize the VM
az vm resize --resource-group $resourceGroup --name $vm --size $size
# Start the VM
az vm start --resource-group $resourceGroup --name $vm
Предупреждение
Освобождение виртуальной машины также освобождает все назначенные ей динамические IP-адреса. Это не влияет на диски ОС и данных.
Если вы изменяете размер рабочей виртуальной машины, рассмотрите возможность резервирования емкости Azure для резервирования вычислительной мощности в регионе.
Используйте Azure CLI для изменения размера виртуальной машины в группе доступности.
Приведенный ниже скрипт задает переменные resourceGroup, vmи size. Затем он проверяет, доступен ли нужный размер виртуальной машины с помощью az vm list-vm-resize-options и проверьте, содержит ли выходные данные нужный размер. Если нужный размер недоступен, скрипт завершает работу с сообщением об ошибке. Если нужный размер доступен, скрипт освобождает виртуальную машину, изменяет его размер и снова запускает его.
# Set variables
resourceGroup="myResourceGroup"
vmName="myVM"
newVmSize="<newVmSize>"
availabilitySetName="<availabilitySetName>"
# Check if the desired VM size is available
availableSizes=$(az vm list-vm-resize-options \
--resource-group $resourceGroup \
--name $vmName \
--query "[].name" \
--output tsv)
if [[ ! $availableSizes =~ $newVmSize ]]; then
# Deallocate all VMs in the availability set
vmIds=$(az vmss list-instances \
--resource-group $resourceGroup \
--name $availabilitySetName \
--query "[].instanceId" \
--output tsv)
az vm deallocate \
--ids $vmIds \
--no-wait
# Resize and restart the VMs in the availability set
az vmss update \
--resource-group $resourceGroup \
--name $availabilitySetName \
--set virtualMachineProfile.hardwareProfile.vmSize=$newVmSize
az vmss start \
--resource-group $resourceGroup \
--name $availabilitySetName \
--instance-ids $vmIds
exit
fi
# Resize the VM
az vm resize \
--resource-group $resourceGroup \
--name $vmName \
--size $newVmSize
Чтобы изменить размер виртуальной машины в коде Terraform, измените size параметр в azurerm_linux_virtual_machine блоках ресурсов azurerm_windows_virtual_machine на нужный размер и запустите terraform plan -out main.tfplan , чтобы просмотреть изменения размера виртуальной машины, которые будут сделаны. Затем выполните команду terraform apply main.tfplan , чтобы применить изменения для изменения размера виртуальной машины.
Внимание
Приведенный ниже пример Terraform изменяет размер существующей виртуальной машины при использовании файла состояния, создавшего исходную виртуальную машину. Полный код Terraform см. в кратком руководстве по Windows Terraform.
Освобождение виртуальной машины также освобождает все назначенные ей динамические IP-адреса. Это не влияет на диски ОС и данных.
Если вы изменяете размер рабочей виртуальной машины, рассмотрите возможность резервирования емкости Azure для резервирования вычислительной мощности в регионе.
Выберите нужный номер SKU
При изменении размера виртуальной машины важно выбрать правильный номер SKU на основе сигналов от виртуальной машины, чтобы определить, требуется ли больше ресурсов ЦП, памяти или хранилища:
Если виртуальная машина выполняет рабочую нагрузку с большим объемом ЦП, например сервер базы данных или веб-сервер с высоким трафиком, может потребоваться выбрать номер SKU с большим количеством ядер ЦП.
Если виртуальная машина выполняет рабочую нагрузку с интенсивным объемом памяти, например модель машинного обучения или приложение больших данных, может потребоваться выбрать номер SKU с большей памятью.
Если виртуальная машина не имеет емкости хранилища, может потребоваться выбрать номер SKU с большим объемом хранилища.
Дополнительные сведения о выборе правильного номера SKU можно использовать следующие ресурсы:
Селектор виртуальных машин Azure. Это средство помогает найти правильный номер SKU виртуальной машины на основе типа рабочей нагрузки, ОС и программного обеспечения и региона развертывания.
Ограничения
Невозможно изменить размер виртуальной машины с локальным временным диском до размера виртуальной машины без локального временного диска и наоборот.
Для изменения размера разрешены только следующие комбинации:
Виртуальная машина (с локальным временным диском) —> виртуальная машина (с локальным временным диском); а также
виртуальная машина (без локального временного диска) —> виртуальная машина (без локального временного диска).
Сведения о работе см. в статье Разделы справки миграции с размера виртуальной машины с локальным временным диском на размер виртуальной машины без локального временного диска? Для изменения размера виртуальной машины без локального временного диска на виртуальную машину можно использовать обходную работу с локальным временным диском. Вы создаете моментальный снимок виртуальной машины без локального временного диска > , создающего диск из создаваемого моментального снимка > виртуальной машины с соответствующим размером виртуальной машины, которая поддерживает виртуальные машины с локальным временным диском.
Следующие шаги
Для повышения масштабируемости запустите несколько экземпляров виртуальных машин и выполните горизонтальное масштабирование.
Сведения о том, как определить размеры виртуальных машин по типу рабочей нагрузки, ОС и программному обеспечению или региону развертывания, см . в разделе "Выбор виртуальной машины Azure".