VM(가상 머신)을 만든 후 VM 크기를 변경하여 VM의 크기를 확장 또는 축소할 수 있습니다. 경우에 따라 먼저 VM의 할당을 취소해야 합니다. 현재 VM을 호스팅하는 동일한 하드웨어 클러스터에서 새 크기를 사용할 수 없는 경우 할당 해제가 필요할 수 있습니다. 할당 취소가 필요하지 않은 경우에도 가상 머신이 현재 실행 중인 경우 크기를 변경하면 다시 시작된다는 것을 이해하는 것이 중요합니다. 이러한 이유로 VM 크기 변경은 특히 VM에서 호스트되는 상태 저장 워크로드의 경우 중단 절차로 고려해야 합니다.
VM에서 Premium Storage를 사용하는 경우 크기의 s 버전을 선택하여 Premium Storage 지원을 받는지 확인합니다. 예를 들어 Standard_E4_v3 대신 Standard_E4s_v3을 선택합니다.
이 Cloud Shell PowerShell 스크립트는 리소스 그룹 이름, VM 이름 및 원하는 VM 크기로 $resourceGroup, $vm 및 $size 변수를 초기화합니다. 그런 다음, Get-AzVM cmdlet을 사용하여 Azure에서 VM 개체를 검색합니다. 스크립트는 VM 하드웨어 프로필의 VmSize 속성을 원하는 크기로 수정합니다. 마지막으로 Update-AzVM cmdlet을 사용하여 Azure의 VM에 이러한 변경 내용을 적용합니다.
# 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을 적용하려면 VM을 다시 시작해야 할 수 있습니다.
# 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
Warning
VM의 할당이 취소되면 VM에 할당된 모든 동적 IP 주소도 해제됩니다. OS 및 데이터 디스크는 영향을 받지 않습니다.
프로덕션 VM의 크기를 조정하는 경우 Azure 용량 예약을 사용하여 해당 지역의 컴퓨팅 용량을 예약하는 것이 좋습니다.
PowerShell을 사용하여 가용성 집합에서 VM 크기 조정
가용성 집합에서 VM의 새 크기를 현재 VM을 호스트하는 하드웨어 클러스터에서 사용할 수 없는 경우 가용성 집합의 모든 VM 할당을 취소하여 VM 크기를 조정해야 합니다. 또한 VM 크기를 조정한 후 가용성 집합에서 다른 VM의 크기를 업데이트해야 할 수 있습니다. 가용성 집합에서 VM의 크기를 조정하려면 아래 스크립트를 실행합니다. $resourceGroup, $vmName, $newVmSize 및 $availabilitySetName 의 값을 사용자 고유의 값으로 바꿀 수 있습니다.
# 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를 사용하고 출력에 원하는 크기가 포함되어 있는지 확인하여 원하는 VM 크기를 사용할 수 있는지 확인합니다. 원하는 크기를 사용할 수 없는 경우 스크립트는 가용성 집합의 모든 VM 할당을 취소하고 크기를 조정한 다음 다시 시작합니다. 원하는 크기를 사용할 수 있는 경우 스크립트는 VM의 크기를 조정합니다.
VM의 크기를 조정하려면 최신 Azure CLI를 설치하고 az 로그인을 사용하여 Azure 계정에 로그인해야 합니다.
아래 스크립트에서는 크기를 조정하기 전에 원하는 VM 크기를 사용할 수 있는지 확인합니다. 원하는 크기를 사용할 수 없는 경우 스크립트는 오류 메시지와 함께 종료됩니다. 원하는 크기를 사용할 수 있는 경우 스크립트는 VM의 할당을 취소하고 크기를 조정한 다음 다시 시작합니다. resourceGroup, vm 및 size의 값을 사용자 고유의 값으로 바꿀 수 있습니다.
# 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
Warning
VM의 할당이 취소되면 VM에 할당된 모든 동적 IP 주소도 해제됩니다. OS 및 데이터 디스크는 영향을 받지 않습니다.
프로덕션 VM의 크기를 조정하는 경우 Azure 용량 예약을 사용하여 해당 지역의 컴퓨팅 용량을 예약하는 것이 좋습니다.
Azure CLI를 사용하여 가용성 집합에서 VM의 크기를 조정합니다.
아래 스크립트에서는 resourceGroup, vm 및 size 변수를 설정합니다. 그런 다음, az vm list-vm-resize-options를 사용하고 출력에 원하는 크기가 포함되어 있는지 확인하여 원하는 VM 크기를 사용할 수 있는지 확인합니다. 원하는 크기를 사용할 수 없는 경우 스크립트는 오류 메시지와 함께 종료됩니다. 원하는 크기를 사용할 수 있는 경우 스크립트는 VM의 할당을 취소하고 크기를 조정한 다음 다시 시작합니다.
# 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 코드에서 VM의 크기를 조정하려면 azurerm_linux_virtual_machine 또는 azurerm_windows_virtual_machine 리소스 블록의 size 매개 변수를 원하는 크기로 수정하고 terraform plan -out main.tfplan을 실행하여 변경될 VM 크기를 확인합니다. 그런 다음 terraform apply main.tfplan을 실행해 변경 내용을 적용하여 VM 크기를 조정합니다.
Important
아래 Terraform 예제에서는 원래 가상 머신을 만든 상태 파일을 사용할 때 기존 가상 머신의 크기를 수정합니다. 전체 Terraform 코드는 Windows Terraform 빠른 시작을 참조하세요.