Azureで希望するVMサイズを作れない原因と対処|クォータ不足・SkuNotAvailableの切り分け

Azure Virtual Machinesで希望するVMサイズを作成できない場合、最初から「クォータ不足だ」と決めつけるのは危険です。原因は主に、リージョン・ゾーンでのSKU制限、サブスクリプション固有の制限、vCPUクォータ不足、一時的な物理容量不足に分かれます。

切り分けの要点は、エラーコードを確認したうえで、az vm list-skusRestrictionsZonesを読み、次にリージョン別のvCPU使用量を確認することです。SkuNotAvailableとクォータ不足、AllocationFailedは、似た状況に見えても対処方法が異なります。([Microsoft Learn][1])

目次

希望するVMサイズを作れない原因は4種類に分ける

まず、表示されたエラーコードやメッセージから、おおよその原因を分類します。

状況・エラー主な原因最初に確認する項目
SkuNotAvailable指定したVMサイズがリージョン、ゾーン、サブスクリプションの条件で利用できないaz vm list-skusZonesRestrictions
InvalidTemplateDeploymentと「requested size isn’t available」ARMテンプレートやBicepの事前検証時にSKU制限へ抵触Activity LogとSKU制限
quota exceededTotal Regional vCPUs、VMファミリー上限に関するメッセージリージョン全体またはVMファミリーのvCPUクォータ不足az vm list-usage、Azure Quotas
AllocationFailedZonalAllocationFailed対象リージョンやゾーンの一時的な物理容量不足別サイズ、別ゾーン、別リージョン
Spot VMだけ作成できないSpot用容量、Spotクォータ、価格条件通常VMでの作成可否、Spot設定

SkuNotAvailableは、選択したSKUが指定条件で利用できない場合に発生します。一方、AllocationFailedZonalAllocationFailedは、SKU自体が利用対象であっても、その時点で要求を満たす物理容量を確保できない場合に発生します。([Microsoft Learn][1])

AzureでSkuNotAvailableが出たときのリージョン・ゾーン・制限確認

対象のサブスクリプションを確認する

VMサイズの利用可否やクォータは、サブスクリプションごとに異なります。複数のサブスクリプションを利用している環境では、最初にAzure CLIの接続先を確認してください。

az account show --query "{Subscription:name,Id:id}" --output table

接続先を変更する場合は、次のコマンドを実行します。

az account set --subscription "<サブスクリプションIDまたは名前>"

別のサブスクリプションを参照したまま調査すると、「ポータルでは選択できないのにCLIでは利用可能と表示される」といった食い違いが起こります。

調査結果を外部へ共有するときは、サブスクリプションIDを必要以上に公開しないでください。アクセストークン、秘密鍵、パスワード、SASトークンなどは、画面キャプチャやログに含めないようにします。

az vm list-skusで候補を確認する

東日本リージョンでDシリーズの候補を確認する場合は、次のコマンドを実行します。

az vm list-skus --location japaneast --size Standard_D --all --output table

az vm list-skusは、現在選択しているサブスクリプションの制限を考慮して、コンピューティング関連SKUの情報を表示します。--sizeには完全なVMサイズ名だけでなく、Standard_Dのような部分文字列も指定できます。([Microsoft Learn][2])

特に重要なのが--allです。

--all

このオプションを付けると、現在のサブスクリプションでは利用できないVMサイズも含めて情報が表示されます。--allを付けない場合、制限されたサイズが一覧から省略されるため、「リージョン自体に存在しない」のか「サブスクリプションで制限されている」のかを判断しにくくなります。([Microsoft Learn][2])

ZonesとRestrictionsを読む

出力結果では、主に次の列を確認します。

確認内容
NameVMサイズの正式なSKU名
Locations対象リージョン
Zones対応候補として表示される可用性ゾーン
Restrictionsサブスクリプション、リージョン、ゾーンに対する制限

RestrictionsNoneであれば、SKU一覧上はサブスクリプション制限が表示されていません。

一方、次のような表示がある場合は注意が必要です。

NotAvailableForSubscription, type: Zone

これは、現在のサブスクリプションでは、記載されたゾーンでそのSKUを利用できないことを示します。

リージョン単位の制限が表示される場合は、指定したリージョンでそのSKUを利用できません。ゾーン単位の制限であれば、同じリージョン内の別ゾーンで利用できる可能性があります。Microsoftの例でも、NotAvailableForSubscriptionと制限対象のゾーンを確認する方法が示されています。([Microsoft Learn][1])

ただし、RestrictionsNoneでも、実際の作成成功を保証するものではありません。SKU一覧に表示されていても、配置時の容量不足などで作成や起動に失敗することがあります。([Microsoft Learn][1])

ゾーン対応のVMサイズだけを確認する

可用性ゾーンを使用する構成では、次のコマンドでゾーン情報を含めて確認できます。

az vm list-skus --location japaneast --resource-type virtualMachines --zone --all --output table

特定のVMサイズについて詳細なJSONを確認したい場合は、完全なサイズ名を指定します。

az vm list-skus --location japaneast --size Standard_D4s_v5 --all --output json

表形式ではRestrictionsの詳細が途中で省略される場合があります。判断に迷うときは、JSON形式で次の項目を確認してください。

  • locations
  • locationInfo
  • locationInfo[].zones
  • restrictions
  • restrictions[].type
  • restrictions[].restrictionInfo

たとえば、希望するVMサイズがゾーン1と3では利用可能で、ゾーン2に制限がある場合、設計上問題がなければゾーン1または3へ変更します。

可用性要件のために特定ゾーンが必須であれば、別のVMサイズを探すか、Azure SupportへSKU利用可否を確認します。

クォータ不足かどうかを確認する

az vm list-skusでVMサイズが利用対象と確認できても、必要なvCPUクォータが残っていなければ作成できません。

Azure Virtual Machinesの標準vCPUクォータは、サブスクリプションおよびリージョンごとに、次の2段階で管理されます。

  • リージョン全体のvCPU上限
  • DシリーズやEシリーズなど、VMファミリーごとのvCPU上限

新しいVMを作成するには、両方の上限に空きが必要です。どちらか一方でも超過すれば、VMは作成できません。([Microsoft Learn][3])

Azure CLIでリージョン別の使用量を確認する

東日本リージョンの使用量と上限を確認する場合は、次のコマンドを実行します。

az vm list-usage --location japaneast --output table

az vm list-usageは、指定したリージョンにおけるVM関連リソースの使用量を一覧表示するコマンドです。([Microsoft Learn][2])

確認時は、希望するVMサイズが属するファミリーと、リージョン全体のvCPU使用量を探します。

VMファミリー側で不足する例

仮に次の状態だったとします。

D-series family
CurrentValue: 8
Limit: 10

4vCPUを使用するVMを追加すると、合計は12vCPUになります。この場合、リージョン全体のクォータに余裕があっても、Dシリーズのファミリー上限を超えるため作成できません。

リージョン全体で不足する例

次のような状態では、ファミリー側に空きがあっても作成できません。

Total Regional vCPUs
CurrentValue: 28
Limit: 30

4vCPUのVMを追加すると32vCPUになるため、リージョン全体の上限を超えます。

Azure portalからクォータ増加を申請する

Azure portalで「Quotas」を検索し、Computeのクォータ画面から対象のサブスクリプション、リージョン、VMファミリーを選択します。

VM作成画面で「Insufficient quota」などと表示された場合は、その画面からクォータ増加申請へ進めることもあります。クォータ変更には、Contributor相当のアクセス許可が必要になる場合があります。自動処理で増加できない場合は、サポートリクエストへ案内されます。([Microsoft Learn][3])

クォータ申請では、単に現在必要なvCPU数だけでなく、近い将来の増設分も考慮します。ただし、必要性を説明できないほど大きな値を申請すると、確認が必要になることがあります。

Activity Logで実際のエラーを確認する

ポータル画面に「デプロイに失敗しました」としか表示されない場合は、Activity Logで詳細を確認します。

Azure portalでは、サブスクリプション、リソースグループ、または対象リソースのメニューからActivity Logを開けます。失敗した時刻付近に絞り、次の情報を確認してください。

  • エラーコード
  • エラーメッセージ
  • 対象リージョン
  • 指定ゾーン
  • VMサイズ
  • Correlation ID
  • 操作時刻
  • 操作を実行したアカウントまたはサービス

Azure CLIから確認する場合は、次のように取得できます。

az monitor activity-log list --resource-group "<リソースグループ名>" --offset 1d --output json

Activity Logには、作成、更新、削除などの管理操作が記録されます。ログは通常、操作後すぐではなく、数分経過してから確認できる場合があります。([Microsoft Learn][4])

ARMテンプレートやBicepの検証段階でInvalidTemplateDeploymentになった場合、実際のデプロイ処理が開始されず、デプロイ履歴に記録されないことがあります。その場合でも、Activity Logにはエラーが記録されます。([Microsoft Learn][1])

一覧に表示されるのにVMを作れない理由

SKU一覧はリアルタイムの空き容量表ではない

az vm list-skusは、VMサイズの対応リージョン、ゾーン、サブスクリプション制限を確認するための情報です。

一方、実際の配置に必要な物理サーバーの空き状況は変動します。そのため、次の状態は両立します。

  • az vm list-skusでは対象SKUが表示される
  • RestrictionsNone
  • しかし作成時にAllocationFailedが発生する

この場合は、クォータを増やしても解決しない可能性があります。別サイズ、別ゾーン、別リージョンを試すか、時間を置いて再実行します。([Microsoft Learn][5])

ゾーン指定が配置先を狭めている

可用性ゾーンを指定すると、Azureは指定されたゾーン内でのみ配置先を探します。

たとえば、リージョン全体では容量があっても、ゾーン2に空きがなければZonalAllocationFailedになる可能性があります。可用性設計上許容できる場合は、別ゾーンまたはゾーン指定なしの構成を検討します。([Microsoft Learn][5])

ただし、ゾーンを変更すると、ディスク、パブリックIP、ロードバランサー、可用性設計などにも影響します。運用中の構成を変更するときは、VMだけでなく関連リソースのゾーン条件も確認してください。

追加条件によって候補が減っている

VMサイズとゾーン以外にも、次のような条件が配置先を制限することがあります。

  • 近接配置グループ
  • 可用性セット
  • Accelerated Networking
  • エフェメラルOSディスク
  • Ultra Disk
  • Premium SSD v2
  • 特定のディスク構成
  • 既存VMが配置されているクラスター

複数の条件を同時に指定すると、条件を満たす配置先が少なくなり、OverconstrainedAllocationRequestなどのエラーにつながる場合があります。Microsoftは、サイズ、ゾーン、Accelerated Networking、エフェメラルディスク、近接配置グループ、特定ディスクなどを代表的な制約として挙げています。([Microsoft Learn][5])

既存VMのサイズ変更で失敗する場合

既存VMのサイズ変更では、リージョン全体の対応状況だけでなく、現在のVMが配置されているクラスターや可用性セットの条件が影響します。

サイズ変更候補は、次のコマンドで確認できます。

az vm list-vm-resize-options --resource-group "<リソースグループ名>" --name "<VM名>" --output table

このコマンドは、対象VMのサイズ変更候補を一覧表示します。([Microsoft Learn][2])

ただし、候補に表示されたサイズでも、操作時点の物理容量によってはサイズ変更に失敗する可能性があります。

可用性セット内のVMでは、既存の配置先クラスターが希望サイズに対応していないことがあります。停止割り当て解除を伴う対応はサービス停止につながるため、バックアップ、冗長化、メンテナンス時間を確認してから実施してください。

Spot VMだけ作成できない場合

Spot VMは、Azureの余剰容量を利用する仕組みです。利用可能な容量は、VMサイズ、リージョン、時間帯などによって変動します。

容量がなければSpot VMは配置されません。また、作成後もAzureが容量を必要とした場合は削除または停止割り当て解除される可能性があり、通常VMと同じ可用性保証はありません。([Microsoft Learn][6])

Spot固有の問題かを確認するには、同じリージョン、ゾーン、VMサイズで通常VMを作成できるか比較します。

  • 通常VMも失敗する:SKU制限、通常クォータ、共通の容量不足を確認
  • 通常VMは成功し、Spotだけ失敗する:Spot容量、Spotクォータ、上限価格を確認
  • 時間を変えると成功する:一時的な容量不足だった可能性が高い

すぐに容量が必要なシステムや停止できないサービスでは、Spotではなく通常VMを使用します。

原因別の具体的な対処方法

判定結果対処方法
リージョンで対象SKUを確認できない別サイズまたは別リージョンを選ぶ
NotAvailableForSubscriptionが表示される別SKUを選ぶか、Azure SupportへSKUリクエストを出す
特定ゾーンだけ制限されている利用可能な別ゾーンへ変更する
VMファミリーのvCPUクォータ不足対象ファミリーのクォータ増加を申請する
リージョン全体のvCPUクォータ不足リージョン全体の上限を確認し、増加申請または既存リソースを整理する
AllocationFailed再試行、別サイズ、別ゾーン、別リージョンを検討する
ZonalAllocationFailed別ゾーンまたはゾーン指定なしの構成を検討する
Spotだけ失敗する通常VMへ変更するか、サイズ・ゾーンを柔軟にする
既存VMのサイズ変更だけ失敗するaz vm list-vm-resize-optionsと配置制約を確認する
常に容量を確保したいオンデマンド容量予約を検討する

必要なリージョンやゾーンでSKUがサブスクリプションに提供されていない場合、MicrosoftはAzure SupportへのSKUリクエストを案内しています。([Microsoft Learn][1])

Azure Supportへ依頼するときに整理する情報

サポートへ依頼する前に、次の情報を整理しておくと状況を説明しやすくなります。

  • サブスクリプションID
  • リージョン
  • 可用性ゾーン
  • 希望するVMサイズ
  • 必要な台数
  • 必要な合計vCPU数
  • 通常VMかSpot VMか
  • 新規作成、起動、サイズ変更のどれか
  • エラーコード
  • エラーメッセージ
  • Correlation ID
  • 失敗した日時とタイムゾーン
  • 別サイズや別ゾーンでの結果
  • az vm list-skusRestrictions
  • az vm list-usageの現在値と上限
  • 業務上、別リージョンや別ゾーンを利用できない理由

サポートへ提出する画像やログからは、パスワード、SSH秘密鍵、アクセストークン、回復キー、SASトークンなどを削除してください。

よくある切り分けの失敗

ポータルのVMサイズ一覧だけで判断する

ポータルに表示されることと、実際に配置できることは同じではありません。サブスクリプション制限、ゾーン制限、クォータ、物理容量を分けて確認します。

RestrictionsがNoneなら必ず作れると思う

Restrictions: Noneは、一覧上の制限が表示されていないことを示すだけです。リアルタイムの容量確保まで保証するものではありません。

クォータ申請とSKUリクエストを混同する

クォータ増加は、利用可能なVMファミリーのvCPU上限を増やす申請です。

SKUリクエストは、現在のサブスクリプションで利用できないVMサイズについて、利用可否をAzure Supportへ確認する依頼です。NotAvailableForSubscriptionに対してクォータだけを増やしても、解決しない可能性があります。

別のサブスクリプションで調査する

az vm list-skusはサブスクリプション固有の制限を反映します。作成を試しているサブスクリプションと、CLIで選択しているサブスクリプションが一致しているか確認します。

Spotの失敗を通常VMの障害と同一視する

Spot VMは余剰容量を利用するため、通常VMとは容量条件が異なります。通常VMでの作成可否を比較すると、原因を切り分けやすくなります。

最短で切り分ける手順

希望するAzure VMサイズを作れないときは、次の順番で確認します。

  1. Activity Logで正確なエラーコードとメッセージを確認する
  2. Azure CLIが正しいサブスクリプションを参照しているか確認する
  3. az vm list-skus --allZonesRestrictionsを確認する
  4. az vm list-usageでリージョン全体とVMファミリーのクォータを確認する
  5. Restrictions: Noneでも失敗する場合は、物理容量不足や追加制約を疑う
  6. 別サイズ、別ゾーン、別リージョン、通常VMで比較する
  7. 必要なSKUが制限されている場合はSKUリクエスト、vCPU不足ならクォータ増加を申請する

重要なのは、「SKUとして利用できるか」「クォータが残っているか」「今この瞬間に配置容量があるか」を別々に確認することです。この3点を分離すれば、クォータ申請をすべきか、VMサイズやゾーンを変更すべきか、Azure Supportへ依頼すべきかを判断できます。
[1]: https://learn.microsoft.com/en-us/azure/azure-resource-manager/troubleshooting/error-sku-not-available “SKU not available errors – Azure Resource Manager | Microsoft Learn”
[2]: https://learn.microsoft.com/en-us/cli/azure/vm?view=azure-cli-latest “az vm | Microsoft Learn”
[3]: https://learn.microsoft.com/en-us/azure/quotas/per-vm-quota-requests “Increase VM-family vCPU quotas – Azure Quotas | Microsoft Learn”
[4]: https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/activity-log “Activity Log in Azure Monitor – Azure Monitor | Microsoft Learn”
[5]: https://learn.microsoft.com/en-us/troubleshoot/azure/virtual-machines/windows/allocation-failure “Troubleshooting Azure VM allocation failures – Virtual Machines | Microsoft Learn”
[6]: https://learn.microsoft.com/en-us/azure/virtual-machines/spot-vms “About Azure Spot Virtual Machines – Azure Virtual Machines | Microsoft Learn”

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次