今後登場するサーバーOS「Windows Server 2022 Azure Edition」は、Hotpatching機能を実装している。下図は日本マイクロソフトが2021年11月末に開催したMicrosoft Azure勉強会のスライドだが、同OSの特徴として「Hotpatching(再起動不要のパッチ適用)」という一文がある。では、Hotpatchingとは何だろうか。Microsoftは11月中旬に概要を解説している。
Windowsユーザーならご承知のとおり、毎月1回もしくはそれ以上の適用を求められる各種更新プログラムは正直、煩雑な存在だ。それでもバグフィックスやセキュリティホールの修正といった主目的を考えると、適用せざるを得ない。企業の場合は対象の更新プログラムの影響範囲を事前調査し、組織内配布の可否を下す業務が発生する。一般ユーザーはPCの再起動もしくはダウンタイムの発生、組織なら加えて業務量の増加につながるわけだ。
組織の負担は置いておくとして、問題となるのはPCの再起動だ。筆者の場合、コロナ禍で記者発表会などがオンライン化し、テキストエディターや画像加工アプリ、録音・録画システムは常に起動している。OSの再起動後はすべてのアプリを手動で起動し直さなければならず、それこそバッチファイルが必要だろう。いずれにせよ常にWindows PCを起動していて、毎日何かしらの作業を行う筆者でも月イチのPC再起動は憂鬱(ゆううつ)なのだ。
更新プログラムの適用後、なぜWindowsの再起動が必要なのか疑問に思うかもしれない。簡単にいうと、各種更新プログラムの適用先は、OSの心臓部となるカーネルモジュールやデバイスドライバーが対象のカーネルモード(リング0)、通常のアプリケーションやモジュールが対象のユーザーモード(リング3)に大別できる。たとえばエクスプローラーのバグを修正する更新プログラムは後者だ。メモリーからアンロードできないカーネルモード関連モジュールが修正対象となる更新プログラムの適用時は、PCを再起動しなければならない。
Microsoftの解説によれば、Hotpachingは修正対象のコードをオンザフライ(直接書き込み)で変更する機能。適用先OSのHotpachingエンジンバージョンやテーブルサイズ、パッチ順序番号などを含むHotpachingテーブルを用意し、対象コードを含むモジュールを修正する仕組みだ。x64/ARMアーキテクチャーをサポートし、Microsoft Azureで稼働する仮想マシンの一部で長らく運用してきたという。
Hotpachingの詳細は公式ブログの解説をご覧いただきたいが、残念なのはWindows Server 2022の機能として提供されていることだ。公式ドキュメントでも、Windows Server 2022 Datacenter: Azure Editionが対象OSであると記載している。厳密にはMicrosoft Azureで動作するWindows Server 2019も対象だ。なお、名称が定まっていないのか、ここでは「Azure Automanage」と呼んでいる。いずれにせよ我々が普段使うWindows 10やWindows 11でHotpatchingの恩恵を受けることはできない。Microsoft Azureで動作するWindows 11 Enterpriseを手始めに対応させ、最終的にはエンドポイントのWindows 11にも実装されることを期待したい。