【技术实现步骤摘要】
内核子系统热升级方法、设备及存储介质
[0001]本申请涉及云
,尤其涉及一种内核子系统热升级方法、设备及存储介质。
技术介绍
[0002]Linux内核是个宏内核,它由大量子系统组成,这些子系统是紧密耦合的,不可灵活拆卸的;与子系统相对的另一个概念是内核模块,他们是可以灵活拆卸的。扩展的伯克利包过滤器(extended Berkeley Packet Filter,eBPF)是Linux内核中的一个子系统,旨在提供高性能、可编程的数据包处理能力,可用于实现网络过滤、安全检测、流量分析等应用场景。
[0003]编程人员不断提供各种新特性的eBPF子系统,这些eBPF子系统分布在不同版本的Linux内核中。用户想要使用具有新特性的eBPF子系统,需要在停机状态下对整个Linux内核进行更新,不仅会造成服务中断,而且内核版本的更新代价非常大,容易引入新的问题。因此,亟需一种针对eBPF子系统进行独立热升级的方法。
技术实现思路
[0004]本申请的多个方面提供一种内核子系统热升级方法、设备及存储介质,用以针内核子系统进行独立热升级,解决现有内核升级面临的服务中断等问题。
[0005]本申请实施例提供一种内核子系统热升级方法,包括:基于与第一内核子系统适配的边界配置信息,从内核源文件中提取第一内核子系统的当前源代码,并对第一内核子系统的当前源代码进行升级以得到函数代码升级数据;基于第一内核子系统的初始化函数和/或调试结果,识别第一内核子系统的至少一个数据依赖关系;根据函数代码升级数据和 ...
【技术保护点】
【技术特征摘要】
1.一种内核子系统热升级方法,其特征在于,包括:基于与第一内核子系统适配的边界配置信息,从内核源文件中提取所述第一内核子系统的当前源代码,并对所述第一内核子系统的当前源代码进行升级以得到函数代码升级数据;基于所述第一内核子系统的初始化函数和/或调试结果,识别所述第一内核子系统的至少一个数据依赖关系;根据所述函数代码升级数据和所述至少一个数据依赖关系,构建用于针对第一内核子系统进行热升级所需的热升级脚本文件;在内核的运行过程中,接收针对所述第一内核子系统的热升级指令,所述热升级指令指向所述热升级脚本文件;根据所述热升级脚本文件,对所述第一内核子系统的当前源代码中的当前函数代码和至少一个数据依赖关系分别进行热升级。2.根据权利要求1所述的方法,其特征在于,根据所述热升级脚本文件,对所述第一内核子系统的当前源代码中的当前函数代码和至少一个数据依赖关系分别进行热升级,包括:从所述热升级脚本文件中,解析出用于函数代码热升级的第一脚本数据和用于数据依赖关系热升级的第二脚本数据;执行所述第一脚本数据,以根据所述函数代码升级数据对所述第一内核子系统的当前源代码中的当前函数代码进行热升级;执行所述第二脚本数据,以对所述第一内核子系统的至少一个数据依赖关系进行热升级。3.根据权利要求2所述的方法,其特征在于,执行所述第二脚本数据,以对所述第一内核子系统的至少一个数据依赖关系进行热升级,包括:执行所述第二脚本数据,获取所述第一内核子系统的各个数据依赖关系及其对应的数据依赖方向和热升级命令;根据各个数据依赖关系对应的数据依赖方向执行对应的热升级命令,以解除原有数据依赖关系并重新注册新的数据依赖关系。4.根据权利要求3所述的方法,其特征在于,执行所述第二脚本数据,获取所述第一内核子系统的各个数据依赖关系及其对应的数据依赖方向和热升级命令,包括:执行所述第二脚本数据,获取被所述第一内核子系统依赖的第一类数据依赖关系和依赖于所述第一内核子系统的第二类数据依赖关系;相应地,根据各个数据依赖关系对应的数据依赖方向执行对应的热升级命令,以解除原有数据依赖关系并重新注册新的数据依赖关系,包括:对于第一类数据依赖关系,执行对应热升级命令,以解除所述第一内核子系统在热升级前向所述内核源文件中其他子系统注册的原有数据依赖关系,并向所述其他子系统或内核模块重新注册新的数据依赖关系;对于第二类数据依赖关系,执行对应热升级命令,以解除所述内核源文件中其他子系统向所述第一内核子系统注册的原有数据依赖关系,并重新向热升级后的第一内核子系统注册新的数据依赖关系。
5.根据权利要求4所述的方法,其特征在于,所述第一内核子系统为扩展的伯克利包过滤器eBPF子系统。6.根据权利要求5所述的方法,其特征在于,对于第一类数据依赖关系,执行对应热升级命令,以解除所述第一内核子系统在热升级前向所述内核源文件中其他子系统注册的原有数据依赖关系,并向所述其他子系统或内核模块重新注册新的数据依赖关系,包括以下至少一种:执行与文件管理子系统对应的热升级命令,以解除所述第一内核子系统在热升级前向所述文件管理子系统注册的原有数据依赖关系,并向所述文件管理子系统重新注册新的数据依赖关系;执行与网络管理子系统对应的热升级命令,以解除所述第一内核子系统在热升级前向所述网络管理子系统注册的原有数据依赖关系,并向所述网络管理子系统重新注册新的数据依赖关系;执行与内核模块管理子系统对应的热升级命令,以解除所述第一内核子系统在热升级前向所述内核模块管理子系统注册的原有数据依赖关系,并向所述内核模块管理子系统重新注册新的数据依赖关系。7.根据权利要求6所述的方法,其特征在于,执行与文件管理子系统对应的热升级命令,以解除所述第一内核子系统在热升级前向所述文件管理子系统注册的原有数据依赖关系,并向所述文件管理子系统重新注册新的数据依赖关系,包括以下至少一种:执行文件系统的删除命令,以删除所述第一内核子系统在热升级前向所述文件管理子系统注册的原有文件系统bpffs;执行文件系统的注册命令,以向所述文件管理子系统重新注册新的文件系统bpffs;执行挂载点的删除命令,以删除所述文件管理子系统中用于挂载所述原有文件系统的原有挂载点路径;执行挂载点的创建命令,以向所述文件管理子系统重新创建用于挂载所述新的文件系统的挂载点路径;执行BTF路径的删除命令,以删除所述第一内核子系统在热升级前向所述文件管理子系统中注册的原有BTF文件路径;执行BTF路径的创建命令,以向所述文件管理子系统重新创建与热升级后的第一内核子系统适配的新的BTF文件路径。8.根据权利要求6所述的方法,其特征在于,执行与网络管理子系统对应的热升级命令,以解除所述第一内核子系统在热升级前向所述网络管理子系统注册的原有数据依赖关系,并向所述网络管理子系统重新注册新的数据依赖关系,包括以下至少一种:执行网络命名空间的卸载命令,以将所述第一内核子系统在热升级前的函数代码从所述网络管理子系统所管理的网络命名空间中删除;执行网络命名空间的挂载命令,以在所述网络命名空间中重新挂载所述第一内核子系统在热升级后的函数...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。