目的・やりたいこと

Windows Server 2012/2012 R2は、2023年10月にサポートが終了するため、サポートが終了する前に最新OSへ移行する必要がある。このため、Windows Server 2012R2からWindows Server 2022へのインプレースアップグレードの手順を用意する。
– どれだけの作業ボリュームがあるのか⇨ざっと2時間
– 何を事前に用意しないといけないか

条件

  • 元のAMIはクイックスタートの無料枠「Microsoft Windows Server 2012 R2 Base」
  • アップグレード先は2019 English⇨2022 Englishのパス(一旦Englishで最新まで移行し、最後に言語設定などをJapaneseに設定する)
  • プロファイルを移行するため、デスクトップエクスペリエンスを選択
  • Standard⇨StandardやStandard⇨DataCenterエディションへのアップグレードは問題ないが、逆のDataCenter→Standardの場合は失敗する
  • 少なくとも 2 つの vCPU と 4GB の RAM を持つインスタンスで行う
    Nitroインスタンスであるc5.large、60GBを選択
  • Windows インスタンス上のルートボリュームに十分な空きディスク容量(10GB以上)があることを確認
  • アンチウイルスとアンチスパイウェアのソフトウェアとファイアウォールを無効にしておく
    Windows Firewallを無効に

参考

注意事項

ログインできなくなった時のために、シリアルコンソール接続の設定をしておく
EC2でシリアルポートアクセスが可能になったのでWindows Serverの緊急管理サービス(EMS)を試してみた

bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200
bcdedit /ems '{current}' on
Restart-Computer -Force

作業の流れ

1.アップグレード予定のシステムの AMI をバックアップまたはテスト用に作成

2.Windows Server インスタンスが最新のネットワークドライバを使用していることを確認

3.ログの時間を確認するときに備え、念のためタイムゾーンを日本時刻に修正

4.EC2Config サービスをアンインストール

5.EC2Launchエージェントをインストール
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/ec2launch-download.html
EC2-Windows-Launch.zip をインスタンス上のディレクトリにダウンロードします。
install.ps1 を EC2-Windows-Launch.zip のダウンロード先と同じディレクトリにダウンロードします。
install.ps1 を実行する
C:\ProgramData\Amazon\EC2-Windows\Launch\Config フォルダがあることを確認

6.AWS Systems Manager SSM Agent をインストール
https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-ssm-win.html
ここから直接ダウンロード

7.左サイドバーのナビゲーションペインで [Elastic Block Store] の [スナップショット] を選択。検索バーのフィルターで、[パブリックスナップショット] を選択

8.「Windows 2022」で検索

9.アップグレードしているシステムアーキテクチャと言語設定に一致するスナップショット「Windows 2019 English Installation Media」を選択

10.[Actions]、[Create Volume] の順に選択

11.[ボリュームの作成] ダイアログボックスで、Windows インスタンスと同一のAZを選択し、[ボリュームの作成] を選択

12.[Actions]、[Attach Volume] の順に選択

13.[ボリュームのアタッチ] ダイアログボックスに、Windows インスタンスのインスタンス ID を入力し、[アタッチ] を選択します。

14.以下の手順に従い、新しいボリュームを使用可能にする
Server Manager > File and Storage Services > Volumes > Disks
追加のディスクを選んでbring online

15.アップグレード直前にもう一度AMIでバックアップを取る
16.Windows PowerShell で、新しいボリュームドライブに切り替えます。インスタンスにアタッチしたインストールメディアボリュームを開き、アップグレードを開始します。

Set-Location D:
./setup.exe /auto upgrade /dynamicupdate disable

17.[イメージの選択]ダイアログで、Windows Server インスタンスの完全インストール SKU 「Windows Server Windows Server 2019 Standard」を選択し、[次へ] を選択

18.[Choose what to keep]でデフォルトで[Keep personal files and apps]を選択

19.「Windowsのインストールを続行すると、表示言語が変更される可能性があります」でOK

20.Windows Server セットアップは、ファイルをコピーして処理します。3分後、リモートデスクトップセッションが終了します。

21.約30分くらいでアップグレード完了

(もし失敗している場合)

3時間経っても「1/2のチェックに合格しました」の状態のまま。よく見ると「インスタンスの接続性チェックに失敗しました」になっていてRDPできない。

アップグレードにかかる時間は、短くて 40 分、長くて数時間かかることがあります。インスタンスは、アップグレードプロセス中、2 つのうち 1 つのステータスチェックに失敗します。アップグレードが完了すると、両方のステータスチェックで成功になります。

スクリーンショットを見てみると、以下の状態になっています。


こういう場合は上記の条件に従っていないため、やり直します。
以下失敗パターン
– 2012Japanese⇨2016Englishは失敗
– 2012Japanese⇨2019Japanese、pingすら通らず。上記画面にて、やはり個人ファイルやアプリの保持を選択できず
– 2012English⇨2016English ping通るもRDPできず

とりあえず2012R2⇨2016へのアップグレードは失敗します。2019だけインストールメディアの形式が違う(isoをマウントしてからexeを実行する形式)だったので、2016や2022のインストールメディアが怪しいです。

22.同様の手順で2019⇨2022へアップグレード完了

23.インプレースアップグレード後の動作確認
– イベントビューアのシステムログでエラーが出てないことを確認

  • C:Windows/setuperr.logというインストール中のセットアップ エラーに関する情報が含まれていログが0(空)であることを確認