发明内容
本发明提供了一种提高挂载日志式文件系统速度的方法及设备,以实现降低日志式文件系统的挂载时间。
本发明提供一种提高挂载日志式文件系统速度的方法,应用于配置日志式文件系统的嵌入式设备,所述嵌入式设备中配置有索引存储介质以存储日志式文件系统的链表索引信息,该方法进一步包括以下步骤:
当所述日志式文件系统第一次挂载到所述嵌入式设备的操作系统时,所述操作系统扫描建立所述日志式文件系统的存储介质,获取所述日志式文件系统的链表索引信息;
当所述日志式文件系统第一次卸载时,所述操作系统将所述日志式文件系统的链表索引信息写入所述索引存储介质,并根据写入所述链表索引信息正常或者异常设置不同的标识位;
后续所述日志式文件系统向所述操作系统挂载,所述操作系统读取标识位信息;若链表索引信息写入正常,所述操作系统从所述索引存储介质直接读取所述链表索引信息;若链表索引信息写入异常,所述操作系统重新扫描建立所述日志式文件系统的存储介质,获取所述链表索引信息。
所述根据写入所述链表索引信息正常或者异常设置不同的标识位包括:当写入所述链表索引信息正常时,设置所述标识位标识正常;当写入所述链表索引信息异常时,设置所述标识位标识异常;
所述操作系统从所述索引存储介质直接读取所述链表索引信息之后,还包括:所述操作系统更新所述标识位为标识异常。
所述操作系统从所述索引存储介质直接读取所述链表索引信息之后,还包括:所述操作系统将所述标识位由标识正常更新为标识异常。
所述嵌入式设备中配置用以存储日志式文件系统的链表索引信息的索引存储介质,包括:
在所述嵌入式设备中配置独立的索引存储介质,以专门用于存储日志式文件系统的链表索引信息;或者
将建立所述日志式文件系统的存储介质中读取速度快、易操作、不易出现坏块的存储区域配置为所述索引存储介质,存储所述日志式文件系统的链表索引信息。
所述操作系统从所述索引存储介质直接读取所述链表索引信息包括:
所述操作系统预先配置所述链表索引信息在所述索引存储介质中的存储位置,根据所述存储位置读取所述链表索引信息;或者
所述操作系统根据所述日志式文件系统的系统标识查找预先存储的系统标识与存储位置的对应关系,获取所述链表索引信息在所述索引存储介质中的存储位置,读取所述链表索引信息.
所述操作系统将所述日志式文件系统的链表索引信息写入所述索引存储介质包括:
所述操作系统一次性将所述链表索引信息写入所述索引存储介质;或者
所述操作系统根据预先设置分多次将所述链表索引信息写入所述索引存储介质。
所述索引存储介质具体为Nor-Flash存储介质。
本发明提供一种应用于上述方法的设备,该设备包括索引存储介质、日志式文件系统的存储介质、配置单元、扫描单元、写入单元、标识设置单元以及读取单元,其中
所述配置单元,与所述索引存储介质连接,用于配置索引存储介质存储日志式文件系统的链表索引信息;
所述扫描单元,与所述读取单元和日志式文件系统的存储介质连接,用于当所述日志式文件系统第一次挂载到所述嵌入式设备的操作系统时,扫描建立所述日志式文件系统的存储介质,获取所述日志式文件系统的链表索引信息;后续当所述读取单元读取的标识位标识链表索引信息写入异常时,重新扫描建立所述日志式文件系统的存储介质,获取所述链表索引信息;
所述写入单元,与所述索引存储介质连接,用于当所述日志式文件系统卸载时,将所述日志式文件系统的链表索引信息写入所述索引存储介质;
所述标识设置单元,与所述写入单元以及读取单元连接,用于根据所述写入单元写入所述链表索引信息正常或者异常设置不同的标识位,并后续由读取单元读取该标识位;
所述读取单元,与所述标识设置单元以及扫描单元连接,用于后续所述日志式文件系统向所述操作系统挂载时,读取所述标识设置单元设置的标识位;若链表索引信息写入正常,从所述索引存储介质直接读取所述链表索引信息,而在写入异常时,通知所述扫描单元扫描得到链表索引信息。
所述标识设置单元还用于:当所述写入单元写入所述链表索引信息正常时,设置所述标识位标识正常;当所述写入单元写入所述链表索引信息异常时,设置所述标识位标识异常;当所述读取单元从所述索引存储介质直接读取所述链表索引信息之后,将所述标识位由标识正常更新为标识异常。
所述配置单元还用于:
设定需要写入所述索引存储介质中的链表索引信息内容。
所述读取单元还用于:
根据预先配置的所述链表索引信息在所述索引存储介质中的存储位置,读取所述链表索引信息;或者
根据所述日志式文件系统的系统标识查找预先存储的系统标识与存储位置的对应关系,获取所述链表索引信息在所述索引存储介质中的存储位置,读取所述链表索引信息。
所述写入单元还用于:
将所述链表索引信息一次性写入所述索引存储介质;或者根据预先设置分多次将所述链表索引信息写入所述索引存储介质.
与现有技术相比,本发明具有以下优点:
本发明中,使用索引存储介质存储日志式文件系统的链表索引信息,在日志式文件系统挂载到操作系统时,操作系统可以直接从索引存储介质中读取日志式文件系统的链表索引信息,不需要扫描建立该日志式文件系统的存储介质,从而减少日志式文件系统的挂载时间。
具体实施方式
本发明的核心思想是:配置索引存储介质来保存日志式文件系统的各种链表索引信息,利用空间换时间的思想来提高日志式文件系统的挂载性能。索引存储介质在日志式文件系统从操作系统卸载时,保存在内存中的日志式文件系统的各种链表索引信息;当该日志式文件系统下次挂载到操作系统时,操作系统直接从索引存储介质中读取该日志式文件系统的链表索引信息,不需要扫描建立日志式文件系统的存储介质,从而降低日志式文件系统的挂载时间。
本发明提供了一种提高挂载日志式文件系统速度的方法,应用于配置日志式文件系统的嵌入式设备,所述嵌入式设备中单独配置有索引存储介质以存储日志式文件系统的链表索引信息,并在所述索引存储介质中进一步设置标识位标识链表索引信息的获取方式;如图1所示,该方法进一步包括:
步骤101,当所述日志式文件系统第一次挂载到所述嵌入式设备的操作系统时,所述操作系统扫描建立所述日志式文件系统的存储介质,获取所述日志式文件系统的链表索引信息;
步骤102,当所述日志式文件系统第一次卸载时,所述操作系统将所述日志式文件系统的链表索引信息写入所述索引存储介质,并根据写入所述链表索引信息正常或者异常设置不同的标识位;
步骤103,后续所述日志式文件系统向所述操作系统挂载,所述操作系统读取标识位信息;若链表索引信息写入正常,执行步骤104;若链表索引信息写入异常,执行步骤105;
步骤104,所述操作系统从所述索引存储介质直接读取所述链表索引信息;
步骤105,所述操作系统重新扫描建立所述日志式文件系统的存储介质,获取所述链表索引信息。
下面结合具体应用场景详细介绍本发明提供的提高挂载日志式文件系统速度的方法。
本发明应用场景提供一种提高挂载日志式文件系统速度的方法,如图2所示,包括以下步骤:
步骤201,在嵌入式设备中单独配置索引存储介质。
具体的,本发明应用场景中提供的索引存储介质,具有不易出现坏块、有足够的地址引脚来寻址、容易存取其内部的每一个字节以及读取速度快的特点,具体可以为Nor-Flash存储介质。
步骤202,嵌入式设备启动后,第一次将日志式文件系统挂载到操作系统,在内存中写入日志式文件系统的索引。
具体的,嵌入式设备中通常具有一个日志式文件系统。但是,由于嵌入式设备可以包括多个磁盘分区,根据每一磁盘分区处理文件的不同,每一磁盘分区可以对应不同的文件系统,所以,嵌入式设备中可以具有两个以上的日志式文件系统。
嵌入式设备启动后,操作系统建立根目录,使用该根目录挂载需要的日志式文件系统。当嵌入式设备中只有一个日志式文件系统时,嵌入式设备上电时,操作系统挂载日志式文件系统;嵌入式设备下电时,操作系统卸载日志式文件系统,其中嵌入式设备的下电方式可以是正常下电、或者异常断电。当嵌入式设备中包括两个以上日志式文件系统时,操作系统也可以根据需要切换不同的日志式文件系统。
当操作系统第一次挂载日志式文件系统时,操作系统扫描该日志式文件系统对应的磁盘分区,定位日志式文件系统的日志节点,并将日志节点的索引以及其他链表索引信息写入内存,根据内存中的索引信息调用日志式文件系统对应的磁盘分区存储的文件进行处理。
步骤203,在上述日志式文件系统卸载之前,操作系统将内存中存储的索引信息全部写入索引存储介质。
本发明应用场景中提供专门的索引存储介质用于存储内存中的索引信息。该索引存储介质的容量以足够存储设备的索引信息为原则,要有足够的地址引脚来寻址,由于单纯的索引信息占用容量较少,因此,索引存储介质不需要大容量的存储介质。考虑到索引存储介质中的索引将长时间保存,且当存储的索引错误时,将导致设备不能根据索引进行正常工作,因此索引存储介质应当具有不容易出现坏块的性能。同时,操作系统从索引存储介质读取索引的速度将影响嵌入式设备中日志式文件系统的挂载时间,因此,索引存储介质应当具备读取速度快的特点。满足上述性能的索引存储介质可以根据实际需要灵活选择,例如可以采用Nor-Flash存储介质。
操作系统在内存中写入索引后,可以根据预先配置的时间逐渐将内存中的索引写入索引存储介质,例如每间隔一定时间读取一次内存中的索引并将读取到的索引写入索引存储介质;也可以在日志式文件系统卸载时,读取内存中的所有索引并写入索引存储介质。
为了完整记录整个日志式文件系统的变化,操作系统采用第一种方式向索引存储介质写入索引时,最后一次写入索引之前需要完成对日志式文件系统所有文件的操作,包括文件读写操作以及垃圾收集工作;如果操作系统采用第二种方式向索引存储介质写入索引,则操作系统选取在卸载的过程中将索引写入索引存储介质,在此之前操作系统关闭日志式文件系统的所有文件读写操作,以及垃圾收集工作。这两种方式的采用可以由用户根据实际需要灵活选择,例如,当索引信息数据量非常大,用户认为将索引信息一次性写入存储介质需要时间过长时,可以采用第一种方式分多次写入;如果索引信息数据量不大、或者多次写入对用户使用会造成影响时,用户可以采用第二种方式一次性写入。
操作系统向索引存储介质中写入索引时,以方便后续从介质中读取索引并写入内存为原则,例如可以将索引根据产生的时间顺序、根据地址从小到大顺序写入索引存储介质,当然,也可以按照地址由大到小或者其他方便读取的顺序在索引存储介质中写入索引。
本发明应用场景中,当嵌入式设备中只有一个日志式文件系统时,操作系统根据上述索引写入方式在索引存储介质中写入索引;当嵌入式设备具有多个日志式文件系统时,对应地,可以配置两个以上索引存储介质,或者在同一索引存储介质中划分多个存储区域用于分别存储每一日志式文件系统的索引。
步骤204,在随后的操作系统挂载日志式文件系统时,读取索引存储介质中的标识位,判断是否需要扫描该日志式文件系统对应的存储介质;如果判断结果为是,执行步骤205;否则,执行步骤206。
具体的,当嵌入式设备具有多个日志式文件系统时,操作系统预先配置日志式文件系统的系统标识,根据系统标识区分不同日志式文件系统的标识位以及日志式文件系统的各种链表索引信息在索引存储介质中的存储区域。
考虑到嵌入式设备存在异常断电的情况,此时,上一次日志式文件系统的卸载过程并没有顺利完成,因此,不能保证索引存储介质中写入卸载前内存中的所有索引。为了保证索引存储介质中的索引与日志式文件系统中的日志节点对应,当异常断电时,操作系统需要重新扫描日志式文件系统对应的存储介质,获取日志节点的索引,即执行步骤205。否则,操作系统可以执行步骤206,将索引存储介质中的索引写入内存。
索引存储介质中设置标识位标识链表索引信息的获取方式,操作系统通过读取该标识位判断是否需要扫描该日志式文件系统对应的存储介质,或者直接从索引存储介质读取链表索引信息。操作系统每次挂载日志式文件系统时,都可以根据标识位判断是否需要扫描该日志式文件系统对应的存储介质,包括操作系统第一次挂载日志式文件系统时,操作系统也可以根据标识位判断结果扫描该日志式文件系统对应的存储介质,获取日志式文件系统中日志节点的索引。
具体的,操作系统在向存储介质中写入索引时,首先在预先设定的存储位置(例如第一块存储区域)写入标识位,该标识位初始为00;当操作系统将索引完全写入索引存储介质后,将标识位更新为FF。下次操作系统挂载日志式文件系统时,操作系统首先读取索引存储介质中的标识位,若该标识位为FF,则操作系统直接从索引存储介质读取索引,并将标识位更新为00,在将内存中的索引完全写入索引存储介质后,重新将标识位更新为FF。如果日志式文件系统发生异常断电,即没有顺利卸载,标识位保持为00,下次操作系统挂载日志式文件系统时,发现该标识位00,则扫描日志式文件系统对应的存储介质。
步骤205,操作系统扫描日志式文件系统对应的存储介质,获取日志式文件系统中日志节点的索引,在内存中写入索引。
具体的,步骤205之后,当日志式文件系统卸载时,操作系统将内存中的索引写入索引存储介质,具体过程参考上述步骤203。
步骤206,操作系统读取索引存储介质中存储的索引并写入内存,根据索引进行文件处理。
具体的,当嵌入式设备中只有一个日志式文件系统时,索引存储介质存储单一日志式文件系统的索引,操作系统直接读取索引存储介质中存储的索引。
当嵌入式设备中具有多个日志式文件系统时,索引存储介质在多个区域存储不同日志式文件系统的索引,此时,操作系统需要根据日志式文件系统的标识在索引存储介质中查找对应的存储区域,读取该日志式文件系统对应的索引。
本发明应用场景中配置的索引存储介质可以是独立的存储介质,也可以作为现有日志式文件系统对应的存储介质的一部分存在,此时,日志式文件系统对应的存储介质划分为两部分存储区域,一部分存储区域容量较小,作为上述索引存储介质存在,该部分存储区域具有数据读取速度快、易于操作、而且不容易出现坏块的性能,用于存储各种链表索引信息,运行日志式文件系统的启动代码;另一部分存储区域容量大,用于存储日志式文件系统对应的其他文件或者数据。
采用这种存储介质时,若日志式文件系统挂载到操作系统,则操作系统首先读取存储介质的索引存储区域,根据标识位判断是否需要扫描索引存储介质外的另一部分存储区域。如果判断结果为需要,操作系统扫描另一存储区域获取日志式文件系统的链表索引信息,并在日志式文件系统卸载时将链表索引信息写入索引存储区域存储。如果判断结果为不需要,操作系统直接读取索引存储区域存储的链表索引信息索引并写入内存,不需要扫描另一存储区域。
通过采用本发明提供的方法,配置索引存储介质存储日志式文件系统的链表索引信息,在日志式文件系统挂载到操作系统时,操作系统可以直接从索引存储介质中读取日志式文件系统的链表索引信息,不需要扫描建立该日志式文件系统的存储介质,从而减少日志式文件系统的挂载时间。
本发明提供一种提高挂载日志式文件系统速度的设备,作为嵌入式设备,或者作为一功能模块集成于嵌入式设备内,如图3所示,该设备包括索引存储介质、日志式文件系统的存储介质、配置单元301、扫描单元302、写入单元303、标识设置单元304以及读取单元305,其中
所述配置单元301,与所述索引存储介质连接,用于配置索引存储介质存储日志式文件系统的链表索引信息。具体的,所述配置单元301还可以与读取单元305、写入单元303以及标识设置单元304连接,设定需要写入所述索引存储介质中的链表索引信息内容,配置读取单元305需要读取的链表索引信息内容、或者写入单元303需要写入索引存储介质中的链表索引信息内容,配置单元301还可以配置标识位的具体形式,供标识设置单元304使用该标识位的具体形式标识正常或者异常。
所述扫描单元302,与所述读取单元305以及文件系统存储介质连接,用于当所述日志式文件系统第一次挂载到所述嵌入式设备的操作系统时,扫描建立所述日志式文件系统的存储介质,获取所述日志式文件系统的链表索引信息;后续当所述读取单元305读取的标识位标识链表索引信息写入异常时,重新扫描建立所述日志式文件系统的存储介质,获取所述链表索引信息。
所述写入单元303,与所述配置单元301、标识设置单元304、读取单元305、以及索引存储介质连接,用于当所述日志式文件系统卸载时,将所述日志式文件系统的链表索引信息写入所述索引存储介质。具体的,所述写入单元303可以将所述链表索引信息一次性写入所述索引存储介质,或者根据预先设置分多次将所述链表索引信息写入所述索引存储介质。
所述标识设置单元304,与所述写入单元303和读取单元305连接,用于根据所述写入单元303写入所述链表索引信息正常或者异常设置不同的标识位。具体的,当所述写入单元303写入所述链表索引信息正常时,所述标识设置单元304设置所述标识位标识正常;当所述写入单元303写入所述链表索引信息异常时,所述标识设置单元304设置所述标识位标识异常。当所述读取单元305从所述索引存储介质直接读取所述链表索引信息之后,所述标识设置单元304还用于更新所述标识位为标识异常。
所述读取单元305,与标识设置单元304、索引存储介质、写入单元303以及扫描单元302连接,用于后续所述日志式文件系统向所述操作系统挂载时,读取所述标识设置单元304设置的标识位;若链表索引信息写入正常,从所述索引存储介质直接读取所述链表索引信息;而在写入异常时,通知所述扫描单元302扫描得到链表索引信息。具体的,所述读取单元305根据预先配置的所述链表索引信息在所述索引存储介质中的存储位置,读取所述链表索引信息;或者根据所述日志式文件系统的系统标识查找预先存储的系统标识与存储位置的对应关系,获取所述链表索引信息在所述索引存储介质中的存储位置,读取所述链表索引信息。
通过采用本发明提供的设备,配置索引存储介质存储日志式文件系统的链表索引信息,在日志式文件系统挂载到操作系统时,操作系统可以直接从索引存储介质中读取日志式文件系统的链表索引信息,不需要扫描建立该日志式文件系统的存储介质,从而减少日志式文件系统的挂载时间。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。