執行 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 Datecenter Edition 或 Windows Server 2008 R2 Datacenter Edition 直接升級到 Windows Server 2012 R2 Datacenter Edition:

  1. 規劃直接升級
  2. 執行直接升級
  3. 直接升級疑難排解
  4. 直接升級後清除所用資源

費用

執行 Windows Server 直接升級不需要付費。您只須針對升級期間所耗用的資源付費,包括:

使用 Pricing Calculator 可根據您的預測使用量來產生預估費用。

事前準備

本指南假設您已具備下列基本知識:

規劃直接升級

針對在 Windows Server 2008 R2 上執行的虛擬機器 (VM) 執行個體進行直接升級,是個用來更新基礎架構的務實方法,可降低即將接近終止支援 Windows Server 2008 生命週期可能發生的風險。

其他考慮因素

在您決定使用直接升級以遷移至較新版本的 Windows Server 之前,請注意下列限制事項:

  • 停機時間:視所安裝的軟體和設定而定,升級作業可能需要一小時以上的時間。若要在升級期間存取 VM 執行個體會受到限制,原因如下:

    • 使用者無法使用在 VM 執行個體上執行的工作負載
    • 無法使用遠端桌面通訊協定 (RDP)
    • 檢查升級進度和剩餘時間的方法有限
  • 風險:視現有執行個體的設定和已安裝軟體而定:

    • 升級可能會失敗
    • 會覆寫部分設定選項
    • 不相容問題可能會導致工作負載在已升級的執行個體上無法運作

視 Windows Server 2008 R2 執行個體上執行的工作負載而定,您可以採用不同做法來減少停機時間和風險。

工作負載 做法
您的 VM 執行個體所執行的工作負載有支援複製功能,例如:
  • Active Directory 網域服務
  • DNS
  • SQL Server
可考慮安裝新的 VM 執行個體以執行最新版 Windows Server,然後使用複製功能將工作負載從現有 VM 執行個體轉移到新的 VM 執行個體。
您的 VM 執行個體執行大量工作負載 可考慮將這些工作負載遷移到單獨的 VM 實執行個體,以便讓每個 VM 執行個體僅執行一個工作負載。即使您無法遷移所有工作負載,減少單一 VM 執行個體上執行的工作負載數量,也有助於降低就地升級的風險。

伺服器版本和授權轉換

Google 提供 Windows Server 2008 R2 Datacenter Edition 的公開作業系統映像檔。 您可以利用這個映像檔將 VM 執行個體升級到 Windows Server 2012 R2 Datacenter Edition,而無需支付額外費用。

如果您的 VM 執行個體使用現有授權 (BYOL),請查看 Microsoft 說明文件,判斷可以升級到哪個版本以及是否符合可進行授權轉換的資格。

產品金鑰

Windows Server 產品金鑰僅對特定版本有效。當執行升級到更新版本的 Windows Server 時,必須提供新的產品金鑰。有兩種主要情況:

  • 使用 Google 提供的 Windows Server 2008 R2 映像檔來升級 VM 執行個體:在這種情況下,您必須使用為 Windows Server 2012 R2 Datacenter 預先定義的 KMS 用戶端安裝金鑰,因為 Google 的大量授權會根據這些 VM 執行個體處理映像檔的啟用作業。

  • 升級已加入現有授權的 VM 執行個體:若使用 BYOL 則必須取得授權廠商提供的自訂產品金鑰,才能執行升級。

安裝媒體

如要升級由 Google 所提供 Windows Server 2008 R2 映像檔建立的 VM 執行個體,您必須使用 Windows Server 2012 大量授權媒體。您可以使用 windows-install-media 映像檔系列中的公開映像檔來建立永久磁碟,以存取 Windows Server 2012 大量授權媒體。接著,在開始升級之前,請將這個磁碟附加至一或多個 VM 執行個體,然後執行升級作業。詳情請參閱附加安裝媒體

若要加入現有的授權,且 VM 執行個體使用匯入的磁碟或映像檔,則您使用的安裝媒體必須與在匯入的磁碟或映像檔中安裝 Windows Server 2008 R2 所使用的媒體類型相符。

其他事前準備

在開始升級之前,請先查看 Microsoft 說明文件有關必備條件和潛在限制的資訊:

執行直接升級

以下各節將指導您完成將 VM 執行個體升級到 Windows Server 2012 R2 的過程。

正在建立快照

在開始升級之前,建議您先建立 VM 執行個體的快照,以便在出現任何問題時可以還原到安全狀態:

升級期間封鎖輸入流量

自 Windows Server 2012 R2 推出 GA 版本以來,Microsoft 已發布多項安全性更新。升級到 Windows Server 2012 R2 時,可能不會自動安裝這些安全性更新。升級完成後,您必須使用 Windows Update 下載並安裝缺少的安全性更新。

系統需要一段長時間進行下載及安裝安全性更新,而在這段期間內,Windows Server 執行個體可能會受到安全性漏洞攻擊。如要降低風險,建議您封鎖要進入 VM 執行個體的所有不必要輸入流量。操作說明如下:

  1. 暫時停用所有授予外部服務 (例如 Internet Information Services (IIS) 或遠端桌面通訊協定 (RDP)) 存取權的防火牆規則

  2. 您可以使用混合式連線Cloud IAP TCP Tunneling 來存取遠端桌面通訊協定,這樣就不需要向外公開通訊埠 3389。

  3. 建立防火牆規則,從虛擬私人雲端 (VPC) 暫時禁止存取不重要的通訊埠。

準備 Windows Server 設定

驗證 Windows Server 2008 R2 VM 執行個體的設定:

  1. 使用遠端桌面通訊協定用戶端連接到您的 VM 執行個體

  2. 使用 Windows Update 驗證 Windows Server 是最新版。

  3. 停用或解除安裝可能干擾升級作業或與 Windows Server 2012 R2 不相容的防毒軟體、反間諜軟體和其他代理程式。

附加安裝媒體

在執行升級之前,請先將 Windows Server 2012 R2 安裝媒體附加到 VM 執行個體。Google Cloud Platform (GCP) 不支援直接掛接 CD 或 ISO 檔案,因此您可以使用 Google 提供的映像檔:

  1. 在 Google Cloud Platform Console 中,按一下 [Activate Cloud Shell] (啟用 Cloud Shell) 啟動 Cloud Shell。 按鈕,即開啟 Cloud Shell

    前往 Google Cloud Platform 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. 在唯讀 (ro) 模式下將磁碟附加到 VM 執行個體,以便在必要時可將磁碟附加到多個 VM 執行個體。將 [INSTANCE_NAME] 替換為要升級的 VM 執行個體名稱,並將 [ZONE] 替換為 VM 執行個體所在區域的名稱:

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

準備回應檔案

根據預設,Windows 安裝程式會在升級過程的不同時間點提示需要輸入資訊。由於您在升級期間無法透過遠端桌面通訊協定連線至 VM 執行個體,以致於無法提供要求的輸入資訊而造成升級作業停滯。若要略過這些提示,請提供回應檔案,以便在自動安裝模式下執行升級。

回應檔案會指示 Windows 安裝程式:

  • 略過所有使用者輸入提示
  • 選取正確的 Windows Server 2012 R2 版本
  • 提供適用於 Windows Server 2012 R2 的產品金鑰

準備回應檔案如下所示:

  1. 使用遠端桌面通訊協定用戶端連接到您的 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. 開啟提升權限的命令提示字元:

    • 在 [Start] (開始) 功能表上以滑鼠右鍵按一下 [Command Prompt] (命令提示字元),然後選擇 [Run as administrator] (以系統管理員身分執行)。
  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 分鐘後,電腦將重新啟動,同時遠端桌面通訊協定會斷線。

觀察升級過程

視 VM 執行個體的機器類型和 Windows Server 設定而定,升級作業可能需要 10 到 60 分鐘才能完成。 在此期間,您可以透過序列埠輸出來觀察狀態:

  1. 在 Cloud Shell 中,執行下列指令來觀察啟動程序:

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

    [INSTANCE] 替換為 VM 執行個體的 ID,將 [ZONE] 替換為 VM 執行個體所在區域的名稱。

  2. 等待電腦重新啟動四次。視您的 VM 執行個體設定而定,重新啟動可能需要 30 分鐘或更長的時間。類似以下的輸出內容可讓您辨識電腦是否正在重新啟動:

    SeaBIOS (version 1.8.2-20190620_103534-google)
    Total RAM Size = 0x00000001e0000000 = 7680 MiB
    CPUs found: 2     Max CPUs supported: 2
    
  3. 第四次重新啟動後,請等到以下這一行出現:

    GCEMetadataScripts: Finished running startup scripts.
    

執行升級後的步驟

您現在可以連線至 VM 執行個體,以確認升級作業已順利完成。

  1. 使用遠端桌面通訊協定用戶端連線至 VM 執行個體。詳情請參閱連線至執行個體

  2. 使用具有本機系統管理員權限的使用者帳戶登入。

  3. 確認電腦目前正在執行 Windows Server 2012 R2:

    1. 在 [Start] (開始) 按鈕上按一下滑鼠右鍵。
    2. 選取 [Run] (執行)
    3. 輸入 winver,然後按一下 [OK] (確定)
  4. 確認「關於 Windows」對話方塊表示 VM 執行個體正在執行 Windows Server 2012 R2。

  5. 開啟提升權限的命令提示字元:

    1. 在 [Start] (開始) 按鈕上按一下滑鼠右鍵。

    2. 選取 [Command Prompt (Admin)] (命令提示字元 (系統管理員))

  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
    

    將您的 VM 執行個體名稱替換為 [INSTANCE_NAME]

安裝更新並恢復存取

升級完成後,請執行 Windows Update 以下載並安裝所有安全性更新。若要安裝這些更新,請執行以下步驟:

  1. 使用遠端桌面通訊協定用戶端連線至電腦。詳情請參閱連線至執行個體

  2. 執行 Windows Update 安裝最新的 Windows 更新。 在此過程中,您可能必須多次重新啟動 VM 執行個體。

  3. 重新啟用升級前停用的所有代理程式、防毒或反惡意軟體。

  4. 如果您先前已封鎖輸入流量進入 VM 執行個體,現在可以恢復原本的防火牆規則。

直接升級疑難排解

執行 Windows 安裝程式時,您無法透過遠端桌面通訊協定連線至 VM 執行個體。如果您懷疑升級失敗或沒有進行,請使用以下方法來診斷情況:

查看序列埠輸出內容

Windows 安裝程式不會向序列埠發出任何記錄,但您可以使用序列埠輸出來觀察 VM 執行個體的重新啟動和開機狀態。

在升級過程中,您應該會看到四次重新啟動程序。如果您在首次重新啟動後超過 30 分鐘沒有看到任何進度,可能是因為升級作業失敗。

檢查 CPU 和 I/O 指標

執行 Windows Server 升級需要 CPU 和磁碟 I/O 密集作業。您可以查看 CPU 和 I/O 指標,瞭解安裝程式是否正在進行中。

在 Google Cloud Platform Console 中查看 CPU 和 I/O 指標:

  1. 在 GCP Console 中,按一下要升級的執行個體。

    前往 GCP Console

  2. 按一下 [Monitoring] (監控) 分頁標籤。

連線至緊急管理服務主控台

在執行 Windows 安裝程式的期間及之後,您都可以連線至緊急管理服務 (EMS) 主控台。 使用 EMS 主控台時,請檢查 Windows 安裝程式記錄檔事件記錄中是否指出升級作業仍在進行中,或是可能發生錯誤的相關資訊。

使用 WinRM 遠端連線

如果使用遠端桌面通訊協定或 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 執行個體。

遠端桌面通訊協定疑難排解

如要瞭解對遠端桌面通訊協定進行疑難排解的相關資訊,請參閱遠端桌面通訊協定疑難排解

Windows Server 執行個體疑難排解

如要瞭解對 Windows Server 執行個體進行疑難排解的相關資訊,請參閱 Windows 執行個體的相關提示和疑難排解

清除所用資源

若要避免在完成此過程後產生額外費用,請刪除安裝磁碟。

刪除安裝磁碟

您可以隨時使用 Google 提供的映像檔來建立安裝磁碟。如果您不打算在同一區域中升級其他 VM 執行個體,請刪除安裝磁碟:

  • 在 Cloud Shell 中,刪除先前建立的 win-installers 磁碟:

    gcloud compute disks delete win-installers
    

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Compute Engine