全部產品
Search
文件中心

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

更新時間:Aug 02, 2025

如果virtio驅動版本過舊或存在相容性問題,可能導致ECS執行個體效能下降(如磁碟IOPS降低、網路延遲增加)或功能異常(如裝置無法識別、中繼資料讀取失敗)。為確保ECS執行個體在阿里雲平台穩定運行,建議您及時更新virtio驅動版本。

適用情境

  • 阿里雲會定期更新virtio驅動,舊版驅動可能存在已知漏洞,更新virtio驅動版本可避免潛在風險或提升驅動的效能。

  • Windows執行個體從舊版本(例如Windows Server 2016)升級到新版本(例如Windows Server 2022),舊版virtio驅動可能不相容新系統,導致裝置無法識別或功能異常,因此需要更新virtio驅動版本,確保與新系統相容。

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

使用限制

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

操作步驟

  1. 準備工作。

    • 建立快照備份資料。

      建議您為Windows執行個體建立快照備份資料,以便在更新virtio驅動時出現異常時可以復原資料。

    • 關閉第三方殺毒軟體。

      為確保virtio驅動的更新順利進行,建議您臨時關閉已安裝的第三方殺毒軟體(執行個體內建的殺毒軟體無需關閉)。更新完成後,請及時重啟殺毒軟體。

  2. 更新virtio驅動。

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

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

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

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

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

    2. 在Windows PowerShell中,運行以下命令,下載指令碼。

      Invoke-WebRequest -Uri "https://windows-driver-cn-beijing.oss-cn-beijing.aliyuncs.com/virtio/InstallVirtIo.ps1" -OutFile "C:\Users\Administrator\Downloads\InstallVirtIo.ps1"
    3. 運行以下命令,執行指令碼。

      powershell -ExecutionPolicy Bypass -File "C:\Users\Administrator\Downloads\InstallVirtIo.ps1"
    4. 指令碼執行完成後,重啟Windows執行個體使驅動更新生效。

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

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

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

      下載地址:請參見阿里雲virtio驅動介紹

    2. 將安裝包上傳至Windows執行個體。

      具體操作,請參見使用遠端桌面或Windows APP向Windows執行個體傳輸檔案

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

      圖形化安裝

      以安裝58101版本的阿里雲virtio驅動為例。

      重要

      圖形化安裝virtio驅動過程中會更新網卡驅動,因此會有約10秒左右的網路中斷,可能對您的業務造成影響,請您提前做好風險評估和準備工作。

      1. 在安裝包上傳路徑中找到並雙擊AliyunVirtio_58101_WIN2016_x64.exe

      2. 按照介面提示完成安裝。

        image

      3. 直至出現如下介面,重啟系統使配置生效。

        image

        說明

        如果Windows 7/Windows Server 2008 R2系統在安裝過程中出現對於Windows 7/Windows Server 2008 R2系統,您必須安裝SHA-2補丁!的提示,表示系統中缺少SHA-2簽名補丁,為避免鏡像匯入後啟動異常,建議您提前安裝簽名補丁。

      命令列安裝

      1. 在Windows PowerShell中,運行以下命令,切換到軟體包上傳目錄,例如C:\test

        cd C:\test
      2. 運行以下命令,安裝virtio驅動。

        ./AliyunVirtio_58101_WIN2016_x64.exe /SILENT /FORCE /NORESTART
        說明
        • /SILENT:表示靜默模式。

        • /FORCE:表示強制覆蓋(如果已經安裝過virtio驅動)安裝。

        • /NORESTART:表示不自動重啟。

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

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

    說明

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

    1. 登入ECS管理主控台

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

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

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

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

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

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

        1. ECS雲助手頁面,單擊公用命令頁簽,搜尋並執行ACS-ECS-InstallVirtioDriver-windows.ps1

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

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

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

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

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

            參數

            說明

            命令來源

            選擇輸入命令內容

            命令類型

            選擇PowerShell

            命令內容

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

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

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

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

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

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

            執行計畫

            選擇立即執行

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

    5. 大量重啟多台Windows執行個體,使驅動更新生效。

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

  3. 在裝置管理員中檢查已安裝的virtio驅動版本。

    說明

    阿里雲大部分新執行個體規格(例如ecs.g8a)使用NVMe協議雲端硬碟,此時儲存控制器表現為NVMe控制器;其他規格執行個體通常採用VirtlO SCSI類比的傳統SCSI控制器。NVMe裝置在更新virtio驅動版本時會存在儲存驅動(viostor)更新不生效的情況(即驅動版本號碼不更新),此時建議以網卡裝置的驅動版本資訊為準。

    • 儲存控制器顯示為Red Hat VirtlO SCSI controller表示virtio塊裝置,virtio塊裝置需根據儲存控制器驅動程式版本末尾編號來判斷virtio驅動版本。

      image

    • 儲存控制器顯示包含了NVMe字樣(如圖所示的Aibaba NVMe Elastic Block Storage Adapter)表示NVMe裝置,NVMe裝置需根據網路介面卡驅動程式版本末尾編號來判斷virtio驅動版本。

      image

常見問題

  • 問題一: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執行個體。具體操作,請參見上傳檔案

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

    3. 解壓驅動程式套件,開啟new_virtio檔案夾。

      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 Server 2019 64位為例,介紹具體的操作步驟,其他Windows作業系統版本的操作步驟與之類似。

      1. 開啟Windows控制台,在搜尋控制台文字框,搜尋並開啟裝置管理員裝置管理員

      2. 網路介面卡下,按右鍵Red Hat VirtIO Ethernet Adapter,選擇卸載裝置(U)

        卸載裝置

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

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

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

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

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

        pnputil -i -a netkvm.inf

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

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

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

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

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

      1. 網路介面卡下,按右鍵Red Hat VirtIO Ethernet Adapter,選擇屬性(R)

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

        image

    8. 重啟Windows執行個體,使新版驅動生效。

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