Windows Server 2008 R2 のインプレース アップグレードの実施

Windows Server 2008 R2 で実行されている仮想マシン(VM)インスタンスがある場合は、Windows Server 2012 R2 にアップグレードできます。

Windows Server 2008 R2 を実行している VM インスタンスの場合は、Windows Server 2012 R2 へのアップグレードのみが可能です。詳細については、Windows Server 2008 R2 または Windows Server 2008 からのアップグレードをご覧ください。

Windows Server 2008 R2 を Windows Server 2012 R2 より後のバージョンにアップグレードする場合は、次のようにする必要があります。

  1. 最初に Windows Server 2012 R2 へのアップグレードを行います。
  2. その後、Windows Server 2016 または Windows Server 2019 へのアップグレードを行います。

目標

このガイドでは、Windows Server 2008 Datacenter エディションまたは Windows Server 2008 R2 Datacenter エディションから Windows Server 2012 R2 Datacenter エディションへのインプレース アップグレードを行う方法について説明します。

  1. インプレース アップグレードの計画
  2. インプレース アップグレードの実施
  3. インプレース アップグレードのトラブルシューティング
  4. インプレース アップグレード後のクリーンアップ

料金

Windows Server のインプレース アップグレードは無料で実施できます。アップグレード中に消費したリソース(以下を含む)に対してのみ課金されます。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを出すことができます。

始める前に

このガイドでは、次の基本的な知識があることを前提としています。

インプレース アップグレードの計画

Windows Server 2008 R2 で実行されている仮想マシン(VM)インスタンスのインプレース アップグレードを実施することは、インフラストラクチャをモダナイズし、Windows Server 2008 のサポート ライフサイクルの終了が迫っているというリスクを軽減する現実的な方法です。

考慮すべき代替手段

インプレース アップグレードを使用して Windows Server の新しいバージョンに移行する前に、次の制限事項に注意してください。

  • ダウンタイム: 構成やインストールされているソフトウェアによっては、アップグレードに 1 時間以上かかることがあります。アップグレード中は、次の理由で、VM インスタンスへのアクセスが制限されます。

    • VM インスタンスで実行されているワークロードをユーザーは使用できない
    • リモート デスクトップ プロトコル(RDP)を使用できない
    • アップグレードの進行状況とアップグレードの残り時間を確認する方法が限られている
  • リスク: 既存のインスタンスの構成やインストールされているソフトウェアによっては、次のことが発生する可能性があります。

    • アップグレードが失敗する
    • 一部の構成オプションがオーバーライドされる
    • 互換性の問題により、アップグレードされたインスタンスでワークロードが誤動作する

Windows Server 2008 R2 インスタンスで実行されているワークロードに応じて、さまざまな方法でダウンタイムやリスクを軽減できます。

ワークロード アプローチ
VM インスタンスが、次のようなレプリケーションをサポートするワークロードを実行している。
  • Active Directory ドメイン サービス
  • DNS
  • SQL Server
新しいバージョンの Windows Server を実行している新しい VM インスタンスを設定することを検討してから、レプリケーションを使用して既存の VM インスタンスから新しい VM インスタンスにワークロードを移行してください。
1 つの VM インスタンスで多数のワークロードを実行している 各 VM インスタンスが 1 つのワークロードのみを実行するように、これらのワークロードを別個の VM インスタンスに移行することを検討してください。すべてのワークロードを移行できない場合でも、1 つの VM インスタンスで実行されるワークロードの数を減らすことで、インプレース アップグレード中のリスクを軽減できます。

サーバーのエディションとライセンス変更

Google は、Windows Server 2008 R2 Datacenter エディションを公開オペレーティング システム イメージとして提供しています。このイメージに基づく VM インスタンスを Windows Server 2012 R2 Datacenter エディションにアップグレードできます。追加料金は必要ありません。

VM インスタンスで既存のライセンスを使用している場合(お客様所有ライセンスの使用(BYOL))は、Microsoft のドキュメントを確認して、アップグレードできるエディションと、ライセンス変更の資格があるかどうかを確認してください。

プロダクトキー

Windows Server のプロダクトキーは、特定のバージョンに対してのみ有効です。新しいバージョンの Windows Server にアップグレードする場合は、新しいプロダクトキーを指定する必要があります。主なシナリオは次の 2 つです。

  • Google が提供する Windows Server 2008 R2 イメージに基づく VM インスタンスをアップグレードする: このシナリオでは、Google のボリューム ライセンスがこれらの VM インスタンスに基づいてイメージのアクティベーションを処理するため、Windows Server 2012 R2 Datacenter 用に事前定義された KMS クライアント セットアップ キーを使用する必要があります。

  • 既存のライセンスを使用する VM インスタンスをアップグレードする: BYOL では、アップグレードを行うために、ライセンス ベンダーからカスタム プロダクトキーを取得する必要があります。

インストール メディア

Google が提供する Windows Server 2008 R2 イメージで作成された VM インスタンスをアップグレードするには、Windows Server 2012 のボリューム ライセンス メディアを使用する必要があります。Windows Server 2012 のボリューム ライセンス メディアにアクセスするには、windows-install-media イメージ ファミリーの公開イメージに基づいて永続ディスクを作成します。次に、アップグレードを開始する前に、このディスクを 1 つ以上の VM インスタンスに接続してから、アップグレードを行います。詳細については、インストール メディアの接続をご覧ください。

既存のライセンスを使用し、VM インスタンスでインポートされたディスクまたはイメージを使用する場合は、インポートされたディスクまたはイメージに Windows Server 2008 R2 をインストールするために使用したメディアタイプに一致するインストール メディアを使用します。

その他の前提条件

アップグレードを開始する前に、前提条件と制限事項について Microsoft のドキュメントを確認してください。

インプレース アップグレードの実施

次のセクションでは、VM インスタンスを Windows Server 2012 R2 にアップグレードするプロセスについて説明します。

スナップショットの作成

アップグレードを開始する前に、なんらかのエラーが発生した場合に安全な状態に戻すことができるように、VM インスタンスのスナップショットを作成することをおすすめします。

アップグレード中の上りトラフィックのブロック

Windows Server 2012 R2 の一般提供リリース以降、Microsoft はさまざまなセキュリティ更新プログラムをリリースしました。Windows Server 2012 R2 にアップグレードしても、これらのセキュリティ更新プログラムは自動的にインストールされない場合があります。アップグレードが完了したら、Windows Update を使用して、不足しているセキュリティ更新プログラムをダウンロードしてインストールする必要があります。

セキュリティ更新プログラムのダウンロードとインストールにはかなりの時間がかかる可能性があります。この間 Windows Server インスタンスはセキュリティ エクスプロイトに対して脆弱になる可能性があります。リスクを軽減するために、VM インスタンスへの不要な上りトラフィックをすべてブロックすることを検討してください。方法は次のとおりです。

  1. インターネット インフォメーション サービス(IIS)やリモート デスクトップ プロトコル(RDP)などの外部サービスへのアクセスを許可するファイアウォール ルールを一時的に無効にします。

  2. ハイブリッド接続または Cloud IAP TCP トンネリングを使用して RDP にアクセスし、ポート 3389 を外部に公開する必要がないようにします。

  3. Virtual Private Cloud(VPC)内から不要なポートへのアクセスを一時的にブロックするファイアウォール ルールを作成します。

Windows Server の構成の準備

Windows Server 2008 R2 の VM インスタンスの構成を確認します。

  1. RDP クライアントを使用して VM インスタンスに接続します。

  2. Windows Update を使用して Windows Server が最新であることを確認します。

  3. アップグレードを妨げる可能性がある、または Windows Server 2012 R2 と互換性のないウィルス対策、スパイウェア対策、その他のエージェントを無効またはアンインストールします。

インストール メディアの接続

アップグレードを行う前に、Windows Server 2012 R2 のインストール メディアを VM インスタンスに接続します。Google Cloud では、CD または ISO ファイルを直接マウントすることはサポートされていません。Google が提供するイメージを使用できます。

  1. Google Cloud Console で、[Cloud Shell をアクティブにする] Cloud Shell をアクティブにします。 ボタンをクリックして、Cloud Shell を開きます。

    Google Cloud Console に移動

  2. デフォルトのプロジェクト ID を設定します。[PROJECT_ID] は、Compute Engine プロジェクトの名前に置き換えます。

        gcloud config set project [PROJECT_ID]
        
  3. インストール メディアに基づいてディスクを作成します。[ZONE] は、VM インスタンスが配置されているゾーンの名前に置き換えます。

        gcloud compute disks create win-installers --image-family=windows-install-media --image-project=compute-image-tools --zone=[ZONE]
        

    このコマンドは、win-installers というディスクをプロジェクトに追加します。このディスクは VM インスタンスには接続されません。

  4. 必要に応じてディスクを複数の VM インスタンスに接続できるように、読み取り専用(ro)モードを使用して、ディスクを VM インスタンスに接続します。[INSTANCE_NAME] は、アップグレードする VM インスタンスの名前に置き換えます。[ZONE] は、VM インスタンスが配置されているゾーンの名前に置き換えます。

        gcloud compute instances attach-disk [INSTANCE_NAME] --disk=win-installers --mode=ro --zone=[ZONE]
        

応答ファイルの準備

デフォルトでは、Windows セットアップにより、アップグレード中のさまざまな時点で入力を求めるプロンプトが表示されます。アップグレード中は RDP を使用して VM インスタンスに接続できないため、要求された入力を提供できず、アップグレードがストールする可能性があります。これらのプロンプトを表示しないようにするには、応答ファイルを提供して無人モードでアップグレードを行います。

応答ファイルは、Windows セットアップに次のことを指示します。

  • すべてのユーザー入力プロンプトを表示しない
  • Windows Server 2012 R2 の正しいエディションを選択する
  • Windows Server 2012 R2 に適したプロダクトキーを指定する

応答ファイルを次のように準備します。

  1. RDP クライアントを使用して VM インスタンスに接続します。詳細については、インスタンスへの接続をご覧ください。

  2. Windows エクスプローラーを開きます。

  3. C: ドライブのルート ディレクトリに Windows.setup フォルダを作成します。

  4. ファイル拡張子を表示するように Windows エクスプローラーを構成します。

  5. C:\Windows.setup フォルダに、メモ帳などのテキスト エディタを使用して、次の内容を含む unattend.xml というファイルを作成します。

    <?xml version="1.0" encoding="utf-8"?>
          <unattend xmlns="urn:schemas-microsoft-com:unattend">
            <settings pass="windowsPE">
              <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State">
                <UpgradeData>
                  <Upgrade>true</Upgrade>
                    <WillShowUI>Never</WillShowUI>
                </UpgradeData>
                <ImageInstall>
                  <OSImage>
                    <WillShowUI>OnError</WillShowUI>
                    <InstallTo>
                      <DiskID>0</DiskID>
                      <PartitionID>1</PartitionID>
                    </InstallTo>
                    <InstallFrom>
                      <Path>install.wim</Path>
                      <MetaData>
                        <Key>/IMAGE/NAME</Key>
                        <Value>Windows Server 2012 R2 SERVERDATACENTER</Value>
                      </MetaData>
                    </InstallFrom>
                  </OSImage>
              </ImageInstall>
              <ComplianceCheck>
                <DisplayReport>OnError</DisplayReport>
              </ComplianceCheck>
              <UserData>
                <AcceptEula>true</AcceptEula>
                <ProductKey>
                  <!-- See https://docs.microsoft.com/en-us/windows-server/get-started/kmsclientkeys -->
                  <Key>W3GGN-FT8W3-Y4M27-J84CP-Q3VJ9</Key>
                </ProductKey>
              </UserData>
            </component>
          </settings>
        </unattend>
        
  6. C:\Windows.setup フォルダに、メモ帳などのテキスト エディタを使用して、次の内容を含む setup-prep.ps1 というファイルを作成します。

        $ErrorActionPreference = "Stop"
        Write-Host "== Enabling EMS access ===================================" `
             -ForegroundColor Black -BackgroundColor Yellow
    
        $SvchostPath = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost'
        $SvchostServices = (Get-ItemProperty -Path $SvchostPath).netsvcs
        $SvchostServices += 'sacsvr'
        Set-ItemProperty -Path $SvchostPath -name netsvcs `
            -value $SvchostServices -type MultiString
    
        & bcdedit /emssettings EMSPORT:2 EMSBAUDRATE:115200 | Out-Default
        & bcdedit /ems on  | Out-Default
    
        Write-Host "== Updating Google drivers and packages ==================" `
             -ForegroundColor Black -BackgroundColor Yellow
    
        & googet -noconfirm install google-compute-engine-auto-updater  | Out-Default
        & googet -noconfirm install google-compute-engine-driver-gga    | Out-Default
        & googet -noconfirm install google-compute-engine-driver-gvnic  | Out-Default
        & googet -noconfirm install google-compute-engine-driver-netkvm | Out-Default
        & googet -noconfirm install google-compute-engine-driver-pvpanic| Out-Default
        & googet -noconfirm install google-compute-engine-driver-vioscsi| Out-Default
        & googet -noconfirm install google-compute-engine-sysprep       | Out-Default
        & googet -noconfirm install google-compute-engine-vss           | Out-Default
    
        Write-Host "== Synchronizing time ====================================" `
             -ForegroundColor Black -BackgroundColor Yellow
    
        Start-Service W32time
        & w32tm /resync | Out-Default
    
        Write-Host "== Restoring TCP timeout and route to metadata server ====" `
             -ForegroundColor Black -BackgroundColor Yellow
    
        $TcpParams = 'HKLM:\System\CurrentControlSet\Services\Tcpip\Parameters'
        New-ItemProperty -Force -Path $TcpParams -Name 'KeepAliveTime' `
           -Value 300000 -PropertyType DWord
    
        & route add 169.254.169.254 mask 255.255.255.255 0.0.0.0 -p | Out-Default
    
        Write-Host "== Refreshing Windows license ============================" `
             -ForegroundColor Black -BackgroundColor Yellow
        & 'C:\Program Files\Google\Compute Engine\sysprep\activate_instance.ps1' | Out-Default
    
        Write-Host "== Completed =============================================" `
             -ForegroundColor Black -BackgroundColor Yellow
        

アップグレードの開始

アップグレードを開始するには:

  1. 管理者特権でのコマンド プロンプトを開きます。

    • [スタート] メニューで [コマンド プロンプト] を右クリックし、[管理者として実行] を選択します。
  2. 先ほど作成した setup-prep.ps1 スクリプトを実行します。スクリプトにより、最新の Google ドライバ パッケージがインストールされます。このパッケージは、Windows Server のアップグレードを成功させるために重要です。また、スクリプトにより、特定の Compute Engine の設定が適用され、緊急管理サービス(EMS)コンソールへのアクセスが可能になります。

        powershell -ExecutionPolicy Bypass -file c:\Windows.setup\setup-prep.ps1
        

    アップグレード プロセスでは、次の警告が表示されることがあります。その場合は無視してかまいません。

        [package name] or a newer version is already installed on the system
        
  3. 作業ディレクトリをインストール メディアに変更します。

        cd /d d:\*2012*\sources
        
  4. Windows セットアップを起動し、先ほど作成した unattend.xml ファイルを渡します。

        setup.exe /unattend:c:\Windows.setup\unattend.xml /EMSPort:COM2 /emsbaudrate:115200
        

    アップグレードを無人モードで実行しているため、セットアップ ウィザードにより、すぐにファイルのコピーが開始されます。

    約 5 分後、マシンが再起動し、RDP が切断されます。

アップグレード プロセスの確認

VM インスタンスのマシンタイプと Windows Server の構成によっては、アップグレードが完了するまでに 10 分から 60 分かかる場合があります。その間、シリアルポート出力でステータスを確認できます。

  1. Cloud Shell で、次のコマンドを実行して起動プロセスを確認します。

        gcloud compute instances tail-serial-port-output [INSTANCE] --zone=[ZONE]
        

    [INSTANCE] は VM インスタンスの ID に置き換え、[ZONE] は VM インスタンスが配置されているゾーンの名前に置き換えます。

  2. マシンが 4 回再起動するまで待ちます。VM インスタンスの構成によっては、これらの再起動が発生するまでに 30 分以上かかることがあります。次のような出力で再起動を確認できます。

        SeaBIOS (version 1.8.2-20190620_103534-google)
        Total RAM Size = 0x00000001e0000000 = 7680 MiB
        CPUs found: 2     Max CPUs supported: 2
        
  3. 4 回目の再起動後、次の行が表示されるまで待ちます。

        GCEMetadataScripts: Finished running startup scripts.
        

アップグレード後の手順の実施

VM インスタンスに接続して、アップグレードが正常に完了したことを確認できます。

  1. RDP クライアントを使用して VM インスタンスに接続します。詳細については、インスタンスへの接続をご覧ください。

  2. ローカル管理者権限を持つユーザー アカウントを使用してログインします。

  3. マシンで Windows Server 2012 R2 が実行されるようになったことを確認します。

    1. [スタート] ボタンを右クリックします。
    2. [実行] を選択します。
    3. winver と入力して [OK] をクリックします。
  4. [バージョン情報] ダイアログ ボックスに、VM インスタンスが Windows Server 2012 R2 を実行していることが示されていることを確認します。

  5. 管理者特権でのコマンド プロンプトを開きます。

    1. [スタート] ボタンを右クリックします。

    2. [コマンド プロンプト(管理者)] を選択します。

  6. setup-prep.ps1 スクリプトを実行して、アップグレード中に失われた可能性がある特定の Compute Engine の設定を再適用します。

        powershell -ExecutionPolicy Bypass -file c:\Windows.setup\setup-prep.ps1
        

    アップグレードにより、次の警告が表示される場合がありますが、無視してかまいません。

        [package name] or a newer version is already installed on the system
        
  7. unattend.xml ファイルまたは setup-prep.ps1 スクリプトは不要になったため、必要に応じて C:\Windows.setup フォルダを削除できます。

  8. VM インスタンスを再起動して、すべての変更を有効にします。再起動が完了するまでに 1~2 分かかることがあります。その後、VM インスタンスに再度接続できます。

インストール ディスクの接続解除

VM インスタンスからインストール ディスクを接続解除できます。

  • Cloud Shell で、VM インスタンスからインストール ディスクを接続解除します。

        gcloud compute instances detach-disk [INSTANCE_NAME] --disk=win-installers
        

    [INSTANCE_NAME] は、VM インスタンスの名前に置き換えます。

更新プログラムのインストールとアクセスの復元

アップグレードが完了したら、Windows Update を実行して、セキュリティ更新プログラムをダウンロードしてインストールします。これらの更新プログラムをインストールする手順は次のとおりです。

  1. RDP クライアントを使用してマシンに接続します。詳細については、インスタンスへの接続をご覧ください。

  2. Windows Update を使用して最新の Windows の更新プログラムをインストールします。このプロセス中に、VM インスタンスを複数回再起動する必要がある場合があります。

  3. アップグレード前に無効にしたエージェント、ウィルス対策ソフトウェア、マルウェア対策ソフトウェアを再度有効にします。

  4. VM インスタンスへの上りトラフィックをブロックしている場合は、元のファイアウォール ルールを復元できます。

インプレース アップグレードのトラブルシューティング

Windows セットアップの実行中は、RDP を使用して VM インスタンスに接続できません。アップグレードが失敗した、または進行していないと思われる場合は、次の方法を順番に使用して状況を診断します。

シリアルポート出力を確認する

Windows セットアップではシリアルポートのログは出力されませんが、シリアルポート出力を使用して、VM インスタンスの再起動と起動ステータスを確認できます。

アップグレード中は、再起動が 4 回発生します。最初の再起動から 30 分以上経過しても進行しない場合、アップグレードは失敗した可能性があります。

CPU と I/O の指標を確認する

Windows Server のアップグレードの実行は、CPU とディスク I/O に負荷がかかるオペレーションです。CPU と I/O の指標を確認すると、セットアップが進行中かどうかがわかります。

Google Cloud Console で CPU と I/O の指標を表示します。

  1. Cloud Console で、アップグレード中のインスタンスをクリックします。

    Cloud Console に移動

  2. [モニタリング] タブをクリックします。

緊急管理サービス コンソールに接続する

Windows セットアップの実行中と実行後の両方で、緊急管理サービス(EMS)コンソールに接続できます。EMS コンソールを使用して、Windows セットアップのログファイルイベントログを確認し、アップグレードが進行中であるか、発生した可能性のあるエラーに関する情報を確認します。

WinRM を使用してリモートで接続する

RDP または EMS を使用した接続が失敗した場合は、WinRM を使用してリモート PowerShell セッションを確立できます。

  1. 同じ VPC 内の別の Windows Server インスタンスに接続します。

  2. PowerShell を開きます。

  3. リモート PowerShell セッションを確立します。

        Enter-PSSession -ComputerName [INSTANCE-NAME] -UseSSL -SessionOption (New-PsSessionOption -SkipCACheck) -Credential (Get-Credential)
        

    [INSTANCE-NAME] は、アップグレードしようとしているインスタンスの名前に置き換えます。

  4. 認証情報の入力を求められたら、管理者ユーザー アカウントのユーザー名とパスワードを入力します。

  5. リモート PowerShell セッションを使用して、Windows セットアップのログファイルイベントログを確認します。

ログファイルをオフラインで分析する

Windows リモート管理(WinRM)を使用してインスタンスに接続できない場合は、アップグレードをキャンセルして、別の VM インスタンスからログファイルを分析できます。方法は次のとおりです。

  1. VM インスタンスを停止します。

    Windows Server が応答しない場合は、数分かかることがあります。

  2. インスタンスからブートディスクを接続解除します。

  3. 新しい一時的な Windows Server インスタンスを作成し、元のインスタンスのブートディスクを追加ディスクとして接続します。

  4. 一時的な Windows Server インスタンスを使用して、アップグレードしようとしたインスタンスのセットアップ ログファイルとイベント ログファイルを分析します。

  5. 分析が完了したら、ディスクを一時的なインスタンスから接続解除し、元の VM インスタンスにブートディスクとして再接続します。

RDP のトラブルシューティング

RDP のトラブルシューティングについては、RDP のトラブルシューティングをご覧ください。

Windows Server インスタンスのトラブルシューティング

Windows Server インスタンスのトラブルシューティングについては、Windows インスタンスのヒントとトラブルシューティングをご覧ください。

クリーンアップ

このプロセスの完了後に請求が発生しないようにするには、インストール ディスクを削除します。

インストール ディスクの削除

インストール ディスクは、Google が提供するイメージに基づいていつでも作成できます。同じゾーンでさらに VM インスタンスをアップグレードする予定がない場合は、インストール ディスクを削除します。

  • Cloud Shell で、前に作成した win-installers ディスクを削除します。

        gcloud compute disks delete win-installers
        

次のステップ