
かつて山市良と呼ばれたおじさんのブログ
セイテクエンジニアのブログ かつて山市良と呼ばれたおじさんのブログ vol.87 Windows Server 2012 R2からServer 2025へのアップグレード、やってみた
2025年02月27日配信
2025年04月22日更新
執筆者:山内 和朗
Windows Serverはこれまで2つ前のバージョンからのインプレースアップグレードをサポートしてきましたが、Windows Server 2025は4つ前のWindows Server 2012 R2までアップグレードパスが拡張されたことをこの連載のvol.66で紹介しました。本当にできるものなのか、実際に試してみました。
vol.66 旧バージョンからのアップグレード(Hyper-Vサーバー編)|Windows Server 2025大特集(3)
私は、サポートが終了したWindowsについても、そのWindowsがゲストOSとしてHyper-V VMで動く限り、古いWindowsのVMまたはVHDXを削除せずに保管してあります。2023年10月10日にサポートが終了したWindows Server 2012やWindows Server 2012 R2のVMについても、例外ではありません。2023年10月11日(日本時間)にリリースされた最後のセキュリティ更新プログラム*1をインストールした状態で保管してあります。
*1 拡張セキュリティ更新プログラム(Extended Security Updates《ESU》)契約者は2026年10月13日までセキュリティ更新プログラムが提供されます。
手元にあるVMは、ゲストOSとして「Windows Server 2012 R2 Standard(GUI使用サーバー)」がインストールされており、利用可能なすべてのセキュリティ更新プログラム(2023年10月11日まで)がインストール済みの、インターネットインフォメーションサービス(IIS)の役割がインストールされている環境です。何度か起動してOSの設定の確認などを行ったことはありますが、毎回、1年以上前のチェックポイントの状態に戻しています。このVMをWindows Server 2025にインプレースアップグレードしてみました。これまで、Windows Server 2019やWindows Server 2022からのインプレースアップグレードは経験済みですが、Windows Server 2012 R2からの手順もまったく同じで、アップグレード対象のWindows Serverが起動している状態からインストールメディアの「setup.exe」を選択して、引き継ぐ項目として「ファイル、設定、アプリを保持する」を選択してインストールを進めます(画面1、画面2)。
画面1 Windows Server 2012 R2(GUI使用サーバー)を、Windows Server 2025(デスクトップエクスペリエンス)にインプレースアップグレードする
画面2 互換性問題などで阻まれることなく、インプレースアップグレードが進む
その結果、何の問題もなく、Windows Server 2025にインプレースアップグレードすることができました(画面3)。
画面3 Windows Server 2025へのインプレースアップグレード成功。IISも問題なく動作している
成功の理由は、Hyper-V VMであること(ハードウェアの互換性問題が影響しない)と、シンプルなシステム構成(サーバーの役割やアプリケーションの互換性問題が影響しない)であることが大きいと思います。実際の運用環境ではさまざまな問題に遭遇する可能性があります。Windows Serverは、Windows 10やWindows 11のように、「以前のバージョンに戻す」というロールバックオプションはありません。そのため、インプレースアップグレードを実施する前に、システムイメージのバックアップを取得しておく(VMの場合はチェックポイントを作成しておく)ことを強くお勧めします。
ちなみに、Windows Server 2025のサポートされるアップグレードパスに含まれないWindows Server 2012でも試してみましたが、「0x8007007F - 0x4000D」エラーで失敗しました(画面4)。このエラーの理由がアップグレード対象外だからなのか、他の理由や意味があるのかは、サポート対象外であるため何とも言えません。
画面4 サポート外のWindows Server 2012からのインプレースアップグレードは、重大なエラーで続行できず
Windows Server 2016以降、Windows Serverのバージョンによって、CPU命令や命令セットの要件に追加はありますが、Windows Serverのハードウェア要件は大きく変わっていません。しかし、Windows Server 2012 R2当時のレガシなハードウェアは、WindowsServer 2025の要件を満たしていない可能性が高いと思われます。
Windows Server のハードウェア要件|Windows Server(Microsoft Learn)
例えば、Windows Server 2012 R2でHyper-Vの役割を有効化し、仮想化ホストとして使用していた場合、Windows Server 2025にはインプレースアップグレードできない場合があります。なぜなら、Windows Server 2016以降、それまで必須ではなかった「第2レベルアドレス変換拡張機能(Second Level Address Translation《SLAT》」が、Hyper-Vの役割の必須要件になったからです。ちなみに、クライアントHyper-Vは、Windows 8からSLATが必須になりました。
Windows Server 2012 R2でHyper-Vが動作している場合、OSが稼働している状態でSLATの対応状況を知る方法は私は知りません。例えば、Windows SysinternalsのCoreinfoツールはSLATの対応状況をレポートできますが、Hyper-Vなどのハイパーバイザーがロードされている場合、SLATを含むCPUの仮想化対応機能をレポートしてくれません(画面5)。
Coreinfo|Sysinternals(Microsoft Learn)
画面5 Coreinfoツールはハイパーバイザーが存在する場合、仮想化関連機能をレポートしない(できない)
Hyper-Vを一時的に無効化すれば*2、CoreinfoツールなどでSLATへの対応状況を調べることができますが、システム設定を変更せずに確認する方法を紹介しましょう。それには、Windows回復環境(Windows Recovery Environment《WinRE》)のコマンドプロンプト*3 やWindowsプレインストール環境《Windows Preinstallation Environment《WinPE》)のコマンドプロンプト*4 で、次のコマンドラインを実行します。TRUEが返ってくれば、SLATに対応しているため、Windows Server 2025のHyper-Vにアップグレードすることができます(画面6)。なお、WMICは非推奨のコマンドであり、PowerShellのGet-WmiObjectに置き換えるべきですが*5、WinREのコマンドプロンプトではPowerShellを使用することができないため、WMICを利用しています。また、Hyper-Vなどハイパーバイザーがロードされている場合、このコマンドはSLATに対応していてもFALSEを返します。
WMIC CPU Get SecondLevelAddressTranslationExtensions |
画面6 WinPEのコマンドプロンプトを起動して、SLATの対応状況を調べる
*2 コマンドプロンプト(cmd.exe)で「bcdedit /set hypervisorlaunchtype off & shutdown /r /t 0」を実行して再起動することで、Hyper-Vを一時的にオフにできます。再びオンに戻すには「bcdedit /set hypervisorlaunchtype on & shutdown /r /t 0」を実行して再起動します。
*3 「Shift」キーを押しながら再起動操作をするか、コマンドプロンプト(cmd.exe)で「reagentc /boottore & shutdown /r /t 0」を実行することでローカルにインストールされているWinREを起動することができます。または、Windows/Windows Serverのインストールメディアからサーバーを起動して、「Windowsセットアップ」の「今すぐインストール」の画面まで進み「コンピューターを修復する」をクリックします。
*4 Windows/Windows Serverのインストールメディアからサーバーを起動して、「Windowsセットアップ」が表示されたら、「Shift」+「F10」キーを押すことでWinPEのコマンドプロンプトウィンドウを表示できます。
*5 WMI command line (WMIC) utility deprecation: Next steps|Windows IT Pro Blog(Tech Community)
Windows Serverのサーバーの役割の一部は、インプレースアップグレードで移行できますが、追加の作業が必要な役割や、手動による移行が必要な役割もあります。
Windows Server の役割と機能のアップグレードと移行|Windows Server(Microsoft Learn)
Windows Serverのバージョンが数世代離れていることにも注意が必要です。例えば、上記のドキュメントにある一覧では、Active Directoryはインプレースアップグレードできることになっています。しかし、Active DirectoryのドメインコントローラーをWindows Server 2025にインプレースアップグレードするためには、前提条件としてフォレスト/ドメイン機能レベルが「Windows Server 2016」である必要があります。そのため、Windows Server 2012 R2からWindows Server 2025に直接的にインプレースアップグレードはできません。
アップグレード対象のサーバーで「Windows Server Update Services(WSUS)」を運用している場合は、データベースやコンテンツパスに古いデータが膨大に含まれており、データベースが肥大化して、パフォーマンスが劣化しているかもしれません。インプレースアップグレードするよりも、再構築したほうが良いパフォーマンスを発揮できるでしょう。その場合は、以下の手順が参考になるでしょう。
Windows Server 2012 R2 WSUS から Windows Server 2019 WSUS への移行手順 (WID -> WID の場合)|Japan Microsoft Configuration Manager Support Team Blog
Windows Server 2012 R2から数世代経過しているため、サーバーの役割や機能の非推奨化や削除についても事前に把握しておきましょう。例えば、「SMTPサーバー」の機能(Windows Server 2012で非推奨化)はWindows Server 2012 R2では問題なく利用できましたが、Windows Server 2022で正常に機能しなくなり、Windows Server 2025からは削除されました。
Windows Server 2025 以降で削除された機能または開発されなくなった機能|Windows Server(Microsoft Learn)
※日本語ページには2月27日時点でまだ反映されていませんが、削除された機能「PowerShell 2.0 Engine」が、開発終了(非推奨)リストに移動されました。PowerShell 2.0 Engineは非推奨ですが、Windows Server 2025でも利用できます。
Windows Server 2022 以降で削除された機能または開発されなくなった機能|Windows Server(Microsoft Learn)
Windows Server 2019 以降で削除された機能または開発されなくなった機能|Windows Server(Microsoft Learn)
Windows Server 2016 で削除された機能または非推奨とされた機能|Windows Server(Microsoft Learn)
サードパーティのアプリケーションや独自に開発したアプリケーションの互換性問題もまた、インプレースアップグレードを阻む大きな要因になります。レガシアプリケーションが依存するWin32 APIや.NET FrameworkのAPIは、最新OS環境では利用できなくなっている場合や、仕様が変更になっている可能性があります。運用環境をアップグレードする前に、アプリケーションの互換性テストを実施したり、後継バージョンの利用可能性を調査する必要があるでしょう。
ハードウェア面、ソフトウェア面ともに、インプレースアップグレードの最大のネックは、Windows Serverやテクノロジの世代があまりにも離れていることにつきます。Microsoftがアップグレードパスを広げたからと言って、ハードウェアが完全に互換性を持つVMでない限り、これまでサポートされていなかった3つ以上前のバージョンからのインプレースアップグレードは現実的な選択とは思えません。
Windows Server 2025大特集(1)|...|フォローアップ記事