適用於:✔️ Linux VM ✔️ Windows VM ✔️ 彈性擴展集
本文說明如何變更現有虛擬機器的 VM 大小。
建立虛擬機器 (VM) 後,您可以透過變更 VM 的大小來放大或縮小 VM。 在某些情況下,您必須先解除配置 VM。 如果目前裝載 VM 的相同硬體叢集無法提供新的大小,就可能需要解除配置。 請務必瞭解,即使不需要解除分配,如果虛擬機目前正在執行,變更其大小會導致重新啟動。 基於這個理由,您應該考慮將 VM 大小變更為干擾性程式,特別是針對裝載於 VM 上的具狀態工作負載。

如果您的 VM 使用進階儲存體,請確實選擇 s 版本的大小,以取得進階儲存體支援。 例如,請選擇 Standard_E4s_v3,而不是 Standard_E4_v3。
變更 VM 大小
- 開啟 Azure 入口網站。
- 在搜尋中輸入虛擬機器。 在 [服務] 底下,選取 [虛擬機器]。

- 從 [虛擬機器] 頁面中,選取您要調整大小的虛擬機器。

- 在左側功能表中,選取 [大小]。 從可用大小清單中挑選新的相容大小

- 挑選大小之後,請選取 [調整大小]。
![Azure 入口網站 中 [重設大小] 按鈕的螢幕快照。](media/portal-resize-button.png)
注意
如果虛擬機器目前正在執行,變更其大小會導致虛擬機器重新啟動。
如果 VM 仍在執行中,但在清單中沒看到您要的大小,則停止虛擬機器可以顯示更多大小。
警告
將 VM 解除配置也會釋出指派給該 VM 的任何動態 IP 位址。 不會影響作業系統和資料磁碟。
如果您要調整生產 VM 的大小,請考慮使用 Azure 容量保留來保留區域中的計算容量。
設定資源群組名稱和 VM 名稱變數。 將值取代為您想要調整大小的 VM 資訊。
$resourceGroup = "myResourceGroup"
$vmName = "myVM"
列出裝載 VM 的硬體叢集上適用的 VM 大小。
Get-AzVMSize -ResourceGroupName $resourceGroup -VMName $vmName
將 VM 大小調整為新的大小。
$vm = Get-AzVM -ResourceGroupName $resourceGroup -VMName $vmName
$vm.HardwareProfile.VmSize = "<newAv2VMsize>"
Update-AzVM -VM $vm -ResourceGroupName $resourceGroup
使用 PowerShell 調整不在可用性設定組中的 VM 大小。
此 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 帳戶的額外步驟。
注意
VM 可能需要重新啟動,本機 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
警告
將 VM 解除配置也會釋出指派給該 VM 的任何動態 IP 位址。 不會影響作業系統和資料磁碟。
如果您要調整生產 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
警告
將 VM 解除配置也會釋出指派給該 VM 的任何動態 IP 位址。 不會影響作業系統和資料磁碟。
如果您要調整生產 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
選擇正確的 SKU
調整 VM 大小時,請務必根據 VM 的訊號判斷您是否需要更多 CPU、記憶體或儲存體容量,選擇正確的 SKU:
- 如果 VM 執行 CPU 運算密集的工作負載,例如資料庫伺服器或高流量的網頁伺服器,您可能需要選擇具有較多 CPU 核心的 SKU。
- 如果 VM 執行需要大量記憶體的工作負載,例如機器學習模型或巨量資料應用程式,您可能需要選擇具有較多記憶體的 SKU。
- 如果 VM 用盡儲存體容量,您可能需要選擇具有較多儲存體的 SKU。
如需選擇正確 SKU 的詳細資訊,您可以使用下列資源:
限制
您無法將具有本機暫存磁碟的 VM 大小調整為沒有本機暫存磁碟的 VM 大小,反之亦然。
唯一允許的調整大小組合如下:
- VM (具有本機暫存磁碟) -> VM (具有本機暫存磁碟);以及
- VM (沒有本機暫存磁碟) -> VM (沒有本機暫存磁碟)。
如需因應措施,請參閱如何將具有本機暫存磁碟的 VM 大小移轉至沒有本機暫存磁碟的 VM 大小?。 此因應措施可以用來將沒有本機暫存磁碟的 VM 大小調整為具有本機暫存磁碟的 VM。 您可以建立沒有本機暫存磁碟的 VM 快照集 > 從該快照集建立磁碟 > 從具有適當 VM 大小 (支援具有本機暫存磁碟的 VM) 的磁碟建立 VM。
下一步