固态硬盘及日志获取方法与流程
未命名
08-14
阅读:107
评论:0
1.本技术涉及固态存储技术领域,特别涉及固态硬盘控制技术。
背景技术:
2.固态存储技术指的是一种存储数据的方法,它使用固态电子元件如闪存芯片来存储数据,而不是传统的磁盘技术。因为固态存储没有移动的部件,所以它通常比磁盘存储更快,更耐用,并且有更低的功耗。因此,固态存储被广泛应用于移动设备,例如智能手机和笔记型电脑,以及服务器和数据中心中的存储系统中。
3.随着固态存储技术在存储设备中的占有率不断提高,存储系统的可靠性变得尤为关键。特别是在企业级固态存储设备领域,内部数据的价值是难以估量的。
4.为了确保固态存储设备的可靠性,在生产前必须进行大量的可靠性测试,以便在测试中发现的问题得到及时解决,提高固态存储设备的可靠性。然而,由于主机对i/o和行为的多样性,需要对各种数据和命令进行有效的响应。很多故障具有偶然性或触发条件严格,因此难以定位问题。因此,需要一套运行在固态存储内部控制单元上的日志存储系统来记录固态存储设备的操作行为,以便在出现问题后及时定位并进行售后处理。
5.然而,直接存储日志会对固态存储设备的控制单元造成大量的资源占用和空间浪费,因此需要采用一种新的存储方式,以减少日志存储对资源的消耗,提升单位存储空间内的有效信息比例。
技术实现要素:
6.本技术的目的在于提供一种固态硬盘及日志获取方法,能够实现多核主控的日志存储,并有效地减少日志存储对资源的消耗。
7.本技术公开了一种固态硬盘,包括主控制器、易失性的第一存储器、第二存储器和第三存储器,非易失性的第四存储器,其中,
8.所述主控制器进一步包括多个处理器内核,其中一个内核为主核,其他为从核;
9.所述从核分为两类,一类被配置为将本从核产生的日志信息写入所述第一存储器中本从核对应的区域,另一类被配置为将从将本从核产生的日志信息写入所述第二存储器中本从核对应的区域;
10.所述主核被配置为,从所述第一存储器及第二存储器采集各从核产生的日志信息并保存到所述第三存储器,将所述主核自身产生的日志信息直接写入所述第三存储器,以及,在所述第三存储器的日志信息数据量达到预定条件时将所述第三存储器的日志信息数据写入所述第四存储器。
11.在一个优选例中,所述第一存储器及第二存储器的存取速度高于所述第三存储器;
12.所述从核写入所述第一存储器及第二存储器中的日志信息没有时间戳,也没有内核标识;
13.所述主核还被配置为,周期性地从所述第一存储器及第二存储器采集各从核产生的日志信息,根据被采集时所述日志信息在所述第一存储器及第二存储器中所属的区域为该日志信息设定内核标识,根据采集时间为该日志信息设定时间戳,将带有内核标识和时间戳的日志信息保存到所述第三存储器。
14.在一个优选例中,还包括非易失性的第五存储器,所述第五存储器的存取速度低于所述第四存储器;
15.所述主核还被配置为在将所述第三存储器的日志信息数据写入所述第四存储器后,将当前的写入索引更新到所述第五存储器的日志元信息。
16.在一个优选例中,所述第一存储器是tim,所述第二存储器是sram,所述第三存储器是ddr,所述第四存储器是nand,所述第五存储器是nor闪存。
17.在一个优选例中,所述主控制器还被配置为,在将所述日志信息保存到所述第三存储器前,对日志信息中的每一个日志条目进行编码。
18.在一个优选例中,所述日志条目编码方式如下:
19.(a1,[b1,b2],[c1,c2],[d1,d2],[...,...])
[0020]
a1,表示该日志条目含有多少组参数;
[0021]
[b1,b2],表示第一组参数,b1指示当前组参数占用多少个字节(bytes),b2为当前日志条目编码;
[0022]
[c1,c2],表示第二组参数,c1指示当前组参数占用多少个字节(bytes),c2为要存储的参数,根据要存储的参数数量,设置对应组d,e,f等参数直至结束。
[0023]
在一个优选例中,若需要存储字符串,则将第一组参数b1设置为特定标记,填入字符串本身,并以换行符作为字符串结尾。
[0024]
在一个优选例中,所述主核还被配置为,收到关机信号或者掉电信号时,将所述第三存储器中尚未保存的日志信息保存到所述第四存储器同时将元信息存储到所述第五存储器。
[0025]
在一个优选例中,所述主核还被配置为,上电读取存放在所述第五存储器中的元信息,获取上次写入的起始位置和结束位置,进而获取每次上下电周期内的日志。
[0026]
本技术还公开了一种日志获取方法,包括:
[0027]
主机向如前文描述的固态硬盘发送读取日志数据的指令;
[0028]
响应于所述指令,所述固态硬盘的主控制器查找日志的元信息并根据该元信息计算出当前生命周期内最早的日志,从当前生命周期内最早的日志开始读取,以固定大小的数据包发送给所述主机;
[0029]
所述主机将收到的数据包聚合成为日志源文件,然后通过脚本解析该日志源文件获得日志原文内容。
[0030]
本技术实施例可以以较少的存储空间和较少的闪存写入次数及时保存ssd主控中每一个内核产生的日志信息。
[0031]
进一步的,从核记录的日志信息中不包括时间戳和内核标识,由主核在采集从核日志信息时增加时间戳和内核标识,从而减少了从核所需要的内存空间(例如成本较高的sram)。
[0032]
进一步的,本技术的实施例中,为压缩日志信息的内容,采用提前编码的方式将日
志节点内容进行编码并形成一个集合。因日志节点的多样性,需要记录不同的内容和参数,所以设计了一种优越的可拓展的编码格式来规范化日志。相比于编码之前,编码后的日志在cpu中处理速度更快,占用系统时间更少。同时大大降低存储空间占用,有效地减少日志存储对资源的消耗,提升了单位存储空间内的有效信息比例。
[0033]
本技术的说明书中记载了大量的技术特征,分布在各个技术方案中,如果要罗列出本技术所有可能的技术特征的组合(即技术方案)的话,会使得说明书过于冗长。为了避免这个问题,本技术上述发明内容中公开的各个技术特征、在下文各个实施方式和例子中公开的各技术特征、以及附图中公开的各个技术特征,都可以自由地互相组合,从而构成各种新的技术方案(这些技术方案均因视为在本说明书中已经记载),除非这种技术特征的组合在技术上是不可行的。例如,在一个例子中公开了特征a+b+c,在另一个例子中公开了特征a+b+d+e,而特征c和d是起到相同作用的等同技术手段,技术上只要择一使用即可,不可能同时采用,特征e技术上可以与特征c相组合,则,a+b+c+d的方案因技术不可行而应当不被视为已经记载,而a+b+c+e的方案应当视为已经被记载。
附图说明
[0034]
图1是根据本技术第一实施方式的固态硬盘的结构示意图;
[0035]
图2是根据本技术的第二实施方式的日志获取方法的流程示意图;
[0036]
图3是根据本技术第一和第二实施方式中一个例子的日志存储的流程示意图;
[0037]
图4是根据本技术第一和第二实施方式中一个例子的日志获取方法的另一个流程示意图;
[0038]
图5是根据本技术第一和第二实施方式中一个例子的日志存储系统的结构示意图;
[0039]
图6是根据本技术的第一和第二实施方式中一个例子的日志获取方法的硬件环境示意图。
具体实施方式
[0040]
在以下的叙述中,为了使读者更好地理解本技术而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本技术所要求保护的技术方案。
[0041]
部分概念的说明:
[0042]
ssd,即,solid state drive,也称为固态硬盘,是一种存储设备,用于存储电脑中的数据。它与传统的机械硬盘(mechanical hard disk drive,简称hdd)不同,它使用闪存技术,而不是机械部件来存储数据。
[0043]
nand,是一种闪存技术,是固态硬盘(solid state drive,简称ssd)和快闪存(flash memory)中常用的存储技术。它的名称来源于逻辑门电路中的nand门(not and)。nand闪存使用多个晶体管(transistor)来存储数据。这些晶体管构成一个阵列,可以通过电流来读写数据。nand闪存的优点是它具有大容量和低成本,因此被广泛应用于存储设备,例如固态硬盘和快闪存。
[0044]
tim,即tightly integrated memory,紧密集成内存,是一种固定大小的ram,与内
核有最为相近的物理位置及连接位置,提供与cache相等的访问性能。tim可以作为快速缓存使用也可以作为本地内存使用。
[0045]
ram,即random access memory,随机存取存储器,是一种计算机中用于临时存储数据和程序的主要内存类型之一。ram是一种易失性存储器,意味着在电源关闭后,其中的数据将会被清除。
[0046]
ddr,即double data rate,双倍速率同步动态随机存储器,是一种高速存储技术。它与普通的存储技术不同,ddr每个时钟周期可以传输两次数据,因此数据的传输速率要比普通的存储技术快得多。ddr主要用于计算机中的内存,特别是高速缓存和主内存。
[0047]
rtc tick,即real-time clock tick,是指实时时钟计数器,它是一种计时器,用于记录自开机以来经过的时间。rtc tick使用计数器来统计当前时间,并在计算机系统关闭后依然运行,可以记录系统的工作时间。在这种情况下,rtc tick被用于记录日志的内部时间,即记录每条日志在系统内部产生的时间。
[0048]
nor flash,是一种非易失性存储技术,是存储器的一种类型。它具有独立的存储单元,每个存储单元都可以被独立地读写。nor flash与其他类型的闪存(如nand flash)有很大的区别,nor flash具有更高的读写速度,但容量相对较小,因此通常用于操作系统和应用程序的存储。nor flash的主要应用包括手机,数码相机,游戏机等电子产品的存储。
[0049]
nvme(non-volatile memory express)cmd是指nvme命令。nvme是一种用于存储设备的高性能数据传输协议,用于提高存储设备的速度和效率。nvme cmd指的是对nvme设备进行控制和管理的命令,可用于创建和删除命名空间、查询设备信息、配置命名空间等。
[0050]
下面概要说明本技术的部分创新点:
[0051]
本技术的发明人经过长期研究发现,现有的节点日志存储方案直接对日志节点进行存储耗费大量系统资源和存储资源,且在复杂的多核系统中易产生混乱和丢失。同时,日志记录不应对系统功能本身产生较大影响,所以要设计一套新的处理机制在保证日志记录的同时降低资源消耗。
[0052]
为有效收集系统中多个cpu核心的日志,本技术的发明人创造性地提出了一种存储机制,用以有效交换多个核心之间的日志内容,并由主核统一收集处理。此机制有效避免了多个cpu之间的重复操作,减少系统资源消耗。
[0053]
为压缩日志信息的内容,采用提前编码的方式将日志节点内容进行编码并形成一个集合。因日志节点的多样性,需要记录不同的内容和参数,所以设计了一种优越的可拓展的编码格式来规范化日志。相比于编码之前,编码后的日志在cpu中处理速度更快,占用系统时间更少。同时大大降低存储空间占用,提升了单位存储空间内的有效信息比例。
[0054]
为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术的实施方式作进一步地详细描述。
[0055]
第一实施例
[0056]
本技术的第一实施方式涉及一种固态硬盘,其结构如图1所示,该固态硬盘包括:主控制器、易失性的第一存储器、第二存储器和第三存储器、非易失性的第四存储器,其中,
[0057]
主控制器进一步包括多个处理器内核,其中一个内核为主核,其他为从核;
[0058]
从核分为两类,一类被配置为,将本从核产生的日志信息写入第一存储器中本从核对应的区域,另一类被配置为将从将本从核产生的日志信息写入第二存储器中本从核对
应的区域;
[0059]
主核被配置为,从第一存储器及第二存储器采集各从核产生的日志信息并保存到第三存储器,将主核自身产生的日志信息直接写入第三存储器,以及,在第三存储器的日志信息数据量达到预定条件时将第三存储器的日志信息数据写入第四存储器。
[0060]
可选的,第一和第二存储器的存取速度高于第三存储器。并且,从核写入第一、第二存储器中的日志信息没有时间戳,也没有内核标识。进一步的,周期性地从第一存储器及第二存储器采集各从核产生的日志信息,根据被采集时日志信息在第一存储器及第二存储器中所属的区域为该日志信息设定内核标识,根据采集时间为该日志信息设定时间戳,将带有内核标识和时间戳的日志信息保存到第三存储器。
[0061]
可选的,固态硬盘还包括非易失性的第五存储器,第五存储器的存取速度低于第四存储器;主核还被配置为在将第三存储器的日志信息数据写入第四存储器后,将当前的写入索引更新到第五存储器的日志元信息。
[0062]
可选的,第一存储器是tim,第二存储器是sram,第三存储器是ddr,第四存储器是nand,第五存储器是nor闪存。
[0063]
可选的,主控制器还被配置为,在将日志信息保存到第三存储器前,对日志信息中的每一个日志条目进行编码。
[0064]
可选的,日志条目编码方式如下:
[0065]
(a1,[b1,b2],[c1,c2],[d1,d2],[...,...])
[0066]
a1,表示该日志条目含有多少组参数;
[0067]
[b1,b2],表示第一组参数,b1指示当前组参数占用多少个字节(bytes),b2为当前日志条目编码;
[0068]
[c1,c2],表示第二组参数,c1指示当前组参数占用多少个字节(bytes),c2为要存储的参数,根据要存储的参数数量,设置对应组d,e,f等参数直至结束。
[0069]
可选的,若需要存储字符串,则将第一组参数b1设置为特定标记(例如0xfe或其他指定数值),填入字符串本身,并以换行符作为字符串结尾。
[0070]
可选的,主核还被配置为,收到关机信号或者掉电信号时,将第三存储器中尚未保存的日志信息保存到第四存储器同时将元信息存储到第五存储器。
[0071]
可选的,主核还被配置为,上电读取存放在第五存储器中的元信息,获取上次写入的起始位置和结束位置,进而获取每次上下电周期内的日志。
[0072]
上述实施方式的技术效果包括:
[0073]
以较少的存储空间和较少的闪存写入次数及时保存ssd主控中每一个内核产生的日志信息。
[0074]
进一步的,从核记录的日志信息中不包括时间戳和内核标识,由主核在采集从核日志信息时增加时间戳和内核标识,从而减少了从核所需要的内存空间(例如成本较高的sram)。
[0075]
第二实施例
[0076]
本技术的第二实施方式涉及一种日志获取方法,其流程如图2所示,该日志获取方法包括以下步骤:
[0077]
步骤210:主机向上述实施例中揭示的固态硬盘发送读取日志数据的指令。
[0078]
步骤220:响应于所述指令,所述固态硬盘的主控制器查找日志的元信息并根据该元信息计算出当前生命周期内最早的日志,从当前生命周期内最早的日志开始读取,以固定大小的数据包发送给所述主机。
[0079]
步骤230:所述主机将收到的数据包聚合成为日志源文件,然后通过脚本解析该日志源文件获得日志原文内容。
[0080]
第一实施方式是与本实施方式相对应的方法实施方式,第一实施方式中的技术细节可以应用于本实施方式,本实施方式中的技术细节也可以应用于第一实施方式。
[0081]
为了能够更好地理解本说明书的技术方案,下面结合一个具体的例子来进行说明,该例子中罗列的细节主要是为了便于理解,不作为对本技术保护范围的限制。
[0082]
图3-5示出了一个例子中的日志获取方法的流程图、系统环境示意图,以及系统结构示意图。
[0083]
首先结合图1、图5和图6解释一下本实施方式中的硬件环境。
[0084]
在本实例中,用于实现节点日志获取方法的系统环境包含:ssd主控处理器、sram内存、ddr内存、nor flash芯片、nand flash芯片,uart串口,pc端上位机解析软件,定制化印制电路板。
[0085]
其中ssd主控处理器包含4个risc-v s5大核及十余个risc-v e2小核。由于多种内核之间的功能及事务不同,故具有不同的硬件ip连接方式,但每个核都可产生日志条目及日志记录需求是有一致性的。这也决定着各内核的存储访问权限不同及本日志系统的特殊性。
[0086]
其中4个大核中有一个为主核,主核具有全部的ip访问权利,可以对片内的易失性存储器ddr、sram及各个内核tim进行访问,对片外非易失性存储器nor falsh及nand flash进行操作,故主核在本设计中负责收集和统筹处理、记录日志。
[0087]
其余的s5大核可以访问sram及ddr内存,但无法对nor flash及nand flash进行访问。
[0088]
e2小核分为两类,一类连接在nand flash接口上,具有nand flash的读写权利,但没有sram及ddr的访问权限,故只能通过本内核的紧密集成内存tim(tightly-integrated memory)与其他内核交换数据。一类e2核没有连接在nand flash接口上,且没有ddr的访问权限只具有sram的访问权限,故使用sram与其他内核交换数据。
[0089]
基于上述系统场景,本例子的设计如下机制:
[0090]
所有内核均产生相同的类型的格式化日志条目,具有sram访问权限的内核,分别存储到一块分配好的共享sram内存区域进行日志交换,共享区域内分成多个单元,每个核占用一个单元,不具有sram访问权限的内核将存储在自身的tim存储区域进行日志交换,这些日志交换区域由主核指定并通知各个内核。
[0091]
当其他核产生日志条目时,将日志存储在指定的日志交换区域中,直至本内核日志交换区域满。
[0092]
主核将定时从host端获得当前的utc时间并标记为一个系统基准时间。此时间会记录存储在日志系统中。
[0093]
主核将定时的轮询这些内核的日志交换区域,如有有效的日志条目则会取出当前核存储的日志并清空此核日志交换区域。主核拿到日志后会加以处理,通过哪个内核的日
志交换区域获得日志即加上当前内核的id,并且通过自身的rtc tick数量及获得的utc时间计算出当前的日志产生时间。由于相邻的多条日志的产生是同一个utc的时间基础,所以只需记录主核的tick时间差值,可以进一步压缩日志存储空间。
[0094]
主核收集到其他内核的日志会累积在其开辟的ddr空间内,直至满足一定的下刷条件会下刷进入nand flash及nor flash。
[0095]
也就是说,主核会将其他内核生成的日志数据存储到开辟的ddr空间中,以便暂时保存这些数据。当达到一定条件时(如存储空间已满、特定时间间隔、特定触发事件等),主核会将ddr空间中的日志数据下刷(即写入)到nand flash或nor flash中。nand flash和nor flash都是非易失性存储器,用于长期存储数据,以便日后检索和分析。
[0096]
本例子相应的节点日志获取系统按功能可以包括:编码模块,存储模块,解析模块。具体如下:
[0097]
编码模块:
[0098]
编码模块用于将已知的目标日志节点进行编码并将相应编码和参数确定下来,同时格式化存储在一个集合中。
[0099]
具体地说,编码模块对已知的目标日志节点进行编码,其中,这些目标日志节点可以是一些信息,例如已经确定好的事件记录,错误报告,异常处理,系统时间等。编码模块通过对这些目标日志节点进行编码,使其变成一种有意义的数字或字符串,并且确定了相应的编码和参数。这种编码后的信息会以格式化的形式存储在一个集合中,方便以后的管理和使用。
[0100]“参数”指的是与目标日志节点相关的一些参数或属性,例如日志节点的类型、级别、时间戳、事件描述、发生位置等等。这些参数将被用于日志的分类、筛选和搜索等操作。在编码模块中,通过将这些参数和目标日志节点的编码相对应,将其一起存储在集合中,以方便后续处理。
[0101]
因此,本实例中的编码模块的作用是将已知的目标日志节点编码并存储到非易失性存储器中,以便更好地管理和利用这些信息。
[0102]
存储模块:
[0103]
存储模块用于在ssd运行同时启动,在内存中收集并记录发生的日志节点,当满足存储条件时或监测到特殊信号如关机、异常掉电等会将日志存储进nand中,同时更新当前页面的信息进入nor flash。
[0104]
具体地说,存储模块在ssd启动时会同时启动,它的作用是在内存中收集并记录所有的日志节点。当存储条件被满足,或者当系统监测到特殊信号,例如关机或异常掉电,存储模块就会将所有的日志存储到nand中。
[0105]
同时,存储模块还会更新当前页面的信息进入nor flash(只读闪存)中。
[0106]
可选的,存储条件是预先设置好的,可以是例如:
[0107]
内存满一个单元,正常关机,异常掉电,特殊命令触发,等等。
[0108]
更具体地说,在ssd启动时,存储模块将同时启动,准备开始收集日志节点,存储模块会在内存中不断收集并记录所有发生的日志节点,当存储条件被满足(例如存储空间不足),或者系统监测到特殊信号(例如关机或异常掉电),存储模块将启动存储流程。存储模块会将所有的日志存储到nand中,以便确保数据的安全性,同时,存储模块还会更新当前页
面的信息进入nor flash中,以便在下次启动时快速读取。
[0109]
解析模块:
[0110]
解析模块用于读取nor flash和nand提取出的日志源文件,并配合编码模块产生的字典集合解析还原为日志内容,故解析模块与编码模块需配套使用。
[0111]
具体地说,解析模块将从nor flash和nand flash中读取已经提取的日志文件,然后利用编码模块产生的字典集合对日志文件进行解析,并将其还原成日志的内容。因此,解析模块和编码模块必须配合使用。
[0112]
可选的,日志条目编码方式如下:
[0113]
(a1,[b1,b2],[c1,c2],[d1,d2],[...,...])
[0114]
a1代表此条目含有多少组参数。
[0115]
[b1,b2]第一组参数,b1指示当前组参数占用多少个bytes,b2为当前日志条目的编码。
[0116]
[c1,c2]第二组参数,c1指示当前组参数占用多少个bytes,c2为要存储的参数。根据要存储的参数数量,设置对应组d,e,f等参数直至结束。
[0117]
若需要存储字符串,需要将第一组参数b1设置为特殊标记,例如,0xfe。随后填入字符串本身并以换行符,例如,0x0a,作为字符串结尾供解析模块识别。
[0118]
编码的最大长度可自由调节,根据参数多少确定。
[0119]
需指出,上面的日志条目编码方式仅是非限制性示例,在本技术的其他实施例中,也可以采用其他日志条目编码方式。
[0120]
在本实施方式中,更具体的,对于编码模块,其按照设定的单日志条目编码方式对参数进行编码,然后存储在当前cpu指定的内存对应位置中并将置上标志位。
[0121]
换句话说,编码模块将每条日志中的参数按照预先设定的日志条目编码方式进行编码。编码后的内容将存储在当前使用的cpu中指定的内存位置,并在存储完毕后置上一个标志位,用来表示当前这个内存位置已经存储了一条日志信息。
[0122]
同时,主核会通过检查标志位来确认有无日志条目,若有则会复制到ddr日志存储区域中,在这种情况下,日志条目是有着严格的时间顺序的。
[0123]
换句话说,主核会不断地检查当前使用的内存位置上的标志位,以确认是否存在日志条目。如果存在,则主核会将这条日志复制到ddr日志存储区域中。由于复制的顺序是按照标志位的顺序进行的,因此在ddr日志存储区域中,日志条目按照严格的时间顺序存储。
[0124]
更具体的,本实例中提出了一种日志存储机制,由于日志及其元信息需要存储在非易失性存储介质中,所以存储机制需与介质特性相结合,实现在有限的空间中持续线性的存储日志,该日志存储机制包括:
[0125]
循环使用ddr内存作为编码模块的日志缓冲区,以写入指针和存储指针的进度来管理内存中的有效数据。如内存中剩余的长度不足以存储则返回起始地址。
[0126]
也就是说,如果内存中剩余的长度不足以存储数据,则系统会返回起始地址,表示从内存的起始位置重新开始存储数据。这种方法叫做循环缓冲,意味着内存中的数据在继续写入数据时将循环使用,并且在写入指针到达内存的结尾时,将从内存的开头重新开始写入数据。这样的设计是为了充分利用内存的空间,避免因内存不足而导致数据丢失。同
时,通过使用写入指针和存储指针的进度管理内存中的数据,可以确保数据的正确性和完整性。
[0127]
并且,当写入指针超出存储指针设定的阈值时,将发起一次写入,存储日志进入nand,同时在nor更新元信息,指示当前写入到达哪个位置。这实际上是一种内存管理策略,用于在使用ddr内存作为编码模块的日志缓冲区时管理内存中的有效数据。其中,写入指针和存储指针是两个重要的指针,用于管理内存中的有效数据。写入指针是指示在内存中存储数据的位置的指针,存储指针是指示有效数据的位置的指针。当写入指针超出存储指针的阈值时,意味着内存中的有效数据将被覆盖,因此系统将发起一次写入操作,将存储的日志存储在nand存储器中。同时,系统会在nor存储器中更新元信息,用于指示当前写入到达的位置。通过这种方式,系统可以在内存不足时仍然有效地管理日志数据,同时保证数据的完整性和安全性。
[0128]
相应的,当日志存储接收到关机信号或者掉电信号时,将会发起写入把当前所有未写入的日志存放进nand中,即,当存储日志的系统接收到关机或掉电的信号时,它将会启动一次写入操作,把当前所有没有写入的日志存储到nand中。
[0129]
由于上述机制的持续更新,每次都是不足一个页面的日志内容还未存,考虑到此刻新产生的日志的溢出,所以处理特殊的写入时最多只需写入两个页面。当在关机过程中,将不会响应异常掉电信号,防止写入冲突。换句话说,由于某些机制不断地更新,导致每次存储的日志内容都不足一个页面。考虑到新产生的日志可能导致存储溢出,因此在特殊的写入情况下,最多只需写入两个页面。在关机的过程中,系统不会响应异常的断电信号,以防止写入冲突。
[0130]
在本实例中,上电将会读取存放在nor flash的元信息,获取上次写入的起始位置和结束位置,便于获取每次上下电周期内的日志,也就是说,开机时,系统会读取存储在nor flash中的元信息,包括上次写入的起始位置和结束位置。这样可以方便地获取每次上电/下电周期内的日志信息。
[0131]
本实例中,当日志存储需要使用新的nand block时,将提前在上一个block的最后几个页面写入时发起下一个block擦除命令,而第一次上电若发现下一个页面是此nand block的第一个页面,则会将当前正在工作的block擦除一次用于接下来的循环使用这些日志存储nand block,故任何时刻都有可用的存储页面供日志存储系统使用。也就是说,当日志存储系统需要使用新的nand block时,系统会在上一个block的最后几个页面写入完成后,预先发起下一个block的擦除命令。如果在开机时发现下一个页面是该nand block的第一个页面,系统会对当前正在使用的block进行擦除,以便下次使用这些日志存储nand block。因此,系统始终保证有可用的页面供日志存储系统使用。
[0132]
进一步的,本实例中还提出了一种时间记录机制,其中,日志中记录每条日志的内部rtc tick,主日志将由自身获取并嵌入,其他cpu不获取系统rtc tick,将在由主核搬运到ddr日志存储区域的过程中嵌入。
[0133]
具体地说,记录每条日志的内部rtc(real-time clock)tick,其中,rtc是一种时钟,用于在系统中跟踪时间。主日志是由主核产生的,该cpu获取系统的rtc tick,并将其嵌入到主日志中。其他的cpu不会获取系统的rtc tick,而是在主核把日志搬运到ddr(dynamic random-access memory)存储区域的过程中嵌入时间戳。这样就可以确保每条日
志都带有内部时间戳,以便稍后查询和统计。
[0134]
进一步的,在本实例中,对于解析模块,ssd运行期间将通过nvme cmd获取日志数据,当收到命令时,先查找元信息并以此计算出当前生命周期内最早的日志并以此位置开始读取,以固定大小的数据包发送给host主机,并在主机聚合成为二进制日志源文件,然后通过脚本解析获得日志原文内容。也就是说,首先,ssd在运行期间通过nvme cmd获取日志数据。当收到命令时,ssd首先会查找元信息,以此计算出当前生命周期内最早的日志。然后,ssd会以此位置作为起点,开始读取数据。读取到的数据以固定大小的数据包形式发送给主机(host)。主机接收到的数据会被聚合成为二进制日志源文件。最后,通过脚本解析,可以获得日志原文内容。
[0135]
下面将参照图3和图4进一步说明本例子中节点日志获取方法,包括以下步骤:
[0136]
步骤110:将已知的目标日志节点进行编码并写入ddr内存区域,将所述目标日志节点编码和相应的参数同时格式化存储在一个字典集合中。
[0137]
可选的,所述目标日志节点的信息是以下之一或其任意组合:已经确定好的事件记录,错误报告,异常处理,系统时间等。
[0138]
可选的,所述参数是指与所述目标日志节点相关的一些参数或属性,所述参数是以下之一或其任意组合:该日志节点的类型、级别、时间戳、事件描述、发生位置等。所述参数可用于日志的分类、筛选和搜索等操作。
[0139]
可选的,按照预设的单日志条目编码方式对所述日志节点中的日志条目的参数进行编码,然后存储在当前cpu指定的内存对应位置中,并设置标志位,表示当前这个内存位置已经存储了一条日志信息。
[0140]
主核会不断地检查当前使用的内存位置上的标志位,以确认是否存在日志条目。如果存在,则主核会将这条日志条目复制到ddr日志存储区域中。由于复制的顺序是按照标志位的顺序进行的,因此在ddr日志存储区域中,日志条目按照严格的时间顺序存储。
[0141]
可选的,日志条目中记录每条日志相应的内部rtc时钟周期(rtc tick),主日志将由自身获取并嵌入,其他cpu不获取系统rtc tick,将在由主核搬运到ddr日志存储区域的过程中将rtc tick嵌入日志条目中。这样就可以确保每条日志条目中都带有内部时间戳,以便后续查询和统计。
[0142]
步骤120:不断地收集并记录所有发生的日志节点编码,当满足预设的存储条件时,将所述日志节点编码从ddr内存读取出来并存储到nand中,并更新当前页面信息进入nor flash,从而形成与所述日志节点编码相关的日志条目。
[0143]
可选的,所述预设的存储条件为以下之一或其任意组合:ddr内存的存储空间不足,系统监测到例如正常关机或异常掉电等特殊信号。
[0144]
步骤130:从nor flash和nand中读取出日志条目,根据所述字典集合将所述日志条目还原成所述目标日志节点。
[0145]
可选的,所述日志条目编码方式如下:
[0146]
(a1,[b1,b2],[c1,c2],[d1,d2],[...,...])
[0147]
a1,表示该日志条目含有多少组参数。
[0148]
[b1,b2],表示第一组参数,b1指示当前组参数占用多少个字节(bytes),b2为当前日志条目编码。
[0149]
[c1,c2],表示第二组参数,c1指示当前组参数占用多少个字节(bytes),c2为要存储的参数。根据要存储的参数数量,设置对应组d,e,f等参数直至结束。
[0150]
可选的,若需要存储字符串,则将第一组参数b1设置为特殊标记,填入字符串本身,并以换行符作为字符串结尾,供解析模块识别。
[0151]
可选的,日志条目编码的最大长度可自由调节,根据参数多少确定。
[0152]
需指出,上面的日志条目编码方式仅是非限制性示例,在本技术的其他实施例中,也可以采用其他日志条目编码方式。
[0153]
在本实例中,上电将会读取存放在nor flash的元信息,获取上次写入的起始位置和结束位置,便于获取每次上下电周期内的日志,也就是说,开机时,系统会读取存储在nor flash中的元信息,包括上次写入的起始位置和结束位置。这样可以方便地获取每次上电/下电周期内的日志信息。
[0154]
在本实施例中,ssd运行期间将通过nvme cmd获取日志数据,当收到命令时,先查找元信息并以此计算出当前生命周期内最早的日志并以此位置开始读取,以固定大小的数据包发送给host主机,并在主机聚合成为二进制日志源文件,然后通过脚本解析获得日志原文内容。也就是说,首先,ssd在运行期间通过nvme cmd获取日志数据。当收到命令时,ssd首先会查找元信息,以此计算出当前生命周期内最早的日志。然后,ssd会以此位置作为起点,开始读取数据。读取到的数据以固定大小的数据包形式发送给主机(host)。主机接收到的数据会被聚合成为二进制日志源文件。最后,通过脚本解析,可以获得日志原文内容。
[0155]
本实施方式的技术效果如下:
[0156]
1.本发明为减少日志空间占用,利用本发明提出的分组编码的方式并通过编码模块对日志内容进行编码压缩,平均空间占用比例较之前减少百分之六十,大幅提升单位空间内的有效信息比例。
[0157]
2.日志的编码和格式化使得cpu可以按照既定的模式去执行处理。可预期的,对于cpu来说不必处理过多的分支可以有效提升cpu效率,同时日志内容大小的减少也有助于加快整个系统的日志处理过程。
[0158]
3.搭建支持多个cpu同时记录日志的架构,其他cpu通过内置sram及tim与主核交换日志元信息,并由主核进行整理和存储处理。在此过程中主核加入日志所属的cpu id及时间信息,通过差值计算的方式减少日志生成时间获取的消耗及日志时间的存储空间,同时对存储日志内容的非易失性存储器nand及nor进行管理,支持命令自由读取日志,后台可用空间管理和掉电关键信息保护,架构灵活可拓展,支持后续添加其他日志产生单元。
[0159]
下面结合另一个具体的例子来进行说明,该例子中罗列的细节主要是为了便于理解,不作为对本技术保护范围的限制。
[0160]
本例子涉及一种节点日志存储系统,其结构如图5所示,该节点日志存储系统包括:
[0161]
编码模块,用于将已知的目标日志节点进行编码并写入ddr内存区域,将所述目标日志节点编码和相应的参数同时格式化存储在一个字典集合中。
[0162]
可选的,所述目标日志节点的信息是以下之一或其任意组合:已经确定好的事件记录,错误报告,异常处理,系统时间等。
[0163]
可选的,所述参数是指与所述目标日志节点相关的一些参数或属性,所述参数是
以下之一或其任意组合:该日志节点的类型、级别、时间戳、事件描述、发生位置等。所述参数可用于日志的分类、筛选和搜索等操作。
[0164]
可选的,按照预设的单日志条目编码方式对所述日志节点中的日志条目的参数进行编码,然后存储在当前cpu指定的内存对应位置中,并设置标志位,表示当前这个内存位置已经存储了一条日志信息。
[0165]
主核会不断地检查当前使用的内存位置上的标志位,以确认是否存在日志条目。如果存在,则主核会将这条日志条目复制到ddr日志存储区域中。由于复制的顺序是按照标志位的顺序进行的,因此在ddr日志存储区域中,日志条目按照严格的时间顺序存储。
[0166]
可选的,日志条目中记录每条日志相应的内部rtc时钟周期(rtc tick),主日志将由自身获取并嵌入,其他cpu不获取系统rtc tick,将在由主核搬运到ddr日志存储区域的过程中将rtc tick嵌入日志条目中。这样就可以确保每条日志条目中都带有内部时间戳,以便后续查询和统计。
[0167]
存储模块,用于不断地收集并记录所有发生的日志节点编码,当满足预设的存储条件时,将所述日志节点编码从ddr内存读取出来并存储到nand中,并更新当前页面信息进入nor flash,从而形成与所述日志节点编码相关的日志条目。
[0168]
可选的,所述预设的存储条件为以下之一或其任意组合:ddr内存的存储空间不足,系统监测到例如正常关机或异常掉电等特殊信号。
[0169]
解码模块,用于从nor flash和nand中读取出日志条目,根据所述字典集合将所述日志条目还原成所述目标日志节点。
[0170]
可选的,所述日志条目编码方式如下:
[0171]
(a1,[b1,b2],[c1,c2],[d1,d2],[...,...])
[0172]
a1,表示该日志条目含有多少组参数。
[0173]
[b1,b2],表示第一组参数,b1指示当前组参数占用多少个字节(bytes),b2为当前日志条目编码。
[0174]
[c1,c2],表示第二组参数,c1指示当前组参数占用多少个字节(bytes),c2为要存储的参数。根据要存储的参数数量,设置对应组d,e,f等参数直至结束。
[0175]
可选的,若需要存储字符串,则将第一组参数b1设置为特殊标记,填入字符串本身,并以换行符作为字符串结尾,供解析模块识别。
[0176]
可选的,日志条目编码的最大长度可自由调节,根据参数多少确定。
[0177]
需指出,上面的日志条目编码方式仅是非限制性示例,在本技术的其他实施例中,也可以采用其他日志条目编码方式。
[0178]
在本实例中,上电将会读取存放在nor flash的元信息,获取上次写入的起始位置和结束位置,便于获取每次上下电周期内的日志,也就是说,开机时,系统会读取存储在nor flash中的元信息,包括上次写入的起始位置和结束位置。这样可以方便地获取每次上电/下电周期内的日志信息。
[0179]
在本实施例中,ssd运行期间将通过nvme cmd获取日志数据,当收到命令时,先查找元信息并以此计算出当前生命周期内最早的日志并以此位置开始读取,以固定大小的数据包发送给host主机,并在主机聚合成为二进制日志源文件,然后通过脚本解析获得日志原文内容。也就是说,首先,ssd在运行期间通过nvme cmd获取日志数据。当收到命令时,ssd
首先会查找元信息,以此计算出当前生命周期内最早的日志。然后,ssd会以此位置作为起点,开始读取数据。读取到的数据以固定大小的数据包形式发送给主机(host)。主机接收到的数据会被聚合成为二进制日志源文件。最后,通过脚本解析,可以获得日志原文内容。
[0180]
上述两个例子中的技术细节可以相互结合应用。
[0181]
需要说明的是,在本专利的申请文件中,“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本专利的申请文件中,如果提到根据某要素执行某行为,则是指至少根据该要素执行该行为的意思,其中包括了两种情况:仅根据该要素执行该行为、和根据该要素和其它要素执行该行为。多个、多次、多种等表达包括2个、2次、2种以及2个以上、2次以上、2种以上。
[0182]
本文使用词语“示例性”来意指“用作示例、实例或例证”。本文描述为“示例性”的任何细节不是必然被解释为相对于其他示例更优选或有利。类似地,术语“示例”不要求所有示例都包括所讨论的特征、优点或操作模式。在本说明书中使用术语“在一个示例中”、“一种示例”、“在一个特征中”和/或“一种特征”不是必然指代相同的特征和/或示例。再者,特定特征和/或结构可以与一个或多个其他特征和/或结构组合。此外,于此描述的装置的至少一部分可以被配置为执行于此描述的方法的至少一部分。
[0183]
本文使用的术语仅用于描述特定示例的目的,并且不意图是对本公开的示例的限制。如本文所使用的,单数形式“一”、“一种”和“该”也意图包括复数形式,除非上下文清楚地另有指示。
[0184]
应当注意,术语“连接”、“耦合”或它们的任何变体意指在元件之间的直接或间接的任何连接或耦合,并且可以涵盖两个元件之间的中间元件的存在,该两个元件经由中间元件“连接”或“耦合”在一起。元件之间的耦合和/或连接可以是物理的、逻辑的、或它们的组合。如本文所采用的,元件可以通过使用一个或多个电线、电缆、和/或印刷电连接、以及通过使用电磁能量而“连接”或“耦合”在一起。电磁能量可以具有在射频区域、微波区域和/或光(可见和不可见两者)区域中的波长。这些是若干非限制性和非穷举的示例。
[0185]
本文中,两个或两个以上的部件耦合是指,当其中一个部件的电学物理量(例如电流、电压、电场强度等)发生变化时,能影响到与该部件耦合的其他部件。耦合包括但不限于部件之间的直接电连接,或通过额外电路间接地连接。
[0186]
本文对使用诸如“第一”、“第二”等的名称的元素的任何参考不限制这些元素的数量和/或顺序。更确切地,这些名称被用作区分两个或更多元素和/或元素实例的便利方法。因此,对第一和第二元素的参考不意味着仅两个元素可以被采用,或者第一元素必须必然在第二元素之前。此外,除非另有陈述,否则元素集合可以包括一个或多个元素。另外,本描述或权利要求中使用的形式为“a、b或c中的至少一个”的术语可以被解释为“a或b或c或这些元素的任何组合”。
[0187]
在本技术提及的所有文献都被认为是整体性地包括在本技术的公开内容中,以便在必要时可以作为修改的依据。此外应理解,在阅读了本技术的上述公开内容之后,本领域技术人员可以对本技术作各种改动或修改,这些等价形式同样落于本技术所要求保护的范围。
技术特征:
1.一种固态硬盘,其特征在于,包括主控制器、易失性的第一存储器、第二存储器和第三存储器,非易失性的第四存储器,其中,所述主控制器进一步包括多个处理器内核,其中一个内核为主核,其他为从核;所述从核分为两类,一类被配置为将本从核产生的日志信息写入所述第一存储器中本从核对应的区域,另一类被配置为将从将本从核产生的日志信息写入所述第二存储器中本从核对应的区域;所述主核被配置为,从所述第一存储器及第二存储器采集各从核产生的日志信息并保存到所述第三存储器,将所述主核自身产生的日志信息直接写入所述第三存储器,以及,在所述第三存储器的日志信息数据量达到预定条件时将所述第三存储器的日志信息数据写入所述第四存储器。2.如权利要求1所述的固态硬盘,其特征在于,所述第一存储器及第二存储器的存取速度高于所述第三存储器;所述从核写入所述第一存储器及第二存储器中的日志信息没有时间戳,也没有内核标识;所述主核还被配置为,周期性地从所述第一存储器及第二存储器采集各从核产生的日志信息,根据被采集时所述日志信息在所述第一存储器及第二存储器中所属的区域为该日志信息设定内核标识,根据采集时间为该日志信息设定时间戳,将带有内核标识和时间戳的日志信息保存到所述第三存储器。3.如权利要求2所述的固态硬盘,其特征在于,还包括非易失性的第五存储器,所述第五存储器的存取速度低于所述第四存储器;所述主核还被配置为在将所述第三存储器的日志信息数据写入所述第四存储器后,将当前的写入索引更新到所述第五存储器的日志元信息。4.如权利要求3所述的固态硬盘,其特征在于,所述第一存储器是tim,所述第二存储器是sram,所述第三存储器是ddr,所述第四存储器是nand,所述第五存储器是nor闪存。5.如权利要求2所述的固态硬盘,其特征在于,所述主控制器还被配置为,在将所述日志信息保存到所述第三存储器前,对日志信息中的每一个日志条目进行编码。6.如权利要求5所述的固态硬盘,其特征在于,所述日志条目编码方式如下:(a1,[b1,b2],[c1,c2],[d1,d2],[...,...])a1,表示该日志条目含有多少组参数;[b1,b2],表示第一组参数,b1指示当前组参数占用多少个字节(bytes),b2为当前日志条目编码;[c1,c2],表示第二组参数,c1指示当前组参数占用多少个字节(bytes),c2为要存储的参数,根据要存储的参数数量,设置对应组d,e,f等参数直至结束。7.如权利要求6所述的固态硬盘,其特征在于,若需要存储字符串,则将第一组参数b1设置为特定标记,填入字符串本身,并以换行符作为字符串结尾。8.如权利要求3所述的固态硬盘,其特征在于,所述主核还被配置为,收到关机信号或者掉电信号时,将所述第三存储器中尚未保存的日志信息保存到所述第四存储器同时将元信息存储到所述第五存储器。9.如权利要求4所述的固态硬盘,其特征在于,所述主核还被配置为,上电读取存放在
所述第五存储器中的元信息,获取上次写入的起始位置和结束位置,进而获取每次上下电周期内的日志。10.一种日志获取方法,其特征在于,包括:主机向如权利要求1-9中任意一项所述的固态硬盘发送读取日志数据的指令;响应于所述指令,所述固态硬盘的主控制器查找日志的元信息并根据该元信息计算出当前生命周期内最早的日志,从当前生命周期内最早的日志开始读取,以固定大小的数据包发送给所述主机;所述主机将收到的数据包聚合成为日志源文件,然后通过脚本解析该日志源文件获得日志原文内容。
技术总结
本申请涉及固态存储技术领域,公开了一种固态硬盘及日志获取方法,该方法为压缩日志信息的内容,采用提前编码的方式将日志节点内容进行编码并形成一个集合。因日志节点的多样性,需要记录不同的内容和参数,所以设计了一种优越的可拓展的编码格式来规范化日志。相比于编码之前,编码后的日志在CPU中处理速度更快,占用系统时间更少。同时大大降低存储空间占用,有效地减少日志存储对资源的消耗,提升了单位存储空间内的有效信息比例。了单位存储空间内的有效信息比例。了单位存储空间内的有效信息比例。
技术研发人员:朱文禧 肖锐
受保护的技术使用者:苏州库瀚信息科技有限公司
技术研发日:2023.05.15
技术公布日:2023/8/13
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
