CN113342276A - 一种日志保存方法、***、设备以及介质 - Google Patents

一种日志保存方法、***、设备以及介质 Download PDF

Info

Publication number
CN113342276A
CN113342276A CN202110657626.XA CN202110657626A CN113342276A CN 113342276 A CN113342276 A CN 113342276A CN 202110657626 A CN202110657626 A CN 202110657626A CN 113342276 A CN113342276 A CN 113342276A
Authority
CN
China
Prior art keywords
cache
logs
subspace
log
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110657626.XA
Other languages
English (en)
Other versions
CN113342276B (zh
Inventor
张彬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202110657626.XA priority Critical patent/CN113342276B/zh
Publication of CN113342276A publication Critical patent/CN113342276A/zh
Application granted granted Critical
Publication of CN113342276B publication Critical patent/CN113342276B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种日志保存方法,包括以下步骤:响应于多个内核产生日志,根据当前缓存地址确定用于缓存日志的缓存空间;将每一个内核产生的日志分别缓存到缓存空间中与内核对应的子空间;分别更新每一个子空间对应的用于标识当前已缓存日志数量的第一标志位并与阈值比对;响应于检测到存在第一标志位达到阈值的子空间,将当前缓存地址切换成其他缓存地址,以将其他缓存地址作为新的当前缓存地址并返回根据当前缓存地址确定用于缓存日志的缓存空间的步骤。本发明还公开了一种***、计算机设备以及可读存储介质。本发明提出的方案在固态硬盘运行时轮流使用不同的缓存地址,这样可以有效防止只有一个缓存地址时关键日志可能被覆盖而丢失的情况。

Description

一种日志保存方法、***、设备以及介质
技术领域
本发明涉及存储领域,具体涉及一种日志保存方法、***、设备以及存储介质。
背景技术
随着现代社会的信息化程度的不断提高,越来越多的数据被生成并保存下来,现代社会已经从互联网时代进入大数据时代。固态硬盘作为高性能、大容量的存储媒介,正在被广泛使用。固态硬盘在使用过程中,firmware的运行会产生一些日志,这些日志包含了firmware运行过程中的重要信息,假如固态硬盘在使用时发生错误,开发人员可以基于这些日志定位发生错误的原因。鉴于此,有必要研究固态硬盘日志的长期保存和导出的技术。
现有的日志保存方法一般是固态硬盘上电后,从缓存区中分配一部分空间,用于保存运行时产生的日志,若该空间被写满,则从该空间的起始位置开始覆盖原来的日志,保存新的日志,在固态硬盘每次下电时,将该空间的内容下刷到NAND Flash的不同pca中。导出日志时,可以从不同的pca中导出每次下电前保存的日志。该方法只在每次下电时才保存日志,若固态硬盘长时间在电,则较早的日志都被覆盖了,被覆盖的日志可能包含定位问题所需的关键信息。
发明内容
有鉴于此,为了克服上述问题的至少一个方面,本发明实施例提出一种日志保存方法,包括以下步骤:
响应于多个内核产生日志,根据当前缓存地址确定用于缓存日志的缓存空间;
将每一个内核产生的日志分别缓存到所述缓存空间中与内核对应的子空间;
分别更新每一个所述子空间对应的用于标识当前已缓存日志数量的第一标志位并与阈值比对;
响应于检测到存在所述第一标志位达到阈值的子空间,将所述当前缓存地址切换成其他缓存地址,以将所述其他缓存地址作为新的当前缓存地址并返回根据当前缓存地址确定用于缓存日志的缓存空间的步骤。
在一些实施例中,还包括:
设置标识当前用于缓存日志的缓存空间的第二标志位;
响应于检测到存在所述第一标志位达到阈值的子空间,从所述第二标识位对应的缓存空间中获取到待下刷的日志;
将获取到的待下刷的日志下刷到存储器。
在一些实施例中,将获取到的待下刷的日志下刷到存储器,进一步包括:
设定用于存储所述待下刷的日志的多个block;
依次循环利用block存储所述待下刷的日志。
在一些实施例中,还包括:
响应于检测到存在所述第一标志位达到阈值的子空间,将每一个所述子空间对应的第一标志位均清零。
在一些实施例中,还包括:
响应于接收到下电指令,将每一个所述子空间对应的第一标志位保存到第一预设位置并将每一个所述子空间对应的第一标志位清零;
将当前用于缓存日志的缓存空间中的所有日志下刷到存储器并获取对应的下刷地址;
将所述下刷地址保存到第二预设位置;
将所述第一预设位置保存的每一个所述子空间对应的第一标志位和所述第二预设位置保存的所述下刷地址下刷到所述存储空间。
在一些实施例中,还包括:
响应于接收到下电指令后若干个内核仍产生日志,将所述若干个内核产生的日志分别缓存到基于所述其他缓存地址确定的缓存空间中相应的子空间;
根据所述其他缓存地址确定的缓存空间中相应的子空间对应的第一标志位更新第一预设位置;
将所述其他缓存地址确定的缓存空间中的所有日志下刷到存储器并重新获取对应的下刷地址;
基于重新获取的下刷地址更新第二预设位置的下刷地址;
将所述第一预设位置中更新后的第一标志位和所述第二预设位置更新后的下刷地址下刷到所述存储空间。
在一些实施例中,还包括:
响应于接收到上电指令,从所述存储器中获取所述第一预设位置和所述第二预设位置在下电前下刷的值;
将所述第一存储位置的值赋给第一标识位和根据所述第二存储位置保存的下刷地址在所述存储器中获取下电前下刷的日志;
将获取到的下电前下刷的日志分别缓存到根据当前缓存地址确定的缓存空间中与内核对应的子空间;
基于每一个子空间对应的第一标识位确定子空间中继续缓存日志的初始位置。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种日志保存***,包括:
确定模块,配置为响应于多个内核产生日志,根据当前缓存地址确定用于缓存日志的缓存空间;
缓存模块,配置为将每一个内核产生的日志分别缓存到所述缓存空间中与内核对应的子空间;
更新模块,配置为分别更新每一个所述子空间对应的用于标识当前已缓存日志数量的第一标志位并与阈值比对;
切换循环模块,配置为响应于检测到存在所述第一标志位达到阈值的子空间,将所述当前缓存地址切换成其他缓存地址,以将所述其他缓存地址作为新的当前缓存地址并返回根据当前缓存地址确定用于缓存日志的缓存空间的步骤。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如上所述的任一种日志保存方法的步骤。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时执行如上所述的任一种日志保存方法的步骤。
本发明具有以下有益技术效果之一:本发明提出的方案在固态硬盘运行时轮流使用不同的缓存地址,这样可以有效防止只有一个缓存地址时关键日志可能被覆盖而丢失的情况。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明的实施例提供的日志保存方法的流程示意图;
图2为本发明的实施例提供的日志保存***的结构示意图;
图3为本发明的实施例提供的计算机设备的结构示意图;
图4为本发明的实施例提供的计算机可读存储介质的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
在本发明的实施例中,NAND Flash为flash存储器的一种;pca为physical pagecache address,为NAND Flash中最小存储单元的物理地址;page为NAND Flash中存储数据的最小单元,一个pca对应一个page;block为NAND Flash中的存储空间,由很多个page组成。
根据本发明的一个方面,本发明的实施例提出一种日志保存方法,如图1所示,其可以包括步骤:
S1,响应于多个内核产生日志,根据当前缓存地址确定用于缓存日志的缓存空间;
S2,将每一个内核产生的日志分别缓存到所述缓存空间中与内核对应的子空间;
S3,分别更新每一个所述子空间对应的用于标识当前已缓存日志数量的第一标志位并与阈值比对;
S4,响应于检测到存在所述第一标志位达到阈值的子空间,将所述当前缓存地址切换成其他缓存地址,以将所述其他缓存地址作为新的当前缓存地址并返回根据当前缓存地址确定用于缓存日志的缓存空间的步骤。
本发明提出的方案在固态硬盘运行时轮流使用不同的缓存地址,这样可以有效防止只有一个缓存地址时关键日志可能被覆盖而丢失的情况。
在一些实施例中,固态硬盘的主控中通常包含多个core(内核),每个core都会运行一段firmware(固件),多个core之间相互配合以实现固态硬盘的功能。因此,每个core在运行时都会产生日志,且日志产生的频率和多少因core而异。本发明提出的方案可以只保存固态硬盘运行过程中的关键日志,因此每个core需要梳理代码,筛选并标记出关键日志,关键日志内容最终要下刷到NAND Flash(flash存储器的一种)中。
在固态硬盘上电时,可以从DDR缓存区申请两块大小相同的空间,用于缓存日志的缓存空间,可以分别记为buffer1和buffer2,buffer1和buffer2均有对应的缓存地址,当需要将日志保存到buffer1或buffer2中时,可以通过相应的函数调用对应的缓存地址即可确定对应的缓存空间。
buffer1和buffer2的大小均记为N,N等价于NAND Flash中若干个page的大小,该空间被固态硬盘中主控的core数量均等分,假设有M个core,则每个core使用的大小为N/M,每个core向它对应的N/M大小的空间中写入关键日志,core之间互不影响。同时,上电时根据M的值从DDR缓存区申请保存用于标识当前已缓存日志数量的第一标志位的空间log_position,log_position用于表示M个core中每个core在buffer1或buffer2中的当前日志的位置或数量。
例如,固态硬盘有16个core,在固态硬盘上电时,可以从DDR缓存区申请两块64K的空间,并记为buffer1和buffer2,则在每个buffer中可以划分出16个4K子空间,每一个core有4K的空间可以写入关键日志。然后从DDR缓存区申请32bit位的log_position,log_position的每两个bit位表示一个core在4K空间中写入的关键日志的位置或数量(也即每两个bit位表示一个第一标志位),该值在本实施例中是0-127,当值为127(即达到阈值)时,说明存在已经将子空间写满的core,这时就需要切换缓存地址。
具体的,当固态硬盘上电并完成上述初始化后,16个core开始产生关键日志,各个core可以首先向buffer1中各自对应的4K子空间写入关键日志,同时根据每一个子空间中写入的日志的数量,更新log_position中相应的标志位,即分别更新与core对应的两个bit位的值,其可以从0开始递增,并当增加到127时,说明存在将子空间写满的core,无论其他core是否写满对应的子空间,均清零log_position并停止向buffer1中写入,开始向buffer2中写入,同理,当buffer2中某个core写满了它的4K空间,然后清零log_position并停止向buffer2中写入,开始向buffer1中写入。
在一些实施例中,还包括:
设置标识当前用于缓存日志的缓存空间的第二标志位;
响应于检测到存在所述第一标志位达到阈值的子空间,从所述第二标识位对应的缓存空间中获取到待下刷的日志;
将获取到的待下刷的日志下刷到存储器。
在一些实施例中,还包括:
响应于检测到存在所述第一标志位达到阈值的子空间,将每一个所述子空间对应的第一标志位均清零。
具体的,可以根据M的值从DDR缓存区申请一个空间full_flag,full_flag用于表示M个core中每个core是否写满了buffer1或buffer2以及标识当前哪一个缓存空间用于缓存日志。例如16个core时,可以申请一个32bit的full_flag,full_flag的低16位表示每个core的4K空间是否写满,写满置1,否则置0。高16位则表示当前用于缓存日志的缓存空间。这样当低16位被置1时,各个core在缓存日志调用的相关函数可以切换缓存地址,从而改变用于缓存各个core的日志的缓存空间。
当主控的各个core首先向buffer1中写入关键日志,随着关键日志的写入,log_position中每个core对应的bit位的值不断递增,当到达最大值时,full_flag中的相应bit被置位为1,表示该core已写满关键日志,考虑到每个core的日志产生的频率和多少都不相同,可以由特定core(假设为T core)轮询检查full_flag,当full_flag不为零时将log_position清零,并使各个core开始向buffer2写入关键日志,同时将full_flag清零并触发将buffer1中内容下刷到存储器相应的pca中,然后清空buffer1中的内容,同理,当full_flag再次不为零时再切换回buffer1,并将buffer2中内容下刷到存储器相应的pca中并清空buffer2中的内容,如此循环使用buffer1和buffer2。
在一些实施例中,将获取到的待下刷的日志下刷到存储器,进一步包括:
设定用于存储所述待下刷的日志的多个block;
依次循环利用block存储所述待下刷的日志。
具体的,可以预先设定好可以使用哪些block,并维护可用block的起始pca表,当所有可用block都用完后,将第一个可用block擦除,将新的关键日志保存到其中,如此循环使用所有可用block。
需要说明的是,需要规划好从DDR缓存区申请的缓存空间的大小以及NAND Flash中用于保存日志的block的数量。从DDR缓存区申请的缓存空间的大小,需要结合固态硬盘的备电电容的容量、固态硬盘异常下电时其他必要操作所花费的时间以及向NAND Flash中下刷日志的频率来确定,若空间太大,则固态硬盘异常下电时备电电容的容量不足以提供其他必要操作和将上述空间的内容下刷到NAND Flash所需要的总时长;由于向NAND Flash中下刷日志是轮询的方式,触发下刷可能不是很及时,若空间太小,则会有覆盖关键日志的风险。
在一些实施例中,当需要将保存的关键日志导出时,从NAND Flash的相应pca中导出最新保存的一份关键日志到DDR缓存区,然后从DDR缓存区中读出并做二进制到ASCII码的转换,转换后的内容即为可读的关键日志;同时也支持导出历史上保存的任何一份及全部关键日志,以供分析历史上发生的固态硬盘错误。
在一些实施例中,还包括:
响应于接收到下电指令,将每一个所述子空间对应的第一标志位保存到第一预设位置并将每一个所述子空间对应的第一标志位清零;
将当前用于缓存日志的缓存空间中的所有日志下刷到存储器并获取对应的下刷地址;
将所述下刷地址保存到第二预设位置;
将所述第一预设位置保存的每一个所述子空间对应的第一标志位和所述第二预设位置保存的所述下刷地址下刷到所述存储空间。
具体的,可以申请用于保存log_position中每一个第一标志位的第一预设位置current_position,以及保存用于表示日志存入NAND Flash的当前pca地址的第二预设位置current_pca。
这样,在固态硬盘下电时,假设当前正在向buffer1中写日志,若full_flag为0,则先保存log_position的值到current_position,再将log_position清零。T core将buffer1中的内容下刷到相应地址pca并保存pca的值到current_pca,下刷完成后,若log_position为0,说明在下电过程中没有core继续写日志,则直接将current_pca和current_position下刷到NAND Flash,下电完成。
在一些实施例中,还包括:
响应于接收到下电指令后若干个内核仍产生日志,将所述若干个内核产生的日志分别缓存到基于所述其他缓存地址确定的缓存空间中相应的子空间;
根据所述其他缓存地址确定的缓存空间中相应的子空间对应的第一标志位更新第一预设位置;
将所述其他缓存地址确定的缓存空间中的所有日志下刷到存储器并重新获取对应的下刷地址;
基于重新获取的下刷地址更新第二预设位置的下刷地址;
将所述第一预设位置中更新后的第一标志位和所述第二预设位置更新后的下刷地址下刷到所述存储空间。
具体的,在固态硬盘下电时,假设当前正在向buffer1中写日志,使16个core向buffer2中写入关键日志,此时log_position不为0,则将其值更新到current_position,将buffer2中内容下刷到相应pca,同样将pca的值更新到current_pca,然后将current_pca和current_position下刷到NAND Flash,下电完成。
在一些实施例中,还包括:
响应于接收到上电指令,从所述存储器中获取所述第一预设位置和所述第二预设位置在下电前下刷的值;
将所述第一存储位置的值赋给第一标识位和根据所述第二存储位置保存的下刷地址在所述存储器中获取下电前下刷的日志;
将获取到的下电前下刷的日志分别缓存到根据当前缓存地址确定的缓存空间中与内核对应的子空间;
基于每一个子空间对应的第一标识位确定子空间中继续缓存日志的初始位置。
具体的,固态硬盘后续每次上电时,从NAND Flash中恢复current_pca和current_position的值,将current_position的值赋给log_position,然后从current_pca中恢复上次下电时保存的关键日志到buffer1,此时buffer1中的每一个子空间中缓存的日志的数量与log_position中相应的标志位对应,这样可以使各个core根据log_position中的相应两个bit位确定子空间中继续缓存日志的初始位置。
需要说明的是,如果是首次上电则无需获取相应的数据。首次上电是指,将firmware烧录到固态硬盘后的第一次上电,此时NAND flash中是没有数据的,因此也不必从NAND flash中恢复预设位置和日志。首次上电会做必要的初始化,在本发明中的实施例中可以为分配缓存空间地址、设置使用哪些block、分配标志位等等。
本发明提出的方案为使关键日志不被覆盖,在固态硬盘运行时和下电时都将关键日志刷入NAND Flash做长期保存;为防止只有一个buffer时关键日志可能被覆盖而丢失的情况,根据ping-pong操作原理轮转使用两个buffer;在每次上电时,恢复上次下电保存的关键日志并继续写入新的日志,以尽量保存一份写满的日志到NAND Flash,避免了多次频繁下电导致导出最新日志时日志很少,不便于问题的定位。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种日志保存***400,如图2所示,包括:
确定模块401,配置为响应于多个内核产生日志,根据当前缓存地址确定用于缓存日志的缓存空间;
缓存模块402,配置为将每一个内核产生的日志分别缓存到所述缓存空间中与内核对应的子空间;
更新模块403,配置为分别更新每一个所述子空间对应的用于标识当前已缓存日志数量的第一标志位并与阈值比对;
切换循环模块404,配置为响应于检测到存在所述第一标志位达到阈值的子空间,将所述当前缓存地址切换成其他缓存地址,以将所述其他缓存地址作为新的当前缓存地址并返回根据当前缓存地址确定用于缓存日志的缓存空间的步骤。
在一些实施例中,还包括检测模块,配置为:
设置标识当前用于缓存日志的缓存空间的第二标志位;
响应于检测到存在所述第一标志位达到阈值的子空间,从所述第二标识位对应的缓存空间中获取到待下刷的日志;
将获取到的待下刷的日志下刷到存储器。
在一些实施例中,检测模块还配置为:
设定用于存储所述待下刷的日志的多个block;
依次循环利用block存储所述待下刷的日志。
在一些实施例中,还包括清零模块,配置为:
响应于检测到存在所述第一标志位达到阈值的子空间,将每一个所述子空间对应的第一标志位均清零。
在一些实施例中,还包括下电模块,配置为:
响应于接收到下电指令,将每一个所述子空间对应的第一标志位保存到第一预设位置并将每一个所述子空间对应的第一标志位清零;
将当前用于缓存日志的缓存空间中的所有日志下刷到存储器并获取对应的下刷地址;
将所述下刷地址保存到第二预设位置;
将所述第一预设位置保存的每一个所述子空间对应的第一标志位和所述第二预设位置保存的所述下刷地址下刷到所述存储空间。
在一些实施例中,下电模块还配置为:
响应于接收到下电指令后若干个内核仍产生日志,将所述若干个内核产生的日志分别缓存到基于所述其他缓存地址确定的缓存空间中相应的子空间;
根据所述其他缓存地址确定的缓存空间中相应的子空间对应的第一标志位更新第一预设位置;
将所述其他缓存地址确定的缓存空间中的所有日志下刷到存储器并重新获取对应的下刷地址;
基于重新获取的下刷地址更新第二预设位置的下刷地址;
将所述第一预设位置中更新后的第一标志位和所述第二预设位置更新后的下刷地址下刷到所述存储空间。
在一些实施例中,还包括上电模块,配置为:
响应于接收到上电指令,从所述存储器中获取所述第一预设位置和所述第二预设位置在下电前下刷的值;
将所述第一存储位置的值赋给第一标识位和根据所述第二存储位置保存的下刷地址在所述存储器中获取下电前下刷的日志;
将获取到的下电前下刷的日志分别缓存到根据当前缓存地址确定的缓存空间中与内核对应的子空间;
基于每一个子空间对应的第一标识位确定子空间中继续缓存日志的初始位置。
基于同一发明构思,根据本发明的另一个方面,如图3所示,本发明的实施例还提供了一种计算机设备501,包括:
至少一个处理器520;以及
存储器510,存储器510存储有可在处理器上运行的计算机程序511,处理器520执行程序时执行以下步骤:
S1,响应于多个内核产生日志,根据当前缓存地址确定用于缓存日志的缓存空间;
S2,将每一个内核产生的日志分别缓存到所述缓存空间中与内核对应的子空间;
S3,分别更新每一个所述子空间对应的用于标识当前已缓存日志数量的第一标志位并与阈值比对;
S4,响应于检测到存在所述第一标志位达到阈值的子空间,将所述当前缓存地址切换成其他缓存地址,以将所述其他缓存地址作为新的当前缓存地址并返回根据当前缓存地址确定用于缓存日志的缓存空间的步骤。
在一些实施例中,还包括:
设置标识当前用于缓存日志的缓存空间的第二标志位;
响应于检测到存在所述第一标志位达到阈值的子空间,从所述第二标识位对应的缓存空间中获取到待下刷的日志;
将获取到的待下刷的日志下刷到存储器。
在一些实施例中,将获取到的待下刷的日志下刷到存储器,进一步包括:
设定用于存储所述待下刷的日志的多个block;
依次循环利用block存储所述待下刷的日志。
在一些实施例中,还包括:
响应于检测到存在所述第一标志位达到阈值的子空间,将每一个所述子空间对应的第一标志位均清零。
在一些实施例中,还包括:
响应于接收到下电指令,将每一个所述子空间对应的第一标志位保存到第一预设位置并将每一个所述子空间对应的第一标志位清零;
将当前用于缓存日志的缓存空间中的所有日志下刷到存储器并获取对应的下刷地址;
将所述下刷地址保存到第二预设位置;
将所述第一预设位置保存的每一个所述子空间对应的第一标志位和所述第二预设位置保存的所述下刷地址下刷到所述存储空间。
在一些实施例中,还包括:
响应于接收到下电指令后若干个内核仍产生日志,将所述若干个内核产生的日志分别缓存到基于所述其他缓存地址确定的缓存空间中相应的子空间;
根据所述其他缓存地址确定的缓存空间中相应的子空间对应的第一标志位更新第一预设位置;
将所述其他缓存地址确定的缓存空间中的所有日志下刷到存储器并重新获取对应的下刷地址;
基于重新获取的下刷地址更新第二预设位置的下刷地址;
将所述第一预设位置中更新后的第一标志位和所述第二预设位置更新后的下刷地址下刷到所述存储空间。
在一些实施例中,还包括:
响应于接收到上电指令,从所述存储器中获取所述第一预设位置和所述第二预设位置在下电前下刷的值;
将所述第一存储位置的值赋给第一标识位和根据所述第二存储位置保存的下刷地址在所述存储器中获取下电前下刷的日志;
将获取到的下电前下刷的日志分别缓存到根据当前缓存地址确定的缓存空间中与内核对应的子空间;
基于每一个子空间对应的第一标识位确定子空间中继续缓存日志的初始位置。
基于同一发明构思,根据本发明的另一个方面,如图4所示,本发明的实施例还提供了一种计算机可读存储介质601,计算机可读存储介质601存储有计算机程序指令610,计算机程序指令610被处理器执行时执行以下步骤:
S1,响应于多个内核产生日志,根据当前缓存地址确定用于缓存日志的缓存空间;
S2,将每一个内核产生的日志分别缓存到所述缓存空间中与内核对应的子空间;
S3,分别更新每一个所述子空间对应的用于标识当前已缓存日志数量的第一标志位并与阈值比对;
S4,响应于检测到存在所述第一标志位达到阈值的子空间,将所述当前缓存地址切换成其他缓存地址,以将所述其他缓存地址作为新的当前缓存地址并返回根据当前缓存地址确定用于缓存日志的缓存空间的步骤。
在一些实施例中,还包括:
设置标识当前用于缓存日志的缓存空间的第二标志位;
响应于检测到存在所述第一标志位达到阈值的子空间,从所述第二标识位对应的缓存空间中获取到待下刷的日志;
将获取到的待下刷的日志下刷到存储器。
在一些实施例中,将获取到的待下刷的日志下刷到存储器,进一步包括:
设定用于存储所述待下刷的日志的多个block;
依次循环利用block存储所述待下刷的日志。
在一些实施例中,还包括:
响应于检测到存在所述第一标志位达到阈值的子空间,将每一个所述子空间对应的第一标志位均清零。
在一些实施例中,还包括:
响应于接收到下电指令,将每一个所述子空间对应的第一标志位保存到第一预设位置并将每一个所述子空间对应的第一标志位清零;
将当前用于缓存日志的缓存空间中的所有日志下刷到存储器并获取对应的下刷地址;
将所述下刷地址保存到第二预设位置;
将所述第一预设位置保存的每一个所述子空间对应的第一标志位和所述第二预设位置保存的所述下刷地址下刷到所述存储空间。
在一些实施例中,还包括:
响应于接收到下电指令后若干个内核仍产生日志,将所述若干个内核产生的日志分别缓存到基于所述其他缓存地址确定的缓存空间中相应的子空间;
根据所述其他缓存地址确定的缓存空间中相应的子空间对应的第一标志位更新第一预设位置;
将所述其他缓存地址确定的缓存空间中的所有日志下刷到存储器并重新获取对应的下刷地址;
基于重新获取的下刷地址更新第二预设位置的下刷地址;
将所述第一预设位置中更新后的第一标志位和所述第二预设位置更新后的下刷地址下刷到所述存储空间。
在一些实施例中,还包括:
响应于接收到上电指令,从所述存储器中获取所述第一预设位置和所述第二预设位置在下电前下刷的值;
将所述第一存储位置的值赋给第一标识位和根据所述第二存储位置保存的下刷地址在所述存储器中获取下电前下刷的日志;
将获取到的下电前下刷的日志分别缓存到根据当前缓存地址确定的缓存空间中与内核对应的子空间;
基于每一个子空间对应的第一标识位确定子空间中继续缓存日志的初始位置。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。
此外,应该明白的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个***的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

Claims (10)

1.一种日志保存方法,其特征在于,包括以下步骤:
响应于多个内核产生日志,根据当前缓存地址确定用于缓存日志的缓存空间;
将每一个内核产生的日志分别缓存到所述缓存空间中与内核对应的子空间;
分别更新每一个所述子空间对应的用于标识当前已缓存日志数量的第一标志位并与阈值比对;
响应于检测到存在所述第一标志位达到所述阈值的子空间,将所述当前缓存地址切换成其他缓存地址,以将所述其他缓存地址作为新的当前缓存地址并返回根据当前缓存地址确定用于缓存日志的缓存空间的步骤。
2.如权利要求1所述的方法,其特征在于,还包括:
设置标识当前用于缓存日志的缓存空间的第二标志位;
响应于检测到存在所述第一标志位达到阈值的子空间,从所述第二标识位对应的缓存空间中获取到待下刷的日志;
将获取到的待下刷的日志下刷到存储器。
3.如权利要求1所述的方法,其特征在于,将获取到的待下刷的日志下刷到存储器,进一步包括:
设定用于存储所述待下刷的日志的多个block;
依次循环利用block存储所述待下刷的日志。
4.如权利要求1所述的方法,其特征在于,还包括:
响应于检测到存在所述第一标志位达到阈值的子空间,将每一个所述子空间对应的第一标志位均清零。
5.如权利要求1所述的方法,其特征在于,还包括:
响应于接收到下电指令,将每一个所述子空间对应的第一标志位保存到第一预设位置并将每一个所述子空间对应的第一标志位清零;
将当前用于缓存日志的缓存空间中的所有日志下刷到存储器并获取对应的下刷地址;
将所述下刷地址保存到第二预设位置;
将所述第一预设位置保存的每一个所述子空间对应的第一标志位和所述第二预设位置保存的所述下刷地址下刷到所述存储空间。
6.如权利要求5所述的方法,其特征在于,还包括:
响应于接收到下电指令后若干个内核仍产生日志,将所述若干个内核产生的日志分别缓存到基于所述其他缓存地址确定的缓存空间中相应的子空间;
根据所述其他缓存地址确定的缓存空间中相应的子空间对应的第一标志位更新第一预设位置;
将所述其他缓存地址确定的缓存空间中的所有日志下刷到存储器并重新获取对应的下刷地址;
基于重新获取的下刷地址更新第二预设位置的下刷地址;
将所述第一预设位置中更新后的第一标志位和所述第二预设位置更新后的下刷地址下刷到所述存储空间。
7.如权利要求5或6所述的方法,其特征在于,还包括:
响应于接收到上电指令,从所述存储器中获取所述第一预设位置和所述第二预设位置在下电前下刷的值;
将所述第一存储位置的值赋给第一标识位和根据所述第二存储位置保存的下刷地址在所述存储器中获取下电前下刷的日志;
将获取到的下电前下刷的日志分别缓存到根据当前缓存地址确定的缓存空间中与内核对应的子空间;
基于每一个子空间对应的第一标识位确定子空间中继续缓存日志的初始位置。
8.一种日志保存***,其特征在于,包括:
确定模块,配置为响应于多个内核产生日志,根据当前缓存地址确定用于缓存日志的缓存空间;
缓存模块,配置为将每一个内核产生的日志分别缓存到所述缓存空间中与内核对应的子空间;
更新模块,配置为分别更新每一个所述子空间对应的用于标识当前已缓存日志数量的第一标志位并与阈值比对;
切换循环模块,配置为响应于检测到存在所述第一标志位达到所述阈值的子空间,将所述当前缓存地址切换成其他缓存地址,以将所述其他缓存地址作为新的当前缓存地址并返回根据当前缓存地址确定用于缓存日志的缓存空间的步骤。
9.一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如权利要求1-7任意一项所述的方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行如权利要求1-7任意一项所述的方法的步骤。
CN202110657626.XA 2021-06-13 2021-06-13 一种日志保存方法、***、设备以及介质 Active CN113342276B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110657626.XA CN113342276B (zh) 2021-06-13 2021-06-13 一种日志保存方法、***、设备以及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110657626.XA CN113342276B (zh) 2021-06-13 2021-06-13 一种日志保存方法、***、设备以及介质

Publications (2)

Publication Number Publication Date
CN113342276A true CN113342276A (zh) 2021-09-03
CN113342276B CN113342276B (zh) 2023-01-06

Family

ID=77476862

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110657626.XA Active CN113342276B (zh) 2021-06-13 2021-06-13 一种日志保存方法、***、设备以及介质

Country Status (1)

Country Link
CN (1) CN113342276B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114020710A (zh) * 2021-10-09 2022-02-08 苏州浪潮智能科技有限公司 日志存储方法、装置及电子设备
CN116719485A (zh) * 2023-08-09 2023-09-08 苏州浪潮智能科技有限公司 基于fpga的数据读写方法及读写单元与fpga

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108959526A (zh) * 2018-06-28 2018-12-07 郑州云海信息技术有限公司 日志管理方法以及日志管理装置
CN109491974A (zh) * 2018-10-12 2019-03-19 上海金大师网络科技有限公司 异步日志管理方法和***及计算机可读存储介质
CN111858531A (zh) * 2020-07-14 2020-10-30 苏州浪潮智能科技有限公司 一种基于多核硬盘的日志存储方法、***及相关组件

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108959526A (zh) * 2018-06-28 2018-12-07 郑州云海信息技术有限公司 日志管理方法以及日志管理装置
CN109491974A (zh) * 2018-10-12 2019-03-19 上海金大师网络科技有限公司 异步日志管理方法和***及计算机可读存储介质
CN111858531A (zh) * 2020-07-14 2020-10-30 苏州浪潮智能科技有限公司 一种基于多核硬盘的日志存储方法、***及相关组件

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114020710A (zh) * 2021-10-09 2022-02-08 苏州浪潮智能科技有限公司 日志存储方法、装置及电子设备
CN114020710B (zh) * 2021-10-09 2024-01-16 苏州浪潮智能科技有限公司 日志存储方法、装置及电子设备
CN116719485A (zh) * 2023-08-09 2023-09-08 苏州浪潮智能科技有限公司 基于fpga的数据读写方法及读写单元与fpga
CN116719485B (zh) * 2023-08-09 2023-11-03 苏州浪潮智能科技有限公司 基于fpga的数据读写方法及读写单元与fpga

Also Published As

Publication number Publication date
CN113342276B (zh) 2023-01-06

Similar Documents

Publication Publication Date Title
KR100843543B1 (ko) 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
US10255192B2 (en) Data storage device and data maintenance method thereof
JP5663060B2 (ja) フラッシュメモリシステムの高速起動を容易にする方法およびシステム
US7240178B2 (en) Non-volatile memory and non-volatile memory data rewriting method
US8825946B2 (en) Memory system and data writing method
CN113342276B (zh) 一种日志保存方法、***、设备以及介质
JPWO2007119267A1 (ja) フラッシュメモリ用のメモリコントローラ
JPWO2006067923A1 (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及びメモリ制御方法
CN111752487A (zh) 一种数据恢复方法、装置及固态硬盘
CN110347338B (zh) 混合内存数据交换处理方法、***及可读存储介质
EP2919120B1 (en) Memory monitoring method and related device
CN115269451B (zh) 闪存垃圾回收方法、装置及可读存储介质
CN115291815B (zh) 一种存储器及其控制方法与存储***
CN114237984A (zh) 异常掉电下Trim数据的恢复方法、***及固态硬盘
CN112631950A (zh) 一种l2p表的保存方法、***、设备以及介质
CN114356248A (zh) 一种数据处理方法和装置
CN111324549B (zh) 一种存储器及其控制方法和装置
CN107544912B (zh) 一种日志记录方法、加载方法及其装置
JP2003058417A (ja) 記憶装置
JP2005115561A (ja) フラッシュrom制御装置
CN110928890B (zh) 数据存储方法、装置、电子设备及计算机可读存储介质
KR20050076156A (ko) 플래시 메모리의 데이터 복구 장치 및 방법
JPH11272569A (ja) フラッシュメモリを使用した外部記憶装置のデータ回復方式
CN113918485B (zh) 一种闪存资料防丢失方法、装置、设备及存储介质
TWI766526B (zh) 資料處理方法及對應之資料儲存裝置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant