2024年9月5日,QEMU 社区发布了备受期待的 QEMU 9.1 版本。作为开源虚拟化和仿真领域的领导者,QEMU 一直以来为不同计算机架构提供强大的仿真支持,此次推出的新版本同样不负众望,带来了丰富的新功能和改进,特别是在 ARM 和 RISC-V 架构方面的支持得到了进一步优化。此外,QEMU 9.1 还强化了安全性、性能以及兼容性,让用户在虚拟机(VM)迁移、性能调优、安全管理等方面获得了更多选择。
QEMU 9.1 简介
QEMU 是一款广泛使用的开源机器仿真器和虚拟机管理程序(Hypervisor),它允许用户在不同的硬件平台上仿真各种计算机系统。
- 官网地址:
https://www.qemu.org/
QEMU 的强大之处在于能够跨多个架构提供完整的仿真能力,从 x86、ARM 到 RISC-V,它几乎覆盖了当前主流的处理器架构,成为开发者调试、测试,以及虚拟化解决方案中的重要工具。
QEMU 9.1 的发布标志着该项目继续在虚拟化技术上的创新。此次版本包括了 2800 多个提交(commits),由 263 位贡献者共同完成。新增功能涵盖了从性能提升、可扩展性到安全性方面的全面增强,确保 QEMU 继续在虚拟化和仿真领域保持领先地位。
主要更新亮点
QEMU 9.1 带来了许多新的功能和改进,这些更新旨在优化性能、增强安全性和提高与不同架构的兼容性。
1. 虚拟机迁移功能的改进
虚拟机迁移功能一直是 QEMU 的强项,9.1 版本在这一领域引入了更多优化:
- 压缩卸载支持:通过引入 Intel 的内存分析加速器(In-Memory Analytics Accelerator,IAA)和用户空间加速器开发工具包(User Space Accelerator Development Kit,UADK),QEMU 现在能够更高效地进行虚拟机的实时迁移(Live Migration)。这些技术可以减少数据传输时的开销,提高迁移的速度与稳定性。
- Postcopy 恢复改进:Postcopy 是一种在虚拟机迁移中加速恢复的技术。在 9.1 版本中,Postcopy 故障后的恢复功能得到了增强,使得虚拟机迁移过程更加可靠,即使在意外中断后也能更好地恢复。
2. Virtio 增强
Virtio 是 QEMU 中一种用于优化虚拟机与宿主机之间数据传输的虚拟化标准。QEMU 9.1 为 Virtio 带来了更多功能和改进:
- VIRTIO_F_NOTIFICATION_DATA:这一新特性允许虚拟机的驱动程序在发送设备通知时附加额外的数据。这不仅可以为性能优化提供更多的调试信息,还能帮助提升整体性能,特别是在高负载虚拟机环境中。
- Virtio-net 改进:在网络虚拟化的 Virtio-net 驱动中,新版 QEMU 增强了对大型数据包(Large Send Offload)的支持,使得网络传输更加高效,减少了主机和虚拟机之间的开销。
3. 客户端代理命令更新
QEMU 提供了虚拟机内部的客户端代理(Guest Agent),用于在虚拟机内执行命令,并与宿主机进行交互。QEMU 9.1 对客户端代理功能进行了扩展:
- Linux 客户端的新命令:Linux 用户现在可以使用新的
guest-network-get-route
命令来管理虚拟机内部的网络路由信息,这为网络配置和调试提供了便利。 - Windows 客户端的新命令:对于 Windows 虚拟机,QEMU 9.1 引入了
guest-ssh-*
命令,这些命令简化了 SSH 相关的操作。 - CLI 控制增强:用户现在可以更方便地通过 CLI 界面配置允许或阻止的命令,进一步提升了客户端代理的安全性和可控性。
4. 安全性和 ARM 支持的增强
QEMU 9.1 在安全性方面做了重要改进,同时在 ARM 架构的支持上也实现了跨越式提升:
- NBD 服务器安全补丁:新版 QEMU 修复了多个与网络块设备(Network Block Device,NBD)服务器相关的安全漏洞,进一步增强了 QEMU 在远程存储服务中的安全性。特别是对 NBD TLS 加密的增强,使得数据传输过程更加安全,降低了潜在的攻击风险。
- ARM 支持的扩展:在 ARM 架构方面,QEMU 9.1 为多个新特性提供了支持,包括增强的嵌套页表(Nested Page Table)支持。这一改进使得虚拟机在 ARM 平台上的运行效率大幅提升。此外,多个 ARM 开发板的 CPU 和外设支持也得到了完善,为开发者提供了更多的灵活性。
5. 扩展的架构支持
QEMU 9.1 进一步扩展了对多种架构的支持,特别是 LoongArch 和 RISC-V 架构:
- LoongArch 支持:QEMU 9.1 新增了对 LoongArch 架构的支持,使得用户可以直接从 ELF 内核引导,并支持运行多达 256 个虚拟 CPU(vCPU)。这一特性使得 QEMU 在 LoongArch 平台上的仿真能力大大增强,特别是对于需要大规模并行计算的应用场景。
- RISC-V 的更新:作为一个快速发展的开源架构,RISC-V 在 QEMU 9.1 中也得到了大量改进。新增的架构扩展和仿真优化使得用户能够更好地在 RISC-V 平台上进行开发和测试工作,推动了 RISC-V 在虚拟化领域的应用。
6. x86 支持的增强
尽管 ARM 和 RISC-V 架构在 QEMU 9.1 中得到了大量更新,x86 架构的支持也未被忽视:
- KVM 支持:新版 QEMU 为 AMD SEV-SNP 虚拟机提供了 KVM 支持,这使得用户可以在虚拟化环境中更好地利用 AMD 的安全加密虚拟化功能。
- CPU 仿真更新:QEMU 9.1 增加了对 Intel 和 AMD 最新处理器的支持,确保用户可以仿真和测试最新的处理器功能。这对于希望在虚拟化环境中开发和测试最新 CPU 特性的软件开发者来说是一个巨大的优势。
弃用和移除的功能
如同每次重大版本更新,QEMU 9.1 也移除了一些陈旧的功能和目标,以确保项目的简洁和现代化:
- Nios II 目标的移除:QEMU 9.1 不再支持 Nios II 目标。Nios II 是一种由 Altera(现为 Intel)开发的 32 位嵌入式处理器架构,随着技术的发展,其在主流虚拟化需求中的重要性已经逐渐减弱。因此,为了简化代码库,QEMU 决定不再提供对 Nios II 的支持。
其他旧选项的移除或弃用:为了保持与现代标准的兼容性,QEMU 9.1 还移除了几个旧的属性和选项,用户在使用这些功能时将会收到警告,建议参考官方文档中的“弃用功能”章节,找到替代方案。
QEMU 9.1下载:
https://www.qemu.org/download/
- 发布公告:
https://www.qemu.org/2024/09/03/qemu-9-1-0/
- 变更日志:
https://wiki.qemu.org/ChangeLog/9.1