適用対象: ✔️ Linux VM ✔️ Windows VM ✔️ フレキシブル スケール セット
この記事では、既存の仮想マシンの VM サイズを変更する方法について説明します。
仮想マシン (VM) を作成した後、VM のサイズを変更することで、VM をスケールアップまたはスケールダウンできます。 場合によっては、先に VM の割り当てを解除する必要があります。 割り当ての解除は、現在 VM をホストしている同一のハードウェア クラスターで新しいサイズを使用できない場合に必要になる可能性があります。 理解しておくべき重要なこととして、割り当て解除の必要がない場合でも、仮想マシンが現在実行中の場合は、そのサイズを変更すると再起動されます。 このため、VM のサイズの変更は中断が発生する手順と考える必要があります (特に、VM でホストされているステートフル ワークロードの場合)。

VM が Premium Storage を使用している場合、Premium Storage のサポートを受けるには、s バージョンのサイズを選択する必要があります。 たとえば、Standard_E4_v3 ではなく Standard_E4s_v3 を選択します。
- Azure Portalを開きます。
- 検索に「virtual machines」と入力します。 [サービス] で、 [仮想マシン] を選択します。

- [仮想マシン] ページで、サイズ変更する仮想マシンをクリックします。

- 左側のメニューで [サイズ] を選択します。 使用可能なサイズの一覧から新しい互換性のあるサイズを選択する

- サイズを選択したら、[サイズ変更] を選択します。

注意
仮想マシンが現在実行されている場合、そのサイズを変更すると、再起動されます。
VM がまだ実行されているときに、リストに必要なサイズが表示されていない場合、仮想マシンを停止するとより大きいサイズが表示される可能性があります。
警告
VM の割り当てを解除すると、VM に割り当てられているすべての動的 IP アドレスも解放されます。 OS とデータ ディスクには影響しません。
運用 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 スクリプトは、変数 $resourceGroup
、$vm
、$size
をそれぞれリソース グループ名、VM 名、必要な VM サイズを指定して初期化します。 次に、Get-AzVM
コマンドレットを使って Azure から VM オブジェクトを取得します。 このスクリプトを使って、VM のハードウェア プロファイルの VmSize
プロパティを目的のサイズに変更します。 最後に、Update-AzVM
コマンドレットを使って、これらの変更を 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
警告
VM の割り当てを解除すると、VM に割り当てられているすべての動的 IP アドレスも解放されます。 OS とデータ ディスクには影響しません。
運用 VM のサイズを変更する場合は、Azure の容量予約を使用して、リージョンでコンピューティング容量を予約することを検討してください。
PowerShell を使用して可用性セット内の VM のサイズを変更する
現在 VM をホストしているハードウェア クラスターで可用性セット内の VM の新しいサイズを使用できない場合、可用性セット内のすべての VM の割り当てを解除して、VM のサイズを変更する必要があります。 また、1 つの 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 sign-in を使用して 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 アドレスも解放されます。 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
VM のサイズを変更する場合は、VM からの信号に基づいて適切な SKU を選択して、より多くの CPU、メモリ、またはストレージ容量が必要かどうかを判断することが重要です。
- VM で CPU 集中型の高いワークロード (データベース サーバーや高トラフィックの Web サーバーなど) を実行している場合は、CPU コア数の多い SKU を選択する必要がある場合があります。
- VM で機械学習モデルやビッグ データ アプリケーションなどのメモリ集中型のワークロードが実行されている場合は、メモリ容量の大きい SKU を選択する必要がある場合があります。
- VM のストレージ容量が不足している場合は、ストレージ容量の大きい SKU を選択する必要がある場合があります。
適切な SKU の選択に関する詳細については、次のリソースを使用してください。
ローカル一時ディスクを持つ VM サイズを、ローカル一時ディスクのない VM サイズにサイズ変更することはできず、その逆もできません。
サイズ変更に使用できる組み合わせは以下に限られます。
- VM (ローカル一時ディスクあり) -> VM (ローカル一時ディスクあり)、および
- VM (ローカル一時ディスクなし) -> VM (ローカル一時ディスクなし)。
回避策については、「ローカル一時ディスクを持つ VM サイズを、ローカル一時ディスクのない VM サイズに移行する方法を教えてください」を参照してください。 この回避策を使用して、ローカル一時ディスクのない VM のサイズを、ローカル一時ディスクを持つ VM に変更できます。 ローカル一時ディスクのない VM のスナップショットを作成し > そのスナップショットからディスクを作成し > そのディスクから、ローカル一時ディスクを持つ VM をサポートする適切な VM サイズで VM を作成します。