如果您需要手动更新Windows实例的virtio驱动,可以参考本文介绍的方式完成驱动更新。

操作流程

  1. 创建快照备份数据。
    建议您为Windows实例创建快照备份数据,如果更新virtio驱动时造成实例异常,可通过快照回滚实例中的数据。具体操作,请参见创建一个云盘快照
  2. 关闭第三方杀毒软件。
    为确保virtio驱动的更新脚本或云助手插件顺利执行,建议您登录Windows实例,临时关闭实例中已安装的第三方杀毒软件(实例自带的杀毒软件无需关闭)。如果您确认您的Windows实例无需更新virtio驱动或者驱动已成功更新,请及时重启第三方杀毒软件。
  3. 通过云安全中心或者手动检测Windows实例中的virtio驱动是否需要更新。
    • 您可以通过阿里云云安全中心的漏洞修复功能检测Windows实例中的virtio驱动是否需要更新。具体操作,请参见通过云安全中心一键更新virtio驱动
      说明 云安全中心提供了多种版本,不同版本支持的功能不同。更多信息,请参见功能特性。当您的云安全中心仅支持检测漏洞,不支持一键修复漏洞时,您可以通过漏洞修复的检测机制查看需要更新驱动的Windows实例信息,然后手动更新驱动。
    • 您可以手动检查是否需要更新Windows实例的virtio驱动。具体操作,请参见手动检查是否需要更新virtio驱动
  4. 手动更新virtio驱动。
    您可以根据实际情况,选择以下任一方式手动更新virtio驱动:

通过云安全中心一键更新virtio驱动

阿里云云安全中心针对旧版本virtio驱动可能产生的影响,提供了检测以及一键修复功能。本操作步骤中,主要介绍如何通过云安全中心的漏洞修复功能检测并一键更新virtio驱动。关于云安全中心漏洞修复功能的更多信息,请参见漏洞修复概述

  1. 登录云安全中心控制台
  2. 在左侧导航栏,选择安全防范 > 漏洞修复
  3. 漏洞修复页面,单击Windows系统漏洞页签。
  4. 是否已处理下拉列表中,选择未处理,然后在漏洞公告列表,查看是否存在Windows virtio驱动BUG导致磁盘数据丢失风险更新
    检测virtio驱动bug漏洞公告说明:
    • 如果不存在该漏洞公告,说明您的阿里云账号下没有需要更新virtio驱动的Windows实例,您无需再进行本文中的任何操作。
    • 如果存在该漏洞公告,您可以根据云安全中心的不同版本,选择以下不同的驱动更新操作。关于云安全中心不同版本对漏洞修复的支持情况,请参见漏洞修复
      • 如果您的云安全中心版本仅支持检测漏洞,但不支持修复漏洞。您需要根据本文提供的手动更新方式,完成virtio驱动更新。
      • 如果您的云安全中心版本支持检测并一键修复漏洞,请参考本操作步骤完成驱动更新。
  5. 单击Windows virtio驱动BUG导致磁盘数据丢失风险更新漏洞名称,进入漏洞详情页。
  6. 漏洞详情页签,选中所有待更新virtio驱动的Windows实例,然后在资源列表下方,单击修复
    漏洞详情
  7. 修复页面,单击立即修复
    您可以手动选择是否为待修复的ECS实例创建快照,建议您选择自动创建快照并修复。如果您确保在修复前,已经为各台实例创建了快照,可以选择不建立快照备份直接修复修复
  8. 等待修复成功后,在资源列表的操作列,单击重启,重启所有完成漏洞修复的Windows实例。
    重启win实例
    重启实例后,在漏洞详情页签的资源列表中,状态列将显示重启成功
  9. 查看已处理的漏洞详情。
    1. 返回漏洞修复页面,单击Windows系统漏洞页签。
    2. 是否已处理下拉列表中,选择已处理,然后在漏洞公告列表,单击Windows virtio驱动BUG导致磁盘数据丢失风险更新
      如下图所示,在漏洞详情页签,可以查看到修复成功的资源信息。修复成功

手动检查是否需要更新virtio驱动

在更新virtio驱动前,您可以在Windows实例中运行命令检查是否需要更新驱动。当您根据本文提供的任一方式更新驱动后,也可以再次检查Windows实例中的virtio驱动是否已更新为最新版。

  1. 远程连接Windows实例。
    具体操作,请参见连接方式概述
  2. 在桌面按下Win+R组合键,打开运行对话框。
  3. 输入powershell进入PowerShell命令行。
  4. 运行以下命令,查看virtio驱动的版本信息。
    [System.Diagnostics.FileVersionInfo]::GetVersionInfo("C:\Windows\System32\drivers\viostor.sys")
    命令行回显信息如下图所示。如果产品版本(ProductVersion)低于58017,阿里云建议您参考本文更新驱动。virtio版本信息
  5. 运行以下命令,查看当前服务器中的磁盘唯一标识。
    Get-Disk | Select-Object uniqueid
    命令行回显信息如下图所示。如果uniqueid的值为141463431303031,或者非000000开头的标识,阿里云建议您参考本文更新驱动。磁盘标识

手动更新方式一:使用脚本更新驱动

如果您的Windows实例能够访问公网,可以通过该方式快速更新virtio驱动。

  1. 远程连接待更新驱动的Windows实例。
    具体操作,请参见连接方式介绍
  2. 在Windows实例中,下载用于更新virtio驱动的脚本。
    下载地址:InstallVirtIo.ps1
  3. 执行InstallVirtIo.ps1脚本更新virtio驱动。
    例如,您将脚本InstallVirtIo.ps1下载到了C:\test目录下。
    1. 打开C:\test文件夹。
      您需要打开InstallVirtIo.ps1实际的下载目录。
    2. 选中InstallVirtIo.ps1文件,单击鼠标右键,然后单击使用 PowerShell 运行
      执行脚本
      您也可以在文件夹的空白区域,按下Shift键的同时,单击鼠标右键,然后单击在此处打开 Powershell 窗口(S)。在Windows PowerShell中手动执行InstallVirtIo.ps1脚本。
      说明
      • 如果您当前Windows实例的登录用户为普通用户,需要以管理员权限执行脚本。如果是系统用户,则可以直接执行脚本。
      • 如果您在手动执行脚本时,系统提示您禁止执行脚本,则需要您先修改PowerShell的脚本执行策略。具体操作,请参见常见问题
  4. 脚本执行完成后,重启Windows实例。
    具体操作,请参见重启实例。重启实例后,virtio驱动更新才会生效。

手动更新方式二:通过安装包更新驱动

如果您的Windows实例不具备公网访问能力,可以通过该方式更新virtio驱动。

  1. 在本地主机上,下载阿里云提供的virtio驱动压缩包。
    下载地址:virtio驱动压缩包
    成功下载后,您可以查看到名为210408.1454.1459_bin.zip的压缩包。
  2. 210408.1454.1459_bin.zip上传至Windows实例。
    您可以使用以下任一方式上传文件:
    • 本地操作系统为Windows时,可以使用Windows远程桌面连接工具连接Windows实例,并完成文件的上传。
    • 为Windows实例搭建FTP服务,然后通过FTP客户端将文件上传至Windows实例。更多信息,请参见手动搭建FTP站点(Windows)
  3. 在Windows实例中,解压210408.1454.1459_bin.zip,然后打开210408.1454.1459_bin文件夹。
    打开文件夹后,您可以查看到不同Windows操作系统版本对应的文件夹。windows版本各个文件夹中保存不同操作系统适用的驱动。您只需关注以下文件夹:
    • win10目录中保存的驱动适用于:Windows Server 2016、Windows Server 2019以及Windows 10。
    • Win8目录中保存的驱动适用于:Windows Server 2012 R2、Windows 8.1。
    • win7目录中保存的驱动适用于:Windows Server 2008 R2、Windows 7。

    每个文件夹中的驱动按照amd64架构和x86架构区分,amd64架构对应64位操作系统,x86架构对应32位操作系统。

  4. 根据Windows实例当前的操作系统版本,选择打开对应的文件夹。
    例如,本示例中Windows实例的操作系统版本为Windows Server 2012 R2 64位,则打开的文件夹路径为C:\test\210408.1454.1459_bin\Win8\amd64
  5. amd64文件夹内的空白区域,按下Shift键的同时,单击鼠标右键,然后单击在此处打开 Powershell 窗口(S)
    powershell
  6. 在Windows Powershell中,运行以下命令,安装新版virtio驱动。
    说明 如果您当前Windows实例的登录用户为普通用户,需要以管理员权限运行该命令。如果是系统用户,则可以直接运行该命令。
    pnputil -i -a *.inf
    如下图所示,表示virtio驱动安装成功。执行命令
  7. 重启Windows实例。
    具体操作,请参见重启实例。重启实例后,virtio驱动更新才会生效。

手动更新方式三:使用云助手批量更新驱动

如果您存在多台ECS实例需要更新virtio驱动,且Windows实例能够访问公网或者专有网络VPC的内网,可以通过阿里云的云助手功能批量更新。
说明 通过云助手更新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键,更改策略。