對 Windows 執行個體上的 PV 驅動程式進行故障診斷 - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

對 Windows 執行個體上的 PV 驅動程式進行故障診斷

以下是您可能遇到的舊版 Amazon EC2映像和 PV 驅動程式問題的解決方案。

Windows Server 2012 R2 在執行個體重新開機後遺失網路及儲存體連線能力

重要

此問題只會發生在 2014 年 9 月之前AMIs提供的 。

2014 年 9 月 10 日之前提供的 Windows Server 2012 R2 Amazon Machine Images (AMIs) 可能會在執行個體重新啟動後失去網路和儲存連線。 AWS Management Console 系統日誌狀態中的錯誤:「偵測主控台輸出的 PV 驅動程式詳細資訊有困難」。連線能力遺失是由「隨插即用清理」功能造成的。此功能會每 30 天掃描並停用非使用中的系統裝置。此功能會將EC2網路裝置錯誤地識別為非作用中,並從系統中移除。當發生此狀況時,執行個體便會在重新開機後遺失網路連線能力。

針對您懷疑受到此問題影響的系統,您可以下載及執行就地驅動程式升級。若您無法執行就地驅動程式升級,您可以執行協助程式指令碼。指令碼會判斷您的執行個體是否受到影響。如果受影響的 Amazon EC2 網路裝置尚未移除,指令碼會停用隨插即用清除掃描。若已移除網路裝置,指令碼會修復裝置,停用隨插即用清理掃描,讓您的執行個體重新開機並啟用網路連線能力。

選擇如何修正問題

有兩種方法可以還原受此問題影響執行個體的網路及儲存體連線能力。選擇下列其中一種方法:

方法 必要條件 程序概觀
方法 1 - 增強聯網 增強型聯網僅適用於需要 C3 執行個體類型的虛擬私有雲端 (VPC)。若伺服器目前使用的並非 C3 執行個體類型,您必須暫時變更它。 您將伺服器執行個體類型變更為 C3 執行個體。增強聯網便可讓您連線到受影響的執行個體並修正問題。在修正問題之後,您再將執行個體變更回原始的執行個體類型。此方法通常比方法 2 更快,也較不容易導致使用者錯誤。執行 C3 執行個體時,您將需要支付額外的費用。
方法 2 - 登錄組態 建立或存取第二個伺服器的能力。變更登錄設定的能力。 您將根磁碟區從受影響的執行個體分離,再將其連接到不同的執行個體、連線,並在登錄中進行變更。執行額外的伺服器時,您將需要支付額外的費用。此方法比方法 1 慢,但此方法可在方法 1 無法解決問題時使用。

方法 1 - 增強聯網

  1. 在 開啟 Amazon EC2主控台https://console.aws.amazon.com/ec2/

  2. 在導覽窗格中,選擇 Instances (執行個體)。

  3. 尋找受影響的執行個體。選取執行個體,並依序選取 Instance state (執行個體狀態)Stop instance (停止執行個體)

    警告

    停止執行個體時,在任何執行個體存放區磁碟區的資料都會清除。若要保留執行個體存放區磁碟區的資料,請將資料備份至持久性儲存。

  4. 在執行個體停止後,建立備份。選取執行個體,依序選取 Actions (動作)Image and templates (映像和範本),然後選取 Create image (建立映像)

  5. 將執行個體類型變更為任何 C3 執行個體類型。

  6. 啟動實例。

  7. 使用遠端桌面連線至執行個體,然後將 AWS PV 驅動程式升級套件下載至執行個體。

  8. 解壓縮資料夾的內容,然後執行 AWSPVDriverSetup.msi

    執行 後MSI,執行個體會自動重新啟動,然後升級驅動程式。執行個體最多可能會在 15 分鐘內無法使用。

  9. 升級完成後,且執行個體在 Amazon EC2主控台中通過兩個運作狀態檢查後,請使用遠端桌面連線至執行個體,並確認已安裝新的驅動程式。在裝置管理員中,於 Storage Controllers (儲存控制器) 下,尋找 AWS PV Storage Host Adapter (AWS PV 儲存體主機控制器)。確認驅動程式版本與驅動程式版本歷史記錄表格中列出的最新版本相同。如需詳細資訊,請參閱AWS PV 驅動程式套件歷史記錄

  10. 停止執行個體,並將執行個體變更回原始的執行個體類型。

  11. 啟動執行個體,繼續一般的使用。

方法 2 - 登錄組態

  1. 在 開啟 Amazon EC2主控台https://console.aws.amazon.com/ec2/

  2. 在導覽窗格中,選擇 Instances (執行個體)。

  3. 尋找受影響的執行個體。選取執行個體,並依序選取 Instance state (執行個體狀態)Stop instance (停止執行個體)

    警告

    停止執行個體時,在任何執行個體存放區磁碟區的資料都會清除。若要保留執行個體存放區磁碟區的資料,請將資料備份至持久性儲存。

  4. 選擇 Launch Instance (啟動執行個體),在與受影響的執行個體相同的可用區域中建立暫時性的 Windows Server 2008 或 Windows Server 2012 執行個體。請不要建立 Windows Server 2012 R2 執行個體

    重要

    若您沒有在與受影響的執行個體相同的可用區域內建立執行個體,您將無法將受影響執行個體的根磁碟區連接到新的執行個體。

  5. 在導覽窗格中,選擇 Volumes (磁碟區)

  6. 尋找受影響執行個體的根磁碟區。分開磁碟區,再將磁碟區連接至先前建立的暫時執行個體。使用預設裝置名稱 (xvdf) 連接它。

  7. 使用遠端桌面連接至暫時性執行個體,然後使用 Disk Management 公用程式將磁碟區變成可用

  8. 在暫時性執行個體上,開啟 Run (執行) 對話方塊,輸入 regedit,然後按 Enter 鍵。

  9. 在登錄編輯器導覽窗格中,選擇 HKEY_Local_Machine ,然後從檔案功能表中選擇 Load Hive

  10. Load Hive (載入 Hive) 對話方塊中,導覽至 Affected Volume (受影響的裝置)\Windows\System32\config\System 然後在 Key Name (索引鍵名稱) 對話方塊中輸入暫時性的名稱。例如,輸入 OldSys。

  11. 在登錄編輯程式的導覽窗格中,尋找下列索引鍵:

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Control\Class\4d36e97d-e325-11ce-bfc1-08002be10318

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Control\Class\4d36e96a-e325-11ce-bfc1-08002be10318

  12. 對於每個金鑰,按兩下 UpperFilters,輸入 的值XENFILT,然後選擇確定

    受影響磁碟區的登錄機碼。
  13. 尋找下列索引鍵:

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Services\XENBUS\Parameters

  14. 使用 名稱 ActiveDevice 和下列值建立新的字串 (REG_SZ):

    PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01

  15. 尋找下列索引鍵:

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Services\XENBUS

  16. Count 從 0 變更為 1。

  17. 尋找並刪除下列索引鍵:

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Services\xenvbd\StartOverride

    HKEY_LOCAL_MACHINE \your_temporary_key_name\ControlSet001\Services\xenfilt\StartOverride

  18. 在登錄編輯程式導覽窗格中,選擇一開始開啟登錄編輯程式時建立的暫時性機碼。

  19. File (檔案) 選單中,選擇 Unload Hive (解除載入 Hive)。

  20. 在磁碟管理公用程式中,選擇先前連接的磁碟機,開啟內容 (按右鍵) 選單,然後選擇 Offline (離線)

  21. 在 Amazon EC2主控台中,將受影響的磁碟區從暫時執行個體分離,然後使用裝置 name /dev/sda1 將其重新連接至 Windows Server 2012 R2 執行個體。您必須指定此裝置名稱,將磁碟區指定為根磁碟區。

  22. 啟動實例。

  23. 使用遠端桌面連線至執行個體,然後將 AWS PV 驅動程式升級套件下載至執行個體。

  24. 解壓縮資料夾的內容,然後執行 AWSPVDriverSetup.msi

    執行 後MSI,執行個體會自動重新啟動,然後升級驅動程式。執行個體最多可能會在 15 分鐘內無法使用。

  25. 升級完成後,且執行個體在 Amazon EC2主控台中通過兩個運作狀態檢查後,請使用遠端桌面連線至執行個體,並確認已安裝新的驅動程式。在裝置管理員中,於 Storage Controllers (儲存控制器) 下,尋找 AWS PV Storage Host Adapter (AWS PV 儲存體主機控制器)。確認驅動程式版本與驅動程式版本歷史記錄表格中列出的最新版本相同。如需詳細資訊,請參閱AWS PV 驅動程式套件歷史記錄

  26. 刪除或停止您在此程序中建立的暫時性執行個體。

執行補救指令碼

若您無法執行就地驅動程式升級或遷移至較新的執行個體,您可以執行補救指令碼來修正隨插即用清理任務造成的問題。

執行補救指令碼
  1. 在 開啟 Amazon EC2主控台https://console.aws.amazon.com/ec2/

  2. 在導覽窗格中,選擇 Instances (執行個體)。

  3. 選取您要執行補救指令碼的執行個體。依序選擇 Instance state (執行個體狀態)Stop instance (停止執行個體)

    警告

    停止執行個體時,在任何執行個體存放區磁碟區的資料都會清除。若要保留執行個體存放區磁碟區的資料,請將資料備份至持久性儲存。

  4. 在執行個體停止後,建立備份。選取執行個體,依序選取 Actions (動作)Image and templates (映像和範本),然後選取 Create image (建立映像)

  5. 依序選擇 Instance state (執行個體狀態)Start instance (啟動執行個體)

  6. 使用遠端桌面連線至執行個體,然後將 RemediateDriverIssue.zip 資料夾下載至執行個體。

  7. 解壓縮資料夾的內容。

  8. 根據 Readme.txt 檔案中的說明執行補救指令碼。檔案位於您擷取 RemediateDriverIssue.zip 的資料夾中。

TCP 卸載

重要

此問題不適用於執行 AWS PV 或 Intel 網路驅動程式的執行個體。

預設會針對 Windows 中的 Citrix PV 驅動程式啟用TCP卸載AMIs。如果您遇到傳輸層級錯誤或封包傳輸錯誤 (如 Windows Performance Monitor 上所示),例如當您執行某些SQL工作負載時,您可能需要停用此功能。

警告

停用TCP卸載可能會降低執行個體的網路效能。

停用 Windows Server 2012 和 2008 的TCP卸載
  1. 連線到您的執行個體,並以本機管理員登入。

  2. 若您使用 Windows Server 2012,請按 Ctrl+Esc 存取 Start (開始) 畫面,然後選擇 Control Panel (控制台)。若您使用 Windows Server 2008,請選取 Start (開始),然後選取 Control Panel (控制台)

  3. 依序選擇 Network and Internet (網路和網際網路)Network and Sharing Center (網路和共用中心)

  4. 選擇 Change adapter settings (變更介面卡設定)

  5. 以滑鼠右鍵按一下 Citrix PV Ethernet Adapter #0 (Citrix PV 乙太網路卡 #0),然後選取 Properties (屬性)

    區域連線屬性。
  6. Local Area Connection Properties (區域連線屬性) 對話方塊中,選擇 Configure (設定) 以開啟 Citrix PV Ethernet Adapter #0 Properties (Citrix PV 乙太網路卡 #0 屬性) 對話方塊。

  7. 進階索引標籤上,停用每個屬性,正確 TCP/UDP 檢查總和值 除外。若要停用屬性,請從 Property (屬性) 中選取,然後從 Value (值) 選取 Disabled (停用)

  8. 選擇 OK (確定)。

  9. 從命令列視窗中執行下列命令。

    netsh int ip set global taskoffload=disabled netsh int tcp set global chimney=disabled netsh int tcp set global rss=disabled netsh int tcp set global netdma=disabled
  10. 重新啟動執行個體。

時間同步

在 2013.02.13 Windows 發行之前AMI,Citrix Xen 訪客代理程式可能會錯誤地設定系統時間。這可能會導致您的DHCP租用過期。若您在連線到您的執行個體時發生問題,您可能需要更新代理程式。

若要判斷您是否已具有更新後的 Citrix Xen 客體代理程式,請檢查 C:\Program Files\Citrix\XenGuestAgent.exe 檔案是否來自 2013 年 3 月。若此檔案的日期在該日期之前,請更新 Citrix Xen 客體代理程式服務。如需詳細資訊,請參閱升級您的 Citrix Xen 客體代理程式服務

利用超過 20,000 個磁碟的工作負載會因為CPU瓶頸而IOPS降級

如果您使用的是執行 AWS PV 驅動程式的 Windows 執行個體,且利用超過 20,000 個 IOPS,而且您遇到錯誤檢查碼 ,則可能會受到此問題的影響0x9E: USER_MODE_HEALTH_MONITOR

AWS PV 驅動程式中的磁碟讀取和寫入 (IOs) 分為兩個階段:IO 準備IO 完成。依預設,準備階段會在單一任意核心上執行。完成階段會在核心 0 上執行。處理 IO 所需的運算量因其大小和其他屬性而有所差異。有些在準備階段IOs使用更多運算,有些則在完成階段使用。當執行個體驅動超過 20,000 IOPS時,準備或完成階段可能會導致瓶頸,其中其執行CPU的 處於 100% 容量。準備或完成階段是否變成瓶頸取決於應用程式IOs使用的 特性。

從 AWS PV 驅動程式 8.4.0 開始,準備階段和完成階段的負載可以分散到多個核心,消除瓶頸。每個應用程式使用不同的 IO 屬性。因此,套用下列其中一個組態可能會提升、降低或不會影響應用程式的效能。套用任何這些組態之後,請監控應用程式,以確認其符合您所需的效能。

  1. 必要條件

    開始此疑難排解程序之前,請先確認下列先決條件:

  2. 觀察執行個體上的CPU負載

    您可以使用 Windows Task Manager 檢視每個 上的負載CPU,以判斷磁碟 IO 的潛在瓶頸。

    1. 確認您的應用程式正在執行,並處理與生產工作負載類似的流量。

    2. 使用 連線至您的執行個體RDP。

    3. 選擇執行個體上的 Start (開始) 功能表。

    4. 請在 Start (開始) 功能表中輸入 Task Manager,以開啟 Task Manager (任務管理員)。

    5. 如果 Task Manager (任務管理員) 顯示 Summary View (摘要檢視),請選擇 More details (更多詳細資訊),以展開詳細檢視。

    6. 選擇 Performance (效能) 索引標籤。

    7. CPU 在左側窗格中選取 。

    8. 在主側窗格中的圖形上按一下滑鼠右鍵,然後選取 Change graph to (將圖形變更為) > Logical processors (邏輯處理器),以顯示每個個別核心。

    9. 視執行個體上有多少核心而定,您可能會看到隨著時間的推移顯示CPU負載的行,或者您可能只是看到一個數字。

      • 如果您看到圖形顯示一段時間內的負載,請尋找方塊幾乎完全陰影CPUs的位置。

      • 如果您在每個核心上看到一個數字,請尋找一致顯示 95% 以上的核心。

    10. 請注意核心 0 或不同的核心正在經歷繁重的負載。

  3. 選擇要套用的組態
    組態名稱 套用此組態的時間 備註
    Default configuration 工作負載正在驅動低於 20,000 的 IOPS,或者其他組態未改善效能或穩定性。

    針對此組態,IO 會發生在幾個核心上,這可能會藉由增加快取區域性並減少內容切換,從較小工作負載獲益。

    Allow driver to choose whether to distribute completion 工作負載正在驅動超過 20,000 個,IOPS並在核心 上觀察到中等或高負載0 建議針對使用 PV 8.4.0 或更新版本並利用超過 20,000 個 的所有 Xen 執行個體進行此組態IOPS,無論是否遇到問題。
    Distribute both preparation and completion 工作負載正在驅動超過 20,000 個 IOPS,而且允許驅動程式選擇分佈無法改善效能,或者除 以外的核心0正在經歷高負載。 此組態會啟用 IO 準備和 IO 完成的分發。
    注意

    未同時分發 IO 完成 (設定DpcRedirection 而不設定NotifierDistributed) 的情況下,我們建議您不要分發 IO 準備,因為當準備階段平行執行時,完成階段會對準備階段過載較為敏感。

    登錄金鑰值
    • NotifierDistributed

      0 或不存在 – 完成階段將在核心 0 上執行。

      1 – 驅動程式選擇執行完成階段或核心 0,或者每個連接磁碟有另一個核心。

      2 – 驅動程式會在每個連接磁碟的另一個核心上執行完成階段。

    • DpcRedirection

      0 或不存在 – 準備階段將會在單一、任意核心上執行。

      1 – 準備階段分發在多個核心之間。

    預設組態

    使用 8.4.0 之前的 AWS PV 驅動程式版本套用預設組態,或在套用本節中的其他其中一個組態後觀察到效能或穩定性降低。

    1. 使用 連線至您的執行個體RDP。

    2. 以管理員身分開啟新的 PowerShell 命令提示。

    3. 執行下列命令以移除 NotifierDistributedDpcRedirection 登錄金鑰。

      Remove-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Name NotifierDistributed
      Remove-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Name DpcRedirection
    4. 將執行個體重新開機。

    允許驅動程式選擇是否要分配完成

    設定 NotiferDistributed 登錄金鑰,以允許 PV 儲存驅動程式選擇是否要分發 IO 完成。

    1. 使用 連線至您的執行個體RDP。

    2. 以管理員身分開啟新的 PowerShell 命令提示。

    3. 執行下列命令以設定 NotiferDistributed 登錄金鑰。

      Set-ItemProperty -Type DWORD -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Value 0x00000001 -Name NotifierDistributed
    4. 將執行個體重新開機。

    分配準備和完成

    設定 NotifierDistributedDpcRedirection 登錄金鑰,以始終分發發準備和完成階段。

    1. 使用 連線至您的執行個體RDP。

    2. 以管理員身分開啟新的 PowerShell 命令提示。

    3. 執行下列命令以設定 NotifierDistributedDpcRedirection 登錄金鑰。

      Set-ItemProperty -Type DWORD -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Value 0x00000002 -Name NotifierDistributed
      Set-ItemProperty -Type DWORD -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Value 0x00000001 -Name DpcRedirection
    4. 將執行個體重新開機。