如果您需要手动更新Windows实例的virtio驱动,可以参考本文介绍的方式完成驱动更新。
背景信息
云盘在线扩容和查询序列号操作依赖于镜像的virtio驱动版本,例如Windows实例的virtio驱动需要大于58011版本才能执行在线扩容操作,否则就需先更新virtio驱动。不同场景下可以进行的操作说明如下表所示。
操作场景 | virtio版本 | 操作 |
在线扩容云盘 | 大于等于58011 | 可以直接在线扩容云盘。具体操作,请参见扩容分区和文件系统(Windows)。 |
小于58011 |
您需要先更新virtio驱动,具体操作请参见本文。 | |
查询序列号 | 大于等于58017 | 可以直接查看磁盘序列号。具体操作,请参见查看磁盘序列号。 |
小于58017 | 无法直接查询序列号,您需要先更新virtio驱动,具体操作请参见本文。 |
操作步骤
(可选)创建快照备份数据。
建议您为Windows实例创建快照备份数据,如果更新virtio驱动时造成实例异常,可通过快照回滚实例中的数据。具体操作,请参见创建一个云盘快照。
关闭第三方杀毒软件。
为确保virtio驱动的更新脚本或云助手插件顺利执行,建议您登录Windows实例,临时关闭实例中已安装的第三方杀毒软件(实例自带的杀毒软件无需关闭)。如果您确认您的Windows实例无需更新virtio驱动或者驱动已成功更新,请及时重启第三方杀毒软件。
检测Windows实例中的virtio驱动是否需要更新。
您可以通过阿里云云安全中心的漏洞修复功能或者手动检测Windows实例中的virtio驱动是否需要更新。
通过云安全中心检测(推荐)
阿里云云安全中心针对旧版本virtio驱动可能产生的影响,提供了检测以及一键修复功能。本操作步骤中,主要介绍如何通过云安全中心的漏洞修复功能检测并一键更新virtio驱动。关于云安全中心漏洞修复功能的更多信息,请参见漏洞修复概述。
重要云安全中心提供了多种版本,不同版本支持的功能不同。更多信息,请参见功能特性。如果您的云安全中心是免费版或其他仅支持漏洞检测,但不支持漏洞修复的版本。您可以通过漏洞修复的检测机制查看需要更新驱动的Windows实例信息,然后再手动更新驱动。
登录云安全中心控制台。
在左侧导航栏,选择 。
在漏洞管理页面,单击Windows系统漏洞页签。
从是否已处理下拉列表中,选择未处理,然后在漏洞公告列表,查看是否存在Windows virtio驱动BUG导致磁盘数据丢失风险更新漏洞。
漏洞公告说明:
如果不存在该漏洞公告,说明您的阿里云账号下没有需要更新virtio驱动的Windows实例,您无需再进行本文中的任何操作。
如果存在该漏洞公告,您可以根据云安全中心的不同版本,选择以下不同的驱动更新操作。关于云安全中心不同版本对漏洞修复的支持情况,请参见功能特性。
如果您的云安全中心版本仅支持检测漏洞,但不支持修复漏洞。您需要根据本文提供的手动更新方式,完成virtio驱动更新。
如果您的云安全中心版本支持检测并一键修复漏洞,请参考本操作步骤完成驱动更新。
单击Windows virtio驱动BUG导致磁盘数据丢失风险更新漏洞名称,进入漏洞详情页。
在漏洞详情页签,选中所有待更新virtio驱动的Windows实例,然后在资源列表下方,单击修复。
在修复页面,单击立即修复。
您可以手动选择是否为待修复的ECS实例创建快照,建议您选择自动创建快照并修复。如果您确保在修复前,已经为各台实例创建了快照,可以选择不建立快照备份直接修复。
等待修复成功后,在资源列表的操作列,单击重启,重启所有完成漏洞修复的Windows实例。
重启实例后,在漏洞详情页签的资源列表中,状态列将显示重启成功。
查看已处理的漏洞详情。
返回漏洞修复页面,单击Windows系统漏洞页签。
从是否已处理下拉列表中,选择已处理,然后在漏洞公告列表,单击Windows virtio驱动BUG导致磁盘数据丢失风险更新。
在漏洞详情页签,可以查看到修复成功的资源信息。
手动检测
您可以手动检测是否需要更新Windows实例的virtio驱动。当您根据本文提供的任一方式更新驱动后,也可以再次按照该操作方法检测Windows实例中的virtio驱动是否已更新为最新版。
远程连接Windows实例。
具体操作,请参见连接方式概述。
在桌面按下
Win+R
组合键,打开运行对话框。输入powershell进入PowerShell命令行。
运行以下命令,查看virtio驱动的版本信息。
[System.Diagnostics.FileVersionInfo]::GetVersionInfo("C:\Windows\System32\drivers\viostor.sys")
命令行回显信息如下图所示。
在线扩容场景:产品版本(ProductVersion)低于
58011
,需按照本文更新驱动。查询序列号场景:产品版本(ProductVersion)低于
58017
,需按照本文更新驱动。
手动更新virtio驱动。
重要手动更新virtio驱动时涉及网卡驱动的更新,因此ECS实例的网络会中断10秒左右。您需要注意网络中断所造成的业务影响。
您可以根据实际情况,选择以下任一方式手动更新virtio驱动:
使用脚本更新驱动
如果您的Windows实例能够访问公网,可以通过该方式快速更新virtio驱动。
远程连接待更新驱动的Windows实例。
具体操作,请参见连接方式介绍。
在Windows实例中,下载用于更新virtio驱动的脚本。
下载地址:InstallVirtIo.ps1
执行InstallVirtIo.ps1脚本更新virtio驱动。
例如,您将脚本InstallVirtIo.ps1下载到了C:\test目录下。
打开C:\test文件夹。
您需要打开InstallVirtIo.ps1实际的下载目录。
选中InstallVirtIo.ps1文件,单击鼠标右键,然后单击使用 PowerShell 运行。
您也可以在文件夹的空白区域,按下Shift键的同时,单击鼠标右键,然后单击在此处打开 Powershell 窗口(S)。在Windows PowerShell中手动执行InstallVirtIo.ps1脚本。
说明如果您当前Windows实例的登录用户为普通用户,需要以管理员权限执行脚本。如果是系统用户,则可以直接执行脚本。
如果您在手动执行脚本时,系统提示您禁止执行脚本,则需要您先修改PowerShell的脚本执行策略。具体操作,请参见常见问题。
脚本执行完成后,重启Windows实例。
具体操作,请参见重启实例。重启实例后,virtio驱动更新才会生效。
通过安装包更新驱动
如果您的Windows实例不具备公网访问能力,可以通过该方式更新virtio驱动。
在本地主机上,下载阿里云提供的virtio驱动压缩包。
下载地址:virtio驱动压缩包
成功下载后,您可以查看到名为210408.1454.1459_bin.zip的压缩包。
将210408.1454.1459_bin.zip上传至Windows实例。
具体操作,请参见本地Windows主机使用MSTSC上传文件到Windows云服务器。
在Windows实例中,解压210408.1454.1459_bin.zip,然后打开210408.1454.1459_bin文件夹。
打开文件夹后,您可以查看到不同Windows操作系统版本对应的文件夹。
各个文件夹中保存不同操作系统适用的驱动,amd64架构对应64位操作系统。
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实例的操作系统版本为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实例需要更新virtio驱动,且Windows实例能够访问公网或者专有网络VPC的内网,可以通过阿里云的云助手功能批量更新。
说明通过云助手更新virtio驱动时,需要下载驱动相关的安装包,系统会优先访问VPC内网进行下载,如果VPC内网访问受限导致下载失败,系统再访问公网进行下载。
- 登录ECS管理控制台。
- 在左侧导航栏,选择 。
在顶部菜单栏,选择地域。
选择的地域需要与您ECS实例所属的地域保持一致。
使用云助手批量更新驱动。
您可以通过云助手手动设置命令内容,完成驱动更新,也可以通过云助手的公共命令快速完成驱动更新。本文分别介绍不同的云助手更新驱动方式。
(推荐)通过公共命令批量更新驱动
在ECS云助手页面,单击公共命令,然后在搜索栏中输入
ACS-ECS-InstallVirtioDriver-windows.ps1
进行搜索。在公共命令
ACS-ECS-InstallVirtioDriver-windows.ps1
的操作列,单击执行。在执行命令面板的选择实例区域,选中需要更新驱动的实例ID。
手动设置命令内容批量更新驱动
在ECS云助手页面,单击创建/执行命令。
在创建命令面板,完成以下配置。
在命令信息区域,必填参数说明如下表所示,其它参数保持默认值即可。
参数
说明
命令来源
单击输入命令内容。
命令名称
自定义名称或保持默认名称。
命令类型
单击PowerShell。
命令内容
以下任一方式均可完成virtio驱动的更新:
通过InstallVirtIo.ps1脚本更新virtio驱动。
您需要在本地主机下载InstallVirtIo.ps1脚本,然后将脚本的内容完整复制到云助手的命令内容中。
通过云助手插件更新virtio驱动。
将以下命令复制到云助手的命令内容中。
acs-plugin-manager.exe --exec --plugin=UpdateVirtIo
在选择实例区域,选中需要更新驱动的实例ID。
单击执行。
您可以在命令执行结果页签查看命令的执行结果。具体操作,请参见通过控制台查看执行结果。多台ECS实例的其中一台实例内命令执行结果信息如下图所示,表示该实例成功更新virtio驱动。
批量重启多台Windows实例。
具体操作,请参见重启实例。重启实例后,virtio驱动更新才会生效。