如果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驱动。
操作步骤
准备工作。
创建快照备份数据。
建议您为Windows实例创建快照备份数据,以便在更新virtio驱动时出现异常时可以回滚数据。
关闭第三方杀毒软件。
为确保virtio驱动的更新顺利进行,建议您临时关闭已安装的第三方杀毒软件(实例自带的杀毒软件无需关闭)。更新完成后,请及时重启杀毒软件。
更新virtio驱动。
您可以根据实际情况,选择以下任一方式手动更新virtio驱动。
使用脚本更新(实例可以访问公网)
如果您的Windows实例能够访问公网,可以通过该方式快速更新virtio驱动。
远程连接Windows实例。
具体操作,请参见通过密码认证登录Windows实例。
在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"
运行以下命令,执行脚本。
powershell -ExecutionPolicy Bypass -File "C:\Users\Administrator\Downloads\InstallVirtIo.ps1"
脚本执行完成后,重启Windows实例使驱动更新生效。
具体操作,请参见重启实例。
通过安装包更新(实例不能访问公网)
在本地主机上,根据实际的操作系统下载对应版本的virtio驱动安装包。
下载地址:请参见阿里云virtio驱动介绍。
将安装包上传至Windows实例。
具体操作,请参见使用远程桌面或Windows APP向Windows实例传输文件。
在Windows实例中安装新版virtio驱动。
图形化安装
以安装58101版本的阿里云virtio驱动为例。
重要图形化安装virtio驱动过程中会更新网卡驱动,因此会有约10秒左右的网络中断,可能对您的业务造成影响,请您提前做好风险评估和准备工作。
在安装包上传路径中找到并双击
AliyunVirtio_58101_WIN2016_x64.exe
。按照界面提示完成安装。
直至出现如下界面,重启系统使配置生效。
说明如果Windows 7/Windows Server 2008 R2系统在安装过程中出现
对于Windows 7/Windows Server 2008 R2系统,您必须安装SHA-2补丁!
的提示,表示系统中缺少SHA-2签名补丁,为避免镜像导入后启动异常,建议您提前安装签名补丁。更多信息,请参见Windows Server 2008 R2因驱动签名无法验证导致启动失败。
命令行安装
在Windows PowerShell中,运行以下命令,切换到软件包上传目录,例如
C:\test
。cd C:\test
运行以下命令,安装virtio驱动。
./AliyunVirtio_58101_WIN2016_x64.exe /SILENT /FORCE /NORESTART
说明/SILENT
:表示静默模式。/FORCE
:表示强制覆盖(如果已经安装过virtio驱动)安装。/NORESTART
:表示不自动重启。
通过云助手更新(批量更新多台实例)
如果您有多台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,单击执行。
批量重启多台Windows实例,使驱动更新生效。
具体操作,请参见重启实例。
在设备管理器中检查已安装的virtio驱动版本。
说明阿里云大部分新实例规格(例如ecs.g8a)使用NVMe协议云盘,此时存储控制器表现为NVMe控制器;其他规格实例通常采用VirtlO SCSI模拟的传统SCSI控制器。NVMe设备在更新virtio驱动版本时会存在存储驱动(viostor)更新不生效的情况(即驱动版本号不更新),此时建议以网卡设备的驱动版本信息为准。
存储控制器显示为Red Hat VirtlO SCSI controller表示virtio块设备,virtio块设备需根据存储控制器的驱动程序版本末尾编号来判断virtio驱动版本。
存储控制器显示包含了NVMe字样(如图所示的Aibaba NVMe Elastic Block Storage Adapter)表示NVMe设备,NVMe设备需根据网络适配器的驱动程序版本末尾编号来判断virtio驱动版本。