これは何

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 のハードウェア要件

大まかな手順

  1. (必要に応じて)AMIの取得
  2. ボリュームの空き容量の確認
  3. ENAドライバーとPVドライバーの更新
  4. インストールメディア入りのボリュームを作成・アタッチ
  5. インスタンスにログインし、Windowsのアップグレードを実施
  6. (必要に応じて)アップグレード後の作業

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年になり、来年のサポート終了に向けてこのような対応をする場面が出てくるかもしれません
その際に、少しでもお役に立てば幸いです

以上です