一种Linux系统内核日志保存方法、设备及介质与流程

文档序号:36333124发布日期:2023-12-10 15:05阅读:91来源:国知局
一种的制作方法

本发明涉及linux系统,尤其涉及一种linux系统内核日志保存方法、设备及介质。


背景技术:

1、当前linux系统的内核日志保存方法的核心过程为:在linux内核中实现了一个循环缓冲区:__log_buf,当生产者将消息存入该循环缓冲区时,log服务模块作为消费者可以从循环缓冲区__log_buf中读取该消息,/dev/kmsg实现了一个字符设备供用户进程读取。klogd通过系统调用读取缓冲区信息存储为文件,或者通过注册console,将循环缓冲区__log_buf中的新增消息输出到终端。kmsg_dump接口给mtdoops使用,mtdoops用于在系统oops时将循环缓冲区__log_buf故障前收到的信息保存到mtdoops设备中。

2、但上述方案存在如下缺点:首先,在从循环缓冲区__log_buf中获取数据时,如果某些系统故障导致服务无法运行或者立即重启,输入到__log_buf中最后的消息将无法获得。其次,klogd方案占用系统资源,流程太长,消息不一定能及时保存,系统故障必须保证该方案的进程无故障才能保存消息。最后,mtdoops设备需要单独的分区,保存的消息类型有限。综上所述,目前的linux内核日志保存方法无法保证在系统无法运行或重启后,及时读取循环缓冲区中缓存的数据,可能导致数据丢失,不能为故障问题定位提供有效信息,为用户造成一定损失。


技术实现思路

1、本发明实施例提供了一种linux系统内核日志保存方法、设备及介质,用于解决如下技术问题:目前的linux内核日志保存方法无法保证在系统无法运行或重启时,及时读取循环缓冲区中最后缓存的数据,可能导致数据丢失,为用户造成一定损失。

2、本发明实施例采用下述技术方案:

3、一方面,本发明实施例提供了一种linux系统内核日志保存方法,方法包括:获取内核循环缓冲区的物理地址及信息长度;

4、将所述内核循环缓冲区的物理地址及信息长度保存为日志配置文件,并将所述日志配置文件保存在预设分区内;

5、当系统故障后,对系统进行热复位;

6、通过bootloader工具,挂载所述预设分区中的日志配置文件;

7、根据读取的日志配置文件中的循环缓冲区信息,读取对应的信息并存储为日志文件;

8、在系统进入到正常运行状态后,读取所述日志文件并显示给用户。

9、在一种可行的实施方式中,获取内核循环缓冲区的物理地址及信息长度,具体包括:

10、通过内核全局变量,定义一个__log_buf作为循环缓冲区;

11、通过config_log_buf_shift参数定义所述循环缓冲区的信息长度;其中,1<<config_log_buf_shift;

12、在内核编译后,查看vmlinux符号表,获取所述循环缓冲区__log_buf所在的物理地址。

13、在一种可行的实施方式中,将所述内核循环缓冲区的物理地址及信息长度保存为日志配置文件,并将所述日志配置文件保存在预设分区内,具体包括:

14、在linux系统编译完成后,将所述内核循环缓冲区__log_buf物理地址及信息长度保存为日志配置文件;

15、将所述日志配置文件保存在支持bootloader工具挂载和读取的预设分区内;

16、制作所述linux系统的镜像并进行烧写。

17、在一种可行的实施方式中,当系统故障后,对系统进行热复位,具体包括:

18、在linux系统运行过程中,若出现系统故障,则通过热复位方式,对所述linux系统进行热复位;其中,所述热复位方式至少包括看门狗复位以及reset按键复位。

19、在一种可行的实施方式中,通过bootloader工具,挂载所述预设分区中的日志配置文件,具体包括:

20、热复位后,进入bootloader工具;其中,bootloader工具至少包括uboot工具、onie工具以及pmon工具;

21、通过所述bootloader工具,挂载所述预设分区中的日志配置文件,并读取所述日志配置文件中的循环缓冲区__log_buf的物理地址及信息长度。

22、在一种可行的实施方式中,根据读取的日志配置文件中的循环缓冲区信息,读取对应的信息并存储为日志文件,具体包括:

23、根据读取的循环缓冲区的物理地址,定位所述循环缓冲区__log_buf的存储位置;

24、从所述物理地址中的起始物理地址开始读取,根据所述信息长度读取相应长度的信息,并存储为日志文件。

25、在一种可行的实施方式中,在从所述物理地址中的起始物理地址开始读取,根据所述信息长度读取相应长度的信息,并存储为日志文件之后,所述方法还包括:

26、将所述日志文件保存在所述日志配置文件所在的预设分区中。

27、在一种可行的实施方式中,在系统进入到正常运行状态后,读取所述日志文件并显示给用户,具体包括:

28、通过所述bootloader工具继续引导linux系统进行复位;

29、在所述linux系统进入到正常运行状态后,挂载所述日志文件所在的预设分区;

30、在所述预设分区中读取所述日志文件,并显示给用户。

31、另一方面,本发明实施例还提供了一种linux系统内核日志保存设备,设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有能够被所述至少一个处理器执行的指令,以使所述至少一个处理器能够执行:

32、获取内核循环缓冲区的物理地址及信息长度;将所述内核循环缓冲区的物理地址及信息长度保存为日志配置文件,并将所述日志配置文件保存在预设分区内;当系统故障后,对系统进行热复位;通过bootloader工具,挂载所述预设分区中的日志配置文件;根据读取的日志配置文件中的循环缓冲区信息,读取对应的信息并存储为日志文件;在系统进入到正常运行状态后,读取所述日志文件并显示给用户。

33、最后,本发明实施例还提供了一种存储介质,所述存储介质为非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有至少一个程序,每个所述程序包括指令,所述指令当被终端执行时,使所述终端执行:

34、获取内核循环缓冲区的物理地址及信息长度;将所述内核循环缓冲区的物理地址及信息长度保存为日志配置文件,并将所述日志配置文件保存在预设分区内;当系统故障后,对系统进行热复位;通过bootloader工具,挂载所述预设分区中的日志配置文件;根据读取的日志配置文件中的循环缓冲区信息,读取对应的信息并存储为日志文件;在系统进入到正常运行状态后,读取所述日志文件并显示给用户。

35、与现有技术相比,本发明实施例提供的一种linux系统内核日志保存方法、设备及介质,具有如下有益效果:

36、本发明实现了在系统故障的情况下,通过看门狗或者按键等工具对系统进行热重启。并在热重启后通过的bootloader工具,进行缓冲区物理地址和大小的读取,保证了在系统重启情况下也能抓取重启前缓冲区中最后缓存的数据。并且bootloader工具不占用__log_buf所在物理内存,减少了在抓取内核日志中的系统资源消耗,无需依赖硬件终端实时监控实现日志保存,也无需改变软件分区结构。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1