如果您需要手动更新Windows实例的virtio驱动,可以参考本文介绍的方式完成驱动更新。
操作流程
- 创建快照备份数据。建议您为Windows实例创建快照备份数据,如果更新virtio驱动时造成实例异常,可通过快照回滚实例中的数据。具体操作,请参见创建一个云盘快照。
- 关闭第三方杀毒软件。为确保virtio驱动的更新脚本或云助手插件顺利执行,建议您登录Windows实例,临时关闭实例中已安装的第三方杀毒软件(实例自带的杀毒软件无需关闭)。如果您确认您的Windows实例无需更新virtio驱动或者驱动已成功更新,请及时重启第三方杀毒软件。
- 通过云安全中心或者手动检测Windows实例中的virtio驱动是否需要更新。
- 您可以通过阿里云云安全中心的漏洞修复功能检测Windows实例中的virtio驱动是否需要更新。具体操作,请参见通过云安全中心一键更新virtio驱动。重要 云安全中心提供了多种版本,不同版本支持的功能不同。更多信息,请参见功能特性。如果您的云安全中心是免费版或其他仅支持漏洞检测,但不支持漏洞修复的版本。您可以通过漏洞修复的检测机制查看需要更新驱动的Windows实例信息,然后手动更新驱动。
- 您可以手动检查是否需要更新Windows实例的virtio驱动。具体操作,请参见手动检查是否需要更新virtio驱动。
- 您可以通过阿里云云安全中心的漏洞修复功能检测Windows实例中的virtio驱动是否需要更新。具体操作,请参见通过云安全中心一键更新virtio驱动。
- 手动更新virtio驱动。您可以根据实际情况,选择以下任一方式手动更新virtio驱动:重要 手动更新virtio驱动时涉及网卡驱动的更新,因此ECS实例的网络会中断10秒左右。您需要注意网络中断所造成的业务影响。
- 如果您的Windows实例能够访问公网,建议您使用脚本快速更新。具体操作,请参见手动更新方式一:使用脚本更新驱动。
- 如果您的Windows实例不具备公网访问能力,建议您上传virtio驱动的压缩包,手动更新驱动。具体操作,请参见手动更新方式二:通过安装包更新驱动。
- 如果您存在多台ECS实例需要更新virtio驱动,且Windows实例能够访问公网或者专有网络VPC的内网,建议通过阿里云的云助手功能批量更新。具体操作,请参见手动更新方式三:使用云助手批量更新驱动。
说明 如果您通过脚本更新virtio驱动失败,建议您尝试使用云助手插件(acs-plugin-manager.exe --exec --plugin=UpdateVirtIo
)更新virtio驱动。如果仍然更新失败,请提交工单。
通过云安全中心一键更新virtio驱动
阿里云云安全中心针对旧版本virtio驱动可能产生的影响,提供了检测以及一键修复功能。本操作步骤中,主要介绍如何通过云安全中心的漏洞修复功能检测并一键更新virtio驱动。关于云安全中心漏洞修复功能的更多信息,请参见漏洞修复概述。
- 登录云安全中心控制台。
- 在左侧导航栏,选择 。
- 在漏洞管理页面,单击Windows系统漏洞页签。
- 从是否已处理下拉列表中,选择未处理,然后在漏洞公告列表,查看是否存在Windows virtio驱动BUG导致磁盘数据丢失风险更新漏洞。漏洞公告说明:
- 如果不存在该漏洞公告,说明您的阿里云账号下没有需要更新virtio驱动的Windows实例,您无需再进行本文中的任何操作。
- 如果存在该漏洞公告,您可以根据云安全中心的不同版本,选择以下不同的驱动更新操作。关于云安全中心不同版本对漏洞修复的支持情况,请参见功能特性。
- 如果您的云安全中心版本仅支持检测漏洞,但不支持修复漏洞。您需要根据本文提供的手动更新方式,完成virtio驱动更新。
- 如果您的云安全中心版本支持检测并一键修复漏洞,请参考本操作步骤完成驱动更新。
- 单击Windows virtio驱动BUG导致磁盘数据丢失风险更新漏洞名称,进入漏洞详情页。
- 在漏洞详情页签,选中所有待更新virtio驱动的Windows实例,然后在资源列表下方,单击修复。
- 在修复页面,单击立即修复。您可以手动选择是否为待修复的ECS实例创建快照,建议您选择自动创建快照并修复。如果您确保在修复前,已经为各台实例创建了快照,可以选择不建立快照备份直接修复。
- 等待修复成功后,在资源列表的操作列,单击重启,重启所有完成漏洞修复的Windows实例。重启实例后,在漏洞详情页签的资源列表中,状态列将显示重启成功。
- 查看已处理的漏洞详情。
手动检查是否需要更新virtio驱动
在更新virtio驱动前,您可以在Windows实例中运行命令检查是否需要更新驱动。当您根据本文提供的任一方式更新驱动后,也可以再次检查Windows实例中的virtio驱动是否已更新为最新版。
- 远程连接Windows实例。具体操作,请参见连接方式概述。
- 在桌面按下Win+R组合键,打开运行对话框。
- 输入powershell进入PowerShell命令行。
- 运行以下命令,查看virtio驱动的版本信息。
[System.Diagnostics.FileVersionInfo]::GetVersionInfo("C:\Windows\System32\drivers\viostor.sys")
命令行回显信息如下图所示。如果产品版本(ProductVersion)低于58017
,阿里云建议您参考本文更新驱动。 - 运行以下命令,查看当前服务器中的磁盘唯一标识。
Get-Disk | Select-Object uniqueid
命令行回显信息如下图所示。如果uniqueid的值为141463431303031
,或者非000000
开头的标识,阿里云建议您参考本文更新驱动。
手动更新方式一:使用脚本更新驱动
如果您的Windows实例能够访问公网,可以通过该方式快速更新virtio驱动。
- 远程连接待更新驱动的Windows实例。具体操作,请参见连接方式介绍。
- 在Windows实例中,下载用于更新virtio驱动的脚本。下载地址:InstallVirtIo.ps1
- 执行InstallVirtIo.ps1脚本更新virtio驱动。例如,您将脚本InstallVirtIo.ps1下载到了C:\test目录下。
- 脚本执行完成后,重启Windows实例。具体操作,请参见重启实例。重启实例后,virtio驱动更新才会生效。
手动更新方式二:通过安装包更新驱动
如果您的Windows实例不具备公网访问能力,可以通过该方式更新virtio驱动。
- 在本地主机上,下载阿里云提供的virtio驱动压缩包。下载地址:virtio驱动压缩包成功下载后,您可以查看到名为210408.1454.1459_bin.zip的压缩包。
- 将210408.1454.1459_bin.zip上传至Windows实例。您可以使用以下任一方式上传文件:
- 本地操作系统为Windows时,可以使用Windows远程桌面连接工具连接Windows实例,并完成文件的上传。
- 为Windows实例搭建FTP服务,然后通过FTP客户端将文件上传至Windows实例。更多信息,请参见手动搭建FTP站点(Windows)。
- 在Windows实例中,解压210408.1454.1459_bin.zip,然后打开210408.1454.1459_bin文件夹。打开文件夹后,您可以查看到不同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位操作系统。
- 根据Windows实例当前的操作系统版本,选择打开对应的文件夹。例如,本示例中Windows实例的操作系统版本为Windows Server 2012 R2 64位,则打开的文件夹路径为C:\test\210408.1454.1459_bin\Win8\amd64。
- 在amd64文件夹内的空白区域,按下Shift键的同时,单击鼠标右键,然后单击在此处打开 Powershell 窗口(S)。
- 在Windows Powershell中,运行以下命令,安装新版virtio驱动。说明 如果您当前Windows实例的登录用户为普通用户,需要以管理员权限运行该命令。如果是系统用户,则可以直接运行该命令。
pnputil -i -a *.inf
如下图所示,表示virtio驱动安装成功。 - 重启Windows实例。具体操作,请参见重启实例。重启实例后,virtio驱动更新才会生效。
手动更新方式三:使用云助手批量更新驱动
- 登录ECS管理控制台。
- 在左侧导航栏,选择 。
- 在顶部菜单栏,选择地域。选择的地域需要与您ECS实例所属的地域保持一致。
- 使用云助手批量更新驱动。您可以通过云助手手动设置命令内容,完成驱动更新,也可以通过云助手的公共命令快速完成驱动更新。本文分别介绍不同的云助手更新驱动方式。
- (推荐)通过公共命令批量更新驱动
- 在ECS云助手页面,单击公共命令,然后在搜索栏中输入
ACS-ECS-InstallVirtioDriver-windows.ps1
进行搜索。 - 在公共命令
ACS-ECS-InstallVirtioDriver-windows.ps1
的操作列,单击执行。 - 在执行命令面板的选择实例区域,选中需要更新驱动的实例ID。
- 在ECS云助手页面,单击公共命令,然后在搜索栏中输入
- 手动设置命令内容批量更新驱动
- 在ECS云助手页面,单击创建/执行命令。
- 在创建命令面板,完成以下配置。
- 在命令信息区域,必填参数说明如下表所示,其它参数保持默认值即可。
参数 说明 命令来源 单击输入命令内容。 命令名称 自定义名称或保持默认名称。 命令类型 单击PowerShell。 命令内容 以下任一方式均可完成virtio驱动的更新: - 通过InstallVirtIo.ps1脚本更新virtio驱动。
您需要在本地主机下载InstallVirtIo.ps1脚本,然后将脚本的内容完整复制到云助手的命令内容中。
- 通过云助手插件更新virtio驱动。将以下命令复制到云助手的命令内容中。
acs-plugin-manager.exe --exec --plugin=UpdateVirtIo
- 通过InstallVirtIo.ps1脚本更新virtio驱动。
- 在选择实例区域,选中需要更新驱动的实例ID。
- 在命令信息区域,必填参数说明如下表所示,其它参数保持默认值即可。
- (推荐)通过公共命令批量更新驱动
- 单击执行。
- 批量重启多台Windows实例。具体操作,请参见重启实例。重启实例后,virtio驱动更新才会生效。
常见问题
问题一:PowerShell中禁止运行脚本怎么办?
解决方案:部分Windows操作系统版本中,PowerShell为保障安全性,默认禁止运行脚本。您可以修改PowerShell的脚本执行策略,使PowerShell支持运行脚本。具体操作如下:- 运行以下命令,使PowerShell支持运行脚本。
Set-ExecutionPolicy Unrestricted
- 在命令行输入
A
,然后按下Enter键,更改策略。 - 再次手动运行脚本。
- PowerShell为保证系统安全,将在命令行中回显安全警告,您需要在命令行输入
R
,然后按下Enter键,运行一次脚本。 - 当脚本被成功运行后,建议运行以下命令,恢复PowerShell的默认配置,以保证系统安全。
Set-ExecutionPolicy Restricted
- 在命令行输入
A
,然后按下Enter键,更改策略。
- 运行以下命令,使PowerShell支持运行脚本。
问题二:更新virtio驱动后,网卡驱动提示没有数字签名如何解决?
解决方案:您可以手动下载最新的Windows驱动程序包,替换存在问题的网卡驱动,以解决该问题。具体操作如下:- 远程连接目标Windows实例。
具体操作,请参见通过密码认证登录Windows实例。
- 下载最新的Windows驱动程序包。说明 如果您的Windows实例不能成功下载该驱动包,您可以先将驱动包下载至本地物理主机,然后通过远程桌面连接工具、FTP等方式将驱动包上传至Windows实例。搭建FTP站点的具体操作,请参见手动搭建FTP站点(Windows)。
成功下载后,您可以查看到名为new_virtio.zip的驱动程序包。
- 解压Windows驱动程序包,然后打开new_virtio文件夹进行查看。打开文件夹后,您可以查看到不同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。
- 卸载Windows实例中的网卡驱动。
本示例以Windows Server 2019 64位为例,介绍具体的操作步骤,其他Windows操作系统版本的操作步骤与之类似。
- 打开Windows控制面板,在搜索控制面板文本框,输入
设备管理器
进行搜索。 - 单击设备管理器,打开设备管理器。
- 单击网络适配器,然后右键单击Red Hat VirtIO Ethernet Adapter。
- 单击卸载设备(U)。
- 在卸载设备对话框,选中删除此设备的驱动程序软件前的复选框,然后单击卸载。
成功卸载后,设备管理器中将不再显示网络适配器。
- 打开Windows控制面板,在搜索控制面板文本框,输入
- 安装最新版Windows网卡驱动。
- 根据Windows实例当前的操作系统版本,选择打开对应的Windows驱动程序文件夹。
例如,本示例中Windows实例的操作系统版本为Windows Server 2019 64位,且Windows驱动程序保存在C:\test文件夹中,则需要打开的文件夹路径为C:\test\new_virtio\win10\amd64。
- 在amd64文件夹内的空白区域,按下Shift键的同时,单击鼠标右键,然后单击在此处打开 Powershell 窗口(S)。
- 在Powershell窗口中,运行以下命令,安装最新版Windows网卡驱动。
pnputil -i -a netkvm.inf
如下图所示,表示网卡驱动成功安装。
- 根据Windows实例当前的操作系统版本,选择打开对应的Windows驱动程序文件夹。
- 返回或重新打开设备管理器,右键单击主机名称,然后单击扫描检测硬件改动(A)。例如,本示例中Windows实例的主机名称为
test
,则操作示例如下图所示:扫描检测完成后,您可以在设备管理器中查看到新增的网络适配器。
- 查看最新版的网卡驱动信息。
- 单击网络适配器,然后右键单击Red Hat VirtIO Ethernet Adapter。
- 单击属性(R)。
- 在Red Hat VirtIO Ethernet Adapter 属性对话框,单击驱动程序页签。如下图所示,在页签内,您可以查看到最新版网卡驱动的数字签名信息。
- 重启Windows实例。
具体操作,请参见重启实例。重启实例后,新版的驱动才会生效。
- 远程连接目标Windows实例。