Windows 仮想マシンの休止状態
[アーティクル] 05/27/2024
2 人の共同作成者
フィードバック
この記事の内容
適用対象: ✔️ Windows VM
休止機能では、使われていない VM を一時停止し、コンピューティング コストを節約できます。 これは、次のようなシナリオでの効果的なコスト管理機能です。
VM を 24 時間 365 日実行する必要がない仮想デスクトップ、Dev/Test サーバー、その他のシナリオ。
アプリケーションのメモリ消費が多いため起動に長い時間がかかるシステム。 このようなアプリケーションは、VM 上で初期化し、休止状態にすることができます。 これらの "事前ウォーミングされた" VM は、必要になったらすぐに起動でき、アプリケーションは目的の状態で既に稼働しています。
休止機能のしくみ
休止状態のしくみについては、「休止状態の概要 」を確認してください。
サポートされている構成
休止機能のサポートは、特定の VM サイズと OS バージョンに制限されます。 休止機能を使う前に、お使いの構成がサポートされていることを確認してください。
休止状態と互換性のある VM サイズの一覧については、休止状態の概要に関する記事の「サポートされる VM のサイズ」セクション を確認してください。
サポートされている Windows バージョン
次の Windows オペレーティング システムでは、休止機能がサポートされています。
Windows Server 2022
Windows Server 2019
Windows 11 Pro
Windows 11 Enterprise
Windows 11 Enterprise マルチセッション
Windows 10 Pro
Windows 10 Enterprise
Windows 10 Enterprise マルチセッション
前提条件と構成に関する制限事項
Windows ページ ファイルを一時ディスクに保存することはできません。
仮想化ベースのセキュリティ (VBS) を必要とする Device Guard や Credential Guard などのアプリケーションは、VM でトラステッド起動を有効にし、ゲスト OS で入れ子になった仮想化を有効にすると、休止機能と共に動作します。
一般的な制限事項、Azure の機能に関する制限でサポートされている VM のサイズ、機能の前提条件については、休止状態の概要に関する記事の「サポートされている構成」セクション を確認してください。
休止状態が有効になっている Windows VM の作成
VM を休止状態にするには、まず VM で機能を有効にする必要があります。
VM の作成時に休止機能を有効にするには、Azure portal、CLI、PowerShell、ARM テンプレート、API を使用できます。
Azure portal で休止機能を有効にするには、VM の作成時に [休止状態を有効にする] ボックスをオンにします。
Azure CLI で休止機能を有効にするには、 --enable-hibernation
を true
に設定して次の az vm create コマンドを実行することで、VM を作成します。
az vm create --resource-group myRG \
--name myVM \
--image Win2019Datacenter \
--public-ip-sku Standard \
--size Standard_D2s_v5 \
--enable-hibernation true
PowerShell で VM を作成するときに休止機能を有効にするには、次のコマンドを実行します。
New-AzVm `
-ResourceGroupName 'myRG' `
-Name 'myVM' `
-Location 'East US' `
-VirtualNetworkName 'myVnet' `
-SubnetName 'mySubnet' `
-SecurityGroupName 'myNetworkSecurityGroup' `
-PublicIpAddressName 'myPublicIpAddress' `
-Size Standard_D2s_v5 `
-Image Win2019Datacenter `
-HibernationEnabled `
-OpenPorts 80,3389
休止状態が有効な VM を作成するには、hibernationEnabled を true
に設定します。
PUT https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/{vm-name}?api-version=2021-11-01
{
"location": "eastus",
"properties": {
"hardwareProfile": {
"vmSize": "Standard_D2s_v5"
},
"additionalCapabilities": {
"hibernationEnabled": true
}
}
}
REST について詳しくは、API の例 に関する記事をご覧ください
休止機能を有効にして VM を作成した後は、VM を正常に休止するようにゲスト OS を構成する必要があります。
既存の Windows VM での休止状態の有効化
既存の VM で休止状態を有効にするために、Azure CLI、PowerShell、または REST API を使用できます。 先に進む前に、ゲスト OS バージョンで Azure での休止状態がサポートされていることを確かめます。 詳細については、「サポート対象のバージョン 」を参照してください。
Note
ページ ファイルが C: drive
にあることを確かめます。 続行する前に、必要に応じてページ ファイルを C: drive
に移動します。
Azure CLI を使用して既存の VM で休止状態を有効にするには、まず、az vm deallocate を使って VM の割り当てを解除します。 VM の割り当てが解除されたら、OS ディスクと VM を更新します。
OS ディスクを更新して supportsHibernation を true
に設定します。 supportsHibernation が既に true
に設定されている場合は、この手順をスキップして次の手順に進むことができます。
az disk update --resource-group myResourceGroup \
--name MyOSDisk \
--set supportsHibernation=true
休止状態を有効にするように VM を更新します。
az vm update --resource-group myResourceGroup \
--name myVM \
--enable-hibernation true
VM を起動し、ゲスト OS での休止状態の構成に進みます。
az vm start --resource-group myResourceGroup \
--name myVM \
Azure PowerShell を使用して既存の VM で休止状態を有効にするには、まず Stop-Az vm deallocate を使って VM を停止します。 VM の割り当てが解除されたら、OS ディスクと VM を更新します。
Stop-AzVM `
-ResourceGroupName 'myResourceGroup' `
-Name 'myVM'
VM が停止したら、OS ディスクを更新して SupportsHibernation を true
に設定します。 SupportsHibernation が既に true
に設定されている場合は、この手順をスキップして次の手順に進むことができます。
$disk = Get-AzDisk `
-ResourceGroupName "myResourceGroup" `
-DiskName "myOSDisk"
$disk.SupportsHibernation = $True
Update-AzDisk `
-ResourceGroupName ‘myResourceGroup' `
-DiskName 'myOSDisk' `
-Disk $disk
VM で休止状態を有効にします。
$vm= Get-AzVM `
-ResourceGroupName "myResourceGroup" `
-Name "myVM"
Update-AzVM `
-ResourceGroupName "myResourceGroup" `
-VM $vm `
-HibernationEnabled
VM を起動し、ゲスト OS での休止状態の構成に進みます。
Start-AzVM `
-ResourceGroupName 'myResourceGroup' `
-Name 'myVM'
ゲスト OS での休止状態の構成
Windows VM の作成時に休止機能を有効にすると、"Microsoft.CPlat.Core.WindowsHibernateExtension" VM 拡張機能が自動的にインストールされます。 この拡張機能は、休止機能対応にゲスト OS を構成します。 この拡張機能は、Azure プラットフォームによって管理されているため、手動でインストールまたは更新する必要はありません。
Note
休止状態が有効になっている VM を作成すると、Azure によってページ ファイルが C: drive
に自動的に配置されます。 既存の VM で休止状態を有効にしている場合、または特殊なイメージを使用している場合は、追加の手順に従って、ページ ファイルが C: drive
に配置されていることを確かめる必要があります。
Note
WindowsHibernateExtension を使うには、Azure VM エージェントを VM にインストールする必要があります。 Azure VM エージェントをオプトアウトする場合は、ゲスト内で powercfg /h /type full を実行して、休止機能用に OS を構成できます。 その後、powercfg /a コマンドを使って、ゲスト内で休止機能が有効になっているかどうかを確認できます。
VM を休止状態にする
休止機能を有効にした VM を作成し、ゲスト OS で休止機能を構成したら、Azure portal、Azure CLI、PowerShell、または REST API を使って VM を休止状態にすることができます。
Azure portal で VM を休止状態にするには、VM の概要ページで [休止状態] ボタンをクリックします。
Azure CLI で VM を休止状態にするには、次のコマンドを実行します。
az vm deallocate --resource-group TestRG --name TestVM --hibernate true
PowerShell で VM を休止状態にするには、次のコマンドを実行します。
Stop-AzVM -ResourceGroupName "TestRG" -Name "TestVM" -Hibernate
上記のコマンドを実行した後、「Y」と入力して続けます。
Virtual machine stopping operation
This cmdlet will stop the specified virtual machine. Do you want to continue?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): Y
REST API を使って VM を休止状態にするには、次のコマンドを実行します。
POST
https://management.azure.com/subscriptions/.../providers/Microsoft.Compute/virtualMachines/{vmName}/deallocate?hibernate=true&api-version=2021-03-01
休止されている VM の状態を確認する
ポータルで VM の状態を確認するには、概要ページで [状態] を調べます。 [Hibernated (deallocated)] (休止状態 (割り当て解除済み)) と表されている必要があります
PowerShell を使って VM の状態を確認するには:
Get-AzVM -ResourceGroupName "testRG" -Name "testVM" -Status
出力は以下のようになります。
ResourceGroupName : testRG
Name : testVM
HyperVGeneration : V1
Disks[0] :
Name : testVM_OsDisk_1_d564d424ff9b40c987b5c6636d8ea655
Statuses[0] :
Code : ProvisioningState/succeeded
Level : Info
DisplayStatus : Provisioning succeeded
Time : 4/17/2022 2:39:51 AM
Statuses[0] :
Code : ProvisioningState/succeeded
Level : Info
DisplayStatus : Provisioning succeeded
Time : 4/17/2022 2:39:51 AM
Statuses[1] :
Code : PowerState/deallocated
Level : Info
DisplayStatus : VM deallocated
Statuses[2] :
Code : HibernationState/Hibernated
Level : Info
DisplayStatus : VM hibernated
Azure CLI を使って VM の状態を確認するには:
az vm get-instance-view -g MyResourceGroup -n myVM
出力は以下のようになります。
{
"additionalCapabilities": {
"hibernationEnabled": true,
"ultraSsdEnabled": null
},
"hardwareProfile": {
"vmSize": "Standard_D2s_v5",
"vmSizeProperties": null
},
"instanceView": {
"assignedHost": null,
"bootDiagnostics": null,
"computerName": null,
"statuses": [
{
"code": "ProvisioningState/succeeded",
"displayStatus": "Provisioning succeeded",
"level": "Info",
"message": null,
"time": "2022-04-17T02:39:51.122866+00:00"
},
{
"code": "PowerState/deallocated",
"displayStatus": "VM deallocated",
"level": "Info",
"message": null,
"time": null
},
{
"code": "HibernationState/Hibernated",
"displayStatus": "VM hibernated",
"level": "Info",
"message": null,
"time": null
}
],
},
REST API を使って VM の状態を確認するには、次のコマンドを実行します。
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/instanceView?api-version=2020-12-01
出力は以下のようになります。
"statuses":
[
{
"code": "ProvisioningState/succeeded",
"level": "Info",
"displayStatus": "Provisioning succeeded",
"time": "2019-10-14T21:30:12.8051917+00:00"
},
{
"code": "PowerState/deallocated",
"level": "Info",
"displayStatus": "VM deallocated"
},
{
"code": "HibernationState/Hibernated",
"level": "Info",
"displayStatus": "VM hibernated"
}
]
休止状態の VM を起動する
停止状態の VM を起動するのとまったく同じように、休止状態の VM を起動できます。 これは、Azure portal、Azure CLI、PowerShell、または REST API を通して行うことができます。
Azure portal を使って休止状態の VM を起動するには、VM の概要ページの [開始] ボタンをクリックします。
Azure CLI を使って休止状態の VM を起動するには、次のコマンドを実行します。
az vm start -g MyResourceGroup -n MyVm
PowerShell を使って休止状態の VM を起動するには、次のコマンドを実行します。
Start-AzVM -ResourceGroupName "ExampleRG" -Name "ExampleName"
REST API を使って休止状態の VM を起動するには、次のコマンドを実行します。
POST https://management.azure.com/subscriptions/../providers/Microsoft.Compute/virtualMachines/{vmName}/start?api-version=2020-12-01
休止機能が有効な VM を Azure Compute Gallery からデプロイする
Compute Gallery イメージから作成される VM で、休止機能を有効にすることもできます。 Gallery イメージに関連付けられている OS のバージョンで、Azure の休止機能がサポートされていることを確認します。 サポートされている OS バージョンの一覧を参照してください。
Gallery イメージを使って休止機能が有効な VM を作成するには、最初に休止機能プロパティを有効にして新しいイメージ定義を作成する必要があります。 Gallery イメージ定義でこの機能プロパティを有効にした後は、イメージ バージョンを作成 し、そのイメージ バージョンを使って休止機能が有効な VM を作成できます。
Note
特殊化された Windows イメージの場合は、Azure が休止機能用にゲスト OS を正常に構成できるよう、ページ ファイルの場所を C: ドライブに設定する必要があります。
既存の VM からイメージ バージョンを作成する場合は、最初にページ ファイルを OS ディスクに移動してから、イメージ バージョンのソースとして VM を使う必要があります。
休止機能プロパティを有効にしてイメージ定義を作成するには、[休止状態を有効にする] チェックボックスをオンにします。
az sig image-definition create --resource-group MyResourceGroup \
--gallery-name MyGallery --gallery-image-definition MyImage \
--publisher GreatPublisher --offer GreatOffer --sku GreatSku \
--os-type linux --os-state Specialized \
--features IsHibernateSupported=true
$rgName = "myResourceGroup"
$galleryName = "myGallery"
$galleryImageDefinitionName = "myImage"
$location = "eastus"
$publisherName = "GreatPublisher"
$offerName = "GreatOffer"
$skuName = "GreatSku"
$description = "My gallery"
$IsHibernateSupported = @{Name='IsHibernateSupported';Value='True'}
$features = @($IsHibernateSupported)
New-AzGalleryImageDefinition -ResourceGroupName $rgName -GalleryName $galleryName -Name $galleryImageDefinitionName -Location $location -Publisher $publisherName -Offer $offerName -Sku $skuName -OsState "Generalized" -OsType "Windows" -Description $description -Feature $features
休止機能が有効な VM を OS ディスクからデプロイする
OS ディスクから作成される VM で、休止機能を有効にすることもできます。 OS ディスクに関連付けられている OS のバージョンで、Azure の休止機能がサポートされていることを確認します。 サポートされている OS バージョンの一覧を参照してください。
OS ディスクを使って休止機能が有効になっている VM を作成するには、OS ディスクで休止機能プロパティが有効になっていることを確認します。 OS ディスクでこのプロパティを有効にするには、API の例を参照してください。 OS ディスクで休止機能プロパティを有効にしたら、その OS ディスクを使って休止機能が有効な VM を作成できます。
PATCH https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/myDisk?api-version=2021-12-01
{
"properties": {
"supportsHibernation": true
}
}
トラブルシューティング
詳細については、休止状態のトラブルシューティング ガイド と Windows VM の休止状態のトラブルシューティング ガイド を参照してください。
よく寄せられる質問
詳細については、「休止状態に関する FAQ 」を参照してください。
次のステップ