Azure Virtual MachinesでWindowsやLinuxをシャットダウンしたのに課金が続く場合、原因の多くはOSだけが停止し、Azure上のコンピュート資源が割り当てられたままになっていることです。
確認すべき状態は「Stopped」ではなく、**「Stopped (deallocated)/停止済み(割り当て解除)」**です。必要な停止承認を取り、データや処理を安全に保存したうえで、Azureポータルから割り当て解除を伴う停止を実行するか、Azure CLIでaz vm deallocateを実行します。
ただし、割り当て解除によって止まるのは主にVMのコンピュート料金です。ディスクや一部のネットワーク資源などは引き続き料金が発生する可能性があるため、請求総額が必ず0円になるわけではありません。([Microsoft Learn][1])
Azure VMを停止したのに課金が続く理由と割り当て解除の確認
Azure VMには、大きく分けて次の2種類の状態があります。
- VM内部のWindowsやLinuxが動作しているかを示す状態
- Azure側で物理ホスト上のコンピュート資源が割り当てられているかを示す状態
OSのスタートメニューやshutdownコマンドからシャットダウンすると、OSは停止します。しかし、Azure側ではVMがホストに割り当てられたままになることがあります。
この状態が「Stopped」です。VMは動作していませんが、Azure上のコンピュート資源が確保されているため、VMインスタンスの料金は継続します。
StoppedとStopped (deallocated)の違い
| Azure上の状態 | VMの状況 | コンピュート料金 |
|---|---|---|
| Running | VMが実行中 | 発生する |
| Stopping | 停止処理中 | 発生する |
| Stopped | OSは停止しているが、ホスト上の資源は割り当て済み | 発生する |
| Deallocating | 割り当て解除処理中 | 原則として発生しない |
| Stopped (deallocated) | VMが停止し、ホスト上の資源も割り当て解除済み | 原則として発生しない |
Microsoftの説明では、Stoppedは「PoweredOff」または「Stopped (Allocated)」とも呼ばれます。一方、Deallocatedは、基盤となるハードウェアの割り当てが解放された状態です。([Microsoft Learn][1])
つまり、課金を判断するときの基準は「OSが停止したか」ではありません。Azureのコンピュート資源が割り当て解除されたかを確認する必要があります。
az vm stopとaz vm deallocateは動作が異なる
Azure CLIには、似た名前のコマンドがあります。
az vm stop -g <resource-group> -n <vm-name>
az vm stopはVMの電源を停止しますが、コンピュート資源の割り当てを解除するコマンドではありません。
課金対象となる割り当てを解除するには、次のコマンドを使用します。
az vm deallocate -g <resource-group> -n <vm-name>
az vm deallocateを実行すると、コンピュート資源の割り当てが解除され、状態がStoppedからStopped (Deallocated)へ変わります。([Microsoft Learn][2])
Azure VMの割り当てを解除する手順
業務サーバーや共有環境では、いきなりコマンドを実行せず、停止による影響を確認してから進めます。
停止前に必要な確認を行う
最低限、次の項目を確認します。
- サーバー停止の承認を得ているか
- 利用者や関係部署への連絡が済んでいるか
- 編集中のファイルや未保存データがないか
- データベースのトランザクションやバッチ処理が動いていないか
- アプリケーションやミドルウェアを正常終了できるか
- 再起動後の確認手順が決まっているか
- 対象のサブスクリプション、リソースグループ、VM名が正しいか
特にデータベースや業務アプリケーションでは、VMを直接停止する前に、アプリケーション側のサービスを正常終了しておくほうが安全です。
Azureポータルで現在の状態を確認する
Azureポータルから確認する場合は、対象のVMリソースを開き、[概要]などの画面に表示される状態を確認します。
| 表示される状態 | 判断 |
|---|---|
| 実行中/Running | VMのコンピュート料金が発生している |
| 停止済み/Stopped | OSは停止しているが、コンピュート料金が続く可能性がある |
| 停止済み(割り当て解除)/Stopped (deallocated) | コンピュート資源は割り当て解除されている |
画面の表記や配置は、Azureポータルの更新、アカウントの種類、権限によって異なる場合があります。単に「停止」と表示されているかではなく、「割り当て解除」まで含まれているかを確認してください。
Instance Viewで実際の電源状態を確認する
Azure CLIを利用できる場合は、Instance Viewから電源状態を確認できます。
az vm get-instance-view \
-g <resource-group> \
-n <vm-name> \
--query "instanceView.statuses[?starts_with(code, 'PowerState/')].[code,displayStatus]" \
-o table
Windowsのコマンドプロンプトなどで複数行入力が難しい場合は、1行で実行します。
az vm get-instance-view -g <resource-group> -n <vm-name> --query "instanceView.statuses[?starts_with(code, 'PowerState/')].[code,displayStatus]" -o table
結果は、次のように判断します。
| コード | 状態 |
|---|---|
PowerState/running | 実行中 |
PowerState/stopped | 停止しているが、割り当て済み |
PowerState/deallocating | 割り当て解除処理中 |
PowerState/deallocated | 割り当て解除済み |
az vm get-instance-viewは、VMのインスタンス情報を取得するAzure CLIコマンドです。配列の固定位置ではなく、PowerState/で始まるコードを抽出すると、プロビジョニング状態と電源状態を区別しやすくなります。([Microsoft Learn][3])
Azureポータルから割り当て解除する
Azureポータルを利用する場合は、対象VMの画面から[停止]を実行します。
実行前に、確認ダイアログの内容を読み、VMの停止だけでなくコンピュート資源の割り当て解除が行われることを確認してください。OS内ですでにシャットダウンしていても、状態がStoppedのままであれば、Azure側から停止操作を実行する必要があります。
操作後は画面を更新し、最終的に次の状態になったことを確認します。
Stopped (deallocated)
または、日本語表示では次のような表記です。
停止済み(割り当て解除)
Azure CLIから割り当て解除する
対象のリソースグループとVM名を確認したうえで、次のコマンドを実行します。
az vm deallocate -g <resource-group> -n <vm-name>
具体例は次のとおりです。
az vm deallocate -g rg-production -n vm-web-01
手動作業では、処理完了前にコマンドが終了する--no-waitを付けずに実行するほうが確認しやすくなります。
複数のAzureサブスクリプションを利用している場合は、誤ったサブスクリプションの同名VMを操作しないように注意してください。
割り当て解除後に状態を再確認する
コマンドが正常終了しても、必ずInstance ViewまたはAzureポータルで状態を再確認します。
az vm get-instance-view \
-g <resource-group> \
-n <vm-name> \
--query "instanceView.statuses[?starts_with(code, 'PowerState/')].[code,displayStatus]" \
-o table
結果に次のコードが含まれていれば、コンピュート資源は割り当て解除されています。
PowerState/deallocated
コマンドがエラーになった場合や状態が変わらない場合は、次の項目を確認します。
- リソースグループ名とVM名に誤りがないか
- 対象サブスクリプションが正しいか
- 停止操作に必要な権限を持っているか
- Azureポータルのアクティビティログに失敗が記録されていないか
- VMが単体VMではなく、Virtual Machine Scale Setsのインスタンスではないか
- ポリシーや自動化処理によって再起動されていないか
ProvisioningStateのSucceededを停止完了の証拠にしない
Azure VMでは、プロビジョニング状態と電源状態が別々に管理されています。
ProvisioningStateは、VMリソースに対して行われた直近のコントロールプレーン操作が成功したかを示す情報です。
provisioningState: Succeeded
この表示は「直近の操作が成功した」という意味であり、VMが停止していることや、コンピュート資源が割り当て解除されたことを意味しません。
| 確認項目 | 分かること |
|---|---|
ProvisioningState/Succeeded | 直近のリソース操作が成功した |
PowerState/stopped | VMは停止しているが、割り当て済み |
PowerState/deallocated | VMが停止し、コンピュート資源も割り当て解除済み |
課金状態を確認するときは、ProvisioningStateではなく、Instance View内のPowerStateを確認します。Microsoftのドキュメントでも、プロビジョニング状態はVMの電源状態とは別の情報として説明されています。([Microsoft Learn][1])
割り当て解除しても残る可能性がある料金
Stopped (deallocated)になれば、VMインスタンスのコンピュート料金は原則として発生しなくなります。
ただし、VMに関連するすべての料金が停止するわけではありません。
OSディスクとデータディスク
VMを停止しても、OSディスクやデータディスクにはデータが保存されています。ディスク資源が存在する限り、その種類や容量に応じた料金が発生する可能性があります。
特に、利用していない検証用VMに大容量または高性能なディスクを接続したままにしていると、VM本体を割り当て解除しても一定の料金が残ります。
一部のネットワーク資源
VMに関連付けたネットワーク資源も、構成によっては料金が残る場合があります。
「VMを止めたのに請求が0円にならない」ときは、VM本体だけでなく、ディスクやネットワーク関連資源を個別に確認してください。Microsoftも、VMが割り当て解除済みであっても、ディスクやネットワークなど一部のAzure資源では料金が継続すると説明しています。([Microsoft Learn][1])
VMのコンピュート料金と関連資源の料金を分けて確認する
請求内容を確認するときは、単に「Azure Virtual Machinesの料金が残っている」と判断せず、リソースやメーターを分けて確認します。
確認の考え方は次のとおりです。
| 確認対象 | 主な確認内容 |
|---|---|
| VMインスタンス | 割り当て解除後もコンピュート使用量が記録されていないか |
| OSディスク | ディスクの種類と容量が適切か |
| データディスク | 未使用のディスクが接続されたままになっていないか |
| ネットワーク資源 | VM停止後も保持している有料資源がないか |
| 同一リソースグループ | 別のVMや関連資源が稼働していないか |
VMの状態確認と請求明細の確認を分けて行うことが重要です。
よくある間違いと正しい判断
| よくある判断 | 実際の扱い |
|---|---|
| Windowsをシャットダウンしたので課金も止まった | Stoppedのままならコンピュート料金が続く |
| ポータルに「停止」と表示されたので問題ない | 「割り当て解除」が含まれているか確認する |
az vm stopを実行したので割り当て解除された | 割り当て解除にはaz vm deallocateを使う |
ProvisioningStateがSucceededなので停止済み | 電源状態とは別の情報 |
| コマンドがエラーなく終了したので確認不要 | Instance ViewでPowerState/deallocatedを確認する |
| 割り当て解除すれば請求総額が0円になる | ディスクや一部ネットワーク資源の料金は残り得る |
Azure VMの課金を確実に止めるための確認手順
OSをシャットダウンしただけでは、Azure VMのコンピュート料金が止まらないことがあります。
まずAzureポータルまたはInstance Viewで現在の状態を確認し、Stoppedであれば、必要な停止承認とデータ保存を済ませてから割り当て解除を実行します。
az vm deallocate -g <resource-group> -n <vm-name>
実行後は、次の状態を必ず確認してください。
PowerState/deallocated
または次のポータル表示です。
Stopped (deallocated)
そのうえで請求が残っている場合は、VM本体のコンピュート料金ではなく、OSディスク、データディスク、一部のネットワーク資源などの料金を個別に確認します。
[1]: https://learn.microsoft.com/en-us/azure/virtual-machines/states-billing “States and billing status – Azure Virtual Machines | 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/ja-jp/cli/azure/vm?view=azure-cli-latest&utm_source=chatgpt.com “az vm”

コメント