Windows实例某些操作依赖于镜像的virtio驱动版本,例如,在线扩容云盘要求virtio驱动版本大于58011
(创建时间早于2019年03月30日的实例virtio版本可能不满足要求),而查询云盘序列号则要求virtio驱动版本大于58017
(创建时间早于2020年05月01日的实例virtio版本可能不满足要求)。如果当前实例的virtio驱动版本不满足要求,则需要先更新驱动版本。本文介绍如何查看并更新Windows实例的virtio驱动版本。
使用限制
仅支持为Windows Server 2008及以上版本的操作系统更新virtio驱动。
操作步骤
步骤一:检查virtio驱动
(可选)创建快照备份数据。
建议您为Windows实例创建快照备份数据,以便在更新virtio驱动时出现异常时可以回滚数据。具体操作,请参见创建快照。
关闭第三方杀毒软件。
为确保virtio驱动的更新顺利进行,建议您临时关闭已安装的第三方杀毒软件(实例自带的杀毒软件无需关闭)。更新完成后,请及时重启杀毒软件。
查看当前实例的virtio驱动版本,根据场景判断是否需要更新virtio驱动。
通过PowerShell查看
远程连接Windows实例。
具体操作,请参见通过密码认证登录Windows实例。
打开运行对话框,输入powershell进入PowerShell命令行。
运行以下命令,查看virtio驱动的版本信息。
[System.Diagnostics.FileVersionInfo]::GetVersionInfo("C:\Windows\System32\drivers\viostor.sys")
说明viostor.sys
是一个与虚拟化环境存储设备驱动相关的系统文件,特别是用于Microsoft Hyper-V虚拟机上的虚拟磁盘控制器。当一个操作系统在Hyper-V平台上作为虚拟机运行时,viostor.sys驱动会与主机的虚拟化层协同工作,确保客户机操作系统能够像操作物理硬盘一样对虚拟硬盘进行读写操作。它是确保虚拟机磁盘I/O性能和兼容性的重要组件之一。命令行回显信息如下图所示。
根据ProductVersion末尾编号是否小于
58011
或58017
,判断是否需要更新驱动。操作场景
virtio版本
操作
在线扩容云盘
大于等于58011
可以直接在线扩容云盘,无需更新virtio驱动。具体操作,请参见步骤一:扩容云盘容量。
小于58011
无法在线扩容,需继续执行后续操作步骤二:更新virtio驱动。
查询序列号
大于等于58017
可以直接查看磁盘序列号,无需更新virtio驱动。具体操作,请参见查看块存储序列号。
小于58017
无法直接查询序列号,需继续执行后续操作步骤二:更新virtio驱动。
通过系统文件查看
远程连接Windows实例。
具体操作,请参见通过密码认证登录Windows实例。
进入系统目录C:\Windows\System32\drivers。
右键单击viostor.sys文件,选择属性,在详细信息页签下查看文件版本号。
说明viostor.sys
是一个与虚拟化环境存储设备驱动相关的系统文件,特别是用于Microsoft Hyper-V虚拟机上的虚拟磁盘控制器。当一个操作系统在Hyper-V平台上作为虚拟机运行时,viostor.sys驱动会与主机的虚拟化层协同工作,确保客户机操作系统能够像操作物理硬盘一样对虚拟硬盘进行读写操作。它是确保虚拟机磁盘I/O性能和兼容性的重要组件之一。根据文件版本末尾编号是否小于
58011
或58017
,判断是否需要更新驱动。操作场景
virtio版本
操作
在线扩容云盘
大于等于58011
可以直接在线扩容云盘,无需更新virtio驱动。具体操作,请参见步骤一:扩容云盘容量。
小于58011
无法在线扩容,需继续执行后续操作步骤二:更新virtio驱动。
查询序列号
大于等于58017
可以直接查看磁盘序列号,无需更新virtio驱动。具体操作,请参见查看块存储序列号。
小于58017
无法直接查询序列号,需继续执行后续操作步骤二:更新virtio驱动。
说明您也可以登录云安全中心控制台,在漏洞公告列表中查看是否存在Windows virtio驱动BUG导致磁盘数据丢失风险更新漏洞,来判断是否需要更新virtio驱动。
如果不存在该漏洞公告,说明您的阿里云账号下没有需要更新virtio驱动的Windows实例,无需再执行后续更新驱动操作。
如果存在该漏洞公告:
如果您的云安全中心版本支持检测并一键修复漏洞,按照界面提示修复漏洞即可,无需再执行后续更新驱动操作。更多信息,请参见查看和处理漏洞。
如果您的云安全中心版本仅支持检测漏洞,但不支持修复漏洞,您需要继续执行后续操作步骤二:更新virtio驱动。
步骤二:更新virtio驱动
在手动更新virtio驱动时,涉及到网卡驱动的更新,这将导致短暂的网络中断,可能对业务造成影响,因此请提前做好相应的准备。
您可以根据实际情况,选择以下任一方式手动更新virtio驱动:
使用脚本更新(实例可以访问公网)
如果您的Windows实例能够访问公网,可以通过该方式快速更新virtio驱动。
远程连接Windows实例。
具体操作,请参见通过密码认证登录Windows实例。
打开运行对话框,输入powershell进入PowerShell命令行。
说明如果您当前Windows实例的登录用户为普通用户,需要以管理员权限执行脚本。如果是系统用户,则可以直接执行脚本。
如果您在手动执行脚本时,系统提示您禁止执行脚本,则需要您先修改PowerShell的脚本执行策略。具体操作,请参见PowerShell中禁止运行脚本怎么办?。
运行以下命令,下载脚本:
Invoke-WebRequest -Uri "https://windows-driver-cn-beijing.oss-cn-beijing.aliyuncs.com/virtio/InstallVirtIo.ps1" -OutFile "C:\Users\Administrator\Downloads\InstallVirtIo.ps1"
运行以下命令,执行脚本。
powershell -ExecutionPolicy Bypass -File "C:\Users\Administrator\Downloads\InstallVirtIo.ps1"
脚本执行完成后,重启Windows实例使驱动更新生效。
具体操作,请参见重启实例。
通过安装包更新(实例不能访问公网)
在本地主机上,根据实际的操作系统下载对应版本的virtio驱动安装包。
下载地址:请参见安装virtio驱动。
将安装包上传至Windows实例。
具体操作,请参见使用远程桌面或Windows APP向Windows实例传输文件。
在Windows实例中安装新版virtio驱动。
安装方法,请参见安装virtio驱动。
通过云助手更新(批量更新多台实例)
如果您有多台ECS实例需要更新virtio驱动,且Windows实例能够访问公网或者专有网络VPC的内网,可以通过阿里云的云助手功能批量更新。
通过云助手更新virtio驱动时,需要下载驱动相关的安装包,系统会优先访问VPC内网进行下载,如果VPC内网访问受限导致下载失败,系统再访问公网进行下载。
登录ECS管理控制台。
在左侧导航栏,选择 。
在顶部菜单栏,选择地域。
选择的地域需要与您的ECS实例所属的地域保持一致。
使用云助手批量更新驱动。
您可以通过云助手手动设置命令内容,完成驱动更新,也可以通过云助手的公共命令快速完成驱动更新。本文分别介绍不同的云助手更新驱动方式。
(推荐)通过公共命令批量更新驱动
在ECS云助手页面,单击公共命令页签,搜索并执行
ACS-ECS-InstallVirtioDriver-windows.ps1
。在执行命令面板的选择实例区域,选中需要更新驱动的实例ID。
手动设置命令内容批量更新驱动
在ECS云助手页面,单击创建/执行命令。
在创建执行命令面板,完成以下配置。
在命令信息区域,必填参数说明如下表所示,其他参数保持默认值即可。更多参数信息,请参见创建并执行命令。
参数
说明
命令来源
选择输入命令内容。
命令类型
选择PowerShell。
命令内容
以下任意一种方式均可完成virtio驱动的更新:
通过InstallVirtIo.ps1脚本更新virtio驱动。
您需要在本地主机下载InstallVirtIo.ps1脚本,然后将脚本的内容完整复制到云助手的命令内容中。
通过云助手插件更新virtio驱动。
将以下命令复制到云助手的命令内容中。
acs-plugin-manager.exe --exec --plugin=UpdateVirtIo
执行计划
选择立即执行。
在选择实例区域,选中需要更新驱动的实例ID,单击执行。
查看命令执行结果。
您可以在命令执行结果页签查看命令的执行结果。执行结果信息如下图所示,表示该实例成功更新virtio驱动。
批量重启多台Windows实例,使驱动更新生效。
具体操作,请参见重启实例。
常见问题
相关文档
如果需要在线扩容云盘,请参见步骤一:扩容云盘容量。
如果需要查询磁盘序列号,请参见查看块存储序列号。