演讲嘉宾

阮帅

嘀嘀无限科技发展有限公司

嘀嘀无限科技发展有限公司

议题:透传设备VMM热升级探索与实践

目前随着公有云集群规模越来越大,如何在不间断虚拟机运行的情况下对虚拟化的各个组件进行热升级成为了一个非常关键的问题,当前比较常规的做法是使用本地热迁移的技术对QEMU进行热升级,但这种方式升级时会占用额外的内存和CPU资源,对主机上的虚拟机性能影响较大,并且不支持带有透传设备的VM升级,这就限制了对线上大量GPU VM升级的支持。同时,这种升级方式也不支持KVM模块的热升级,虽然有些问题的修复可通过kpatch热补丁解决,但只适合改动较小的修复,无法应对添加新的特性等代码改动较大的场景。 我们在滴滴云的实践中,使用了一种基于共享内存的VMM热升级方案,主要技术点如下: 1. 采用QEMU直接创建子进程,并在父子进程共享内存的方式下进行QEMU热升级,避免内存复制以降低热升级对主机资源的消耗。 2. 保持VFIO设备热升级过程中状态不变,并通过保存及恢复设备在QEMU中的信息来保证设备状态在升级前后的一致性。 3. 修改KVM内核模块以支持同时加载多个模块并确保互不干扰,新的QEMU进程通过使用新加载的KVM模块实现KVM内核模块的升级。 该方案除了能解决上述问题外,还能有效降低热升级的downtime。 后续我们会通过优化热升级流程进一步减少downtime, 并且支持带有VTd-PI的透传设备VM的热升级。