AzureのLinux VMサイズを変更する方法|az vm resizeによるスケールアップと割り当て解除・データディスク上限の見極め

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Azure > AzureのLinux VMサイズを変更する方法|az vm resizeによるスケールアップと割り当て解除・データディスク上限の見極め
「AzureのLinux VMが遅くなってきた。メモリ不足でアプリが落ちる。でも本番を止めずにスケールアップできるの?」——クラウド運用で必ずぶつかる壁です。

AzureのLinux VMはコンソールやCLIから後からサイズを変更できます。ただし 「割り当て解除(deallocate)が必要かどうか」 の判断を誤ると、予期せぬ停止を招いたり、変更できないまま詰まったりします。さらに データディスクの上限 はVMサイズごとに異なるため、サイズダウン時は特に注意が必要です。

この記事では az vm resize を使ったAzureのLinux VMサイズ変更を、Azure CLI 2.65.0・Rocky Linux 9.4の実機ログで解説します。割り当て解除の要否判断からデータディスク上限の確認まで、現場で即使えるハンズオン手順をカバーします。

この記事のポイント

・az vm resize --size で変更先VMサイズを指定するだけでスケールアップできる
・同一クラスター内サイズなら無停止変更可能、ホスト変更が必要なら割り当て解除が必須
・データディスク上限はサイズごとに異なり、超過すると変更エラーになる
・AllocationFailed時は別ゾーン・リージョンへの変更か、時間を空けて再試行する


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

なぜAzure VMのサイズ変更が必要になるのか?

VMサイズの変更が必要になる場面は主に3つあります。

スケールアップ(パワー不足):サービス成長に伴いCPUやメモリが慢性的に不足する。Webアプリのレスポンスが遅い、バッチ処理が時間内に終わらないといった症状で気づく
スケールダウン(コスト最適化):開発・検証環境を本番と同じサイズで動かしていて、費用対効果が合わない。オーバースペックなVMをひとつ小さいサイズに落とすだけでコストを大幅削減できる
季節対応:繁忙期に合わせてスペックを上げ、閑散期に戻す運用。Auto Scalingを使えない構成でも手動のリサイズで対応できる

AWSのEC2では「インスタンスタイプの変更」と呼びますが、Azureでは「VMサイズの変更」と呼びます。EC2と同様、変更はAPIやCLIで完結でき、ディスクを再作成したりOSを再インストールしたりする必要はありません。OSディスク・データディスクの内容はそのまま引き継がれます。

割り当て解除が必要なケースと不要なケース

「停止なしで変更できるかどうか」——これがVM運用者にとって最も重要な判断軸です。

AzureのVMは物理的な ホストクラスター 上で動いています。同じクラスター内に変更先のVMサイズが存在するなら、VMを停止(deallocate)せずにリサイズできます。逆に、変更先サイズが別のクラスターにしか存在しない場合は、一度VMを停止してから別クラスターに移動させる必要があるため、割り当て解除が必須 になります。

割り当て解除不要(無停止変更可能):同一ファミリー内の上下変更(例: Standard_B2s → Standard_B4ms)では多くの場合、割り当て解除なしで変更できる
割り当て解除必須:ファミリーをまたぐ変更(例: BシリーズからDsv3シリーズへ)や、物理ホスト世代が異なるサイズへの変更では割り当て解除が必要になる

ただし「同一ファミリーなら必ず無停止」というわけではありません。割り当て解除なしで試みて失敗したら、割り当て解除して再試行する——これが実務上の正しいフローです。

変更可能なサイズの一覧(az vm list-vm-resize-options) は現在のVMが属するクラスターで利用可能なサイズのみを返します。このリストに含まれるサイズなら、割り当て解除なしで変更できる可能性が高いです。

az vm resizeでサイズ変更する手順

この記事の手順は以下の環境で動作確認しています。

・Rocky Linux 9.4(Azure VM、Standard_B2s)
・Azure CLI 2.65.0(az コマンド)
・リソースグループ: rg-linux-practice(japaneast)
・変更対象VM: linuxvm-rocky94

1. 現在のVMサイズとリソース情報を確認する

まず現在のVMサイズを確認します。

# 現在のVMサイズを確認 $ az vm show --resource-group rg-linux-practice --name linuxvm-rocky94 --query hardwareProfile.vmSize -o tsv Standard_B2s # VM全体の概要をテーブルで確認 $ az vm show --resource-group rg-linux-practice --name linuxvm-rocky94 --query "{Name:name, Size:hardwareProfile.vmSize, Location:location, PowerState:instanceView.statuses[1].displayStatus}" -o table Name Size Location PowerState --------------- ------------- ---------- ------------- linuxvm-rocky94 Standard_B2s japaneast VM running

VMが「VM running」の状態であることを確認してから次に進みます。

2. 変更可能なVMサイズ一覧を取得する

現在のVMが属するクラスターで利用可能なサイズを取得します。このリストに含まれるサイズであれば、無停止変更に挑戦できます。

# 変更可能なVMサイズ一覧(MaxDataDiskCount も同時確認) $ az vm list-vm-resize-options --resource-group rg-linux-practice --name linuxvm-rocky94 --query "[].{Name:name,CPU:numberOfCores,MemMB:memoryInMb,MaxDisks:maxDataDiskCount}" -o table | grep -E "^Name|B2s|B4ms|D2s|D4s" Name CPU MemMB MaxDisks Standard_B2s 2 4096 4 Standard_B4ms 4 16384 8 Standard_D2s_v3 2 8192 4 Standard_D4s_v3 4 16384 8

MaxDisks列(maxDataDiskCount)は後工程のデータディスク上限確認で重要になります。必ずこの段階でメモしておきましょう。

3. 割り当て解除なしでサイズ変更を試みる

Standard_B2s(2コア・4GBメモリ)から Standard_B4ms(4コア・16GBメモリ)への変更を試みます。

# 割り当て解除なしでリサイズ(VMは稼働中のまま) $ az vm resize --resource-group rg-linux-practice --name linuxvm-rocky94 --size Standard_B4ms { "hardwareProfile": { "vmSize": "Standard_B4ms" }, "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/rg-linux-practice/providers/Microsoft.Compute/virtualMachines/linuxvm-rocky94", "location": "japaneast", "name": "linuxvm-rocky94", ... } # 変更後のVMサイズを確認 $ az vm show --resource-group rg-linux-practice --name linuxvm-rocky94 --query hardwareProfile.vmSize -o tsv Standard_B4ms

変更が成功するとJSONで新しいVM設定が返ってきます。hardwareProfile.vmSizeが変更先のサイズになっていれば成功です。

無停止変更が成功した場合、VM内部のOSは特に操作不要です。変更直後に free -h を実行すれば、メモリが増えていることを確認できます。

# VM内でメモリ増加を確認(SSHで接続後) $ free -h total used free shared buff/cache available Mem: 15Gi 1.2Gi 13Gi 34Mi 1.2Gi 14Gi Swap: 0B 0B 0B

4. 割り当て解除してサイズ変更する(確実な方法)

ファミリーをまたぐ変更や、az vm list-vm-resize-optionsの一覧に含まれないサイズへの変更では、割り当て解除が必要です。また、無停止変更を試みてエラーが出た場合もこの手順を使います。

注意:割り当て解除するとVMは停止し、パブリックIPアドレスが動的割り当ての場合はIPが解放されます。静的IPを使っていない場合は事前に確認してください。

# 手順1: VMを割り当て解除(停止)する $ az vm deallocate --resource-group rg-linux-practice --name linuxvm-rocky94 # コマンドが返るまで1~2分かかる # 手順2: 割り当て解除の完了を確認 $ az vm get-instance-view --resource-group rg-linux-practice --name linuxvm-rocky94 --query instanceView.statuses[*].displayStatus -o table Result ------------------ PowerState/deallocated # 手順3: 新しいサイズを指定してリサイズ $ az vm resize --resource-group rg-linux-practice --name linuxvm-rocky94 --size Standard_D4s_v3 # 手順4: VMを起動する $ az vm start --resource-group rg-linux-practice --name linuxvm-rocky94 # 手順5: VM起動を確認 $ az vm get-instance-view --resource-group rg-linux-practice --name linuxvm-rocky94 --query instanceView.statuses[*].displayStatus -o table Result ------------------ PowerState/running

現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、20年以上の運用経験を持つ現役エンジニアが基礎から教えます。
Azure対応セミナーの詳細を見る >>

データディスク上限の見極め方

Azureでは、VMに接続できるデータディスクの最大数(maxDataDiskCount)がVMサイズによって決まります。スケールダウン時にこの上限を超えていると変更が拒否されます。

5. 変更先サイズのデータディスク上限を確認する

特定サイズのデータディスク上限を確認するには az vm list-sizes を使います。

# 特定サイズのデータディスク上限を確認 $ az vm list-sizes --location japaneast --query "[?name=='Standard_B4ms'].{Name:name,CPU:numberOfCores,MemMB:memoryInMb,MaxDataDisks:maxDataDiskCount}" -o table Name CPU MemMB MaxDataDisks -------------- ----- ------- ------------ Standard_B4ms 4 16384 8 # 現在のVMに接続されているデータディスク数を確認 $ az vm show --resource-group rg-linux-practice --name linuxvm-rocky94 --query "storageProfile.dataDisks[].{Name:name,Size:diskSizeGb,Lun:lun}" -o table Name Size Lun ---------------- ------ ----- linuxvm-data01 64 0 linuxvm-data02 128 1

現在2枚のデータディスクが接続されており、Standard_B4msの上限は8枚なので問題ありません。変更先の上限が現在のディスク枚数より少ない場合は、ディスクをデタッチしてから変更する必要があります。

6. 現在のデータディスク数が上限を超えている場合の対処

変更先のVMサイズの上限を超えているデータディスクは、事前にデタッチする必要があります。デタッチするとVMからはアクセスできなくなりますが、ディスク自体はAzure側に保持されます。

# データディスクをデタッチする(ディスク名を指定) $ az vm disk detach --resource-group rg-linux-practice --vm-name linuxvm-rocky94 --name linuxvm-data02 # デタッチ後にVMサイズを変更 $ az vm resize --resource-group rg-linux-practice --name linuxvm-rocky94 --size Standard_B4ms # 必要であれば変更後に再アタッチ $ az vm disk attach --resource-group rg-linux-practice --vm-name linuxvm-rocky94 --name linuxvm-data02 --lun 1

再アタッチ後、VM内では lsblk でディスクが認識されているかを確認し、マウントし直してください。

トラブルシュート・エラー対処

「AllocationFailed」が出たとき

(AllocationFailed) Allocation failed. We do not have sufficient capacity for the requested VM size in this region. Read more about improving likelihood of allocation success at https://aka.ms/allocation-guidance Code: AllocationFailed

対象リージョンの物理ホストが指定のVMサイズで不足しています。以下の対処を順に試してください。

時間を空けて再試行:Azure側のキャパシティは時間帯によって変動します。数分後に再試行するだけで解消することもあります
Availability Zoneを指定する:ゾーンを変えると別の物理クラスターに割り当てられる場合があります(ただし既存VMのゾーンは変更できないため、新規VMとしての再作成が必要)
近いサイズに変更する:Standard_D16s_v3が不足していても Standard_D8s_v3 は空いていることがあります。段階的なスケールアップも有効です
別リージョンへの移行:japaneastで不足している場合、japanwestでは空いていることがあります

「OperationNotAllowed」(データディスク上限超過)が出たとき

(OperationNotAllowed) The current number of Data Disks (6) exceeds the maximum number of Data Disks allowed for VM size 'Standard_B4ms' (MaxDataDiskCount = 4). Code: OperationNotAllowed

現在接続しているデータディスク数が変更先のVMサイズの上限を超えています。前のセクションで解説した az vm disk detach を使い、上限以下になるまでデータディスクをデタッチしてからリサイズしてください。

サイズ変更後にSSHで接続できないとき

割り当て解除後のVMは、起動完了まで1~3分かかります。あわてて何度もSSHを試みるより、az vm get-instance-view でPowerStateが「running」になったことを確認してからSSHを試みてください。

動的パブリックIPを使っていた場合、割り当て解除によりIPが変わっています。以下で新しいIPを確認します。

# 起動後のパブリックIPを確認 $ az vm list-ip-addresses --resource-group rg-linux-practice --name linuxvm-rocky94 --query "[].virtualMachine.network.publicIpAddresses[0].ipAddress" -o tsv 20.xxx.xxx.xxx

動的IPによるIP変更を防ぐには、パブリックIPを 静的(Static) に変更しておくことを推奨します。

本記事のまとめ

az vm resizeによるAzureのLinux VMサイズ変更の主要な操作をまとめます。
やりたいこと コマンド
現在のVMサイズを確認 az vm show --resource-group RG --name VM --query hardwareProfile.vmSize -o tsv
変更可能なサイズ一覧を取得 az vm list-vm-resize-options --resource-group RG --name VM --output table
VMサイズを変更(停止なし) az vm resize --resource-group RG --name VM --size SIZE
VMを割り当て解除(停止) az vm deallocate --resource-group RG --name VM
VMを起動 az vm start --resource-group RG --name VM
データディスク上限を確認 az vm list-sizes --location LOC --query "[?name=='SIZE'].maxDataDiskCount"
データディスクをデタッチ az vm disk detach --resource-group RG --vm-name VM --name DISK
VM起動後のIPを確認 az vm list-ip-addresses --resource-group RG --name VM -o tsv
VMサイズ変更は「同一クラスター内なら無停止、ホスト変更が必要なら割り当て解除」という判断を軸に進めると迷いません。az vm list-vm-resize-options で現在のクラスターで使えるサイズを把握し、スケールダウン時はデータディスク上限を必ず事前確認する——この2つを習慣化するだけで、現場での余計なトラブルを大幅に減らせます。

次に読む記事
・AzureのVMSSとLoad Balancerで高可用性を実現する方法|スケールセット構築と自動スケーリングの実践ハンズオン
・Azure BackupでLinux VMをバックアップ・リストアする方法|Recovery Servicesコンテナーの構築と復元テスト
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、20年以上の運用経験を持つ現役エンジニアが基礎から教えます。
Azure対応セミナーの詳細を見る >>

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。