これは何
Windows Server 2016は2027年1月12日にサポート終了が予定されています
そのため、現在Windows Server 2016を使用している場合、Windows Server 2022もしくは2025にインプレースアップグレードする必要があります
これは、このインプレースアップグレードを技術検証してみた記事です
なお、今回は2016→2025にアップグレードをしていますが、2016→2022の際も手順・要件はあまり変わりません
今回アップグレードするインスタンス
AMI:Windows_Server-2016-English-Full-Base-2026.01.14
インスタンスタイプ:t3.micro
ストレージサイズ:100GiB
参考とするドキュメント
EC2 Windows インスタンスでのインプレースアップグレードの実行
EC2 Windows インスタンスに ENA ドライバーをインストールする
EC2 Windows インスタンスでの PV ドライバーのアップグレード
Amazon EBSボリュームを使用可能にする
Windows Server のハードウェア要件
大まかな手順
- (必要に応じて)AMIの取得
- ボリュームの空き容量の確認
- ENAドライバーとPVドライバーの更新
- インストールメディア入りのボリュームを作成・アタッチ
- インスタンスにログインし、Windowsのアップグレードを実施
- (必要に応じて)アップグレード後の作業
1. ボリュームの空き容量の確認
※今回は検証環境のためスキップしますが、本来は作業の前にAMIを取得します
Windows Serverのインストールには、ある程度のボリューム空き容量が必要です
Windows Server 2025であれば、最低限32GB の空き容量が求められます(2022も同様)
インスタンスにRDPし、エクスプローラー > This PC でディスク容量を確認し、必要な容量があることを確認します
2. ENAドライバーとPVドライバーの更新
最新バージョンのドライバーをそれぞれインストールします
ENAドライバーの更新
基本的に公式ドキュメントの手順通りにコマンドを実行していきます
TLS 1.2の有効化
最初のドライバーパッケージのインストール時に下記のようなエラーが出ることがあります
PS C:\Users\Administrator> invoke-webrequest https://ec2-windows-drivers-downloads.s3.amazonaws.com/ENA/Latest/AwsEn workDriver.zip -outfile $env:USERPROFILE\AwsEnaNetworkDriver.zip invoke-webrequest : The underlying connection was closed: An unexpected error occurred on a send. At line:1 char:1 + invoke-webrequest https://ec2-windows-drivers-downloads.s3.amazonaws. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebE eption + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
この場合は、TLS 1.2の有効化が必要なので、下記コマンドを実行してTLS 1.2を有効化します
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
最新のドライバーパッケージをダウンロードする
PS C:\Users\Administrator> invoke-webrequest https://ec2-windows-drivers-downloads.s3.amazonaws.com/ENA/Latest/AwsEnaNet workDriver.zip -outfile $env:USERPROFILE\AwsEnaNetworkDriver.zip PS C:\Users\Administrator>
zip アーカイブを抽出する
PS C:\Users\Administrator> expand-archive $env:userprofile\AwsEnaNetworkDriver.zip -DestinationPath $env:userprofile\AwsEnaNetworkDriver PS C:\Users\Administrator>
ENA ドライバーをインストールする
PS C:\Users\Administrator> cd C:\Users\Administrator\AwsEnaNetworkDriver PS C:\Users\Administrator\AwsEnaNetworkDriver> .\install.ps1 Removing all ENA inf files from store... Microsoft PnP Utility Driver package deleted successfully. Driver already installed. successfuly installed "C:\Users\Administrator\AwsEnaNetworkDriver\ena.inf" PS C:\Users\Administrator\AwsEnaNetworkDriver>
インスタンスを再起動する
自動的に再起動が走る場合もありますが、そうでない場合は下記コマンドを実行してインスタンスを再起動します
Restart-Computer
再起動後、「ファイル名を指定して実行」からdevmgmt.msc > Network adapters > Amazon Elastic Network Adapter > プロパティ > ドライバー からバージョンを確認します
最新バージョン(2.11.0.0)になっています
PVドライバーの更新
こちらも公式ドキュメントの手順通りにコマンドを実行していきます
PVドライバーをインストールする
PS C:\Users\Administrator> Invoke-WebRequest https://s3.amazonaws.com/ec2-windows-drivers-downloads/AWSPV/Latest/AWSPVDr iver.zip -outfile $env:USERPROFILE\pv_driver.zip PS C:\Users\Administrator> Expand-Archive $env:userprofile\pv_driver.zip -DestinationPath $env:userprofile\pv_drivers PS C:\Users\Administrator>
もしENAドライバーと同様のTLS 1.2の有効化に関するエラーが出たら、下記コマンドを実行してからドライバーのインストールをします
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
AWSPVDriverSetup.msi を実行する
PS C:\Users\Administrator> cd .\pv_drivers\ PS C:\Users\Administrator\pv_drivers> .\AWSPVDriverSetup.msi PS C:\Users\Administrator\pv_drivers>
上記コマンドを実行すると、ドライバーのアップグレードが実行され、インスタンスが再起動します
今回は、最新バージョンのドライバーがすでにインストールされていたのか、このような画面が出てきましたが、この場合は"Repair"の方を選んでFinishを押せば良いです

インスタンスの再起動が終わったら、下記コマンドを実行してバージョンが最新になっていることを確認します
PS C:\Users\Administrator\pv_drivers> Get-ItemProperty HKLM:\SOFTWARE\Amazon\PVDriver Version : 8.6.0 PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Amazon\PVDriver PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Amazon PSChildName : PVDriver PSDrive : HKLM PSProvider : Microsoft.PowerShell.Core\Registry PS C:\Users\Administrator\pv_drivers>
今回は8.6.0が最新バージョンだったので、問題なく最新バージョンになっているようです
3. インストールメディア入りのボリュームを作成・アタッチ
コンソールでインストールメディア入りのボリュームを作成して、インスタンスにアタッチします
EBS > スナップショット で、「パブリックスナップショット」から「所有者のエイリアス=Amazon」を選びます

欲しいインストールメディアを検索します
今回はWindows2025かつ、英語のものが欲しかったので「Windows 2025 English Installation Media」で検索します

スナップショットを選ぶ際の注意点として、元々のOSの言語とアップグレード後のOSの言語が一致していないと、アップグレードの際にファイルや設定、アプリを引き継げません
検証環境では多少データが消えても問題ないですが、実際の環境では、アップグレード前と後のOSの言語は必ず一致させるようにしましょう
参考ドキュメント:ライセンス バージョンの Windows Server のアップグレード
アクション > スナップショットからボリュームを作成 からボリュームを作成します

注意点としては、インスタンスと同じAZにボリュームを作成すること、アップグレードに必要な容量は確保することです
ボリュームをアタッチします
今回、デバイス名はxvdfを選びました

4. インスタンスにログインし、Windowsのアップグレードを実施
ディスクの確認
スタートボタンを右クリック > Disk Management を開きます
新しくアタッチしたボリュームが表示されていること、オンラインであることを確認します
今回は新しくアタッチしたボリュームのうち、未割り当て(Unallocated)になっているものがあるので、左の青い方のボリュームを右クリック > Extend Volume をクリックし、そのままウィザードで操作を進めて未割り当ての領域を割り当てしましょう



Windowsのアップグレードを実施
アタッチしたボリュームにディレクトリを切り替えて、下記コマンドを実行してアップグレードを実行します
PS C:\Users\Administrator> cd D:\ PS D:\> .\setup.exe /auto upgrade /dynamicupdate disable PS D:\>
このようにウィザードが出てくるので、「(Desktop Experience)」がついているものをどれか選びます
今回はWindows Server 2025 Datacenter(Desktop Experience)を選びます

ライセンスには同意するを選択

アップグレードが始まるとOSの再起動が始まるので、しばらく待ちます(私の場合は1時間程度かかりました)

再起動が完了したら、Settings > SystemでOSのバージョンが Windows Server 2025 Datacenter になっていることを確認します

6. アップグレード後の作業
アップグレードが完了したら、必要に応じて以下の作業を実施してください
- 3. で作成したEBSボリュームをインスタンスからデタッチ・削除
- Windows Updateの実施
など。ただし、必須ではありません
以上が、Windows Server 2016をWindows Server 2025にインプレースアップグレードする手順です
2026年になり、来年のサポート終了に向けてこのような対応をする場面が出てくるかもしれません
その際に、少しでもお役に立てば幸いです
以上です