内核子系统热升级方法、设备及存储介质技术方案

技术编号:39307396 阅读:11 留言:0更新日期:2023-11-12 15:55
本申请实施例提供一种内核子系统热升级方法、设备及存储介质。在本申请实施例中,针对需要进行热升级的内核子系统,首先,基于边界配置信息从内核源文件中提取出内核子系统的当前源代码,并对当前源代码进行升级得到函数代码升级数据,以及识别内核子系统的至少一个数据依赖关系;接着,构建对内核子系统进行热升级所需的热升级脚本文件;最后,在内核的运行过程中,利用热升级脚本文件对内核子系统的函数代码和数据依赖关系分别进行热升级。由此,在内核不停机的情况下,实现了内核子系统的独立热升级,为定制化内核子系统的新特性提供了便利;也可以避免因为子系统升级而升级整个内核所引发的各种不确定性风险。个内核所引发的各种不确定性风险。个内核所引发的各种不确定性风险。

【技术实现步骤摘要】
内核子系统热升级方法、设备及存储介质


[0001]本申请涉及云
,尤其涉及一种内核子系统热升级方法、设备及存储介质。

技术介绍

[0002]Linux内核是个宏内核,它由大量子系统组成,这些子系统是紧密耦合的,不可灵活拆卸的;与子系统相对的另一个概念是内核模块,他们是可以灵活拆卸的。扩展的伯克利包过滤器(extended Berkeley Packet Filter,eBPF)是Linux内核中的一个子系统,旨在提供高性能、可编程的数据包处理能力,可用于实现网络过滤、安全检测、流量分析等应用场景。
[0003]编程人员不断提供各种新特性的eBPF子系统,这些eBPF子系统分布在不同版本的Linux内核中。用户想要使用具有新特性的eBPF子系统,需要在停机状态下对整个Linux内核进行更新,不仅会造成服务中断,而且内核版本的更新代价非常大,容易引入新的问题。因此,亟需一种针对eBPF子系统进行独立热升级的方法。

技术实现思路

[0004]本申请的多个方面提供一种内核子系统热升级方法、设备及存储介质,用以针内核子系统进行独立热升级,解决现有内核升级面临的服务中断等问题。
[0005]本申请实施例提供一种内核子系统热升级方法,包括:基于与第一内核子系统适配的边界配置信息,从内核源文件中提取第一内核子系统的当前源代码,并对第一内核子系统的当前源代码进行升级以得到函数代码升级数据;基于第一内核子系统的初始化函数和/或调试结果,识别第一内核子系统的至少一个数据依赖关系;根据函数代码升级数据和至少一个数据依赖关系,构建针对第一内核子系统进行热升级所需的热升级脚本文件;在内核的运行过程中,接收针对第一内核子系统的热升级指令,热升级指令指向热升级脚本文件;根据热升级脚本文件,对第一内核子系统的当前源代码中的当前函数代码和至少一个数据依赖关系分别进行热升级。
[0006]本申请实施例提供一种内核子系统热升级方法,包括:在内核运行过程中,接收针对第一内核子系统的热升级指令,热升级指令指向热升级脚本文件;根据热升级脚本文件,对第一内核子系统的至少一个数据依赖关系分别进行热升级;其中,热升级脚本文件是第一内核子系统的至少一个数据依赖关系构建得到,第一内核子系统的至少一个数据依赖关系是基于第一内核子系统的初始化函数和/或调试结构识别出的。
[0007]本申请实施例提供一种内核子系统热升级装置,包括:代码升级处理模块,用于基于与第一内核子系统适配的边界配置信息,从内核源文件中提取第一内核子系统的当前源代码,并对第一内核子系统的当前源代码进行升级以得到函数代码升级数据;数据依赖处理模块,用于基于第一内核子系统的初始化函数和/或调试结果,识别第一内核子系统的至少一个数据依赖关系;脚本文件构建模块,用于根据函数代码升级数据和至少一个数据依赖关系,构建针对第一内核子系统进行热升级所需的热升级脚本文件;命令接收模块,用于
在内核的运行过程中,接收针对第一内核子系统的热升级指令,热升级指令指向热升级脚本文件;热升级模块,用于根据热升级脚本文件,对第一内核子系统的当前源代码中的当前函数代码和至少一个数据依赖关系分别进行热升级。
[0008]本申请实施例提供一种电子设备,包括:存储器和处理器;存储器中存储有计算机程序,处理器,与存储器耦合,用于执行计算机程序,以实现内核子系统热升级方法中的步骤。
[0009]本申请实施例提供一种存储有计算机程序的计算机可读存储介质,当计算机程序被处理器执行时,致使处理器实现内核子系统热升级方法中的步骤。
[0010]在本申请实施例中,针对需要进行热升级的内核子系统,首先,基于边界配置信息从内核源文件中提取出内核子系统的当前源代码,并对内核子系统的当前源代码进行升级得到函数代码升级数据,以及识别内核子系统的至少一个数据依赖关系;接着,构建对内核子系统进行热升级所需的热升级脚本文件;最后,在内核的运行过程中,响应于针对内核子系统的热升级指令,利用热升级脚本文件对内核子系统的函数代码和数据依赖关系分别进行热升级。由此,在内核不停机的情况下,实现了内核子系统的独立热升级,为定制化内核子系统的新特性提供了便利;另外,由于不需要对整个内核进行升级,也可以避免因为子系统升级而升级整个内核所引发的各种不确定性风险。
附图说明
[0011]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1a为本申请实施例提供的一种内核子系统热升级方法的流程图;图1b为本申请实施例提供的eBPF子系统与内核中其他子系统之间的依赖关系示意图;图2为本申请实施例提供的又一种内核子系统热升级方法的流程图;图3为本申请实施例提供的又一种内核子系统热升级方法的流程图;图4为本申请实施例提供的一种内核子系统热升级装置的结构示意图;图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
[0012]为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0013]需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
[0014]Linux内核是个宏内核,它由大量子系统组成,这些子系统是紧密耦合的,不可灵
活拆卸的;与子系统相对的另一个概念是内核模块,他们是可以灵活拆卸的。扩展的伯克利包过滤器(extended Berkeley Packet Filter,eBPF)是Linux内核中的一个子系统,旨在提供高性能、可编程的数据包处理能力,可用于实现网络过滤、安全检测、流量分析等应用场景。
[0015]编程人员不断提供各种新特性的eBPF子系统,这些eBPF子系统分布在不同版本的Linux内核中。用户想要使用具有新特性的eBPF子系统,需要在停机状态下对整个Linux内核进行更新,不仅会造成服务中断,而且内核版本的更新代价非常大,容易引入新的问题。因此,亟需一种针对eBPF子系统进行独立热升级的方法。
[0016]为此,本申请实施例提供一种内核子系统热升级方法、设备及存储介质。在本申请实施例中,针对需要进行热升级的内核子系统,首先,基于边界配置信息从内核源文件中提取出内核子系统的当前源代码,内核源文件也即内核对应的源文件;并对内核子系统的当前源代码进行升级得到函数代码升级数据,以及识别内核子系统的至少一个数据依赖关系;接着,构建对内核子系统进行热升级所本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内核子系统热升级方法,其特征在于,包括:基于与第一内核子系统适配的边界配置信息,从内核源文件中提取所述第一内核子系统的当前源代码,并对所述第一内核子系统的当前源代码进行升级以得到函数代码升级数据;基于所述第一内核子系统的初始化函数和/或调试结果,识别所述第一内核子系统的至少一个数据依赖关系;根据所述函数代码升级数据和所述至少一个数据依赖关系,构建用于针对第一内核子系统进行热升级所需的热升级脚本文件;在内核的运行过程中,接收针对所述第一内核子系统的热升级指令,所述热升级指令指向所述热升级脚本文件;根据所述热升级脚本文件,对所述第一内核子系统的当前源代码中的当前函数代码和至少一个数据依赖关系分别进行热升级。2.根据权利要求1所述的方法,其特征在于,根据所述热升级脚本文件,对所述第一内核子系统的当前源代码中的当前函数代码和至少一个数据依赖关系分别进行热升级,包括:从所述热升级脚本文件中,解析出用于函数代码热升级的第一脚本数据和用于数据依赖关系热升级的第二脚本数据;执行所述第一脚本数据,以根据所述函数代码升级数据对所述第一内核子系统的当前源代码中的当前函数代码进行热升级;执行所述第二脚本数据,以对所述第一内核子系统的至少一个数据依赖关系进行热升级。3.根据权利要求2所述的方法,其特征在于,执行所述第二脚本数据,以对所述第一内核子系统的至少一个数据依赖关系进行热升级,包括:执行所述第二脚本数据,获取所述第一内核子系统的各个数据依赖关系及其对应的数据依赖方向和热升级命令;根据各个数据依赖关系对应的数据依赖方向执行对应的热升级命令,以解除原有数据依赖关系并重新注册新的数据依赖关系。4.根据权利要求3所述的方法,其特征在于,执行所述第二脚本数据,获取所述第一内核子系统的各个数据依赖关系及其对应的数据依赖方向和热升级命令,包括:执行所述第二脚本数据,获取被所述第一内核子系统依赖的第一类数据依赖关系和依赖于所述第一内核子系统的第二类数据依赖关系;相应地,根据各个数据依赖关系对应的数据依赖方向执行对应的热升级命令,以解除原有数据依赖关系并重新注册新的数据依赖关系,包括:对于第一类数据依赖关系,执行对应热升级命令,以解除所述第一内核子系统在热升级前向所述内核源文件中其他子系统注册的原有数据依赖关系,并向所述其他子系统或内核模块重新注册新的数据依赖关系;对于第二类数据依赖关系,执行对应热升级命令,以解除所述内核源文件中其他子系统向所述第一内核子系统注册的原有数据依赖关系,并重新向热升级后的第一内核子系统注册新的数据依赖关系。
5.根据权利要求4所述的方法,其特征在于,所述第一内核子系统为扩展的伯克利包过滤器eBPF子系统。6.根据权利要求5所述的方法,其特征在于,对于第一类数据依赖关系,执行对应热升级命令,以解除所述第一内核子系统在热升级前向所述内核源文件中其他子系统注册的原有数据依赖关系,并向所述其他子系统或内核模块重新注册新的数据依赖关系,包括以下至少一种:执行与文件管理子系统对应的热升级命令,以解除所述第一内核子系统在热升级前向所述文件管理子系统注册的原有数据依赖关系,并向所述文件管理子系统重新注册新的数据依赖关系;执行与网络管理子系统对应的热升级命令,以解除所述第一内核子系统在热升级前向所述网络管理子系统注册的原有数据依赖关系,并向所述网络管理子系统重新注册新的数据依赖关系;执行与内核模块管理子系统对应的热升级命令,以解除所述第一内核子系统在热升级前向所述内核模块管理子系统注册的原有数据依赖关系,并向所述内核模块管理子系统重新注册新的数据依赖关系。7.根据权利要求6所述的方法,其特征在于,执行与文件管理子系统对应的热升级命令,以解除所述第一内核子系统在热升级前向所述文件管理子系统注册的原有数据依赖关系,并向所述文件管理子系统重新注册新的数据依赖关系,包括以下至少一种:执行文件系统的删除命令,以删除所述第一内核子系统在热升级前向所述文件管理子系统注册的原有文件系统bpffs;执行文件系统的注册命令,以向所述文件管理子系统重新注册新的文件系统bpffs;执行挂载点的删除命令,以删除所述文件管理子系统中用于挂载所述原有文件系统的原有挂载点路径;执行挂载点的创建命令,以向所述文件管理子系统重新创建用于挂载所述新的文件系统的挂载点路径;执行BTF路径的删除命令,以删除所述第一内核子系统在热升级前向所述文件管理子系统中注册的原有BTF文件路径;执行BTF路径的创建命令,以向所述文件管理子系统重新创建与热升级后的第一内核子系统适配的新的BTF文件路径。8.根据权利要求6所述的方法,其特征在于,执行与网络管理子系统对应的热升级命令,以解除所述第一内核子系统在热升级前向所述网络管理子系统注册的原有数据依赖关系,并向所述网络管理子系统重新注册新的数据依赖关系,包括以下至少一种:执行网络命名空间的卸载命令,以将所述第一内核子系统在热升级前的函数代码从所述网络管理子系统所管理的网络命名空间中删除;执行网络命名空间的挂载命令,以在所述网络命名空间中重新挂载所述第一内核子系统在热升级后的函数...

【专利技术属性】
技术研发人员:丁天琛赵鑫鹏
申请(专利权)人:阿里云计算有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1