この記事では古いバージョンの Windows Server を実行する物理サーバーや、古いバージョンの Hyper-V 上の仮想マシンを、オンプレミスに新規導入した Windows Server 2022 ベースの最新のHyper-V環境、Microsoft Azure の IaaS である Azure 仮想マシン(Azure VM)環境、またはオンプレミスに新規に導入した Azure Stack HCI クラスターに仮想マシンとして移行する方法について解説します。
マイクロソフトは、Windows Server および SQL Server 2008/2008 R2 以降、製品ライフサイクルのサポート終了(Endof Support、EoS)後のオプションとして、EoS 後も最大3年間、有料または無料でセキュリティ更新プログラムを受け取ることができる「拡張セキュリティ更新プログラム(Extended Security Updates、ESU)」を提供しています。オンプレミスまたはクラウドの最新の仮想化インフラストラクチャにレガシサーバーを移行することで、ESUを利用してセキュリティを維持しながら、現行システムの運用を継続することができ、次期システムへの移行を並行して検討、構築する時間的猶予を得ることができます。
なお、この記事では、2023年10月10日にサポート終了(End of Support、EoS)を迎えるWindows Server 2012 および Windows Server 2012 R2 の物理サーバーまたは仮想マシンを想定していますが、この手順は後継バージョンの Windoows Server にも適用できます。
※ この記事は全6章から構成されており、現在ご覧いただいているページは第6章です。第1章からご覧になりたい方はこちら。
物理サーバーを仮想化してしまえば、運用環境でその仮想マシンを実行しながら、仮想マシンのコピーを閉じたネットワーク環境で起動して、ゲストOSのアップグレードなど、アプリケーションへの影響を調査しながら、OSやアプリケーションの移行を進めることができます。Hyper-Vでは仮想マシンのチェックポイント機能を利用できるため、問題が発生した場合でも、以前のチェックポイントに簡単にロールバックしてやり直すことができます。このホワイトペーパーの最後は、オンプレミスのHyper-V仮想マシンを対象に、ゲストOSのアップグレードと仮想マシンの最適化について説明します。
以下のドキュメントで説明されているように、あるバージョンのWindows Serverは2つ前のバージョンからの直接的なインプレースアップグレードを、アップグレードパスとしてサポートしています(画面29)。Windows Server 2012は最大でWindows Server 2016へ、Windows Server 2012 R2は最大でWindows Server 2019へ直接的にインプレースアップグレードすることができます。最新のWindows Server 2022にインプレースアップグレードするためには、Windows Server 2016またはWindows Server 2019を経る必要があります。
Windows Serverのアップグレードの概要↓
https://learn.microsoft.com/ja-jp/windows-server/get-started/upgrade-overview
インプレースアップグレードは、古いバージョンのWindows Serverを実行中のサーバーで、新バージョンのインストールメディアからSetup.exeを実行し、引き継ぐ項目として「ファイル、設定、アプリを保持する」を選択します。サポートされるアップグレードパス内のバージョンの、同一エディション、同一言語のWindows Serverで、同じインストールの種類(Server Coreインストールまたはデスクトップエクスペリエンス<旧称、GUI使用サーバー>)を選択することで、インプレースアップグレードを実行できます。エディションの変更はアップグレードインストール後にDISMコマンドやslmgr.vbsスクリプトを使用して行えます。再インストールすることなしで、インストール種類(Server Coreインストールまたはデスクトップエクスペリエンス)の切り替えはできません。
画面29 Windows Server 2012/2012 R2からWindws Server 2022へのインプレースアップグレードはサポートされない
サーバーの役割や機能によっては、インプレースアップグレードで移行できない場合があります。その場合は、旧バージョンのWindows Serverから新バージョンのWindows Serverへ、サーバーの役割や機能、データを移行する手順で移行できる場合があります。
Windows Server の役割と機能のアップグレードと移行↓
https://learn.microsoft.com/ja-jp/windows-server/get-started/upgrade-migrate-roles-features
Windows Server 2016以降、廃止され削除されたサーバーの役割や機能についても注意してください。Windows Server 2012/2012 R2で利用可能な以下の役割や機能については、後継バージョンで廃止、削除されているか、新しいバージョンに置き換えられています。廃止されたものについては、代替のソリューションを検討する必要があります。
Windows Server 2016 で削除された機能または非推奨とされた機能↓
Windows Server 2019 以降で削除された機能または開発されなくなった機能↓
Windows Server 2022 以降で削除された機能または開発されなくなった機能↓
!WSUSサーバーのインプレースアップグレードWindows Server Update Services(WSUS)は、インプレースアップグレードで新バージョンのWindows Serverに移行することができます。ただし、Windows Server 2016からWindows Server 2022へのインプレースアップグレードの際、IISに登録したMIMEの種類が引き継がれないという既知の問題があります。この問題の影響で、2023年3月末からWindows 11バージョン22H2に対して始まるUnified Update Platform(UUP)の更新プログラムが受け取れない場合があります。この問題は、改めてMIMEの種類を追加登録することで解決できます。 SUS might not offer updates to Windows 11, version 22H2↓> |
Active Directoryドメインサービスのドメインコントローラーは、インプレースアップグレードが可能ですが、ID基盤の認証環境のダウンタイムを回避するため、ローリングアップグレード方式で移行することが推奨されています。また、古いバージョンのActive Directoryから移行してきたフォレスト/ドメインの場合、Windows Server 2016におけるフォレスト/ドメイン機能レベル「Windows Server 2003」の非推奨化や、Windows Server 2019におけるファイルレプリケーションサービス(FSR)の削除が最新環境への移行作業を複雑にすることにも注意が必要です。表1に示すように、機能レベル「Windows Server 2003」やFSRを利用しているフォレスト/ドメインの場合、最新バージョンに移行するためには、必ずWindows Server 2016以前のバージョンを経由する必要があります。
表1 SYSVOLレプリケーションの方法とフォレスト/ドメイン機能レベルのサポート範囲の違い
以下の公式ブログの記事は、WIndowsServer 2008 R2からWindows Server 2022までの広い範囲をカバーする詳細なステップ倍ステップガイド(英語)です。
Step-by-Step Guide: Active Directory Migration from Windows Server 2008 R2 to Windows Server 2022↓
Active Directoryについては、Windows Server 2016以降新機能の追加はありませんが、セキュリティ強化を目的とした既定値の変更が段階的に実施されていることにも留意してください。各実施フェーズで既に更新プログラムが提供されていないレガシOSを実行するドメイン参加デバイスはセキュリティ強化の影響を受ける可能性があります。
Latest Windows hardening guidance and key dates
KB5021130: CVE-2022-38023 に関連する Netlogon プロトコルの変更を管理する方法(2022年11月初期展開フェーズ実施済、2023年4月初期適用フェーズ実施済、2023年6月強制移行モードが既定に移行予定、2023年7月強制フェーズ実施予定)
https://support.microsoft.com/help/5021130
KB5014754 - Windows ドメイン コントローラーでの証明書ベースの認証の変更(2022年5月互換モード実施済、2023年4月無効モード削除済、2023年11月に完全適用モード実施予定)
https://support.microsoft.com/help/5014754
KB5020276 - Netjoin: ドメイン参加の強化の変更(2022年10月に実施済)
https://support.microsoft.com/help/5020276
Windows Serverのバージョンや、BIOS/MBRとUEFI/GPTの違いにより、自動設定されるパーティション構成が異なります。最新バージョンのWindowsおよびWindows Serverでは、、BIOS/MBRとUEFI/GPTのどちらも、1台目のディスクの最後尾に回復パーティションが配置される構成になっています。回復パーティションには、Windows回復環境(WinRE)のイメージ(winre.wim)が含まれ、コマンドプロンプトやバックアップのリストア機能など、トラブルチューティングツールを提供します。
UEFI/GPT ベースのハード ドライブ パーティション
BIOS/MBR ベースのハード ドライブ パーティション
インプレースアップグレードを何度か繰り返すと、回復パーティションが新たに追加され、古い回復パーティションが無駄にディスクの一部を占有する状態になってしまいます。Windows Server 2012/2012 R2では、回復パーティションは通常、第1パーティション(UEFI/GPTの場合)またはシステムパーティション(BIOS/MBRの場合)に配置されていました。WinREのイメージのサイズが古い回復パーティションに収まらないことが原因で、C:ドライブが縮小され、そこに新しい回復パーティションがセットアップされることもあります。次の画面(画面30、画面31)は、Windows Server 2012 R2からWindows Server 2022にインプレースアップグレードしたUEFI/GPTベースのシステムのパーティション構成の違いを示しています。アップグレード前の回復パーティションは、アップグレード後は何にも使用されていません。最後尾の回復パーティションが現在有効です。
画面30 インプレースアップグレード前のパーティション構成
画面31 インプレースアップグレード後のパーティション構成
なお、Windows Server 2012 R2からWindows Server 2022への直接的なインプレースアップグレードは正式にはサポートされません。Windows Server 2016やWindows Server 2019を経てWindows Server 2022までインプレースアップグレードした場合、さらに無駄な回復パーティションが増える可能性があります。
ここでは、アップグレード後の最初にある無駄にディスクを占有している回復パーティションを削除する方法を紹介します。具体的には、現在の仮想マシン(第2世代仮想マシン)からC:ドライブのディスクイメージのみをキャプチャして、空の仮想ハードディスクで新規作成した仮想マシンに手動でパーティションを作成し、キャプチャしたイメージをブートパーティションに適用して、EFIシステムパーティションにブート構成を、回復パーティションにWinREをセットアップします。なお、仮想マシン環境であれは、OSのインストールメディアからWindows回復環境(WinRE)を起動できますし、仮想マシンのチェックポイント機能を利用してロールバックしたりもできので、回復パーティションをセットアップしないという選択もできます。
X:\> Dism /Capture-Image /ImageFile:<wimファイルのパス> </wimファイルのパス> /CaptureDir:C:\ /Name:"イメージの説明" |
X:\> wpeutil shutdown |
select disk 0 clean convert gpt create partition efi size=100 format quick fs=fat32 label="System" assign letter="S" create partition msr size=16 create partition primary shrink minimum=650 format quick fs=ntfs label="Windows" assign letter="W" create partition primary format quick fs=ntfs label="Recovery" assign letter="R" set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac" gpt attributes=0x8000000000000001 list volume exit |
第1世代仮想マシンの場合は、DISKPARTを実行し、以下のコマンドを順番に入力してBIOS/MBRベース用のパーティションとボリュームを準備します。または以下のコマンドを記述したCreatePartitions-BIOS.txtファイルを現在のディレクトリに作成し、DISKPART /s .\CreatePartitions-BIOS.txtを実行します。
select disk 0 clean create partition primary size=100 format quick fs=ntfs label="System" assign letter="S" active create partition primary shrink minimum=500 format quick fs=ntfs label="Windows" assign letter="W" create partition primary format quick fs=ntfs label="Recovery image" assign letter="R" set id=27 list volume exit |
Createartitions-UEFI.txtやCreatePartitions-BIOS.txtのテンプレートは、以下のページからコピーすることができます。
展開ラボのサンプルスクリプト
X:\> dism /Apply-Image /ImageFile:<winファイルのパス> /Index:1 /ApplyDir:W:\ </winファイルのパス> |
X:\> W:\Windows\System32\bcdboot W:\Windows /l ja-jp /s S: /f UEFI |
X:\> md W:\work\mount X:\> DISM /mount-image /imagefile:D:\Sources\Install.wim /Index:1 /MountDir:W:\work\mount /ReadOnly X:\> md R:\Recovery\WindowsRE X:\> XCOPY /h W:\work\mount\windows\system32\recovery\winre.wim R:\Recovery\WindowsRE X:\> W:\Windows\System32\reagentc /setreimage /path R:\Recovery\WindowsRE /target W:\Windows X:\> bcdedit /store S:\EFI\Microsoft\boot\BCD /v X:\> W:\Windows\System32\reagentc /enable /osguid {OSのエントリのidentifier} X:\> W:\Windows\System32\reagentc /info /target W:\Windows X:\> DISM /Unmount-Image /MountDir:W:\work\mount /Discard |
X:\> WPEUTIL Reboot |
オンプレミスの仮想化インフラストラクチャで記憶域を効率的に利用したいという場合、容量可変タイプのVHDX(容量可変タイプのVHDは非推奨)を使用するのが便利です。容量可変タイプのVHDXは、実際のディスク使用に応じてサイズが拡張され、自動的に縮小されることはありません。そのため、アップグレードや品質更新プログラムのインストールを繰り返すと、肥大化する場合があります。
仮想ハードディスクの最適化を手動で実行することで、無駄な領域を解放することができます。しかし、「Hyper-Vマネージャー」を使用して仮想ハードディスクの最適化を実行しても、期待通りにサイズが縮小されない場合があります(画面32、画面33、画面34)。回復パーティションがディスクの最後尾に配置されることが原因になる場合もありますが、ほとんどの場合はPowerShellのOptimize-VHDコマンドレットで最適化操作を実行することで、サイズを大幅に縮小できます。
画面32 最適化前のVHDXのサイズ。実際の使用は14GBなのに対して、VHDXのサイズは21GB
画面33 「Hyper-Vマネージャー」の「仮想ハードディスクの編集ウィザード」で「最適化」を実行
画面34 最適化後、1GB程度しか縮小されていない
PowerShellで仮想ハードディスクの最適化を実行するには、次のコマンドラインを実行します。このコマンドラインは、$tatgetvhdに指定した仮想ハードディスクファイルを読み取り専用、ドライブ文字なしでローカルマウントし、Optimize-VHDコマンドレットを2回実行したあと、マウントを解除します。この方法により、大きくサイズを縮小できる場合があります(画面35)。
PS> $targetvhd = "仮想ハードディスクファイルのパス"; ` PS> Mount-VHD $targetvhd -NoDriveLetter -Readonly; ` PS> Optimize-VHD $targetvhd -Mode Quick; ` PS> Optimize-VHD $targetvhd -Mode Quick; ` PS> Dismount-VHD $targetvhd |
画面35 実際のディスク使用(14GB)に近いサイズまで縮小された
なお、Azure VMは容量固定VHDを使用する必要があるため、この方法はAzure VMには適用されません。
仮想ハードディスクのサイズを最大限縮小するには、最適化前にディスククリーンアップ(Cleanmgr.exe9やDISMコマンドを使用してクリーンアップしておくことをお勧めします。特に、ディスククリーンアップは、アップグレードに残る以前のバージョンのWindowsのインストールの残り(C:\Windows.old)を削除するために実行する必要があります(画面36)。次のDISMコマンドは、品質更新プログラムのインストールの繰り返しで肥大化したコンポーネントストア(C:\Windows\WinSxS)のクリーンアップに効果があります。
C:\> DISM /Online /Cleanup-Image /StartComponentCleanup /ResetBase |
画面36 ディスククリーンアップ(Cleanmgr.exe)による「以前のWindowsのインストール」の削除
ーーーーーーーーーーーーーーーーーーーーーーーーーー第6章はここまでーーーーーーーーーーーーーーーーーーーーーーーーーー
こちらのページを含む全6章をまとめたホワイトペーパーをご用意しています。ご希望の方は、以下のフォームよりお申込みください。