全部產品
Search
文件中心

Elastic Compute Service:更新Windows執行個體的virtio驅動

更新時間:Sep 25, 2024

Windows執行個體某些操作依賴於鏡像的virtio驅動版本,線上擴容雲端硬碟要求virtio驅動版本大於58011(建立時間早於2019年03月30日的執行個體virtio版本可能小於58011),或查詢雲端硬碟序號要求virtio驅動版本大於58017(建立時間早於2020年05月01日的執行個體virtio版本可能小於58017)。如果當前執行個體的virtio驅動版本不滿足要求,則需要先更新virtio驅動版本才能進行相關操作。本文介紹如何查看並更新Windows執行個體的virtio驅動版本。

使用限制

僅支援為Windows Server 2008及以上版本的作業系統更新virtio驅動。

操作步驟

  1. (可選)建立快照備份資料。

    建議您為Windows執行個體建立快照備份資料,如果更新virtio驅動時造成執行個體異常,可通過快照復原執行個體中的資料。具體操作,請參見建立快照

  2. 關閉第三方殺毒軟體。

    為確保virtio驅動的更新指令碼或雲助手外掛程式順利執行,建議您登入Windows執行個體,臨時關閉執行個體中已安裝的第三方殺毒軟體(執行個體內建的殺毒軟體無需關閉)。如果您確認您的Windows執行個體無需更新virtio驅動或者驅動已成功更新,請及時重啟第三方殺毒軟體。

  3. 查看當前執行個體的virtio驅動版本,根據情境判斷是否需要更新virtio驅動。

    通過PowerShell查看

    1. 遠端連線Windows執行個體。

      具體操作,請參見通過密碼認證登入Windows執行個體

    2. 開啟運行對話方塊。

    3. 輸入powershell進入PowerShell命令列。

    4. 運行以下命令,查看virtio驅動的版本資訊。

      [System.Diagnostics.FileVersionInfo]::GetVersionInfo("C:\Windows\System32\drivers\viostor.sys")
      說明

      viostor.sys是一個與虛擬化環境存放裝置驅動相關的系統檔案,特別是用於Microsoft Hyper-V虛擬機器上的虛擬磁碟控制器。當一個作業系統在Hyper-V平台上作為虛擬機器運行時,viostor.sys驅動會與主機的虛擬化層協同工作,確保客戶機作業系統能夠像操作物理硬碟一樣對虛擬硬碟進行讀寫操作。它是確保虛擬機器磁碟I/O效能和相容性的重要組件之一。

      命令列回顯資訊如下圖所示。virtio版本資訊

      根據ProductVersion末尾編號是否小於5801158017,判斷是否需要更新驅動。

      操作環境

      virtio版本

      操作

      線上擴容雲端硬碟

      大於等於58011

      可以直接線上擴容雲端硬碟,無需更新virtio驅動。具體操作,請參見步驟一:擴容雲端硬碟容量

      小於58011

      無法線上擴容,需繼續執行後續操作更新virtio驅動

      查詢序號

      大於等於58017

      可以直接查看磁碟序號,無需更新virtio驅動。具體操作,請參見查看磁碟序號

      小於58017

      無法直接查詢序號,需繼續執行後續操作更新virtio驅動

    通過系統檔案查看

    1. 遠端連線Windows執行個體。

      具體操作,請參見通過密碼認證登入Windows執行個體

    2. 進入系統目錄C:\Windows\System32\drivers

    3. 按右鍵viostor.sys檔案,選擇屬性,在詳細資料頁簽下查看檔案版本號碼。

      說明

      viostor.sys是一個與虛擬化環境存放裝置驅動相關的系統檔案,特別是用於Microsoft Hyper-V虛擬機器上的虛擬磁碟控制器。當一個作業系統在Hyper-V平台上作為虛擬機器運行時,viostor.sys驅動會與主機的虛擬化層協同工作,確保客戶機作業系統能夠像操作物理硬碟一樣對虛擬硬碟進行讀寫操作。它是確保虛擬機器磁碟I/O效能和相容性的重要組件之一。

      檔案版本號碼

      根據檔案版本末尾編號是否小於5801158017,判斷是否需要更新驅動。

      操作環境

      virtio版本

      操作

      線上擴容雲端硬碟

      大於等於58011

      可以直接線上擴容雲端硬碟,無需更新virtio驅動。具體操作,請參見步驟一:擴容雲端硬碟容量

      小於58011

      無法線上擴容,需繼續執行後續操作更新virtio驅動

      查詢序號

      大於等於58017

      可以直接查看磁碟序號,無需更新virtio驅動。具體操作,請參見查看磁碟序號

      小於58017

      無法直接查詢序號,需繼續執行後續操作更新virtio驅動

    說明

    您也可以登入Security Center控制台,在漏洞公告列表中查看是否存在Windows virtio驅動BUG導致磁碟資料丟失風險更新漏洞,來判斷是否需要更新virtio驅動。

    • 如果不存在該漏洞公告,說明您的阿里雲帳號下沒有需要更新virtio驅動的Windows執行個體,無需再執行後續更新驅動操作。

    • 如果存在該漏洞公告:

      • 如果您的Security Center版本支援檢測並一鍵修複漏洞,按照介面提示修複漏洞即可,無需再執行後續更新驅動操作。更多資訊,請參見查看和處理漏洞

      • 如果您的Security Center版本僅支援檢測漏洞,但不支援修複漏洞,您需要繼續執行後續操作更新virtio驅動

  4. 更新virtio驅動。

    重要
    • 手動更新virtio驅動時涉及到網卡驅動的更新,因此會有約10秒左右的網路中斷,可能對您的業務造成影響,請您提前做好風險評估和準備工作。

    • 如果ECS執行個體的資料盤數量較多,可能需要1~2分鐘才能完成virtio驅動的更新。

    您可以根據實際情況,選擇以下任一方式手動更新virtio驅動:

    使用指令碼更新(執行個體可以訪問公網)

    如果您的Windows執行個體能夠訪問公網,可以通過該方式快速更新virtio驅動。

    1. 遠端連線待更新驅動的Windows執行個體。

      具體操作,請參見通過密碼認證登入Windows執行個體

    2. 在Windows執行個體中,下載用於更新virtio驅動的指令碼。

      下載地址:InstallVirtIo.ps1

    3. 執行InstallVirtIo.ps1指令碼更新virtio驅動。

      例如,您將指令碼InstallVirtIo.ps1下載到了C:\test目錄下。

      1. 開啟C:\test檔案夾。

        您需要開啟InstallVirtIo.ps1的實際下載目錄。

      2. 選中InstallVirtIo.ps1檔案,單擊滑鼠右鍵,然後單擊使用 PowerShell 運行

        執行指令碼

        說明
        • 如果您當前Windows執行個體的登入使用者為普通使用者,需要以管理員權限執行指令碼。如果是系統使用者,則可以直接執行指令碼。

        • 如果您在手動執行指令碼時,系統提示您禁止執行指令碼,則需要您先修改PowerShell的指令碼執行策略。具體操作,請參見常見問題

    4. 指令碼執行完成後,請重啟Windows執行個體。重啟執行個體後,virtio驅動更新才會生效。

      具體操作,請參見重啟執行個體

    通過安裝封裝更新(執行個體不能訪問公網)

    如果您的Windows執行個體沒有公網訪問能力,可以通過該方式更新virtio驅動。

    1. 在本地主機上,根據實際的作業系統下載對應版本的virtio驅動安裝包,並進行解壓。

      下載地址:請參見安裝virtio驅動

    2. 220915.0953.0953_bin.zip安裝包上傳至Windows執行個體。

      具體操作,請參見上傳或下載檔案(Windows)

    3. 在Windows執行個體中安裝新版virtio驅動。

      安裝方法,請參見安裝virtio驅動

    通過雲助手更新(批次更新多台執行個體)

    如果您有多台ECS執行個體需要更新virtio驅動,且Windows執行個體能夠訪問公網或者Virtual Private Cloud的內網,可以通過阿里雲的雲助手功能批次更新。

    說明

    通過雲助手更新virtio驅動時,需要下載驅動相關的安裝包,系統會優先訪問VPC內網進行下載,如果VPC內網訪問受限導致下載失敗,系統再訪問公網進行下載。

    1. 登入ECS管理主控台

    2. 在左側導覽列,選擇營運與監控 > 雲助手

    3. 在頂部功能表列,選擇地區。

      選擇的地區需要與您的ECS執行個體所屬的地區保持一致。

    4. 使用雲助手批次更新驅動。

      您可以通過雲助手手動設定命令內容,完成驅動更新,也可以通過雲助手的公用命令快速完成驅動更新。本文分別介紹不同的雲助手更新驅動方式。

      • (推薦)通過公用命令批次更新驅動

        1. ECS雲助手頁面,單擊公用命令頁簽,然後在搜尋欄中輸入ACS-ECS-InstallVirtioDriver-windows.ps1進行搜尋。

        2. 在公用命令ACS-ECS-InstallVirtioDriver-windows.ps1地區框中單擊執行

        3. 執行命令面板的選擇執行個體地區,選中需要更新驅動的執行個體ID。

      • 手動設定命令內容批次更新驅動

        1. ECS雲助手頁面,單擊建立/執行命令

        2. 建立執行命令面板,完成以下配置。

          • 命令資訊地區,必填參數說明如下表所示,其他參數保持預設值即可。更多參數資訊,請參見建立並執行命令

            參數

            說明

            命令來源

            選擇輸入命令內容

            命令類型

            選擇PowerShell

            命令內容

            以下任意一種方式均可完成virtio驅動的更新:

            • 通過InstallVirtIo.ps1指令碼更新virtio驅動。

              您需要在本地主機下載InstallVirtIo.ps1指令碼,然後將指令碼的內容完整複製到雲助手的命令內容中。

            • 通過雲助手外掛程式更新virtio驅動。

              將以下命令複製到雲助手的命令內容中。

              acs-plugin-manager.exe --exec --plugin=UpdateVirtIo

            執行計畫

            選擇立即執行

          • 選擇執行個體地區,選中需要更新驅動的執行個體ID。

    5. 單擊執行

      您可以在命令執行結果頁簽查看命令的執行結果。具體操作,請參見通過控制台查看執行結果。多台ECS執行個體中的一台執行個體內命令執行結果資訊如下圖所示,表示該執行個體成功更新virtio驅動。雲助手更新

    6. 大量重啟多台Windows執行個體。重啟執行個體後,virtio驅動更新才會生效。

      具體操作,請參見重啟執行個體

常見問題

  • 問題一:PowerShell中禁止運行指令碼怎麼辦?

    解決方案:部分Windows作業系統版本中,PowerShell為保證安全性,預設禁止運行指令碼。您可以修改PowerShell的指令碼執行策略,使PowerShell支援運行指令碼。具體操作如下:

    1. 運行以下命令,使PowerShell支援運行指令碼。

      Set-ExecutionPolicy Unrestricted
    2. 在命令列輸入A,然後按下Enter鍵,更改策略。

    3. 再次手動運行指令碼。

    4. PowerShell為保證系統安全,將在命令列中回顯安全警告,您需要在命令列輸入R,然後按下Enter鍵,運行一次指令碼。

    5. 當指令碼成功運行後,建議運行以下命令,恢複PowerShell的預設配置,以保證系統安全。

      Set-ExecutionPolicy Restricted
    6. 在命令列輸入A,然後按下Enter鍵,更改策略。

  • 問題二:更新virtio驅動後,網卡驅動提示沒有數位簽章如何解決?

    解決方案:您可以手動下載最新的Windows驅動程式套件,替換存在問題的網卡驅動,以解決該問題。具體操作如下:

    1. 遠端連線目標Windows執行個體。

      具體操作,請參見通過密碼認證登入Windows執行個體

    2. 下載最新的Windows驅動程式套件

      說明

      如果您的Windows執行個體不能成功下載該驅動包,您可以先將驅動包下載至本地物理主機,然後通過遠端桌面連線工具、FTP等方式將驅動包上傳至Windows執行個體。搭建FTP網站的具體操作,請參見手動搭建FTP網站(Windows)

      成功下載後,您可以查看到名為new_virtio.zip的驅動程式套件。

    3. 解壓Windows驅動程式套件,然後開啟new_virtio檔案夾進行查看。

      開啟檔案夾後,您可以查看到不同Windows作業系統版本對應的檔案夾。

      image

      各個檔案夾中儲存不同作業系統適用的驅動。您只需關注以下檔案夾:

      • win10目錄中儲存的驅動適用於:Windows Server 2016、Windows Server 2019以及Windows 10。

      • Win8目錄中儲存的驅動適用於:Windows Server 2012 R2、Windows 8.1。

      • win7目錄中儲存的驅動適用於:Windows Server 2008 R2、Windows 7。

    4. 卸載Windows執行個體中的網卡驅動。

      本樣本以Windows Server 2019 64位為例,介紹具體的操作步驟,其他Windows作業系統版本的操作步驟與之類似。

      1. 開啟Windows控制台,在搜尋控制台文字框,輸入裝置管理員進行搜尋。裝置管理員

      2. 單擊裝置管理員,開啟裝置管理員。

      3. 單擊網路介面卡,然後按右鍵Red Hat VirtIO Ethernet Adapter

      4. 單擊卸載裝置(U)卸載裝置

      5. 卸載裝置對話方塊,選中刪除此裝置的驅動程式軟體前的複選框,然後單擊卸載

        成功卸載後,裝置管理員中將不再顯示Red Hat VirtIO Ethernet Adapter

    5. 安裝最新版Windows網卡驅動。

      1. 在Windows PowerShell中,運行以下命令,選擇開啟對應的Windows驅動程式檔案夾。

        例如,本樣本中Windows執行個體的作業系統版本為Windows Server 2019 64位,且Windows驅動程式儲存在C:\test檔案夾中,則需要開啟的檔案夾路徑為C:\test\new_virtio\win10\amd64

        cd C:\test\new_virtio\win10\amd64
      2. 在PowerShell中,運行以下命令,安裝最新版Windows網卡驅動。

        pnputil -i -a netkvm.inf

        如下圖所示,表示網卡驅動成功安裝。安裝網卡驅動

    6. 返回或重新開啟裝置管理員,按右鍵主機名稱,然後單擊掃描檢測硬體改動(A)

      例如,本樣本中Windows執行個體的主機名稱為test,則操作樣本如下圖所示:掃描檢測

      掃描檢測完成後,您可以在裝置管理員中查看到新增的網路介面卡

    7. 查看最新版的網卡驅動資訊。

      1. 單擊網路介面卡,然後按右鍵Red Hat VirtIO Ethernet Adapter

      2. 單擊屬性(R)

      3. Red Hat VirtIO Ethernet Adapter 屬性對話方塊,單擊驅動程式頁簽,查看驅動資訊。

        image

    8. 重啟Windows執行個體。重啟執行個體後,新版的驅動才會生效。

      具體操作,請參見重啟執行個體

相關文檔