御成門プログラマーの技術日記

Microsoft AzureやAngularなどの技術情報を発信します。

Azure 仮想マシンのコスト節約に期待の機能「休止状態(ハイバネーション)」がGAされたので試してみた。

Azure VMの新機能「休止状態(ハイバネーション)」について試してみました。

Azure 仮想マシンの「休止状態(ハイバネーション)」がGA。どんな機能なのか?

2024年の5月28日に一般提供開始(GA)としてアナウンスされた機能が「VM Hibernation for General Purpose VMs(汎用 VM の VM 休止状態)」です。
General Availability: VM Hibernation for General Purpose VMs | Azure updates | Microsoft Azure

説明として上記のアナウンスの説明を引用します。

汎用 VM の VM 休止状態が、すべてのパブリック リージョンで一般公開されました。休止状態は、Linux と Windows の両方のオペレーティング システムでサポートされています。この機能を使用すると、VM を休止状態にしてコンピューティング コストを節約できます。VM を休止状態にすると、Azure は VM のメモリ内状態を OS ディスクに保持し、VM の割り当てを解除します。その結果、VM が休止状態になったときに料金を支払う必要はなく、VM に関連付けられているストレージとネットワーク リソースに対してのみ料金を支払います。後で VM を起動すると、以前に実行されていたアプリケーションとプロセスが以前の状態から再開され、中断したところからすばやく再開できます。この機能は、既存および新規の VM で使用できます。

キーワードとしては下記のとおりですね。

  • VMを休止状態にしてコンピューティングコスト節約
    • 休止状態ではVMコストは発生しない(ストレージとネットワークリソースのみ発生)
  • 休止時のメモリ状態を保存するため、再開時に以前実行していたアプリやプロセスが休止前の状態で再開可能
  • すべてのパブリックリージョンで一般公開
  • Linux とWindows 両OSでサポート

元々あったAzure VMの停止機能(割り当て解除)も割り当て解除中はコンピューティングコストの費用は発生しませんでしたが、メモリの保持の部分が大きく違いますね。

それでは実際にAzure 仮想マシンの休止状態を試してみようと思います。

Azure 仮想マシンの休止状態を設定してみた

休止状態に対応している構成、OS、サイズを選択すると、
「休止状態を有効にする」のチェックボックスが選択できるようになります(初期状態はOFF)。

Azure Portal に書かれている休止状態の説明。

休止状態にすると、仮想マシンの割り当てを解除し、RAMの内容をルートボリュームに保存することで、時間とコストを節約できます。VMの再起動時には中断したところから再開できます。有効にすると、この機能をサポートする拡張機能が自動的にインストールされます。


この説明を見てもわかるとおり、今までの「停止(割り当て解除)」とは違う点としてRAM内容の保存による再起動時に中断したところから再開できる点があります。それによってコストだけでなく、時間を節約できるようになった点が特筆すべき点ですね。

VM作成後、概要メニューに「休止状態」ボタンが使えるので、そちらから休止状態にすることができます。

休止状態になると状態が「休止状態になりました (割り当て解除済み)」になります。この状態ではコストはかからないということになりますね。

実際9日に作成して休止状態で10日間ほど放置してみましたが、VMの費用は動かしていたときのみしか発生していないですね。
もちろんVM以外のストレージや仮想ネットワークなどの費用はかかりますのでご注意ください。

休止の特徴であるメモリ内容の保存ですが、簡単にVM上でブラウザを開いた状態で一度休止状態にして再開すると、再開時も同じページを開いた状態であることが確認できました。

「停止(割当解除)」と「休止状態」の違いについて

大きな違いはやはり「休止状態」にはメモリの内容保存がある点ですね。
一応「休止状態」にはデメリットとして休止状態中はVMサイズの変更やディスクのデタッチなどはできないのでご注意ください。
詳しい制限事項は公式ページで紹介されています。
learn.microsoft.com

最後に

操作自体も簡単ですし、今までAzure VMにあった「割り当て解除」よりも、コストメリット、時間メリットも期待できる「休止状態(ハイバネーション)」を是非試してみてください。休止状態に関しては自動化やスケジューリングできるかなども気になるので引き続き調べてみようと思います。