Linux 仮想マシンの休止状態化
[アーティクル] 10/15/2024
4 人の共同作成者
フィードバック
この記事の内容
適用対象: ✔️ Linux VM
休止機能では、使われていない VM を一時停止し、コンピューティング コストを節約できます。 これは、次のようなシナリオでの効果的なコスト管理機能です。
VM を 24 時間 365 日実行する必要がない仮想デスクトップ、Dev/Test サーバー、その他のシナリオ。
アプリケーションのメモリ消費が多いため起動に長い時間がかかるシステム。 このようなアプリケーションは、VM 上で初期化し、休止状態にすることができます。 これらの "事前ウォーミングされた" VM は、必要になったらすぐに起動でき、アプリケーションは目的の状態で既に稼働しています。
休止機能のしくみ
休止状態のしくみについては、「休止状態の概要 」を確認してください。
サポートされている構成
休止機能のサポートは、特定の VM サイズと OS バージョンに制限されます。 休止機能を使う前に、お使いの構成がサポートされていることを確認してください。
休止状態にできる VM サイズの一覧については、休止状態の概要のサポートされる VM のサイズ セクション を確認してください。
サポートされている Linux ディストリビューション
次の Linux オペレーティング システムでは、休止機能がサポートされています。
Ubuntu 22.04 LTS
Ubuntu 20.04 LTS
Ubuntu 18.04 LTS
Debian 11
Debian 10 (バックポート カーネルあり)
RHEL 9.0 以上 (最小カーネル バージョン 5.14.0-70)
RHEL 8.3 以上 (最小カーネル バージョン 4.18.0.240)
前提条件と構成に関する制限事項
Linux VM 用のトラステッド起動では、休止機能はサポートされていません
一般的な制限事項、Azure の機能に関する制限、サポートされている VM のサイズ、機能の前提条件については、休止状態の概要の "サポートされている構成" セクション を確認してください。
休止状態が有効な Linux 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 Ubuntu2204 \
--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 'imageName' `
-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 を構成する必要があります。
既存の Linux VM での休止状態の有効化
既存の VM で休止状態を有効にするためには、Azure CLI、PowerShell、または REST API を使用できます。 先に進む前に、ゲスト OS バージョンで Azure での休止状態がサポートされていることを確認してください。 詳細については、「サポートされている OS バージョン 」を参照してください。
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 での休止状態の構成
VM 構成がサポートされていることを確認したら、以下の 2 つのオプションのいずれかを使用して、Linux VM で休止状態を有効にすることができます。
オプション 1 : LinuxHibernateExtension
オプション 2 : hibernation-setup-tool
LinuxHibernateExtension
Note
hibernation-setup-tool を既にインストール済みである場合は、LinuxHibernateExtension をインストールする必要はありません。 これらは、Linux VM で休止状態を有効にするための冗長な方法です。
Azure portal を使って休止機能対応の VM を作成すると、LinuxHibernationExtension が VM に自動的にインストールされます。
拡張機能がない場合は、Linux VM に LinuxHibernateExtension を手動でインストール して、休止機能用にゲスト OS を構成できます。
Note
RHEL LVM の場合は、ルート ボリュームを拡張し、スワップ ファイルを作成するための十分な領域があることを確認する必要があります。 ボリュームを拡張するには、ディスク拡張ガイドを確認してください 。
Azure CLI を使用して LinuxHibernateExtension をインストールするには、次のコマンドを実行します。
az vm extension set -n LinuxHibernateExtension --publisher Microsoft.CPlat.Core --version 1.0 \ --vm-name MyVm --resource-group MyResourceGroup --enable-auto-upgrade true
PowerShell で LinuxHibernateExtension をインストールするには、次のコマンドを実行します。
Set-AzVMExtension -Publisher Microsoft.CPlat.Core -ExtensionType LinuxHibernateExtension -VMName <VMName> -ResourceGroupName <RGNAME> -Name "LinuxHibernateExtension" -Location <Location> -TypeHandlerVersion 1.0
Note
LinuxHibernateExtension を既にインストール済みである場合は、hibernation-setup-tool をインストールする必要はありません。 これらは、Linux VM で休止状態を有効にするための冗長な方法です。
hibernation-setup-tool パッケージは、Microsoft の Linux ソフトウェア リポジトリ (packages.microsoft.com ) から Linux VM にインストールできます。
Linux ソフトウェア リポジトリを使うには、Microsoft ソフトウェア用の Linux パッケージ リポジトリ に関する記事の手順をご覧ください。
Debian バージョンと Ubuntu バージョンで hibernation-setup-tool を使用するには、git bash を開き、次のコマンドを実行します。
curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo tee etc/apt/trusted.gpg.d/microsoft.asc
sudo apt-add-repository https://packages.microsoft.com/ubuntu/20.04/prod
sudo apt-get update
パッケージをインストールするには、git bash で次のコマンドを実行します。
sudo apt-get install hibernation-setup-tool
RHEL バージョンで hibernation-setup-tool を使用するには、次のコマンドを実行します。
curl -sSL -O https://packages.microsoft.com/config/rhel/9/packages-microsoft-prod.rpm
sudo rpm -i packages-microsoft-prod.rpm
rm packages-microsoft-prod.rpm
sudo dnf update
sudo dnf install hibernation-setup-tool
Note
RHEL LVM の場合は、ルート ボリュームを拡張し、スワップ ファイルを作成するための十分な領域があることを確認する必要があります。 ボリュームを拡張するには、ディスク拡張ガイドを確認してください 。
パッケージが正常にインストールされると、Linux ゲスト OS で休止状態が構成されます。 この VM から新しい Azure Compute Gallery イメージを作成し、そのイメージを使って VM を作成することもできます。 このイメージを使用して作成された VM には休止状態パッケージがプレインストールされており、VM の作成エクスペリエンスが簡素化されます。
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
}
}
トラブルシューティング
詳細については、「休止状態のトラブルシューティング ガイド 」と「Linux VM の休止状態のトラブルシューティング ガイド 」を参照してください。
よく寄せられる質問
詳細については、「休止状態に関する FAQ 」を参照してください。
次のステップ