適用対象: ✔️ Linux 仮想マシン ✔️ Windows 仮想マシン ✔️ フレキシブル スケール セット
この記事では、既存の仮想マシンの VM サイズを変更する方法について説明します。
VM を作成したら、VM サイズを変更することでスケールアップまたはスケールダウンできます。 このプロセスは、VM が現在実行中であるか、既に割り当て解除されているかに関係なく機能します。
場合によっては、サイズを変更する前に VM の割り当てを解除する必要があります。 現在 VM をホストしているハードウェア クラスターで新しいサイズを使用できない場合は、割り当て解除が必要になる場合があります。 割り当てを解除する必要がない場合でも、実行中の VM のサイズを変更すると再起動します。 このため、VM のサイズ変更は、特にステートフル ワークロードの場合、中断を伴う操作と見なす必要があります。
警告
仮想マシンが現在実行されている場合、そのサイズを変更すると、再起動されます。
VM の割り当てを解除すると、VM に割り当てられているすべての動的 IP アドレスも解放されます。 OS とデータ ディスクには影響しません。
サイズ変更操作が失敗した場合でも、VM モデルには要求されたサイズが表示されますが、サイズ変更が正常に割り当てられるまで、VM は以前のサイズで実行され続けます。 この動作は、Azure ポータルとすべての GET 操作の両方に適用されます。表示されるサイズには、実際の実行サイズではなく、常に最新の適用された構成が反映されるためです。
適切な SKU を選択する
VM のサイズを変更する場合は、VM からの信号に基づいて適切な SKU を選択し、追加の CPU、メモリ、またはストレージ容量が必要かどうかを判断することが重要です。
- VM で CPU 集中型の高いワークロード (データベース サーバーや高トラフィックの Web サーバーなど) を実行している場合は、CPU コア数の多い SKU を選択する必要がある可能性があります。 詳細については、「 コンピューティング最適化サイズ」 を参照してください。
- VM で機械学習モデルやビッグ データ アプリケーションといったメモリ集中型のワークロードが実行されている場合は、メモリ容量の大きい SKU を選択する必要がある可能性があります。 詳細については、「 メモリ最適化 サイズ」を参照してください。
- VM のストレージ容量が不足している場合は、ストレージ容量の大きい SKU を選択する必要がある可能性があります。 詳細については、「 ストレージ最適化サイズ」 を参照してください。
- VM でPremium Storageを使用している場合は、Premium Storageサポートを受けるにはsバージョンのサイズを選択する必要があります。 たとえば、Standard_E4_v3 ではなく Standard_E4s_v3 を選択します。
適切な SKU の選択に関する詳細については、次のリソースをご利用ください。
-
Azure 内の VM のサイズ: この記事では、Azureで使用可能なすべての VM サイズの一覧を示します。
-
Azure VM セレクター: このツールは、ワークロードの種類、OS とソフトウェア、デプロイ リージョンに基づいて適切な VM SKU を見つけるのに役立ちます。
制限事項
ローカル一時ディスクがある VM サイズとローカル一時ディスクがない VM サイズの間のサイズ変更は、Linux VM でサポートされています。 Windows VM の場合、次のサイズ変更の組み合わせのみが許可されます。
- VM (ローカル一時ディスクあり) -> VM (ローカル一時ディスクあり)、および
- VM (ローカル一時ディスクなし) -> VM (ローカル一時ディスクなし)。
回避策については、「 ローカル一時ディスクを使用する VM サイズから、ローカル一時ディスクのない VM サイズに移行する方法 」を参照してください。この回避策を使用すると、ローカル一時ディスクのない VM のサイズを、ローカルの一時ディスクを持つ VM に変更できます。 ローカル一時ディスクのない VM のスナップショットを作成 > そのスナップショットからディスクを作成 > そのディスクから、ローカル一時ディスクを持つ VM をサポートする適切な VM サイズで VM を作成します。
SCSI ベースの VM を持つ VM サイズのサイズを、リモート NVMe 対応 VM を持つ VM サイズに変更することはできません。
回避策については、「SCSI ベースの VM を別のサイズのリモート NVMe 対応 VM にサイズ変更する方法」を参照してください。
VM のサイズの変更
VM サイズを変更するオプションを選択します。
Azure ポータルを使用して VM サイズを変更するには:
-
Azure ポータルを開きます。
- 検索に「virtual machines」と入力します。
[サービス] で、[仮想マシン] を選択します。
-
[仮想マシン] ページで、サイズ変更する仮想マシンをクリックします。
- 左側のメニューの [ 可用性とスケール ] セクションで、[サイズ] を選択 します。
- 使用可能なサイズの一覧から新しい互換性のあるサイズを選択し、[ サイズ変更] を選択します。
VM がまだ実行されているときに、リストに必要なサイズが表示されていない場合、仮想マシンを停止するとより大きいサイズが表示される可能性があります。
PowerShell を使用して VM のサイズを変更するには:
リソース グループと 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 = "<newVMsize>"
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 アカウントを認証するための追加の手順が含まれています。
Note
ローカルの 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
PowerShell を使用して可用性セット内の VM のサイズを変更する
現在 VM をホストしているハードウェア クラスターで可用性セット内の VM の新しいサイズを使用できない場合、VM のサイズを変更するには、可用性セット内のすべての VM の割り当てを解除する必要があります。 また、1 つの VM のサイズを変更した後、可用性セット内の他の VM のサイズを更新する必要がある場合もあります。 可用性セット内の VM のサイズを変更するには、以下のスクリプトを実行します。
このスクリプトでは、変数 $resourceGroup、$vmName、$newVmSize、および $availabilitySetName を設定します。 次に、Get-AzVMSize を使用して目的の 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
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 のサイズを変更するには、Azure CLIを使用します
以下のスクリプトでは、変数 resourceGroup、vm、および size を設定します。 次に、az vm list-vm-resize-options を使用して目的の VM サイズが使用可能かどうかを確認し、出力に目的のサイズが含まれているかどうかを確認します。 目的のサイズが使用できない場合、スクリプトはエラー メッセージを表示して終了します。 目的のサイズが使用可能な場合、スクリプトは VM の割り当てを解除し、サイズを変更して、再起動します。
resourceGroup、vm、sizeの値を独自の値に置き換えます。
# 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
次のステップ