一种日志搜索方法和系统的制作方法

文档序号:6332267阅读:315来源:国知局
专利名称:一种日志搜索方法和系统的制作方法
技术领域
本发明涉及信息检索技术领域,尤其是涉及一种日志搜索方法和系统。
背景技术
目前NandFlash的主流文件系统是Yaf fs2,该文件系统具有占用内存少和启动快 等优点,基于NandFlash的操作大都基于Yaffs2文件系统。通常,在Yaffs2文件系统中,日志是按时间顺序进行存放的,这样使用折半查找 算法可以快速搜索到指定时间段内的日志。但是当系统时间往前调整时(即调整后的系统 时间早于调整前的系统时间),就会导致日志的存储不按时间顺序进行排列,这样就无法使 用折半查找算法,只能对所有日志文件进行遍历,导致搜索时间过长,进一步的,会在内存 中缓存大量的日志数据,容易造成其他应用程序分配内存失败。另外,现有Yaffs2文件系统在NandFlash内容改写或覆盖时会出现内容搬移,导 致效率低下,而且搬移时容易出现错误导致日志遭到破坏;以及,现有Yaffs2文件系统需 要通过目录和文件名来访问文件,一旦目录项遭到破坏,就无法访问相应文件。

发明内容
本发明的目的是提供一种日志搜索方法和系统,以提高日志搜索的效率,减少内 存中缓存的日志数据,提高日志文件的安全性和可访问性。本发明提供了一种日志搜索方法,NandFlash的每个已使用页对应的带外OOB包 括一个时间段标记;每个时间段标记在整个NandFlash中是唯一的,每个时间段标记对应 连续的至少一个页,且一个时间段标记对应的时间段内日志按时间先后顺序排列;系统内 存中具有时间段索引,所述时间段索引包括时间段标记、以及与该时间段标记对应的时间 段的开始时间和结束时间;在接收到搜索信息后,所述方法包括利用当前时间段索引中时间段标记对应的时间段的开始时间和结束时间,判断 当前时间段标记对应的日志中是否包含符合所述搜索信息中的起始时间和终止时间的日 志;若是,则对当前时间段标记对应的日志进行折半查找,确定当前时间段中符合所 述起始时间和终止时间的日志,并将符合所述搜索信息的日志加入搜索结果;将相邻的下 一条时间段索引作为当前索引,重复执行所述判断步骤;若否,则将相邻的下一条时间段索引作为当前索引,重复执行所述判断步骤;
当符合搜索结束条件时,停止搜索,并将搜索结果中的日志返回。 本发明还提供了一种日志搜索系统,NandFlash的每个已使用页对应的带外OOB 包括一个时间段标记;每个时间段标记在整个NandFlash中是唯一的,每个时间段标记对 应连续的至少一个页,且一个时间段标记对应的时间段内日志按时间先后顺序排列;所述 系统的内存中具有时间段索引,所述时间段索引包括时间段标记、以及与该时间段标记对
4应的时间段的开始时间和结束时间;所述系统还包括接收模块,用于接收搜索信息;判断模块,用于利用当前时间段索引中时间段标记对应的时间段的开始时间和结 束时间,判断当前时间段标记对应的日志中是否包含符合所述搜索信息中的起始时间和终 止时间的日志;查找模块,用于当所述判断模块的判断结果为是时,对当前时间段标记对应的日 志进行折半查找,确定当前时间段中符合所述起始时间和终止时间的日志,并将符合所述 搜索信息的日志加入搜索结果;将相邻的下一条时间段索引作为当前索引,重复调用所述 判断模块进行判断;当所述判断模块的判断结果为否时,将相邻的下一条时间段索引作为 当前索引,重复调用所述判断模块进行判断;返回模块,用于当符合搜索结束条件时,停止搜索,并将搜索结果中的日志返回。本发明的日志搜索方法和系统,通过使用时间段标记将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),00B的大小为64字节,其中2字节用于记录坏块,24字节用于ECC校验,剩余的38字节(64-2-24 = 38)未使用,本发明就是充分利用了 OOB中这 些未被使用的空间。参见图2,本发明在OOB中增加了时间段标记,时间段标记可以是1或几个字节,用 于标记不同的时间段,只要满足不同时间段的时间段标记不重复即可。当系统时间发生调 整时,若调整后的系统时间早于调整前的系统时间,则新产生的日志会被记录到相邻的下 一个未使用页中,该日志所在页对应的OOB使用一个新的时间段标记,该新的时间段标记 不同于任何一个已使用的时间段标记;若调整后的系统时间不早于调整前的系统时间,新 产生的日志可以继续写入原时间段标记对应的页中,也可以被记录到相邻的下一个未使用 页中,并使用一个新的时间段标记。其中一个比较简单的实现例子是当系统时间发生调整且调整后的系统时间早 于调整前的系统时间,对新的时间段标记执行在原时间段标记的基础上+1操作。由于 NandFlash是循环覆盖写的存储性质,因此被擦除的块中的OOB对应的时间段标记会被释 放,时间段标记可以循环使用。对于时间段标记尺寸为1字节的情况,时间段标记可以取 0 255之间的任一个数,即在被覆盖写之前,系统时间的调整次数不超过255次都不会出 现时间段标记的冲突问题,1字节的时间段标记支持255次系统时间的调整。 通过时间段标记将NandFlash中的日志按时间段进行划分,每个时间段中的日志 都是按时间先后顺序进行排列,为之后的搜索做好了准备工作,搜索时可以对每个时间段 进行查找;由于每个时间段中的日志按时间先后顺序进行排列,因此对于一个时间段中的 日志可以采用折半查找算法,大大提高搜索效率。目前通常情况下,日志要凑够IPage才可以写入NandFlash,这是因为NandFlash 写入的最小单位是IPage0以Page大小为2Kbytes、日志大小为128bytes为例,当日志写 够16条时才能真正写入NandFlash,不足16条时则将日志缓存在内存中。但在特殊情况 下,比如几分钟都没有新日志产生,而且内存中缓存的日志还不足16条,若突然断电会导 致日志丢失。因此,若内存中缓存的日志不足一页且距上一个日志产生到达预设时间(例 如IOs)还没有新日志产生,则将内存中缓存的日志接续写入原时间段标记对应的页中,对 上例来说,即使日志不够16条也会将缓存的日志强行写入到NandFlash中。所述OOB还可以包括所对应页中日志的日志类型索引。日志通常是通过关键字 进行搜索的,本发明中的日志类型索引可以包括主类型字段和次类型字段,对于NandFlash 记录的日志为多个设备共享的情况,还可以进一步包括设备标识ID字段。本实施例将日志 类型索引的关键字分为主类型、次类型和设备ID等三种。其中,主类型主要用于定义日志 所属的大类,例如操作日志、异常日志、报警日志等;次类型用于定义日志所属的小类,例如 异常日志又可以分成温度异常、IP地址冲突、非法用户登录等;当NandFlash记录的日志为 多个设备共享时,可以用设备ID唯一确定一个设备。可以根据具体需要定义不同长度的主 类型字段、次类型字段和设备ID字段。通过将日志的类型单独存储在OOB中,当搜索信息 包括日志类型时,可以对OOB中的日志类型索引进行匹配,而不用读取日志内容,能够进一 步加快日志搜索的速度。例如,以NandFlash中的块大小为128K字节、页大小为2K字节、OOB大小为64字 节、每条日志大小128字节为例,1页可以记录16条日志,若需要支持8种主类型日志,每种 主类型支持32种次类型日志,整个日志系统支持256种设备ID,则需将主类型字段χ (对应主类型数量)设置为3位,将次类型字段y (对应次类型数量)设置为5位,将设备ID字段 ζ (对应设备数量)设置为8位,每条日志类型索引为2bytes,即主类型字段(χ) +次类型字 段(y) +设备ID字段(z) = 16Bit;因此可以根据实际需要支持的主类型、次类型以及设备 ID的数量来确定所需的x、y、z位数。若时间段标记在OOB中占用1字节,则OOB还可以有 38-1-2X16 = 5字节的空闲空间。系统在开机时,会根据各OOB中的时间段标记和与所述时间段标记对应的第一个 和最后一个日志的建立时间,于内存中建立时间段索引。其中,将所述第一个日志的建立时 间作为时间段的开始时间,将所述最后一个日志的建立时间作为时间段的结束时间。当新的日志生成并写入某个页后,日志搜索系统还会更新内存中的时间段索引。 若在原时间段标记对应的页中增加日志,则所述更新为使用新生成日志的建立时间更新 内存中时间段的结束时间。若系统时间调整后生成的第一个日志,且调整后的系统时间早 于调整前的系统时间,由于该日志会被记录到相邻的下一个未使用页中,并使用一个新的 时间段标记,则所述更新为为所述新的时间段标记建立时间段索引,所述时间段索引的时 间段开始时间和结束时间均为所述日志的建立时间。每个块上的数据被擦除后,块上所有页的内容会被标记为FF,表示未被使用。当有 日志写入到页中,日志数据会替换掉FF,因此,通过查找FF标记可以定位上次记录日志的 位置。对于OOB中包括日志类型索引的情况,未使用的页对应的OOB中,对应日志类型索引 的位置内容也为FF,表示该页未使用。下面介绍本实施例的日志搜索方法。本实施例中,NandFlash的每个已使用页对应的OOB包括一个时间段标记;每个时 间段标记在整个NandFlash中是唯一的,每个时间段标记对应连续的至少一个页,且一个 时间段标记对应的时间段内日志按时间先后顺序排列;系统内存中具有时间段索引,所述 时间段索引包括时间段标记、以及与该时间段标记对应的时间段的开始时间和结束时间。参照图3,所述日志搜索方法包括如下步骤S10,接收搜索信息。日志搜索系统在接收到搜索信息后,执行后续的搜索操作。所述搜索信息可以包 括所需查找日志的起始时间和终止时间,还可以进一步包括日志类型。S20,利用当前时间段索引中时间段标记对应的时间段的开始时间和结束时间,判 断当前时间段标记对应的日志中是否包含符合所述搜索信息中的起始时间和终止时间的
日志ο日志搜索系统在收到包括起始时间和终止时间搜索信息后,可以从时间段标记最 小的时间段索引开始搜索,也可以从时间段标记最大的时间段索引开始搜索。判断当前时间段索引对应的日志中是否包含符合搜索信息中的起始时间和终止 时间的日志有很多种方式。例如可以判断当前时间段索引中的开始时间和结束时间与搜索 信息中的起始时间和终止时间是否有交叠;或针对起始时间对当前时间段中的日志进行折 半查找,确定一个起点,然后针对终止时间对当前时间段中的日志进行折半查找,确定一个 终点,之后再判断由这个起点和终点构成的时间区间是否在搜索信息的起始时间和终止时 间范围内。S30,若是,则对当前时间段标记对应的日志进行折半查找,确定当前时间段中符合所述起始时间和终止时间的日志,并将符合所述搜索信息的日志加入搜索结果;将相邻 的下一条时间段索引作为当前索引,重复执行步骤S20。S40,若否,则将相邻的下一条时间段索引作为当前索引,重复执行步骤S20。S50,当符合搜索结束条件时,停止搜索,并将搜索结果中的日志返回;若不符合搜 索结束条件,则继续上述的循环搜索。所述搜索结束条件可以为遍历全部时间段索引,或搜索结果中的日志数量达到设 定数量,所述设定数量通常可以为2000。所述OOB还可以包括所对应页中日志的日志类型索引(参见图2),当所述搜索信 息中还包括日志类型时,则在步骤S30确定符合起始时间和终止时间的日志后,还可以包 括步骤利用所述日志类型和符合所述起始时间和终止时间的日志在OOB中的日志类型索 弓I,筛选出符合所述日志类型的日志,之后再将符合搜索信息的日志加入搜索结果。由于内存的读取速度要快于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 :表 权利要求
一种日志搜索方法,其特征在于,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所述的系统,其特征在于,所述搜索结束条件为遍历全部时间段索 弓I,或搜索结果中的日志数量达到设定数量。
16.如权利要求12-15任一项所述的系统,其特征在于,所述OOB还包括所对应页中日 志的日志类型索引。
17.如权利要求16所述的系统,其特征在于,当所述搜索信息中还包括日志类型时,所 述查找模块还用于在所述确定符合起始时间和终止时间的日志后,利用所述日志类型和 符合所述起始时间和终止时间的日志在OOB中的日志类型索引,筛选出符合所述日志类型 的日志。
18.如权利要求16所述的系统,其特征在于,所述内存中还具有全部日志的日志类型 索引;则当所述搜索信息中还包括日志类型时,所述查找模块还用于在所述确定符合起始时间和终止时间的日志后,利用所述日志类型和符合所述起始时 间和终止时间的日志在内存中的日志类型索引,筛选出符合所述日志类型的日志。
全文摘要
本发明公开了一种日志搜索方法和系统,其中,所述方法包括在接收到搜索信息后,利用当前时间段索引中的开始时间和结束时间,判断当前时间段标记对应的日志中是否包含符合搜索信息中的起始时间和终止时间的日志;若是,则对当前时间段标记对应的日志进行折半查找,确定当前时间段中符合所述起始时间和终止时间的日志,并将符合搜索信息的日志加入搜索结果;将相邻的下一条时间段索引作为当前索引,重复执行所述判断步骤;若否,则将相邻的下一条时间段索引作为当前索引,重复执行所述判断步骤;当符合搜索结束条件时,停止搜索,并将搜索结果中的日志返回。通过使用时间段标记对日志进行划分,对每个时间段可以进行折半查找,提高搜索效率。
文档编号G06F17/30GK101944115SQ20101028594
公开日2011年1月12日 申请日期2010年9月14日 优先权日2010年9月14日
发明者徐新刚, 栾焕志, 胡扬忠, 赵先林, 邬伟琪 申请人:杭州海康威视数字技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1