CN101944115A - 一种日志搜索方法和系统 - Google Patents
一种日志搜索方法和系统 Download PDFInfo
- Publication number
- CN101944115A CN101944115A CN 201010285946 CN201010285946A CN101944115A CN 101944115 A CN101944115 A CN 101944115A CN 201010285946 CN201010285946 CN 201010285946 CN 201010285946 A CN201010285946 A CN 201010285946A CN 101944115 A CN101944115 A CN 101944115A
- Authority
- CN
- China
- Prior art keywords
- time
- daily record
- time period
- index
- search
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种日志搜索方法和系统,其中,所述方法包括:在接收到搜索信息后,利用当前时间段索引中的开始时间和结束时间,判断当前时间段标记对应的日志中是否包含符合搜索信息中的起始时间和终止时间的日志;若是,则对当前时间段标记对应的日志进行折半查找,确定当前时间段中符合所述起始时间和终止时间的日志,并将符合搜索信息的日志加入搜索结果;将相邻的下一条时间段索引作为当前索引,重复执行所述判断步骤;若否,则将相邻的下一条时间段索引作为当前索引,重复执行所述判断步骤;当符合搜索结束条件时,停止搜索,并将搜索结果中的日志返回。通过使用时间段标记对日志进行划分,对每个时间段可以进行折半查找,提高搜索效率。
Description
技术领域
本发明涉及信息检索技术领域,尤其是涉及一种日志搜索方法和系统。
背景技术
目前NandFlash的主流文件系统是Yaffs2,该文件系统具有占用内存少和启动快等优点,基于NandFlash的操作大都基于Yaffs2文件系统。
通常,在Yaffs2文件系统中,日志是按时间顺序进行存放的,这样使用折半查找算法可以快速搜索到指定时间段内的日志。但是当系统时间往前调整时(即调整后的系统时间早于调整前的系统时间),就会导致日志的存储不按时间顺序进行排列,这样就无法使用折半查找算法,只能对所有日志文件进行遍历,导致搜索时间过长,进一步的,会在内存中缓存大量的日志数据,容易造成其他应用程序分配内存失败。
另外,现有Yaffs2文件系统在NandFlash内容改写或覆盖时会出现内容搬移,导致效率低下,而且搬移时容易出现错误导致日志遭到破坏;以及,现有Yaffs2文件系统需要通过目录和文件名来访问文件,一旦目录项遭到破坏,就无法访问相应文件。
发明内容
本发明的目的是提供一种日志搜索方法和系统,以提高日志搜索的效率,减少内存中缓存的日志数据,提高日志文件的安全性和可访问性。
本发明提供了一种日志搜索方法,NandFlash的每个已使用页对应的带外OOB包括一个时间段标记;每个时间段标记在整个NandFlash中是唯一的,每个时间段标记对应连续的至少一个页,且一个时间段标记对应的时间段内日志按时间先后顺序排列;系统内存中具有时间段索引,所述时间段索引包括时间段标记、以及与该时间段标记对应的时间段的开始时间和结束时间;
在接收到搜索信息后,所述方法包括:
利用当前时间段索引中时间段标记对应的时间段的开始时间和结束时间,判断当前时间段标记对应的日志中是否包含符合所述搜索信息中的起始时间和终止时间的日志;
若是,则对当前时间段标记对应的日志进行折半查找,确定当前时间段中符合所述起始时间和终止时间的日志,并将符合所述搜索信息的日志加入搜索结果;将相邻的下一条时间段索引作为当前索引,重复执行所述判断步骤;
若否,则将相邻的下一条时间段索引作为当前索引,重复执行所述判断步骤;
当符合搜索结束条件时,停止搜索,并将搜索结果中的日志返回。
本发明还提供了一种日志搜索系统,NandFlash的每个已使用页对应的带外OOB包括一个时间段标记;每个时间段标记在整个NandFlash中是唯一的,每个时间段标记对应连续的至少一个页,且一个时间段标记对应的时间段内日志按时间先后顺序排列;所述系统的内存中具有时间段索引,所述时间段索引包括时间段标记、以及与该时间段标记对应的时间段的开始时间和结束时间;
所述系统还包括:
接收模块,用于接收搜索信息;
判断模块,用于利用当前时间段索引中时间段标记对应的时间段的开始时间和结束时间,判断当前时间段标记对应的日志中是否包含符合所述搜索信息中的起始时间和终止时间的日志;
查找模块,用于当所述判断模块的判断结果为是时,对当前时间段标记对应的日志进行折半查找,确定当前时间段中符合所述起始时间和终止时间的日志,并将符合所述搜索信息的日志加入搜索结果;将相邻的下一条时间段索引作为当前索引,重复调用所述判断模块进行判断;当所述判断模块的判断结果为否时,将相邻的下一条时间段索引作为当前索引,重复调用所述判断模块进行判断;
返回模块,用于当符合搜索结束条件时,停止搜索,并将搜索结果中的日志返回。
本发明的日志搜索方法和系统,通过使用时间段标记将NandFlash中的日志按时间段进行划分,每个时间段中的日志都是按时间先后顺序进行排列,使得日志搜索时可以对每个时间段进行折半查找,大大提高日志搜索的效率,减少内存中缓存的日志数据;在日志数量不足一页且超过预设时间没有新日志生成时,通过强制将日志写入页中,能够避免断电造成的内存中缓存日志的丢失,并避免在NandFlash内容改写或覆盖时出现的内容搬移现象;本发明的日志搜索系统不采用文件系统以文件的方式访问日志,即使某个块出现损坏也只是失去了该块上的日志,其他块上的日志不受影响,更大程度的保护日志的可访问性。
附图说明
图1是NandFlash的典型结构示意图;
图2是本发明的OOB结构示意图;
图3是本发明的日志搜索方法第一实施例的流程示意图;
图4是本发明的日志搜索方法第二实施例的流程示意图;
图5是本发明的日志搜索系统的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明实施例作进一步详细的说明。
实施例一
本实施例提供了一种日志搜索方法。
首先,参见图1,为NandFlash的典型结构。NandFlash包括多个块(Block),每个块包括多个页(Page),其中,块是擦除的最小单位,页是写入数据的最小单位。
NandFlash中,每一页(Page)对应一个区域,用于存放校验的ECC(ErrorChecking Correction,错误检查与纠正)数据和其他一些信息,比如上层文件系统存放的私有数据,这个区域通常被称作OOB(out of band,带外)。在页为2K字节的NandFlash中(目前大多数的NandFlash都是2Kbytes),OOB的大小为64字节,其中2字节用于记录坏块,24字节用于ECC校验,剩余的38字节(64-2-24=38)未使用,本发明就是充分利用了OOB中这些未被使用的空间。
参见图2,本发明在OOB中增加了时间段标记,时间段标记可以是1或几个字节,用于标记不同的时间段,只要满足不同时间段的时间段标记不重复即可。当系统时间发生调整时,若调整后的系统时间早于调整前的系统时间,则新产生的日志会被记录到相邻的下一个未使用页中,该日志所在页对应的OOB使用一个新的时间段标记,该新的时间段标记不同于任何一个已使用的时间段标记;若调整后的系统时间不早于调整前的系统时间,新产生的日志可以继续写入原时间段标记对应的页中,也可以被记录到相邻的下一个未使用页中,并使用一个新的时间段标记。
其中一个比较简单的实现例子是:当系统时间发生调整且调整后的系统时间早于调整前的系统时间,对新的时间段标记执行在原时间段标记的基础上+1操作。由于NandFlash是循环覆盖写的存储性质,因此被擦除的块中的OOB对应的时间段标记会被释放,时间段标记可以循环使用。对于时间段标记尺寸为1字节的情况,时间段标记可以取0~255之间的任一个数,即在被覆盖写之前,系统时间的调整次数不超过255次都不会出现时间段标记的冲突问题,1字节的时间段标记支持255次系统时间的调整。
通过时间段标记将NandFlash中的日志按时间段进行划分,每个时间段中的日志都是按时间先后顺序进行排列,为之后的搜索做好了准备工作,搜索时可以对每个时间段进行查找;由于每个时间段中的日志按时间先后顺序进行排列,因此对于一个时间段中的日志可以采用折半查找算法,大大提高搜索效率。
目前通常情况下,日志要凑够1Page才可以写入NandFlash,这是因为NandFlash写入的最小单位是1Page。以Page大小为2Kbytes、日志大小为128bytes为例,当日志写够16条时才能真正写入NandFlash,不足16条时则将日志缓存在内存中。但在特殊情况下,比如几分钟都没有新日志产生,而且内存中缓存的日志还不足16条,若突然断电会导致日志丢失。因此,若内存中缓存的日志不足一页且距上一个日志产生到达预设时间(例如10s)还没有新日志产生,则将内存中缓存的日志接续写入原时间段标记对应的页中,对上例来说,即使日志不够16条也会将缓存的日志强行写入到NandFlash中。
所述OOB还可以包括所对应页中日志的日志类型索引。日志通常是通过关键字进行搜索的,本发明中的日志类型索引可以包括主类型字段和次类型字段,对于NandFlash记录的日志为多个设备共享的情况,还可以进一步包括设备标识ID字段。本实施例将日志类型索引的关键字分为主类型、次类型和设备ID等三种。其中,主类型主要用于定义日志所属的大类,例如操作日志、异常日志、报警日志等;次类型用于定义日志所属的小类,例如异常日志又可以分成温度异常、IP地址冲突、非法用户登录等;当NandFlash记录的日志为多个设备共享时,可以用设备ID唯一确定一个设备。可以根据具体需要定义不同长度的主类型字段、次类型字段和设备ID字段。通过将日志的类型单独存储在OOB中,当搜索信息包括日志类型时,可以对OOB中的日志类型索引进行匹配,而不用读取日志内容,能够进一步加快日志搜索的速度。
例如,以NandFlash中的块大小为128K字节、页大小为2K字节、OOB大小为64字节、每条日志大小128字节为例,1页可以记录16条日志,若需要支持8种主类型日志,每种主类型支持32种次类型日志,整个日志系统支持256种设备ID,则需将主类型字段x(对应主类型数量)设置为3位,将次类型字段y(对应次类型数量)设置为5位,将设备ID字段z(对应设备数量)设置为8位,每条日志类型索引为2bytes,即主类型字段(x)+次类型字段(y)+设备ID字段(z)=16Bit;因此可以根据实际需要支持的主类型、次类型以及设备ID的数量来确定所需的x、y、z位数。若时间段标记在OOB中占用1字节,则OOB还可以有38-1-2×16=5字节的空闲空间。
系统在开机时,会根据各OOB中的时间段标记和与所述时间段标记对应的第一个和最后一个日志的建立时间,于内存中建立时间段索引。其中,将所述第一个日志的建立时间作为时间段的开始时间,将所述最后一个日志的建立时间作为时间段的结束时间。
当新的日志生成并写入某个页后,日志搜索系统还会更新内存中的时间段索引。若在原时间段标记对应的页中增加日志,则所述更新为:使用新生成日志的建立时间更新内存中时间段的结束时间。若系统时间调整后生成的第一个日志,且调整后的系统时间早于调整前的系统时间,由于该日志会被记录到相邻的下一个未使用页中,并使用一个新的时间段标记,则所述更新为:为所述新的时间段标记建立时间段索引,所述时间段索引的时间段开始时间和结束时间均为所述日志的建立时间。
每个块上的数据被擦除后,块上所有页的内容会被标记为FF,表示未被使用。当有日志写入到页中,日志数据会替换掉FF,因此,通过查找FF标记可以定位上次记录日志的位置。对于OOB中包括日志类型索引的情况,未使用的页对应的OOB中,对应日志类型索引的位置内容也为FF,表示该页未使用。
下面介绍本实施例的日志搜索方法。
本实施例中,NandFlash的每个已使用页对应的OOB包括一个时间段标记;每个时间段标记在整个NandFlash中是唯一的,每个时间段标记对应连续的至少一个页,且一个时间段标记对应的时间段内日志按时间先后顺序排列;系统内存中具有时间段索引,所述时间段索引包括时间段标记、以及与该时间段标记对应的时间段的开始时间和结束时间。
参照图3,所述日志搜索方法包括如下步骤:
S10,接收搜索信息。
日志搜索系统在接收到搜索信息后,执行后续的搜索操作。所述搜索信息可以包括所需查找日志的起始时间和终止时间,还可以进一步包括日志类型。
S20,利用当前时间段索引中时间段标记对应的时间段的开始时间和结束时间,判断当前时间段标记对应的日志中是否包含符合所述搜索信息中的起始时间和终止时间的日志。
日志搜索系统在收到包括起始时间和终止时间搜索信息后,可以从时间段标记最小的时间段索引开始搜索,也可以从时间段标记最大的时间段索引开始搜索。
判断当前时间段索引对应的日志中是否包含符合搜索信息中的起始时间和终止时间的日志有很多种方式。例如可以判断当前时间段索引中的开始时间和结束时间与搜索信息中的起始时间和终止时间是否有交叠;或针对起始时间对当前时间段中的日志进行折半查找,确定一个起点,然后针对终止时间对当前时间段中的日志进行折半查找,确定一个终点,之后再判断由这个起点和终点构成的时间区间是否在搜索信息的起始时间和终止时间范围内。
S30,若是,则对当前时间段标记对应的日志进行折半查找,确定当前时间段中符合所述起始时间和终止时间的日志,并将符合所述搜索信息的日志加入搜索结果;将相邻的下一条时间段索引作为当前索引,重复执行步骤S20。
S40,若否,则将相邻的下一条时间段索引作为当前索引,重复执行步骤S20。
S50,当符合搜索结束条件时,停止搜索,并将搜索结果中的日志返回;若不符合搜索结束条件,则继续上述的循环搜索。
所述搜索结束条件可以为遍历全部时间段索引,或搜索结果中的日志数量达到设定数量,所述设定数量通常可以为2000。
所述OOB还可以包括所对应页中日志的日志类型索引(参见图2),当所述搜索信息中还包括日志类型时,则在步骤S30确定符合起始时间和终止时间的日志后,还可以包括步骤:利用所述日志类型和符合所述起始时间和终止时间的日志在OOB中的日志类型索引,筛选出符合所述日志类型的日志,之后再将符合搜索信息的日志加入搜索结果。
由于内存的读取速度要快于NandFlash,在内存充裕的情况下,还可以进一步在内存中建立全部日志的日志类型索引;内存中的日志类型索引也是在日志搜索系统开机时,内存读取OOB上的日志类型索引,完成日志搜索系统的初始化。以128bytes日志、2bytes日志类型索引为例,日志和内存中日志类型索引的对应关系为:日志偏移:128=内存中日志类型索引偏移:2。
当所述搜索信息中还包括日志类型时,则在步骤S30确定符合起始时间和终止时间的日志后,还可以包括步骤:利用所述日志类型和符合所述起始时间和终止时间的日志在内存中的日志类型索引,筛选出符合所述日志类型的日志,之后再将符合搜索信息的日志加入搜索结果。
上述日志的搜索过程与日志的生成写入过程是两个互不干扰的过程,不存在执行顺序上的限制。
下面通过一个优选的实施例详细介绍本发明的方法。
NandFlash的每个已使用页对应的OOB包括一个时间段标记和该页中各个日志的日志类型索引;每个时间段标记在整个NandFlash中是唯一的,每个时间段标记对应连续的至少一个页,且一个时间段标记对应的时间段内日志按时间先后顺序排列;系统内存中具有时间段索引和全部日志的日志类型索引,所述时间段索引包括时间段标记、以及与该时间段标记对应的时间段的开始时间和结束时间。
所述日志搜索方法包括(参见图4):
S101,接收搜索信息。
所述搜索信息包括起始时间和终止时间,以及日志类型。例如,起始时间为2010-8-16:0:0,终止时间为2010-8-310:0:0,日志类型为0110011010101100。假设现在共有15个时间段标记0~14,内存中每个时间段索引的示意参见表1:
表1
时间段标记 | 开始时间 | 结束时间 |
0 | 2010-7-250:0:0 | 2010-7-260:0:0 |
1 | 2010-7-2523:59:58 | 2010-7-270:0:0 |
2 | 2010-7-2623:59:58 | 2010-7-280:0:0 |
3 | 2010-7-2723:59:58 | 2010-7-290:0:0 |
4 | 2010-7-2823:59:58 | 2010-7-300:0:0 |
5 | 2010-7-2923:59:58 | 2010-7-310:0:0 |
6 | 2010-7-3023:59:58 | 2010-8-10:0:0 |
7 | 2010-7-3123:59:58 | 2010-8-20:0:0 |
8 | 2010-8-123:59:58 | 2010-8-30:0:0 |
9 | 2010-8-223:59:58 | 2010-8-40:0:0 |
10 | 2010-8-323:59:58 | 2010-8-50:0:0 |
11 | 2010-8-423:59:58 | 2010-8-60:0:0 |
12 | 2010-8-523:59:58 | 2010-8-70:0:0 |
13 | 2010-8-623:59:58 | 2010-8-80:0:0 |
14 | 2010-8-723:59:58 | 2010-8-90:0:0 |
S102,利用当前时间段索引中时间段标记对应的时间段的开始时间和结束时间,判断当前时间段标记对应的日志中是否包含符合所述搜索信息中的起始时间和终止时间的日志。
从表1可以看出,包含符合搜索信息中起始时间和终止时间日志的时间段标记为7、8、9。
S103,若是,则对当前时间段标记对应的日志进行折半查找,确定当前时间段中符合所述起始时间和终止时间的日志;利用所述日志类型和符合所述起始时间和终止时间的日志在内存中的日志类型索引,筛选出符合所述日志类型的日志并将符合所述搜索信息的日志加入搜索结果;执行步骤S105。
在搜索到时间段标记为7的时间段索引时,以时间段标记为7的开始时间和结束时间(即分别为2010-7-3123:59:58和2010-8-20:0:0)对时间段标记为7的日志进行折半查找,确定当前时间段中符合所述起始时间和终止时间的日志。之后,利用所述日志类型(0110011010101100)和符合所述起始时间和终止时间的日志在内存中的日志类型索引,筛选出符合所述日志类型的日志,并将符合搜索信息的日志加入搜索结果。
之后,对时间段标记为8、9的时间段索引进行搜索,过程参照对时间段标记为7的时间段索引的搜索过程,此处不再赘述。
S104,若否,则将相邻的下一条时间段索引作为当前索引,重复执行步骤S102。
对于上面的例子,在搜索时间段标记为0~6和10~14的时间段索引时,都是当前时间段索引对应的日志中不包含符合搜索信息中的起始时间和终止时间的日志,会直接跳到下一条相邻的时间段索引继续搜索。
S105:判断是否符合搜索结束条件。所述搜索结束条件可以为遍历全部时间段索引,或搜索结果中的日志数量达到设定数量,所述设定数量通常可以为2000。
若不符合,则进入步骤S104;若符合,则S106:停止搜索,并将搜索结果中的日志返回。
至此,完成了日志搜索过程。
现有Yaffs2文件系统在系统时间调整后,会出现日志排列无序的问题,因此需要对日志进行逐个搜索,降低了搜索效率,而且会在内存中缓存大量的日志数据,容易造成其他应用程序分配内存失败。本实施例的日志搜索方法,将日志划分成多个时间段,每个时间段中的日志按时间顺序排列,因此在日志搜索时,可以在每个时间段内使用折半查找算法,与现有技术的逐个日志搜索,大大提高了搜索的效率和速度,在内存中缓存的日志数据也大量减少,保证系统性能。
现有Yaffs2文件系统在NandFlash内容改写或覆盖时会出现内容搬移,导致效率低下,搬移时容易出现错误导致日志遭到破坏。本实施例在日志数量不足一页且超过预设时间没有新日志生成时,通过强制将日志写入页中,能够避免断电造成的内存中缓存日志的丢失,并避免上述在NandFlash内容改写或覆盖时出现的内容搬移现象,进一步保护了日志文件不受损坏。
现有Yaffs2文件系统需要通过目录和文件名来访问文件,一旦目录项遭到破坏,就无法访问相应文件。而本实施例中的日志搜索系统不采用文件系统以文件的方式访问日志,即使某个块出现损坏也只是失去了该块上的日志,其他块上的日志不受影响,更大程度的保护日志的可访问性。
本实施例通过将日志类型索引存储在OOB中,可以在匹配日志类型时,不需读取日志就可以直接对日志进行筛选,加快了搜索的速度;通过将OOB中的日志类型索引初始化到内存中,可以在匹配日志类型时,利用内存读取速度快的特性,进一步提高日志搜索速度。
实施例二
本实施例提供了一种日志搜索系统,NandFlash的每个已使用页对应的OOB包括一个时间段标记;每个时间段标记在整个NandFlash中是唯一的,每个时间段标记对应连续的至少一个页,且一个时间段标记对应的时间段内日志按时间先后顺序排列;所述系统的内存中具有时间段索引,所述时间段索引包括时间段标记、以及与该时间段标记对应的时间段的开始时间和结束时间;
如图5所示,所述日志搜索系统还包括:接收模块10,判断模块20,查找模块30,返回模块40。
接收模块10用于接收搜索信息。
所述搜索信息可以包括所需查找日志的起始时间和终止时间,还可以进一步包括日志类型。
判断模块20用于利用当前时间段索引中时间段标记对应的时间段的开始时间和结束时间,判断当前时间段标记对应的日志中是否包含符合所述搜索信息中的起始时间和终止时间的日志。
判断当前时间段索引对应的日志中是否包含符合搜索信息中的起始时间和终止时间的日志有很多种方式。例如可以判断当前时间段索引中的开始时间和结束时间与搜索信息中的起始时间和终止时间是否有交叠;或针对起始时间对当前时间段中的日志进行折半查找,确定一个起点,然后针对终止时间对当前时间段中的日志进行折半查找,确定一个终点,之后再判断由这个起点和终点构成的时间区间是否在搜索信息的起始时间和终止时间范围内。
查找模块30用于当所述判断模块20的判断结果为是时,对当前时间段标记对应的日志进行折半查找,确定当前时间段中符合所述起始时间和终止时间的日志,并将符合所述搜索信息的日志加入搜索结果;将相邻的下一条时间段索引作为当前索引,重复调用所述判断模块20进行判断;当所述判断模块20的判断结果为否时,将相邻的下一条时间段索引作为当前索引,重复调用所述判断模块20进行判断.
返回模块40用于当符合搜索结束条件时,停止搜索,并将搜索结果中的日志返回。
所述日志搜索系统还可以包括时间段索引建立模块50,用于在开机时,根据各OOB中的时间段标记和与所述时间段标记对应的第一个和最后一个日志的建立时间,于内存中建立时间段索引。
所述日志搜索系统还可以包括日志类型索引建立模块,用于当OOB包括日志类型索引且内存空间充裕时,在开机时指令读取OOB上的日志类型索引,在内存上建立日志类型索引,完成日志搜索系统的初始化。
所述日志搜索系统还可以包括更新模块60,用于当新的日志生成并写入某个页后,更新内存中的时间段索引;更新模块60也可以进一步用于:根据OOB中新建的该日志的日志类型索引,在内存中增加相应的日志类型索引。
所述搜索结束条件可以为遍历全部时间段索引,或搜索结果中的日志数量达到设定数量。
OOB还可以包括所对应页中日志的日志类型索引。
所述日志类型索引可以包括主类型字段和次类型字段,对于NandFlash记录的日志为多个设备共享的情况,还可以进一步包括设备标识字段。
当所述搜索信息中还包括日志类型时,所述查找模块30还可以用于:在所述确定符合起始时间和终止时间的日志后,利用所述日志类型和符合所述起始时间和终止时间的日志在OOB中的日志类型索引,筛选出符合所述日志类型的日志。
内存中还可以具有全部日志的日志类型索引;则当所述搜索信息中还包括日志类型时,所述查找模块30还可以用于:在所述确定符合起始时间和终止时间的日志后,利用所述日志类型和符合所述起始时间和终止时间的日志在内存中的日志类型索引,筛选出符合所述日志类型的日志。
现有Yaffs2文件系统在系统时间调整后,会出现日志排列无序的问题,因此需要对日志进行逐个搜索,降低了搜索效率,而且会在内存中缓存大量的日志数据,容易造成其他应用程序分配内存失败。本实施例的日志搜索系统,将日志划分成多个时间段,每个时间段中的日志按时间顺序排列,因此在日志搜索时,可以在每个时间段内使用折半查找算法,与现有技术的逐个日志搜索,大大提高了搜索的效率和速度,在内存中缓存的日志数据也大量减少,保证系统性能。
现有Yaffs2文件系统在NandFlash内容改写或覆盖时会出现内容搬移,导致效率低下,搬移时容易出现错误导致日志遭到破坏。本实施例在日志数量不足一页且超过预设时间没有新日志生成时,通过强制将日志写入页中,能够避免断电造成的内存中缓存日志的丢失,并避免上述在NandFlash内容改写或覆盖时出现的内容搬移现象,进一步保护了日志文件不受损坏。
现有Yaffs2文件系统需要通过目录和文件名来访问文件,一旦目录项遭到破坏,就无法访问相应文件。而本实施例中的日志搜索系统不采用文件系统以文件的方式访问日志,即使某个块出现损坏也只是失去了该块上的日志,其他块上的日志不受影响,更大程度的保护日志的可访问性。
本实施例的日志搜索系统,通过使用时间段标记将NandFlash中的日志按时间段进行划分,每个时间段中的日志都是按时间先后顺序进行排列,使得日志搜索时可以对每个时间段进行折半查找,大大提高日志搜索的效率。
由于日志搜索系统实施例与日志搜索方法实施例的相似内容较多,因此介绍的比较简略,相关之处请参见日志搜索方法实施例部分,此处不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (18)
1.一种日志搜索方法,其特征在于,NandFlash的每个已使用页对应的带外OOB包括一个时间段标记;每个时间段标记在整个NandFlash中是唯一的,每个时间段标记对应连续的至少一个页,且一个时间段标记对应的时间段内日志按时间先后顺序排列;系统内存中具有时间段索引,所述时间段索引包括时间段标记、以及与该时间段标记对应的时间段的开始时间和结束时间;
在接收到搜索信息后,所述方法包括:
利用当前时间段索引中时间段标记对应的时间段的开始时间和结束时间,判断当前时间段标记对应的日志中是否包含符合所述搜索信息中的起始时间和终止时间的日志;
若是,则对当前时间段标记对应的日志进行折半查找,确定当前时间段中符合所述起始时间和终止时间的日志,并将符合所述搜索信息的日志加入搜索结果;将相邻的下一条时间段索引作为当前索引,重复执行所述判断步骤;
若否,则将相邻的下一条时间段索引作为当前索引,重复执行所述判断步骤;
当符合搜索结束条件时,停止搜索,并将搜索结果中的日志返回。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
系统在开机时,根据各OOB中的时间段标记和与所述时间段标记对应的第一个和最后一个日志的建立时间,于内存中建立时间段索引。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:当新的日志生成并写入某个页后,更新内存中的时间段索引。
4.如权利要求1所述的方法,其特征在于,所述搜索结束条件为遍历全部时间段索引,或搜索结果中的日志数量达到设定数量。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:当系统时间发生调整时,若调整后的系统时间早于调整前的系统时间,新产生的日志被记录到相邻的下一个未使用页中,该日志所在页对应的OOB使用一个新的时间段标记。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:当内存中缓存的日志不足一页且距上一个日志产生到达预设时间还没有新日志产生,则将内存中缓存的日志接续写入原时间段标记对应的页中。
7.如权利要求1-6任一项所述的方法,其特征在于,所述OOB还包括所对应页中日志的日志类型索引。
8.如权利要求7所述的方法,其特征在于,当所述搜索信息中还包括日志类型时,则在所述确定符合起始时间和终止时间的日志后,所述方法还包括:利用所述日志类型和符合所述起始时间和终止时间的日志在OOB中的日志类型索引,筛选出符合所述日志类型的日志。
9.如权利要求7所述的方法,其特征在于,所述内存中还具有全部日志的日志类型索引;当所述搜索信息中还包括日志类型时,则在所述确定符合起始时间和终止时间的日志后,所述方法还包括:利用所述日志类型和符合所述起始时间和终止时间的日志在内存中的日志类型索引,筛选出符合所述日志类型的日志。
10.如权利要求7所述的方法,其特征在于,所述日志类型索引包括主类型字段和次类型字段。
11.如权利要求10所述的方法,其特征在于,所述日志类型索引还包括设备标识字段。
12.一种日志搜索系统,其特征在于,NandFlash的每个已使用页对应的带外OOB包括一个时间段标记;每个时间段标记在整个NandFlash中是唯一的,每个时间段标记对应连续的至少一个页,且一个时间段标记对应的时间段内日志按时间先后顺序排列;所述系统的内存中具有时间段索引,所述时间段索引包括时间段标记、以及与该时间段标记对应的时间段的开始时间和结束时间;
所述系统还包括:
接收模块,用于接收搜索信息;
判断模块,用于利用当前时间段索引中时间段标记对应的时间段的开始时间和结束时间,判断当前时间段标记对应的日志中是否包含符合所述搜索信息中的起始时间和终止时间的日志;
查找模块,用于当所述判断模块的判断结果为是时,对当前时间段标记对应的日志进行折半查找,确定当前时间段中符合所述起始时间和终止时间的日志,并将符合所述搜索信息的日志加入搜索结果;将相邻的下一条时间段索引作为当前索引,重复调用所述判断模块进行判断;当所述判断模块的判断结果为否时,将相邻的下一条时间段索引作为当前索引,重复调用所述判断模块进行判断;
返回模块,用于当符合搜索结束条件时,停止搜索,并将搜索结果中的日志返回。
13.如权利要求12所述的系统,其特征在于,所述系统还包括时间段索引建立模块,用于在开机时,根据各OOB中的时间段标记和与所述时间段标记对应的第一个和最后一个日志的建立时间,于内存中建立时间段索引。
14.如权利要求12所述的系统,其特征在于,所述系统还包括更新模块,用于当新的日志生成并写入某个页后,更新内存中的时间段索引。
15.如权利要求12所述的系统,其特征在于,所述搜索结束条件为遍历全部时间段索引,或搜索结果中的日志数量达到设定数量。
16.如权利要求12-15任一项所述的系统,其特征在于,所述OOB还包括所对应页中日志的日志类型索引。
17.如权利要求16所述的系统,其特征在于,当所述搜索信息中还包括日志类型时,所述查找模块还用于:在所述确定符合起始时间和终止时间的日志后,利用所述日志类型和符合所述起始时间和终止时间的日志在OOB中的日志类型索引,筛选出符合所述日志类型的日志。
18.如权利要求16所述的系统,其特征在于,所述内存中还具有全部日志的日志类型索引;则当所述搜索信息中还包括日志类型时,所述查找模块还用于:
在所述确定符合起始时间和终止时间的日志后,利用所述日志类型和符合所述起始时间和终止时间的日志在内存中的日志类型索引,筛选出符合所述日志类型的日志。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010285946 CN101944115B (zh) | 2010-09-14 | 2010-09-14 | 一种日志搜索方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010285946 CN101944115B (zh) | 2010-09-14 | 2010-09-14 | 一种日志搜索方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101944115A true CN101944115A (zh) | 2011-01-12 |
CN101944115B CN101944115B (zh) | 2012-07-25 |
Family
ID=43436106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010285946 Active CN101944115B (zh) | 2010-09-14 | 2010-09-14 | 一种日志搜索方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101944115B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102970363A (zh) * | 2012-11-21 | 2013-03-13 | 用友软件股份有限公司 | 远程日志下载系统和远程日志下载方法 |
CN103970853A (zh) * | 2014-05-05 | 2014-08-06 | 浙江宇视科技有限公司 | 优化搜索引擎的方法及装置 |
CN104182522A (zh) * | 2014-08-26 | 2014-12-03 | 中国科学院信息工程研究所 | 一种基于循环位图模型的辅助索引方法及装置 |
CN104572460A (zh) * | 2014-12-30 | 2015-04-29 | 大唐移动通信设备有限公司 | 一种内存泄露的检测方法和装置 |
CN104794123A (zh) * | 2014-01-20 | 2015-07-22 | 阿里巴巴集团控股有限公司 | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 |
CN104834648A (zh) * | 2014-02-12 | 2015-08-12 | 华为技术有限公司 | 日志查询方法和装置 |
CN105989048A (zh) * | 2015-02-05 | 2016-10-05 | 浙江大华技术股份有限公司 | 一种数据记录处理方法、设备及系统 |
CN107463714A (zh) * | 2017-08-24 | 2017-12-12 | 北京工业大学 | 一种基于证据链时间序列的关键证据二分搜索方法 |
CN108427705A (zh) * | 2018-01-17 | 2018-08-21 | 平安科技(深圳)有限公司 | 电子装置、分布式系统日志查询方法及存储介质 |
CN110457189A (zh) * | 2019-07-02 | 2019-11-15 | 平安科技(深圳)有限公司 | 一种应用程序的日志管理方法及系统、相关设备 |
CN110727641A (zh) * | 2019-10-21 | 2020-01-24 | 中国民航信息网络股份有限公司 | 一种日志的查找方法及装置 |
CN112965934A (zh) * | 2021-02-04 | 2021-06-15 | 北京高因科技有限公司 | 一种日志压缩存储方法、电子装置 |
CN113297160A (zh) * | 2021-05-26 | 2021-08-24 | 上海移远通信技术股份有限公司 | 定位日志文件的处理方法及装置、导航设备、存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101082935A (zh) * | 2007-07-06 | 2007-12-05 | 中兴通讯股份有限公司 | 一种内存数据的非唯一索引检索方法 |
JP2008210068A (ja) * | 2007-02-26 | 2008-09-11 | Mitsubishi Electric Corp | データ処理装置及びデータ処理方法及びプログラム |
CN101453378A (zh) * | 2008-12-30 | 2009-06-10 | 杭州华三通信技术有限公司 | 日志转储与审计的方法和系统 |
-
2010
- 2010-09-14 CN CN 201010285946 patent/CN101944115B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008210068A (ja) * | 2007-02-26 | 2008-09-11 | Mitsubishi Electric Corp | データ処理装置及びデータ処理方法及びプログラム |
CN101082935A (zh) * | 2007-07-06 | 2007-12-05 | 中兴通讯股份有限公司 | 一种内存数据的非唯一索引检索方法 |
CN101453378A (zh) * | 2008-12-30 | 2009-06-10 | 杭州华三通信技术有限公司 | 日志转储与审计的方法和系统 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102970363A (zh) * | 2012-11-21 | 2013-03-13 | 用友软件股份有限公司 | 远程日志下载系统和远程日志下载方法 |
CN104794123B (zh) * | 2014-01-20 | 2018-07-27 | 阿里巴巴集团控股有限公司 | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 |
CN104794123A (zh) * | 2014-01-20 | 2015-07-22 | 阿里巴巴集团控股有限公司 | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 |
WO2015106711A1 (zh) * | 2014-01-20 | 2015-07-23 | 阿里巴巴集团控股有限公司 | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 |
CN104834648B (zh) * | 2014-02-12 | 2018-07-31 | 华为技术有限公司 | 日志查询方法和装置 |
CN104834648A (zh) * | 2014-02-12 | 2015-08-12 | 华为技术有限公司 | 日志查询方法和装置 |
CN103970853A (zh) * | 2014-05-05 | 2014-08-06 | 浙江宇视科技有限公司 | 优化搜索引擎的方法及装置 |
CN104182522B (zh) * | 2014-08-26 | 2017-04-19 | 中国科学院信息工程研究所 | 一种基于循环位图模型的辅助索引方法及装置 |
CN104182522A (zh) * | 2014-08-26 | 2014-12-03 | 中国科学院信息工程研究所 | 一种基于循环位图模型的辅助索引方法及装置 |
CN104572460A (zh) * | 2014-12-30 | 2015-04-29 | 大唐移动通信设备有限公司 | 一种内存泄露的检测方法和装置 |
CN105989048A (zh) * | 2015-02-05 | 2016-10-05 | 浙江大华技术股份有限公司 | 一种数据记录处理方法、设备及系统 |
CN107463714A (zh) * | 2017-08-24 | 2017-12-12 | 北京工业大学 | 一种基于证据链时间序列的关键证据二分搜索方法 |
CN108427705A (zh) * | 2018-01-17 | 2018-08-21 | 平安科技(深圳)有限公司 | 电子装置、分布式系统日志查询方法及存储介质 |
CN108427705B (zh) * | 2018-01-17 | 2022-04-12 | 平安科技(深圳)有限公司 | 电子装置、分布式系统日志查询方法及存储介质 |
CN110457189A (zh) * | 2019-07-02 | 2019-11-15 | 平安科技(深圳)有限公司 | 一种应用程序的日志管理方法及系统、相关设备 |
CN110727641A (zh) * | 2019-10-21 | 2020-01-24 | 中国民航信息网络股份有限公司 | 一种日志的查找方法及装置 |
CN110727641B (zh) * | 2019-10-21 | 2023-10-27 | 中国民航信息网络股份有限公司 | 一种日志的查找方法及装置 |
CN112965934A (zh) * | 2021-02-04 | 2021-06-15 | 北京高因科技有限公司 | 一种日志压缩存储方法、电子装置 |
CN113297160A (zh) * | 2021-05-26 | 2021-08-24 | 上海移远通信技术股份有限公司 | 定位日志文件的处理方法及装置、导航设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101944115B (zh) | 2012-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101944115B (zh) | 一种日志搜索方法和系统 | |
CN103577121B (zh) | 一种基于Nand Flash的高可靠线性文件存取方法 | |
CN107168647B (zh) | Flash数据读写方法及系统 | |
CN101446921B (zh) | 一种Flash存储器的动态存储方法 | |
CN102436353B (zh) | 半导体存储器控制装置 | |
CN101551780B (zh) | 一种电视机及其数据存储方法、装置 | |
US9244833B2 (en) | Data-storage device and flash memory control method | |
CN101645043B (zh) | 写数据的方法、读数据的方法及存储设备 | |
CN111125447A (zh) | 一种元数据访问方法、装置、设备及可读存储介质 | |
CN101364166B (zh) | 将2048字节页的Nand Flash模拟成硬盘的方法和装置 | |
CN107193758A (zh) | 一种固态硬盘的映射表管理方法及固态硬盘 | |
CN102012849B (zh) | 一种基于闪存的数据库恢复方法 | |
CN102902730A (zh) | 基于数据缓存的读数据方法及装置 | |
CN101526927B (zh) | Flash文件系统的数据处理方法及数据处理装置 | |
CN106776106A (zh) | 一种基于NandFlash的数据存储方法 | |
CN101901169B (zh) | 扫描装置及方法 | |
CN103488710B (zh) | 大数据页中高效存储非定长数据方法 | |
CN103577574A (zh) | 一种基于nand flash的高可靠线性文件系统 | |
CN103019884A (zh) | 基于虚拟机快照的内存页去重方法及装置 | |
CN101916290A (zh) | 内存数据库的管理方法和装置 | |
CN102629234A (zh) | 一种单片机片内置Flash数据快速检索方法 | |
CN102024502A (zh) | 闪存器件测试方法、装置及板卡和网络设备 | |
CN106528441B (zh) | 仿真eeprom的数据处理方法、装置及电子设备 | |
US20060004969A1 (en) | High-speed accessible memory featuring reduced data movement | |
CN102768672B (zh) | 一种磁盘空间管理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |