はじめに
非パブリック環境の機器への踏み台として利用している
Windows Server 2016 がEOLが近い(2027/01/12まで)ため、インプレースアップグレードを試してみる事にしました。
今回はインプレースアップグレードの機能紹介になります。
基本的にはインプレースアップグレードではなく、
最新世代インスタンスを最新のOSで新規に用意することを強く推奨します。
対象
2020年頃の Windows Server 2016 が更新対象になります。
こちらを Windows Server 2025 へ更新していきます。
本機器は踏み台としての利用のみのサーバであるため、
IISやSQLServer等のアプリケーション等は動作していないものになります。
AWS EC2 の Windows における、インプレースアップグレード公式ドキュメント
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/os-inplaceupgrade.html
事前確認事項
- 1 . アップグレードをサポートしているか
利用している Windows Server が、希望するバージョンへのアップグレードに対応しているかの確認が必要です。
今回は Windows Server 2016 -> Windows Server 2025 への更新をします。
Microsoft社のドキュメントで、この場合の更新はyesであるため、更新ができます。
https://learn.microsoft.com/ja-jp/windows-server/get-started/upgrade-overview#which-version-of-windows-server-should-i-upgrade-to
NG例としては、 Windows Server 2012 R2 -> Windows Server 2022 などはNGとなります。 - 2 . 利用しているWindowsの機能と役割が問題ないか
バージョンアップに伴い、Windowsの機能と役割での挙動が変わる場合があります(例 : IISや.NET、Internet Explorer など)
想定シチュエーションでも記載したとおり、今回の環境では踏み台での利用のみであるため、大きな問題にはならない想定になります。逆にいいますと、何らかの常駐プログラムや利用アプリケーション、ウイルス対策ソフトウェアや監査アプリケーション等がある場合
アップグレード後のバージョンで動作するかの確認が必須となります。
また、一般的に
「インプレースアップグレードでOSアップグレード後のアプリケーションサポートはしない」
としているアプリケーションベンダー様も多いため、確認できる場合はこちらについても事前確認を推奨します。 - 3 . インターネットに接続可能な環境か
更新の際、後述のドライバダウンロードや、WindowsUpdateを利用することがあります。
そのためインターネットへの接続可能である必要があります。 - 4 . 数回の再起動と、(アップグレード中の)長時間のサービス断を許容できるか
- 5 . Disk空き領域に余裕があるか
更新データの配置などがあるため、Cドライブに20GBほどはあったほうが安心できます。
具体的な必要容量は環境により異なるため、記載できない旨ご理解ください。 - 6 . インスタンスサイズに余裕があるか
実際に作業時に躓いたポイントになります。
t2.small(2vCPU,2GBmem) で更新時、更新が途中で停止もしくはあまりに長時間の更新となり、途中で断念しています。
更新途中に失敗となった場合再起動すらできない、強制再起動しても起動できないなどの事象も考えられるため、
事前にインスタンスサイズのメモリ量が8GBほどあるもの(t3.large程度)まで上げておくことが無難かと思います。
AWSドキュメント上でも、インスタンスサイズの変更を推奨しています。
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/os-inplaceupgrade.htmlWe recommend performing an operating system upgrade on instances with at least 2 vCPUs and 4GB of RAM. If needed, you can change the instance to a larger size of the same type (t2.small to t2.large, for example)
今回は事前にt2.largeに一時的に変更した上で作業実施しました。
更新後はt3.mediumなどに落としても大丈夫なことを確認しています。
なお、Windows Server 2025 の推奨メモリ量は4GB以上になります。そのためsmallにすることは避けたほうが無難です。
https://learn.microsoft.com/ja-jp/windows-server/get-started/hardware-requirements?tabs=ram&pivots=windows-server-2025#tabpanel_1_ram - 7 . ドライバは最新か確認しておく。
更新後OSでドライバが利用できない可能性や、将来的にインスタンス世代を変更する際に予期せぬ問題になる場合があります。
そのためドライバの更新を行っていない場合、更新が必要です。
後述の手順でも実施します。
実施手順
実際手順
- 1 . AMIイメージの取得
万が一作業失敗時の切り戻し用として、AMIイメージを取得します。
手順については省略します。 - 2 . ドライバ更新
現在の Windows Server インスタンスが持っている AWS ENA 、 PV 、NVMe ドライバが
古い、もしくはそもそも持っていない場合があります。
その場合現行世代のインスタンスが利用できない場合や、予期せぬトラブルになる場合があるため
基本的に最新安定版の利用を推奨します。
アップグレード前に最新版を導入しておくことを推奨します。
また、ドライバ更新に失敗する場合、.NET Framework のバージョン問題などが考えられるため、windowsupdateの実施が必要になる場合があります。
それぞれのドキュメントはこちらになります。 - ■PV
( AWS PV ドライバー であることが多いと思います。)
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Upgrading_PV_drivers.html
|
1 2 3 4 |
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Invoke-WebRequest https://s3.amazonaws.com/ec2-windows-drivers-downloads/AWSPV/Latest/AWSPVDriver.zip -outfile $env:USERPROFILE\pv_driver.zip Expand-Archive $env:userprofile\pv_driver.zip -DestinationPath $env:userprofile\pv_drivers Start-Process -FilePath "$env:userprofile\pv_drivers\AWSPVDriverSetup.msi" |
■ENA
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ena-adapter-driver-install-upgrade-win.html
|
1 2 3 4 5 |
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 invoke-webrequest https://ec2-windows-drivers-downloads.s3.amazonaws.com/ENA/Latest/AwsEnaNetworkDriver.zip -outfile $env:USERPROFILE\AwsEnaNetworkDriver.zip expand-archive $env:userprofile\AwsEnaNetworkDriver.zip -DestinationPath $env:userprofile\AwsEnaNetworkDriver Set-Location "$env:userprofile\AwsEnaNetworkDriver" .\install.ps1 |
自動で再起動しないので、更新後に手動でWindowsの再起動が必要です。

■NVMe
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/aws-nvme-drivers.html
|
1 2 3 4 5 |
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Invoke-WebRequest https://s3.amazonaws.com/ec2-windows-drivers-downloads/NVMe/Latest/AWSNVMe.zip -outfile $env:USERPROFILE\nvme_driver.zip Expand-Archive $env:userprofile\nvme_driver.zip -DestinationPath $env:userprofile\nvme_driver Set-Location "$env:userprofile\nvme_driver" .\install.ps1 -EnableSCSIPersistentReservations $true |
更新後に自動で再起動が実行されます。
(自動再起動になり、スクリーンショットの取得ができていません、、、)
- 3 . 更新用Diskイメージのアタッチ
更新用のDiskイメージをアタッチします。
Windows 2025 Japanese Installation Media で検索し、
出てきたスナップショットイメージをEBSにします。
本記事執筆時は snap-026c037d2821a2ac8 でした。今回EC2インスタンスが1aのAZにあるため、
1aへgp3、暗号化有効でEBSとしてボリュームの作成しています。更新完了後にデタッチとボリューム削除するため、作成されたボリュームIDを控えます
今回 vol-0b6414e0b896210e3 のボリュームIDで作成されました。
このボリュームをWindows Server 2016のインスタンスへアタッチします。


- 4 . アタッチしたディスクのマウント
今回追加したEBSを、有効なドライブとます(オンラインにします)
Windows内の"ディスクの管理"からオンラインに実施でも良いですが、今回はPowerShellで実施します。
オフラインのDiskをすべてオンラインにします。
Cドライブしかないサーバであれば、Dドライブとして自動的にマウントされると思います。12$disk = Get-Disk | Where-Object {$_.OperationalStatus -eq 'Offline'}$disk | Set-Disk -IsOffline $false
Dドライブがあるものであれば、Eドライブ...となるはずです。

- 5 . アップグレードの実施
今回はPowerShellで実施します。
[4.]にて、Dドライブへマウントされた場合で記載しています。
アップグレードが開始されます。12Set-Location "D:\".\setup.exe /auto upgrade /dynamicupdate disable

途中出てくる選択肢として、
|
1 2 3 4 5 |
インストールするイメージ(OSのエディション) -> Windows Server 2025 DataCenter(デスクトップエクスペリエンス) ライセンス条項 -> 同意する |
選択すると、自動的に更新が開始されます。
更新に要した時間を私の場合として残します。
更新中は基本的に利用不能となります。途中でインスタンスの停止や、RDP切断をしないように注意してください。
(再起動で切断されるのは問題ありません)
10:32 更新開始
11:01 自動再起動
(RDP接続はできないが、進行中。気になる場合はインスタンスのスクリーンショット機能で確認できます)

11:20 更新完了
再起動後、Windows Server 2025 では診断データを自動送信するかの確認が表示されます。
送信しない、という選択肢は用意されていないため、「必須のみ」を選択します。

- 6 . windows update の実施
アップグレード後のWindows Updateを実施します。
手順は省略します。 - 7 . 追加ディスクのデタッチ
[4.]で追加したディスクのアンマウントをします。不安な場合はwindowsを終了(EC2でいう停止)を行い、
停止中にEBSをアタッチしたほうが確実です。
今回は vol-0b6414e0b896210e3 のボリュームをデタッチします。 - 8 . デタッチしたボリュームの削除
vol-0b6414e0b896210e3 のボリュームを削除します - 9 . EC2Launch v2 の導入
最新OSの場合、EC2Launch の更新が必要になる場合があるので更新します。
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2launch-v2-migrate.html
更新前は EC2Config か EC2Launch v1 だと思うので、 EC2Launch v2 への移行を行います。
今回の Windows Server 2016 では EC2Launch v1 になっていました。
エラーなく完了すれば問題ありません。1234Invoke-WebRequest https://s3.amazonaws.com/amazon-ec2launch-v2-utils/MigrationTool/windows/amd64/latest/EC2LaunchMigrationTool.zip -outfile $env:USERPROFILE\EC2LaunchMigrationTool.zipExpand-Archive $env:userprofile\EC2LaunchMigrationTool.zip -DestinationPath $env:userprofile\EC2LaunchMigrationToolSet-Location "$env:userprofile\EC2LaunchMigrationTool"./Install.ps1

- 10 . 動作確認
今回は踏み台利用だったので、サーバ内に入れているteratermと、ほかサーバへのRDPを試しました
いずれも問題ないことを確認しています。

- 11 . AMIイメージの取得
動作確認が取れたので、今後に備えての更新直後イメージとして残しておきます。
まとめ
今回は問題なくあっさりと全作業時間としても2時間程度で完了できましたが
環境によって作業時間は大きく変わると思われ、また動作についても異常がある場合も考えられます。
本記事ではあくまで実施例として記事にしていますが、基本的には最新世代インスタンスを最新のOSで新規に用意することを強く推奨します。
投稿者プロフィール
-
2013年入社の平成生まれです。
初めて触ったコンピュータはPC9821でダイヤルアップでした。
その時に鯖落ちや人大杉の対応をしてくださる鯖缶になりたいと憧れ、
みなさんのお役に立てればと思っております!
#今では個人所有のパソコン・サーバだけで20台ほどあります…。
サーバー大好き!










