Gäller för: ✔️ Virtuella Linux-datorer ✔️ med virtuella Windows-datorer ✔️ – flexibla skalningsuppsättningar
Den här artikeln visar hur du ändrar en befintlig virtuell dators VM-storlek.
När du har skapat en virtuell dator kan du skala upp eller ned den virtuella datorn genom att ändra storleken på den virtuella datorn. I vissa fall måste du frigöra den virtuella datorn först. Frigöring kan vara nödvändigt om den nya storleken inte är tillgänglig i samma maskinvarukluster som för närvarande är värd för den virtuella datorn. Det är viktigt att förstå att även om frigöring inte är nödvändigt, om den virtuella datorn körs för närvarande, kommer en ändring av dess storlek att leda till att den startas om. Därför bör du överväga att ändra vm-storlek som en störande procedur, särskilt för tillståndskänsliga arbetsbelastningar som finns på den virtuella datorn.
Om den virtuella datorn använder Premium Storage kontrollerar du att du väljer en s-version av storleken för att få Premium Storage-stöd. Välj till exempel Standard_E4s_v3 i stället för Standard_E4_v3.
Skriv virtuella datorer i sökningen. Under Tjänster väljer du Virtuella datorer.
På sidan Virtuella datorer väljer du den virtuella dator som du vill ändra storlek på.
I den vänstra menyn väljer du storlek. Välj en ny kompatibel storlek i listan över tillgängliga storlekar
När du har valt en storlek väljer du Ändra storlek.
Kommentar
Om den virtuella datorn körs för närvarande kommer dess storlek att startas om om om.
Om den virtuella datorn fortfarande körs och du inte ser den storlek som du vill använda i listan kan det hända att om du stoppar den virtuella datorn visas fler storlekar.
Varning
Om du frigör den virtuella datorn frigörs även alla dynamiska IP-adresser som tilldelats den virtuella datorn. Operativsystemet och datadiskarna påverkas inte.
Om du ändrar storlek på en virtuell produktionsdator bör du överväga att använda Azure-kapacitetsreservationer för att reservera beräkningskapacitet i regionen.
Ange variablerna resursgrupp och VM-namn. Ersätt värdena med information om den virtuella dator som du vill ändra storlek på.
Använd PowerShell för att ändra storlek på en virtuell dator som inte finns i en tillgänglighetsuppsättning.
Det här PowerShell-skriptet i Cloud Shell initierar variablerna $resourceGroup, $vmoch $size med resursgruppens namn, VM-namn respektive önskad VM-storlek. Sedan hämtar det virtuella datorobjektet från Azure med hjälp av cmdleten Get-AzVM . Skriptet ändrar egenskapen för den VmSize virtuella datorns maskinvaruprofil till önskad storlek. Slutligen tillämpas dessa ändringar på den virtuella datorn i Azure med hjälp av cmdleten 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
Som ett alternativ till att köra skriptet i Azure Cloud Shell kan du även köra det lokalt på datorn. Den här lokala versionen av PowerShell-skriptet innehåller ytterligare steg för att importera Azure-modulen och autentisera ditt Azure-konto.
Kommentar
Den lokala PowerShell-datorn kan kräva att den virtuella datorn startas om för att börja gälla.
# 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
Varning
Om du frigör den virtuella datorn frigörs även alla dynamiska IP-adresser som tilldelats den virtuella datorn. Operativsystemet och datadiskarna påverkas inte.
Om du ändrar storlek på en virtuell produktionsdator bör du överväga att använda Azure-kapacitetsreservationer för att reservera beräkningskapacitet i regionen.
Använda PowerShell för att ändra storlek på en virtuell dator i en tillgänglighetsuppsättning
Om den nya storleken för en virtuell dator i en tillgänglighetsuppsättning inte är tillgänglig på det maskinvarukluster som för närvarande är värd för den virtuella datorn måste du frigöra alla virtuella datorer i tillgänglighetsuppsättningen för att ändra storlek på den virtuella datorn. Du kan också behöva uppdatera storleken på andra virtuella datorer i tillgänglighetsuppsättningen när en virtuell dator har ändrats. Om du vill ändra storlek på en virtuell dator i en tillgänglighetsuppsättning kör du skriptet nedan. Du kan ersätta värdena $resourceGroupför , $vmName, $newVmSizeoch $availabilitySetName med dina egna.
# 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
Det här skriptet anger variablerna $resourceGroup, $vmName, $newVmSizeoch $availabilitySetName. Den kontrollerar sedan om önskad VM-storlek är tillgänglig med hjälp Get-AzVMSize av och kontrollerar om utdata innehåller önskad storlek. Om önskad storlek inte är tillgänglig frigör skriptet alla virtuella datorer i tillgänglighetsuppsättningen, ändrar storlek på dem och startar dem igen. Om önskad storlek är tillgänglig ändrar skriptet storlek på den virtuella datorn.
Om du vill ändra storlek på en virtuell dator måste du ha den senaste Azure CLI installerad och inloggad på ett Azure-konto med az sign-in.
Skriptet nedan kontrollerar om önskad VM-storlek är tillgänglig innan storleksändringen görs. Om önskad storlek inte är tillgänglig avslutas skriptet med ett felmeddelande. Om önskad storlek är tillgänglig frigör skriptet den virtuella datorn, ändrar storlek på den och startar den igen. Du kan ersätta värdena resourceGroupför , vmoch size med dina egna.
# 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
Varning
Om du frigör den virtuella datorn frigörs även alla dynamiska IP-adresser som tilldelats den virtuella datorn. Operativsystemet och datadiskarna påverkas inte.
Om du ändrar storlek på en virtuell produktionsdator bör du överväga att använda Azure-kapacitetsreservationer för att reservera beräkningskapacitet i regionen.
Använd Azure CLI för att ändra storlek på en virtuell dator i en tillgänglighetsuppsättning.
Skriptet nedan anger variablerna resourceGroup, vmoch size. Den kontrollerar sedan om önskad VM-storlek är tillgänglig med hjälp az vm list-vm-resize-options av och kontrollerar om utdata innehåller önskad storlek. Om önskad storlek inte är tillgänglig avslutas skriptet med ett felmeddelande. Om önskad storlek är tillgänglig frigör skriptet den virtuella datorn, ändrar storlek på den och startar den igen.
# 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
Om du vill ändra storlek på den virtuella datorn i Terraform-kod ändrar du parametern size i resursblocken azurerm_linux_virtual_machine eller azurerm_windows_virtual_machine till önskad storlek och kör terraform plan -out main.tfplan för att se den storleksändring av den virtuella datorn som ska göras. Kör terraform apply main.tfplan sedan för att tillämpa ändringarna för att ändra storlek på den virtuella datorn.
Viktigt!
Terraform-exemplet nedan ändrar storleken på en befintlig virtuell dator när du använder tillståndsfilen som skapade den ursprungliga virtuella datorn. Fullständig Terraform-kod finns i snabbstarten för Windows Terraform.
Om du frigör den virtuella datorn frigörs även alla dynamiska IP-adresser som tilldelats den virtuella datorn. Operativsystemet och datadiskarna påverkas inte.
Om du ändrar storlek på en virtuell produktionsdator bör du överväga att använda Azure-kapacitetsreservationer för att reservera beräkningskapacitet i regionen.
Välj rätt SKU
När du ändrar storlek på en virtuell dator är det viktigt att välja rätt SKU baserat på signalerna från den virtuella datorn för att avgöra om du behöver mer processor-, minnes- eller lagringskapacitet:
Om den virtuella datorn kör en CPU-intensiv arbetsbelastning, till exempel en databasserver eller en webbserver med hög trafik, kan du behöva välja en SKU med fler CPU-kärnor.
Om den virtuella datorn kör en minnesintensiv arbetsbelastning, till exempel en maskininlärningsmodell eller ett stordataprogram, kan du behöva välja en SKU med mer minne.
Om den virtuella datorn har slut på lagringskapacitet kan du behöva välja en SKU med mer lagring.
Om du vill ha mer information om hur du väljer rätt SKU kan du använda följande resurser:
Azure VM Selector: Det här verktyget hjälper dig att hitta rätt SKU för virtuella datorer baserat på din arbetsbelastningstyp, operativsystem och programvara samt distributionsregion.
Begränsningar
Du kan inte ändra storlek på en virtuell dator som har en lokal temporär disk till en VM-storlek utan lokal temporär disk och vice versa.
De enda kombinationer som tillåts för storleksändring är:
Virtuell dator (med lokal temp-disk) –> virtuell dator (med lokal temp-disk) och
Virtuell dator (utan lokal temp-disk) –> virtuell dator (utan lokal temporär disk).
En lösning finns i Hur migrerar jag från en VM-storlek med lokal temporär disk till en vm-storlek utan lokal temporär disk? . Work-around kan användas för att ändra storlek på en virtuell dator utan lokal temporär disk till virtuell dator med en lokal temporär disk. Du skapar en ögonblicksbild av den virtuella datorn utan lokal temporär disk > och skapar en disk från den virtuella ögonblicksbilden > och skapar en virtuell dator från disken med lämplig VM-storlek som stöder virtuella datorer med en lokal temporär disk.
Nästa steg
Om du vill ha mer skalbarhet kör du flera VM-instanser och skalar ut.
Information om hur du fastställer VM-storlekar efter arbetsbelastningstyp, operativsystem och programvara eller distributionsregion finns i Azure VM Selector(Azure VM Selector).