Dopo aver creato una macchina virtuale (VM), è possibile scalarla in verticale o in orizzontale modificandone le dimensioni. In alcuni casi, è necessario prima deallocare la macchina virtuale. La deallocazione potrebbe essere necessaria se le nuove dimensioni non sono disponibili nello stesso cluster hardware che ospita attualmente la macchina virtuale. È importante comprendere che anche quando la deallocazione non è necessaria, se la macchina virtuale è attualmente in esecuzione, la modifica delle dimensioni causerà il riavvio. Per questo motivo è consigliabile modificare le dimensioni delle macchine virtuali come procedura di interruzione, soprattutto per i carichi di lavoro con stato ospitati nella macchina virtuale.
Se la macchina virtuale usa l'archiviazione Premium, per ottenere il supporto per questo tipo di archiviazione assicurarsi di aver scelto una versione s delle dimensioni, ad esempio, Standard_E4s_v3 anziché Standard_E4_v3.
Digitare macchine virtuali nella casella di ricerca. In Servizi selezionare Macchine virtuali.
Nella pagina Macchine virtuali selezionare la macchina virtuale da ridimensionare.
Nel menu a sinistra selezionare Dimensioni. Selezionare una nuova dimensione compatibile dall'elenco delle dimensioni disponibili
Dopo aver selezionato una dimensione, selezionare Ridimensiona.
Nota
Se la macchina virtuale è attualmente in esecuzione, la modifica delle dimensioni ne comporterà il riavvio.
Se la macchina virtuale è ancora in esecuzione e non vengono visualizzate le dimensioni desiderate nell'elenco, l'arresto della macchina virtuale potrebbe mostrare dimensioni maggiori.
Avviso
La deallocazione della VM rilascia anche degli indirizzi IP dinamici assegnati alla VM. I dischi del sistema operativo e dei dati non sono coinvolti.
Se si ridimensiona una macchina virtuale di produzione, è consigliabile usare Prenotazioni della capacità di Azure per prenotare la capacità di calcolo nell'area.
Impostare il gruppo di risorse e le variabili del nome della macchina virtuale. Sostituire i valori con le informazioni della macchina virtuale da ridimensionare.
Usare PowerShell per ridimensionare una macchina virtuale non in un set di disponibilità.
Questo script di PowerShell di Cloud Shell inizializza le variabili $resourceGroup, $vme $size rispettivamente con il nome del gruppo di risorse, il nome della macchina virtuale e le dimensioni desiderate della macchina virtuale. Recupera quindi l'oggetto macchina virtuale da Azure usando il cmdlet Get-AzVM. Lo script modifica la proprietà VmSize del profilo hardware della macchina virtuale in base alle dimensioni desiderate. Infine, applica queste modifiche alla macchina virtuale in Azure usando il cmdlet 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
In alternativa all'esecuzione dello script in Azure Cloud Shell, è anche possibile eseguirlo in locale nel computer. Questa versione locale dello script di PowerShell include passaggi aggiuntivi per importare il modulo di Azure e autenticare l'account Azure.
Nota
PowerShell locale potrebbe richiedere che la macchina virtuale venga riavviata per rendere effettive le modifiche.
# 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
Avviso
La deallocazione della VM rilascia anche degli indirizzi IP dinamici assegnati alla VM. I dischi del sistema operativo e dei dati non sono coinvolti.
Se si ridimensiona una macchina virtuale di produzione, è consigliabile usare Prenotazioni della capacità di Azure per prenotare la capacità di calcolo nell'area.
Usare PowerShell per ridimensionare una macchina virtuale in un set di disponibilità
Se la nuova dimensione di una VM inclusa in un set di disponibilità non è disponibile nel cluster hardware che attualmente ospita la VM in questione, per ridimensionare tale VM sarà necessario deallocare tutte le VM incluse nel set di disponibilità. Dopo il ridimensionamento di una VM, può inoltre essere necessario aggiornare le dimensioni delle altre VM incluse nel gruppo di disponibilità. Per ridimensionare una macchina virtuale in un set di disponibilità, eseguire lo script seguente. È possibile sostituire i valori di $resourceGroup, $vmName, $newVmSize e $availabilitySetName con valori personalizzati.
# 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
Questo script imposta le variabili $resourceGroup, $vmName, $newVmSize e $availabilitySetName. Controlla quindi se le dimensioni della macchina virtuale desiderate sono disponibili usando Get-AzVMSize e verificando se l'output contiene le dimensioni desiderate. Se le dimensioni desiderate non sono disponibili, lo script dealloca tutte le macchine virtuali nel set di disponibilità, le ridimensiona e le avvia nuovamente. Se le dimensioni desiderate sono disponibili, lo script ridimensiona la macchina virtuale.
Lo script seguente controlla se le dimensioni della macchina virtuale desiderate sono disponibili prima del ridimensionamento. Se le dimensioni desiderate non sono disponibili, lo script viene chiuso con un messaggio di errore. Se le dimensioni desiderate sono disponibili, lo script dealloca la macchina virtuale, la ridimensiona e la avvia nuovamente. È possibile sostituire i valori di resourceGroup, vm e size con valori personalizzati.
# 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
Avviso
La deallocazione della VM rilascia anche degli indirizzi IP dinamici assegnati alla VM. I dischi del sistema operativo e dei dati non sono coinvolti.
Se si ridimensiona una macchina virtuale di produzione, è consigliabile usare Prenotazioni della capacità di Azure per prenotare la capacità di calcolo nell'area.
Usare l'interfaccia della riga di comando di Azure per ridimensionare una macchina virtuale in un set di disponibilità.
Lo script seguente imposta le variabili resourceGroup, vm e size. Controlla quindi se le dimensioni della macchina virtuale desiderate sono disponibili usando az vm list-vm-resize-options e verificando se l'output contiene le dimensioni desiderate. Se le dimensioni desiderate non sono disponibili, lo script viene chiuso con un messaggio di errore. Se le dimensioni desiderate sono disponibili, lo script dealloca la macchina virtuale, la ridimensiona e la avvia nuovamente.
# 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
Per ridimensionare la macchina virtuale nel codice Terraform, modificare il parametro size nei blocchi di risorse azurerm_linux_virtual_machine o azurerm_windows_virtual_machine alle dimensioni desiderate ed eseguire terraform plan -out main.tfplan per visualizzare la modifica delle dimensioni della macchina virtuale che verranno apportate. Eseguire quindi terraform apply main.tfplan per applicare le modifiche per ridimensionare la macchina virtuale.
Importante
L'esempio di Terraform seguente modifica le dimensioni di una macchina virtuale esistente quando si usa il file di stato che ha creato la macchina virtuale originale. Per il codice Terraform completo, vedere la Guida introduttiva a Windows Terraform.
La deallocazione della VM rilascia anche degli indirizzi IP dinamici assegnati alla VM. I dischi del sistema operativo e dei dati non sono coinvolti.
Se si ridimensiona una macchina virtuale di produzione, è consigliabile usare Prenotazioni della capacità di Azure per prenotare la capacità di calcolo nell'area.
Scegliere l'SKU corretto
Quando si ridimensiona una macchina virtuale, è importante scegliere l'SKU corretto in base ai segnali della macchina virtuale per determinare se sono necessarie più CPU, memoria o capacità di archiviazione:
Se la macchina virtuale esegue un carico di lavoro a elevato utilizzo di CPU, ad esempio un server di database o un server Web con traffico elevato, potrebbe essere necessario scegliere un SKU con più core CPU.
Se la macchina virtuale esegue un carico di lavoro a elevato utilizzo di memoria, ad esempio un modello di Machine Learning o un'applicazione Big Data, potrebbe essere necessario scegliere un SKU con più memoria.
Se la macchina virtuale esaurisce la capacità di archiviazione, potrebbe essere necessario scegliere un SKU con più spazio di archiviazione.
Per altre informazioni sulla scelta dell'SKU corretto, è possibile usare le risorse seguenti:
Selettore di macchine virtuali di Azure: questo strumento consente di trovare l'SKU della macchina virtuale appropriato in base al tipo di carico di lavoro, al sistema operativo e al software e all'area di distribuzione.
Limiti
Non è possibile ridimensionare una macchina virtuale con un disco temporaneo locale in una macchina virtuale con nessun disco temporaneo locale e viceversa.
Le uniche combinazioni consentite per il ridimensionamento sono:
Macchina virtuale (con disco temporaneo locale) -> Macchina virtuale (con disco temporaneo locale); e
Macchina virtuale (senza disco temporaneo locale) -> Macchina virtuale (con disco temporaneo locale).
Per determinare le dimensioni delle macchine virtuali in base al tipo di carico di lavoro, al sistema operativo e al software o all'area di distribuzione, vedere Selettore di macchine virtuali di Azure.