こんにちは、さとうなおきです。「週刊Azureなう」では、先週の1週間に発表されたMicrosoft Azureの新機能から、筆者の独断と偏見で選んだトピックについて紹介していきます。
Azure Virtual Machines:インプレースマイグレーション機能
IaaSのAzure Virtual Machinesでは、1台の物理マシンの上で、1つのホストOSと、ざまざまなAzureユーザーがデプロイした複数のゲストOS(VM)が動作しています。VMの管理はAzureユーザーの責任なので、OSのアップデートやそれに伴う再起動はAzureユーザーが管理します。
Azure Virtual Machinesの構成
OSを管理しているのはMicrosoftであり、(Windows Serverが動作している)ホストOSのアップデートや、ホストOS上で動作しているプログラムのアップデートを行う場合があります。一部のアップデートはホストOSの再起動を必要とし、それに伴い同じ物理マシン上で動作しているVMの再起動も必要になります。
1つの可用性セットに属する複数のVMについては、UD(アップデートドメイン、更新ドメイン)ごとに順次ローリングアップデート(再起動)を行うことで、すべてのVMが同時に停止しないことを保証しています。可用性セットに属していないシングルインスタンスのVMについては、事前に通知されたリージョンごとのメンテナンス時間枠の中で一度だけ再起動されます。
Azure Virtual MachinesのホストOSのアップデートについては、Mark Russinovichのブログポストをご覧ください。
今回、Azure Virtual MachinesのホストOSのアップデートで、重要なセキュリティアップデートの際の再起動を不要にするインプレースマイグレーションがすでに導入されていることが発表されました。
従来、ホストOSに対する重要なセキュリティアップデートによって、VMの再起動が発生していました。現在は、ほとんどのVMでインプレースマイグレーションが有効になっています。インプレースマイグレーションは、VMを最長30秒間一時停止するだけであり、一時ディスクやメモリの内容は維持されます。
現在、特定の重要なセキュリティアップデートに対して、この機能が有効化されています。年内の今後のプラットフォームアップデートでは、ホストOSのほとんどのパッチ適用に対して再起動を不要にする予定です。目標は、ホストOSの全てのアップデートに対して再起動を不要にすることです。
Azureユーザから見ると、計画メンテナンス(再起動)の回数が減ることになるので、嬉しいですね。Azure Virtual Machinesの計画メンテナンス全般については、ドキュメント「Azure での仮想マシンに対する計画的なメンテナンス」 (Windows VM、Linux VM) もご覧ください。インプレースマイグレーションについては、「メモリ保護更新」セクションに記述があります。
メモリ保護更新とは
Microsoft Azure の更新のクラスの場合、実行中の仮想マシンに何らかの影響があってもユーザーにはわかりません。これらの更新の多くは、実行中のインスタンスに干渉することがなく更新可能なコンポーネントまたはサービスを対象にしています。これらの更新の一部は、ホストオペレーティングシステムのプラットフォームインフラストラクチャに対する更新であり、仮想マシンの完全な再起動を必要とせずに適用できます。
これらの更新は、インプレースライブ移行("メモリ保護" 更新とも呼ばれます)を実現するテクノロジによって達成されます。更新時、仮想マシンは "一時停止" 状態になり、RAM 内のメモリは保護されます。この状態で、基礎となるホストオペレーティングシステムが必要な更新プログラムと修正プログラムを受信します。仮想マシンは、30秒以内の一時停止で再開されます。再開後、仮想マシンのクロックは自動的に同期されます。
このメカニズムを使用してすべての更新をデプロイできるわけではありませんが、一時停止の期間が短い場合、この方法で更新をデプロイすることにより、仮想マシンへの影響が大幅に軽減されます。
複数インスタンスの更新(可用性セット内の仮想マシンの場合)が、一度に 1つの更新ドメインに適用されます。