CN108829345B - 日志文件的数据处理方法和终端设备 - Google Patents

日志文件的数据处理方法和终端设备 Download PDF

Info

Publication number
CN108829345B
CN108829345B CN201810514690.0A CN201810514690A CN108829345B CN 108829345 B CN108829345 B CN 108829345B CN 201810514690 A CN201810514690 A CN 201810514690A CN 108829345 B CN108829345 B CN 108829345B
Authority
CN
China
Prior art keywords
space
data
file
log
log file
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.)
Active
Application number
CN201810514690.0A
Other languages
English (en)
Other versions
CN108829345A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201810514690.0A priority Critical patent/CN108829345B/zh
Publication of CN108829345A publication Critical patent/CN108829345A/zh
Application granted granted Critical
Publication of CN108829345B publication Critical patent/CN108829345B/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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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
    • G06F3/0643Management of files
    • 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
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools

Abstract

本发明提供了一种日志文件的数据处理方法和终端设备。该方法包括:获取待写入日志文件的第一日志数据,若存储在目标存储器中的日志文件的空闲空间不足,则对日志文件进行空间增长,将第一日志数据写入日志文件并更新目标存储器中存储的日志文件的元数据。其后,只要日志文件的已占用空间小于已占用空间上限值,每获取到第二日志数据时,若空闲空间足够且内核延迟写回周期未到达,则将第二日志数据写入日志文件但不更新日志文件的元数据。内核延迟写回周期到达时,更新日志文件的元数据。采用本发明实施例,可提升文件的数据处理方法的可靠性和适用性,保障目标存储器的使用寿命。

Description

日志文件的数据处理方法和终端设备
技术领域
本发明涉及计算机技术领域,尤其涉及一种日志文件的数据处理方法和终端设备。
背景技术
随着计算机技术的不断发展,各式各样的终端设备如雨后春笋般涌现,例如智能手机、可穿戴设备、平板电脑等。这些终端设备通常使用嵌入式多媒体卡(embeddedmultimedia card,eMMC)或者通用闪存存储(universal flash storage,UFS)作为其内部存储设备。eMMC或UFS的内部由控制器和NAND闪存(NAND flash storage,NAND)组成。由于半导体工艺结构的原因,NAND闪存具有一定的编程擦写次数,其决定了NADA闪存生命周期内的总数据写入量。若对NAND闪存写入的数据达到总数据写入量数,则NAND闪存的寿命耗尽,将不能对其再进行编程或者擦除。因此,如何保障NAND闪存的使用寿命成为存储工程行业越来越关注的问题。
目前,日志文件通常情况下被存储于NAND闪存中,由于系统会频繁对日志文件进行日志数据的写入或读出操作,这就会引起频繁的日志文件的元数据的修改,导致向NAND闪存写入的元数据量大,使得NAND闪存使用寿命短。现有技术中,终端设备可在日志文件有数据写入后,延迟一段时间再更新NAND闪存中存储的日志文件的元数据,以通过减少元数据的修改次数来降低向NAND闪存写入的元数据量。在现有技术中,在延时时段内,若文件系统发生故障,则可能会导致日志数据的丢失,数据处理方法可靠性低、适用性差。
发明内容
本发明实施例提供了一种日志文件的数据处理方法和终端设备,可减少因日志数据写入导致的日志文件的元数据的更新,减少向目标存储器写入的元数据量,提升日志文件的数据处理方法的可靠性和适用性,保障目标存储器的使用寿命。
第一方面,本发明实施例提供了一种日志文件的数据处理方法。这里,上述日志文件的数据写入方式为追加式写入,上述日志文件存储于目标存储器中,上述日志文件的文件空间至少包括用于存储日志数据的数据写入空间。上述日志文件的文件空间为文件系统在目标存储器中为日志文件分配的可用存储空间。该方法包括:获取待写入上述日志文件的第一日志数据。若上述第一日志数据的大小大于上述日志文件的空闲空间的第一大小,则获取上述日志文件的空间增长阈值。这里,上述空闲空间为上述数据写入空间中除已占用空间之外的空间,上述已占用空间为已写入上述日志文件中的日志数据所占用的空间。然后,根据上述空间增长阈值对上述日志文件的文件空间进行空间增长以得到第二大小的上述空闲空间,并根据空间增长后的上述日志文件的文件属性生成上述日志文件的第一元数据。将上述第一日志数据写入到上述空闲空间中,并将上述第一元数据写入到上述目标存储器中。若在写入上述第一日志数据后的已占用空间的第三大小小于已占用空间上限值,则当上述第一日志数据写入到上述空闲空间之后每获取到待写入上述日志文件的第二日志数据时,执行下述操作:
若上述第二日志数据的大小小于或等于上述空闲空间的大小,则将上述第二日志数据写入到上述空闲空间中。直至当内核延迟写回周期到达时,将上述第二日志数据写入上述日志文件之后生成的上述目标文件的第二元数据写入到上述目标存储器中。这里,上述内核延迟写回周期为周期性地写回数据到上述目标存储器的时间间隔。另外,当内核延迟写回周期未到达时,不将上述第二元数据写入到上述目标存储器中。
在本发明实施例中,当日志文件的空闲空间不够存储终端设备获取到的第一日志数据时,可通过空间增长使得日志文件有足够的空闲空间来存储上述第一日志数据以及将第一日志数据写入到日志文件之后终端设备可能获取到的第二日志数据,这样向日志文件写入数据时就不会导致日志文件的元数据的更新,从而减少向目标存储器写入的元数据量,提升了日志文件的数据处理方法可靠性和适用性,保障了目标存储器的使用寿命。
在一些可行的实施方式中,当上述已占用空间的第三大小等于或大于上述已占用空间的上限值,则将上述已占用空间中的数据读出并更新到主数据库文件中,然后将上述日志文件截断为零长度文件。这里,上述日志文件为数据库的日志文件,上述数据库至少包括层次式数据库、网络式数据库或关系式数据库等,此处不作限定。例如,上述数据库可为信息管理系统(information management system,IMS)、数据库任务组(database taskgroup,DBTG)、SQLite数据库、MySQL数据库等。在将已占用空间中的数据读出并更新到主数据库文件之后,通过将日志文件截断为零长度文件而不是删除该日志文件,可避免因删除和创建日志文件导致的日志文件元数据的更新,可减少向目标存储器写入的元数据量,保障目标存储器的使用寿命。
在一些可行的实施方式中,若上述第二日志数据的大小小于上述空闲空间的大小,则再次对上述日志文件的文件空间进行空间增长以得到第四大小的上述空闲空间,并根据再次空间增长后的上述日志文件的文件属性生成上述日志文件的第三元数据。然后再次执行上述日志数据和日志文件的元数据的写入操作,并判断已占用空间大小是否小于已占用空间上限值。
在一些可行的实施方式中,由于,当空间增长阈值过大时,会导致增长后的文件空间的空闲空间过大,出现空间虚占的情况。这样也会导致文件系统会频繁的进行垃圾收集操作,从而影响目标存储器的性能。当上述空间增长阈值过小的时,会使的增长后的文件空间的空闲空间过小,使得文件系统需要频繁的对日志文件进行空间增长,从而无法有效降低日志文件的元数据的更新频率,降低了日志文件的数据处理方法有效性。因此,上述空间增长阈值应在某一合理的空间阈值区间内,以避免上述情况的发生。
在一些可行的实施方式中,可获取日志文件的数据写入频率,然后根据上述数据写入频率确定出上述日志文件的空间增长阈值。根据日志文件的数据写入频率来确定日志文件的空间增长阈值,使得当数据写入频率大的时候,增长的空间就大,而当数据频率写入量小的时候,增长的空间就小。这样就可以使得确定出的空间增长阈值在合理的空间阈值区间内,避免因空间增长过大导致的空间虚占情况,提升存储空间的利用率。也可避免空间增长过小导致的频繁空间增长,提升数据处理方法的有效性。
在一些可行的实施方式中,可获取指定时间间隔内上述日志文件的数据写入次数。然后根据上述指定时间间隔和数据写入次数确定出数据写入频率。通过指定时间间隔和在该指定时间间隔内对日志文件进行的数据写入次数来确定出数据写入频率,可保证获取到的数据写入频率是日志文件当前最新的数据写入频率,保障了数据写入频率的实时性和有效性。
在一些可行的实施方式中,可获取与上述日志文件相关联的数据写入频率区间和空间阈值区间。然后,根据上述数据写入频率和上述数据写入频率区间确定出目标写入频率,这样可使得确定出的目标写入频率处于上述数据写入频率区间内,以保证目标写入频率的合理性和有效性。其后,可确定出上述目标写入频率在上述数据写入频率区间内的目标位置,从上述空间阈值区间中获取到上述目标位置对应的目标空间阈值。最后,根据上述目标空间阈值和上述第一日志数据的大小确定出空间增长阈值。这里,上述空间增长阈值即为上述第一日志数据的大小与上述目标空间阈值之和。通过目标写入频率在上述数据写入频率区间内的目标位置从上述空间阈值区间中获取到目标空间阈值,可使得获取到的目标空间阈值与上述数据写入频率相关联,可使得确定出的空间增长阈值会随着数据写入频率的变化而变化。这样就可以使得确定出的空间增长阈值在合理的空间阈值区间内,避免因空间增长过大导致的空间虚占情况,提升存储空间的利用率。也可避免空间增长过小导致的频繁空间增长,提升数据处理方法的有效性。
在一些可行的实施方式中,可获取上述日志文件的历史空闲空间增长记录。其中,上述历史空闲空间增长记录中包括空闲空间增长次数N和N次空闲空间增长对应的N个历史空间增长阈值。然后,可根据上述N个历史空间增长阈值确定出空间增长阈值。可选的,可将上述N个历史空间增长阈值的均值确定为空间增长阈值。根据N个历史空间增长阈值确定出空间增长阈值,可使得确定出的空间增长阈值符合历史空间增长阈值的变化规律,使得确定出的空间增长阈值合理且有效。同时,该方法过程简单,数据处理量小,可提升日志文件的数据处理方法的效率。
在一些可行的实施方式中,在获取到空间增长阈值后,可为日志文件分配与上述空间增长阈值对应大小的源增长空间,并对上述源增长空间进行映射状态的预处理,以得到处于可写入状态的目标增长空间。然后,将上述第一大小的空闲空间和上述目标增长空间合并为第二大小的空闲空间。通过预处理得到处于写入状态的目标增长空间,可使得由第一大小的空闲空间和上述目标增长空间合并得到的第二大小的空闲空间处于可写入的状态,以使得后续的数据写入操作得以实现。这里,日志文件对应的文件管理系统可为Ext4文件系统。
在一些可行的实施方式中,在获取到空间增长阈值后,可为上述日志文件分配与上述空间增长阈值对应大小的可写入增长空间。然后,将上述第一大小的空闲空间和上述可写入增长空间合并为第二大小的空闲空间。这里,日志文件对应的文件管理系统可为f2fs文件系统。
在一些可行的实施方式中,上述日志文件对应的数据库为基于WAL日志模式的数据库,上述日志文件为WAL文件,上述第一日志数据以及上述第二日志数据都为WAL帧数据。
在一些可行的实施方式中,上述目标存储器为NAND闪存。
在一些可行的实施方式中,上述日志文件的元数据为用以描述上述日志文件的文件属性的系统数据。上述日志文件的元数据可包括日志文件的文件节点信息和文件系统全局范围内的元数据。上述文件节点信息主要包括文件空间大小、最近一次文件节点修改时间ctime、文件内容最近一次修改时间mtime以及最近一次文件打开时间atime等参量。上述文件系统全局范围内的元数据主要包括块分配位图、块使用标志等,此处不作限定。
第二方面,本发明实施例提供了一种日志文件的数据处理终端设备。该终端设备包括用于执行上述第一方面的任意一种可能的实现方式所提供的日志文件的数据处理方法的单元,因此也能是实现第一方面提供的日志文件的数据处理方法所具备的有益效果(或者优点)。
第三方面,本申请实施例提供了一种计算机设备,该计算机设备可以为终端设备或其他类型的计算机设备。该计算机设备包括存储器和处理器,还可以包括输入/输出设备和通信接口等。其中,该存储器用于存储一组程序代码,上述处理器用于调用存储器中存储的程序代码执行上述一方面中任意一种可能的实现方式所提供的日志文件的数据处理方法,因此也能实现第一方面提供的日志文件的数据处理方法所具备的有益效果。
第四方面,本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机执行上述第一方面中任意一种可能的实现方式所提供的日志文件的数据处理方法,也能实现第一方面提供的日志文件的数据处理方法所具备的有益效果。
第五方面,本申请实施例提供了一种芯片,该芯片中包括与终端设备的收发器耦合,用于执行本申请实施例第一方面提供的技术方案。
第六方面,本申请实施例提供了一种芯片系统,该芯片系统包括处理器,用于支持终端设备实现上述第一方面中所涉及的功能,例如,生成或者处理上述第一方面提供的日志文件的数据处理方法中所涉及的信息。在一种可能的设计中,上述芯片系统还包括存储器,该存储器用于保存终端必需的程序指令和数据。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
第七方面,本申请实施例提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述第一方面提供的日志文件的数据处理方法,也能实现第一方面提供的日志文件的数据处理方法所具备的有益效果。
采用本发明实施例,可提升日志文件的数据处理方法可靠性和适用性,保障目标存储器的使用寿命。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1是本发明实施例提供的日志文件的数据处理方法的流程示意图;
图2是本发明实施例提供的一种WAL文件的结构示意图;
图3是本发明实施例提供的目标空间阈值获取示意图;
图4是本发明实施例提供的一种日志文件的数据处理终端设备的一结构示意图;
图5是本发明实施例提供的一种日志文件的数据处理终端设备的另一结构示意图;
图6是本发明实施例提供的一种通信设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明实施例所提供的日志文件的数据处理方法可由智能手机、膝上型计算机、平板计算机、可穿戴设备等具备数据处理能力的终端设备实现,此处不作限定。本发明实施例所描述的日志文件可以是基于预写式日志(write-ahead logging,WAL)模式的数据库的日志文件,也可以是某些仿照WAL模式文件处理机制的文件系统中的日志文件,此处不做限定。在本发明实施例中,“若”所涉及的分支都是本发明实施例中需要执行的,即本发明实施例的方案是必须都要包括这些步骤的。本发明实施例以终端设备为执行主体对本发明提供的文件的数据处理方法进行描述。
实施例一
请参见图1,图1是本发明实施例提供的日志文件的数据处理方法的流程示意图。本发明实施例提供的日志文件的数据处理方法可包括步骤:
S101,获取待写入日志文件的第一日志数据。
在一些可行的实施方式中,终端设备可通过文件系统创建出日志文件,并确定上述日志文件的数据写入方式为追加式写入。例如,当终端设备第一次连接到某一数据库时,可通过文件系统为该数据库创建一个日志文件,并确定该日志文件的数据写入方式为追加式写入。其中,上述日志文件存储于目标存储器中。上述目标存储器可为NAND闪存,此处不作限定。该日志文件的文件空间至少包括用于存储日志数据的数据写入空间。可选的,该日志文件的文件空间还可包括用于存储文件头的文件头空间。如WAL文件的文件空间即包括用于存储WAL帧数据的数据写入空间和WAL文件头的文件头空间。上述日志文件的文件空间指代文件系统在目标存储器中为日志文件分配的可用存储空间。终端设备在创建日志文件后可禁止文件系统记录最近一次打开该日志文件的时间,即禁止更新日志文件的文件节点信息中包括的atime参量。上述文件节点信息主要包括文件空间大小、最近一次文件节点修改时间ctime、文件内容最近一次修改时间mtime以及最近一次文件打开时间atime等参量。终端设备在检测到用于向日志文件写入数据的数据写入指令后,可根据该数据写入指令从指定的存储空间中获取到上述第一日志数据,也可通过该数据写入指令触发数据生成指令生成上述第一日志数据。可选的,终端设备可将上述第一日志数据存储于内存之中。上述第一日志数据和下文上述的第二日志数据用于指代终端设备在不同时刻获取到的待写入日志文件的日志数据,使用第一和第二仅是为了区别不同日志数据,并不具备其他限定功能。上述内存指代是终端设备内部的存储器,用来暂时存放核心处理器中的运算数据。
可选的,当上述日志文件为基于WAL日志模式的数据库的日志文件时,终端设备在第一次连接数据库时,可创建一个WAL文件作为数据库的日志文件。其中,一个数据库的主数据库文件对应一个WAL文件。可选的,上述数据库至少包括层次式数据库、网络式数据库或关系式数据库等,此处不作限定。例如,上述数据库可为信息管理系统(informationmanagement system,IMS)、数据库任务组(database task group,DBTG)、SQLite数据库、MySQL数据库等。请一并参见图2,图2是本发明实施例提供的一种WAL文件的结构示意。由图2可知,WAL文件中包含了一个32字节的WAL文件头和若干个WAL帧。其中,每个WAL帧又包含了一个24字节的帧头部和一个4096字节的数据库页。上述数据库页也可为1024字节或2048字节,可根据实际应用场景进行设定,此处不作限定。在本实施例中,在WAL模式下,每次终端设备都会将要写入的WAL帧数据写入到WAL文件的已占用空间的结尾处,即追加式写入。另外,终端设备还可禁止文件系统记录WAL文件的最近一次打开时间。例如,终端设备可通过挂载noatime选项来禁止记录和更新WAL文件的最近一次打开时间(即atime参量)。然后,当数据库中的数据被修改或其他一些针对数据库的操作导致数据库的日志系统产生新的日志数据后,终端设备可根据上述日志数据生成WAL帧格式的WAL帧数据(为了方便区别不同时刻终端设备获取到的WAL帧数据,下文以第一WAL帧数据代替描述)并存放在内存中。具体实现中,终端设备可在上述日志数据中的每个数据库页前加上一个帧头部,以生成包含多个WAL帧的WAL帧数据。该帧头部中至少包括盐值、哈希值等数据,以保证生成的WAL帧数据的完整性和有效性。其中,上述第一WAL帧数据中可包括一个或多个WAL帧,此处不作限定。
S102,若上述第一日志数据的大小大于上述日志文件的空闲空间的第一大小,则获取上述日志文件的空间增长阈值。
在一些可行的实施方式中,终端设备在获取到上述第一日志数据后,可判断第一日志数据的大小是否大于日志文件的空闲空间的第一大小。若终端设备确定出第一日志数据的大小大于上述日志文件的空闲空间的第一大小,则获取上述日志文件的空间增长阈值。其中,上述空闲空间为数据写入空间中除已占用空间之外的空间,上述已占用空间为已写入日志文件中的日志数据所占用的空间。这里,终端设备获取到的空间增长阈值应在某一合理的空间阈值区间内。当空间增长阈值过大时,会导致增长后的文件空间的空闲空间过大,出现空间虚占的情况。这样也会导致文件系统会频繁的进行垃圾收集操作,从而影响目标存储器的性能。当上述空间增长阈值过小的时,会使的增长后的文件空间的空闲空间过小,使得文件系统需要频繁的对日志文件进行空间增长,从而无法有效降低日志文件的元数据的更新频率,降低了日志文件的数据处理方法有效性。因此,上述空间增长阈值应处于一个合理的空间阈值区间内,以避免上述情况的发生。
在一些可行的实施方式中,终端设备可通过如下实现方式一至实现方式四中的一种或者多种获取得到上述日志文件的空间增长阈值。
实现方式一:
终端设备可从指定的阈值存储空间中获取预设的经验阈值并确定为日志文件的空间增长阈值。上述预设的经验阈值可由对本发明实施例提供的日志文件的数据处理方法进行多次试验得到。直接获取预设的经验阈值作为日志文件的空间增长阈值,可减少文件的数据处理方法的数据处理量,提升该方法的效率。
实现方式二:
终端设备可先获取上述日志文件的数据写入频率。具体实现中,假设终端设备确定出上述第一日志数据的大小大于上述日志文件的空闲空间的第一大小的时刻为t1。终端设备可获取t1时刻之前指定时间间隔(设为T1)内上述日志文件的数据写入次数(设为i),然后根据上述指定时间间隔T1和上述数据写入次数i确定出数据写入频率。例如,将数值i/T1确定为日志文件的数据写入频率。可选的,终端设备也可从指定的写入频率存储空间中直接获取日志文件的数据写入频率。这里,终端设备会在更新周期T2到来时,根据T2时间段内日志文件的数据写入次数确定出数据写入频率更新值,并根据上述数据写入频率更新值来更新写入频率存储空间中存储的日志文件的数据写入频率。终端设备在t1时刻根据上述指定时间间隔T1和上述数据写入次数i确定出数据写入频率或者周期性的更新日志文件的数据写入频率,可确保数据写入频率的实时性和有效性。
终端设备在获取到数据写入频率后,可获取预设的日志文件的数据写入频率区间和空间阈值区间。其中,上述数据写入频率区间和空间阈值区间均为整数区间。然后,终端设备可根据上述数据写入频率和上述数据写入频率区间确定出目标写入频率。具体实现中,若终端设备确定出上述数据写入频率小于上述数据写入频率区间的下限值,则将数据写入频率区间的下限值确定为目标写入频率。若终端设备确定出上述数据写入频率大于上述数据写入频率区间的上限值,则将上述数据写入频率区间的上限值确定为目标写入频率。若终端设备确定出上述数据写入频率在上述预设的数据写入频率区间内,则对上述数据写入频率进行取整,并将取整后的数据写入频率确定为目标写入频率。其后,终端设备可确定出上述目标数据写入频率在上述数据写入频率区间内的目标位置,从上述空间阈值区间中获取到上述目标位置对应的目标空间阈值。最后,终端设备可将上述目标空间阈值与上述第一日志数据的大小之和确定为空间增长阈值。例如,请一并参见图3,图3是本发明实施例提供的一种目标空间阈值获取示意图。假设上述数据写入频率区间为[f1,f2],上述空间阈值区间为[s1,s2],上述目标写入频率为f0。终端设备可根据公式D=(f0-f1)/(f2-f1)计算出目标写入频率在上述数据写入频率区间内的目标位置。然后,终端设备可获取空间阈值区间内目标位置处的空间阈值,如通过公式△=D*s2+s1计算出空间阈值△1。再对空间阈值△1进行取整以得到目标空间阈值△2。最后,终端设备可将目标空间阈值△2与上述第一日志数据大小之和确定为空间增长阈值。
在本发明实施例中,通过目标写入频率在上述数据写入频率区间内的目标位置从上述空间阈值区间中获取到目标空间阈值,可使得获取到的目标空间阈值与上述数据写入频率相关联。根据第一日志数据的大小和目标空间阈值去确定出空间增长阈值,可使得获取到的空间增长阈值随着数据写入频率的变化而变化。这样就可以使得确定出的空间增长阈值在合理的空间阈值区间内,避免因空间增长过大导致的空间虚占情况,提升存储空间的利用率。也可避免空间增长过小导致的频繁空间增长,提升数据处理方法的有效性。
可选的,当日志文件为WAL文件时,若终端设备确定出上述第一WAL帧数据的大小大于上述WAL文件的空闲空间的第一大小,则终端设备可从数据结构“WAL文件写入频率列表L”中搜索到WAL文件对应的walfrqrec结构体,并读取出该结构体中的freq字段,该字段对应的数据即为WAL文件的数据写入频率。其中,终端设备会周期性更新walfrqrec结构体中的freq字段,以保证WAL文件的数据写入频率的实时性和有效性。终端设备获取到WAL文件的数据写入频率后,可获取预设的数据写入频率区间和空间阈值区间,再根据上述数据写入频率和上述数据写入频率区间确定出目标写入频率。然后,终端设备可根据WAL文件的目标写入频率确定出目标空间阈值,最后将第一WAL帧数据的大小与目标空间阈值之和确定为空间增长阈值。
实现方式三:
终端设备可获取上述日志文件的历史空闲空间增长记录。其中,上述历史空闲空间增长记录中包括空闲空间增长次数N和N次空闲空间增长对应的N个历史空间增长阈值。这里,终端设备每次对日志文件进行空间增长后,都可记录空闲空间增长次数和每次空闲空间增长获取的空间增长阈值,以得到日志文件的历史空间增长记录。例如,假设终端设备已经对日志文件完成了100次空闲空间增长,并记录100次空闲空间增长对应的100个历史空间增长阈值。终端设备在确定上述第一日志数据的大小大于上述日志文件的空闲空间的第一大小后可获取上述第1次至第100次空闲空间增长对应的100个历史空间增长阈值。也可获取第91次至第100次空闲空间增长对应的10个历史空间增长阈值。终端设备获取到的历史空间增长阈值的个数可根据实际应用场景的需求来设定,此处不作限定。终端设备获取到N个历史空间增长阈值后,可根据上述N个历史空间增长阈值确定出空间增长阈值。例如,终端设备可将上述N个历史空间增长阈值的平均值确定为空间增长阈值。通过日志文件的历史空闲空间增长记录来确定空间增长阈值,方法简单,数据处理量小,可提升日志文件的数据处理方法的效率。
实现方式四:
终端设备可获取日志文件的数据写入频率和/或N次空闲空间增长对应的N个历史空间增长阈值,具体获取的过程可参见前文描述的日志文件的数据写入频率或N次空闲空间增长对应的N个历史空间增长阈值的获取过程,此处便不再赘述。然后,终端设备可通过描述统计、回归分析、聚类分析等数据分析处理方法对日志文件的数据写入频率和/或N次空闲空间增长对应的N个历史空间增长阈值进行分析处理,以根据数据写入频率和/或N次空闲空间增长对应的N个历史空间增长阈值的变换规律确定出空间增长阈值。通过描述统计、回归分析、聚类分析等数据分析处理方法确定空间增长阈值,可提升空间增长阈值的合理性和有效性,提升日志文件的数据处理方法的可靠性。
在一些可行的实施方式中,当终端设备确定出的空间增长阈值无法与系统页面对齐时,例如,终端设备设定的系统页面大小为4KB,而终端设备确定出的空间增长阈值为8724B=8KB+532B,则根据空间增长阈值增长出的空间就无法与系统页面对齐。此时,终端设备可对空间增长阈值进行扩大,例如,将空间增长阈值由8724B扩大至12288B=12K,这样就可以保证根据扩大后的空间增长阈值增长出的空闲空间与系统页面对齐。其中,上述系统页面大小可根据具体实施场景设定,此处不作限定。
S103,根据上述空间增长阈值对上述日志文件的文件空间进行空间增长以得到第二大小的空闲空间,并根据空间增长后的上述日志文件的文件属性生成上述日志文件的第一元数据。
在一些可行的实施方式中,终端设备在获取到上述空间增长阈值后,可根据上述空间增长阈值对日志文件的空闲空间进行空间增长,以得到第二大小的空闲空间。可选的,终端设备可为日志文件分配与空间增长阈值对应大小的源增长空间。然后,终端设备可对上述源增长空间进行映射状态的预处理,以得到处于可写入数据状态的目标增长空间。最后,终端设备可将上述第一大小的空闲空间和上述目标增长空间合并为第二大小的空闲空间。此时,日志文件对应的文件管理系统可为Ext4文件系统。例如,终端设备在获取到上述空间增长阈值后,可为fallocate系统调用的第二个参数增加标志字,通过该标志字指示为WAL文件分配一个空间增长阈值对应大小的源增长空间。其中,该标志字宏定义如下:#define USE_FALLOCATE64_TRIM 0x88。该标志字指示上述源增长空间带有已初始化标志。然后,终端设备对上述源增长空间进行丢弃操作,控制嵌入式多媒体卡(embedded multimedia card,eMMC)控制器或通用闪存存储(universal flash storage,UFS)控制器解除源增长空间中逻辑地址块上的映射,以得到目标增长空间。最后将上述目标增长空间和上述第一大小的空闲空间进行合并,即可得到第二大小的空闲空间。
在一些可行的实施方式中,终端设备可为日志文件分配与上述空间增长阈值对应大小的可写入增长空间,然后将上述第一大小的空闲空间和上述可写入增长空间合并成第四大小的空闲空间。其中,,上述可写入增长空间在分配后即已处于可写入的状态,无需进行映射状态的预处理操作。此时,上述日志文件对应的文件系统可为f2fs文件系统。例如,终端设备在获取到上述空间增长阈值后,可通过fallocate系统调用的扩展标志字指示为日志文件分配一个空间增长阈值对应大小的可写入增长空间。其中,在f2fS文件系统中上述可写入增长空间中的逻辑地址块是干净的,处于可写入状态。然后,终端设备可将上述可写入增长空间和第一大小的空闲空间进行合并,以得到第二大小的空闲空间。
终端设备根据上述空间增长阈值对日志文件进行空间增长得到的第二大小的空闲空间不仅能够存储上述第一日志数据,还可保证有足够的空间来存储在第一日志数据后终端设备可能获取到的待写入的日志数据,可以避免出现终端设备每次获取到日志数据后都需要对日志文件进行空间增长而导致频繁的更新目标存储器中的日志文件的元数据,可减少向目标存储器写入的元数据量,保障目标存储器的使用寿命。
在一些可行的实施方式中,终端设备在对日志文件进行空间增长后,可根据空间增长后的上述日志文件的文件属性生成上述日志文件的第一元数据。可选的,终端设备可将上述第一元数据存储在内存中。其中,日志文件的元数据是文件系统中用来描述日志文件的文件属性的系统数据。日志文件的元数据主要包括日志文件的文件节点信息和其他文件系统全局范围内的元数据。上述文件系统全局范围内的元数据主要包括块分配位图、块使用标志等参量,此处不作限定。
S104,将上述第一日志数据写入到上述空闲空间中,以及将上述第一元数据写入到目标存储器。
在一些可行的实施方式中,终端设备在获取到上述第一日志数据和第一元数据后,可将上述第一日志数据追加式写入到日志文件的第二大小的空闲空间中,并确定出上述已占用空间的第二大小。同时,终端设备可将日志文件的第一元数据写入到目标存储器内的元数据存储空间中,直接覆盖或对应修改元数据存储空间中存储的日志文件的元数据,以达到更新日志文件的元数据的目的。
可选的,当日志文件为WAL文件时,终端设备在对WAL文件的空闲空间进行空间增长以得到第二大小的空闲空间后,可根据空间增长后的WAL文件的属性生成WAL文件的第一元数据,并存储在内存中的页面缓冲区。例如,由于空间增长导致WAL文件的文件节点信息和块分配信息改变,文件系统即可根据这些信息变化生成WAL文件的第一元数据。其后,终端设备可调用系统调用fdatasync将上述第一WAL数据帧和WAL文件的第一元数据从上述内存中写入到目标存储器中,并确定出上述已占用空间的第三大小。
S105,若在写入上述第一日志数据后的上述已占用空间的第三大小小于已占用空间上限值,则判断是否获取到待写入上述日志文件的第二日志数据。
在一些可行的实施方式中,当终端设备确定出上述已占用空间的第三大小小于已占用空间上限值时,可继续判断是否获取到待写入上述日志文件的第二日志数据。若终端设备获取到上述第二日志数据,则执行步骤S106。若终端设备未获取到上述第二日志数据,则重复执行步骤S105。
可选的,当上述日志文件为数据库的日志文件时,若在写入上述第一日志数据后的上述已占用空间的第三大小等于或大于已占用空间上限值,则终端设备可将上述已占用空间中存储的日志数据读出并更新到主数据库文件中。再调用系统调用将日志文件截断为零长度日志文件。其中,零长度的日志文件即为不含有任何数据的日志文件,但文件系统中仍然保留其关联的元数据。将日志文件截断为零长度的日志文件而非删除日志文件,可避免创建或删除WAL文件造成的系统范围内的元数据的修改,可减少向目标存储器的元数据写入量,保障目标存储器的寿命。
可选的,当日志文件为WAL文件时,若WAL文件的已占用空间的大小等于或大于已占用空间上限值,则终端设备可将WAL文件的已占用空间中存储的WAL帧数据读出,并将上述WAL帧数据更新到目标数据库的主库文件的对应数据库页位置。然后,终端设备可调用系统接口truncate函数将WAL文件截断为零长度的WAL文件。另外,当终端设备获取到新的WAL帧数据后,可为上述零长度的WAL文件写入新的盐值,以得到新的WAL文件。此外,当目标数据最后连接关闭或系统故障时,终端设备也可在将WAL帧数据更新到目标数据库的主库文件的对应数据库页位置或利用WAL文件前滚到目标数据库的主库文件后,将WAL文件截断为零长度文件。
S106,若上述第二日志数据的大小小于或等于上述空闲空间的大小,则将上述第二日志数据写入到空闲空间中。
在一些可行的实施方式中,若终端设备确定出在写入上述第一日志数据后的上述已占用空间的第三大小小于已占用空间上限值,则终端设备每获取到上述第二日志数据时,可判断上述第二日志数据的大小是否小于上述空闲空间的大小。其中,上述第二日志数据指代是将第一日志数据写入到日志文件后,终端设备在任意时刻获取到的日志数据。这里所描述的空闲空间的大小指代的是将第一日志写入到日志文件后上述空闲空间的大小。若终端设备确定出上述第二日志数据的大小小于或等于上述空闲空间的大小,则可将上述第二日志数据写入到上述空闲空间中。此时,日志文件的空闲空间足够大,终端设备已禁止更新日志文件的最近一次访问时间(即atime),所以将第二日志数据写入到空闲空间中并不会引起文件节点信息中除mtime参量以外的其他参量的改变,也不会导致文件系统全局范围内的元数据改变,终端设备仅生成日志文件的第二元数据,但不需要对目标存储器中存储的日志文件的元数据进行更新。因此,可以减少向目标存储器写入的元数据量,可提升目标存储器的使用寿命。同时,需要说明的是,由于将第二日志数据写到上述日志文件后并不会引起文件空间的大小的改变,也就是说日志文件的元数据中文件空间大小这个参量不需要更新,因此即使出现系统断电等故障,也不会导致第二日志数据的丢失。
在一些可行的实施方式中,若上述第二日志数据的大小大于上述空闲空间的大小,则终端设备需要再次获取空间增长阈值,并再次对日志文件的文件空间进行空间增长以得到第四大小的空闲空间。然后,根据再次空间增长后的日志文件的文件属性生成日志文件的第三元数,并将第二日志数据和第三元数据写入到上述目标存储器中。然后再次执行上述日志数据和日志文件的元数据的写入操作,并判断已占用空间大小是否小于已占用空间上限值。具体操作可参见上述步骤S102到步骤S105中所描述的过程,此处便不再赘述。
S107,当内核延迟写回周期到达时,将上述第二日志数据写入日志文件之后生成的目标文件的第二元数据写入到目标存储器中。当内核延迟写回周期未到达时,不将上述第二元数据写入到目标存储器中。
在一些可行的实施方式中,终端设备可周期性判断内核延迟写回周期是否到达。其中,上述内核延迟写回周期为系统内核周期性将终端设备生成的元数据写回到目标存储器的时间间隔。例如,在ext4文件系统中,系统内核每隔5s就会将存储在缓冲区中日志文件的元数据写入到目标存储器内的元数据存储空间中。若终端设备检测到内核延迟写回周期到达,则将上述第二日志数据写入日志文件之后生成的日志文件的第二元数据写入到目标存储器中,以更新目标存储器中存储的日志文件的元数据。若内核延迟写回周期未到达,则在将上述第二日志数据写入到日志文件后仅生成第二元数据,但不会将上述第二元数据写入到目标存储器中。其中,上文中使用第一元数据和第二元数据进行描述仅用于区别不同的元数据,不具备其他限定功能。
可选的,当日志文件为WAL文件时,终端设备将上述第一WAL帧数据写入到WAL文件后,若终端设备确定出WAL文件的空闲空间足够时,则在预设的内核延迟写回周期到达之前,终端设备可将获取到的任意WAL帧数据写入到WAL文件中,但不会更新WAL文件的元数据。直到内核延迟写回周期到达时,终端设备可将当前时刻缓存在缓冲区的WAL文件的元数据写入到目标存储器中,以更新目标存储器中存储的WAL文件的元数据。
在本发明实施例中,只要日志文件的空闲空间足够,并且内核延迟写回周期未到达,终端设备即可将其获取到的日志数据写入到日志文件中,并且不会对存储在目标存储器中的日志文件的元数据进行更新,可减少向目标存储器写入的元数据量,保障目标存储器的寿命。
实施例二
请参见图4,图4是本发明实施例提供的一种日志文件的数据处理终端设备的一结构示意图。上述日志文件的数据写入方式为追加式写入,上述日志文件存储于目标存储器中,上述日志文件的文件空间至少包括用于存储日志数据的数据写入空间,上述终端设备包括:
数据获取单元10,用于获取待写入上述日志文件的第一日志数据。
空间增长单元20,用于若上述数据获取单元10获取的上述第一日志数据的大小大于上述日志文件的空闲空间的第一大小,则获取上述日志文件的空间增长阈值。其中,上述空闲空间为上述数据写入空间中除已占用空间之外的空间,上述已占用空间为已写入上述日志文件中的日志数据所占用的空间。
上述空间增长单元20,还用于根据上述空间增长阈值对上述日志文件的文件空间进行空间增长以得到第二大小的上述空闲空间,并根据空间增长后的上述日志文件的文件属性生成上述日志文件的第一元数据。
数据读写单元30,用于将上述数据获取单元10获取的上述第一日志数据写入到上述空闲空间中,以及将上述空间增长单元20生成的上述第一元数据写入到上述目标存储器。
上述数据读写单元30,还用于若在写入上述第一日志数据后的上述已占用空间的第三大小小于已占用空间上限值,则当上述第一日志数据写入到上述空闲空间之后上述数据获取单元10每获取到待写入上述日志文件的第二日志数据时,执行以下操作:
若上述第二日志数据的大小小于或等于上述空闲空间的大小,则将上述第二日志数据写入到上述空闲空间中。
当内核延迟写回周期到达时,将上述第二日志数据写入上述日志文件之后上述空间增长单元20生成的上述目标文件的第二元数据写入到上述目标存储器中。其中,上述内核延迟写回周期为周期性地写回数据到上述目标存储器的时间间隔。
当内核延迟写回周期未到达时,不将上述第二元数据写入到上述目标存储器中。
在一些可行的实施方式中,请并参见图5,图5是本发明实施例提供的一种日志文件的数据处理终端设备的另一结构示意图。上述终端设备还包括:
文件截断单元40,用于若上述已占用空间的第三大小等于或大于上述已占用空间上限值,则在上述数据读写单元30将上述已占用空间中的数据读出并更新到主数据库文件中之后,将上述日志文件截断为零长度文件。
在一些可行的实施方式中,上述空间增长单元20还用于:
若上述数据获取单元10获取的第二日志数据的大小大于上述空闲空间的大小,则再次对上述日志文件的文件空间进行空间增长以得到第四大小的上述空闲空间,并根据空间增长后的上述日志文件的文件属性生成上述日志文件的第三元数据。
在一些可行的实施方式中,上述空间增长单元20还用于:
获取上述日志文件的数据写入频率。根据上述数据写入频率确定出上述日志文件的空间增长阈值。
在一些可行的实施方式中,上述空间增长单元20还用于:
获取指定时间间隔内上述数据读写单元对上述日志文件执行的数据写入次数,并根据上述指定时间间隔和上述数据写入次数确定出数据写入频率。
在一些可行的实施方式中,上述空间增长单元20还用于:
获取上述日志文件的数据写入频率区间和空间阈值区间。根据上述数据写入频率和上述数据写入频率区间确定出目标写入频率。确定出上述目标写入频率在上述数据写入频率区间内的目标位置,并从上述空间阈值区间中获取上述目标位置对应的目标空间阈值。根据上述目标空间阈值和上述第一日志数据的大小确定出空间增长阈值。
在一些可行的实施方式中,上述空间增长单元20还用于:
获取上述日志文件的历史空闲空间增长记录。其中,上述历史空闲空间增长记录中包括空闲空间增长次数N和N次空闲空间增长对应的N个历史空间增长阈值。根据上述N个历史空间增长阈值确定出空间增长阈值。
在一些可行的实施方式中,上述空间增长单元20还用于:
为上述日志文件分配与上述空间增长阈值对应大小的源增长空间,并对上述源增长空间进行预处理,以得到处于可写入状态的目标增长空间。将上述第一大小的空闲空间和上述目标分配空间合并为第四大小的空闲空间。这里,上述日志文件对应的文件管理系统可为Ext4文件系统。
在一些可行的实施方式中,上述空间增长单元20还用于:
为上述日志文件分配与上述空间增长阈值对应大小的可写入增长空间。将上述第一大小的空闲空间和上述可写入增长空间合并为第四大小的空闲空间。这里,上述日志文件对应的文件管理系统可为f2fs文件系统。
在一些可行的实施方式中,上述日志文件对应的数据库为基于WAL日志模式的数据库,上述日志文件为WAL文件,上述第一日志数据以及上述第二日志数据都为WAL帧数据。
在一些可行的实施方式中,上述目标存储器为NAND闪存。
在一些可行的实施方式中,数据获取单元10可通过文件系统创建出日志文件,并确定上述日志文件的数据写入方式为追加式写入。其中,上述日志文件存储于目标存储器中。该日志文件的文件空间至少包括用于存储日志数据的数据写入空间。可选的,该日志文件的文件空间还可包括用于存储文件头的文件头空间。数据获取单元10在创建日志文件后可禁止文件系统记录最近一次打开该日志文件的时间,即禁止更新日志文件的文件节点信息中包括的atime参量。上述文件节点信息主要包括文件空间大小、最近一次文件节点修改时间ctime、文件内容最近一次修改时间mtime以及最近一次文件打开时间atime等参量。数据获取单元10在检测到用于向日志文件写入数据的数据写入指令后,可根据该数据写入指令从指定的存储空间中获取到上述第一日志数据,也可通过该数据写入指令触发数据生成指令生成上述第一日志数据。可选的,数据获取单元10可将上述第一日志数据存储于内存之中。上述第一日志数据和下文上述的第二日志数据用于指代终端设备在不同时刻获取到的待写入日志文件的日志数据,使用第一和第二仅是为了区别不同日志数据,并不具备其他限定功能。上述内存指代是终端设备内部的存储器,用来暂时存放核心处理器中的运算数据。
在获取单元10获取到上述第一日志数据后,空间增长单元20可判断上述第一日志数据的大小是否大于日志文件的空闲空间的第一大小。若终端设备确定出第一日志数据的大小大于上述日志文件的空闲空间的第一大小,则可获取上述日志文件的空间增长阈值。其中,上述空闲空间为数据写入空间中除已占用空间之外的空间,上述已占用空间为已写入日志文件中的日志数据所占用的空间。这里,终端设备获取到的空间增长阈值应在某一合理的空间阈值区间内。当空间增长阈值过大时,会导致增长后的文件空间的空闲空间过大,出现空间虚占的情况。这样也会导致文件系统会频繁的进行垃圾收集操作,从而影响目标存储器的性能。当上述空间增长阈值过小的时,会使的增长后的文件空间的空闲空间过小,使得文件系统需要频繁的对日志文件进行空间增长,从而无法有效降低日志文件的元数据的更新频率,降低了日志文件的数据处理方法有效性。因此,上述空间增长阈值应处于一个合理的空间阈值区间内,以避免上述情况的发生。具体实现中,空间增长单元20获取日志文件的空间增长阈值的过程可参见上述步骤S102中所描述的空间增长阈值的获取过程,此处便不再赘述。
当空间增长单元20确定出日志文件的空间增长阈值后,可根据上述空间增长阈值对日志文件的空闲空间进行空间增长,以得到第二大小的空闲空间。可选的,空间增长单元20可为日志文件分配与空间增长阈值对应大小的源增长空间。然后,对上述源增长空间进行映射状态的预处理,以得到处于可写入数据状态的目标增长空间。最后,空间增长单元20可将上述第一大小的空闲空间和上述目标增长空间合并为第二大小的空闲空间。此时,日志文件对应的文件管理系统可为Ext4文件系统。可选的,空间增长单元20可为日志文件分配与上述空间增长阈值对应大小的可写入增长空间,然后将上述第一大小的空闲空间和上述可写入增长空间合并成第四大小的空闲空间。其中,,上述可写入增长空间在分配后即已处于可写入的状态,无需进行映射状态的预处理操作。此时,上述日志文件对应的文件系统可为f2fs文件系统。
空间增长单元20根据上述空间增长阈值对日志文件进行空间增长得到的第二大小的空闲空间不仅能够存储上述第一日志数据,还可保证有足够的空间来存储在第一日志数据后数据获取单元10可能获取到的待写入的日志数据,可以避免出现数据获取单元10每次获取到日志数据后空间增长单元20都需要对日志文件进行空间增长而导致频繁的更新目标存储器中的日志文件的元数据,可减少向目标存储器写入的元数据量,保障目标存储器的使用寿命。
空间增长单元20在对日志文件进行空间增长后,可根据空间增长后的上述日志文件的文件属性生成上述日志文件的第一元数据。可选的,空间增长单元20可将上述第一元数据存储在内存中。其中,日志文件的元数据是文件系统中用来描述日志文件的文件属性的系统数据。日志文件的元数据主要包括日志文件的文件节点信息和其他文件系统全局范围内的元数据。上述文件系统全局范围内的元数据主要包括块分配位图、块使用标志等参量,此处不作限定。然后数据读写单元再次执行上述日志数据和日志文件的元数据的写入操作,并判断已占用空间大小是否小于已占用空间上限值。
空间增长单元20在获取到上述第一日志数据和第一元数据后,数据写入单元30可将上述第一日志数据追加式写入到日志文件的第二大小的空闲空间中,并确定出上述已占用空间的第二大小。同时,数据写入单元30可将日志文件的第一元数据写入到目标存储器内的元数据存储空间中,直接覆盖或对应修改元数据存储空间中存储的日志文件的元数据,以达到更新日志文件的元数据的目的。
当数据读写单元30确定出上述已占用空间的第三大小等于或单元已占用空间上限值时,则数据读写单元30可将上述已占用空间中存储的日志数据读出并更新到主数据库文件中。文件截取单元40调用系统调用将日志文件截断为零长度日志文件。
当数据读写单元30确定出上述已占用空间的第三大小小于已占用空间上限值时,可继续判断数据获取单元10是否获取到待写入上述日志文件的第二日志数据。若数据获取单元10获取到上述第二日志数据,空间增长单元20可判断上述第二日志数据的大小是否小于上述空闲空间的大小。其中,上述第二日志数据指代是将第一日志数据写入到日志文件后,数据获取单元10在任意时刻获取到的日志数据。若空间增长单元20确定出上述第二日志数据的大小小于或等于上述空闲空间的大小,则数据读写单元30可将上述第二日志数据写入到上述空闲空间中。此时,日志文件的空闲空间足够大,且已禁止更新日志文件的最近一次访问时间(即atime),所以数据读写单元30将第二日志数据写入到空闲空间中并不会引起文件节点信息中除mtime参量以外的其他参量的改变,也不会导致文件系统全局范围内的元数据改变,因此,可以减少向目标存储器写入的元数据量,可提升目标存储器的使用寿命。若空间增长单元20确定出上述第二日志数据的大小大于上述空闲空间的大小,则空间增长单元20再次对上述日志文件的文件空间进行空间增长以得到第四大小的上述空闲空间,并根据再次空间增长后的上述日志文件的文件属性生成上述日志文件的第三元数据。
数据读写单元30可周期性判断内核延迟写回周期是否到达。其中,上述内核延迟写回周期为系统内核周期性将空间增长单元20生成的元数据写回到目标存储器的时间间隔。若数据读写单元30检测到内核延迟写回周期到达,则将上述第二日志数据写入日志文件之后生成的日志文件的第二元数据写入到目标存储器中,以更新目标存储器中存储的日志文件的元数据。若内核延迟写回周期未到达,则在将上述第二日志数据写入到日志文件后仅触发空间增长单元20生成第二元数据,但不会将上述第二元数据写入到目标存储器中。
在本发明实施例中,只要日志文件的空闲空间足够,写入单元30即可将获取单元10获取的到日志数据写入到日志文件中,并且不会造成日志文件的元数据的更新,可减少因元数据更新导致的向目标存储器写入的元数据量,保障目标存储器的使用寿命。
其中,上述各个单元可以基于处理器(如CPU)实现,即处理器读取存储器中存储的指令后来实现上述各个单元的功能。
请参见图6,图6是本发明实施例提供的一种通信设备的结构示意图。本发明实施例提供的通信设备60包括处理器601、存储器602和总线系统603。其中,上述处理器601、存储器602通过总线系统603连接。
上述存储器602用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。存储器602包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmableread only memory,EPROM)、或便携式只读存储器(compact disc read-only memory,CD-ROM)。图5中仅示出了一个存储器,当然,存储器也可以根据需要,设置为多个。
存储器602也可以是处理器601中的存储器,在此不做限制。
存储器602存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:
操作指令:包括各种操作指令,用于实现各种操作。
操作系统:包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
上述处理器601控制通信设备60的操作,处理器601可以是一个或多个中央处理器(central processing unit,CPU)。在处理器601是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。
具体的应用中,通信设备60的各个组件通过总线系统603耦合在一起,其中总线系统603除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图6中将各种总线都标为总线系统603。为便于表示,图6中仅是示意性画出。
本发明实施例揭示的日志文件的数据处理方法可以应用于处理器601中,或者由处理器601实现。处理器601可能是一种集成电路芯片,具有信号的处理能力。
本发明的实施例中提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机上运行时,可实现上述实施例一中所描述的一种日志文件的数据处理方法。
上述计算机可读存储介质可以是前述任一实施例所述的终端设备的内部存储单元,例如终端设备的硬盘或内存。上述计算机可读存储介质也可以是上述终端设备的外部存储设备,例如所述终端设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,上述计算机可读存储介质还可以既包括上述终端设备的内部存储单元也包括外部存储设备。上述计算机可读存储介质用于存储上述计算机程序以及上述终端设备所需的其他程序和数据。上述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。

Claims (27)

1.一种日志文件的数据处理方法,其特征在于,所述日志文件的数据写入方式为追加式写入,所述日志文件存储于目标存储器中,所述日志文件的文件空间至少包括用于存储日志数据的数据写入空间,所述方法包括:
获取待写入所述日志文件的第一日志数据;
若所述第一日志数据的大小大于所述日志文件的空闲空间的第一大小,则获取所述日志文件的空间增长阈值,其中,所述空闲空间为所述数据写入空间中除已占用空间之外的空间,所述已占用空间为已写入所述日志文件中的日志数据所占用的空间;
根据所述空间增长阈值对所述日志文件的文件空间进行空间增长以得到第二大小的所述空闲空间,并根据空间增长后的所述日志文件的文件属性生成所述日志文件的第一元数据;
将所述第一日志数据写入到所述空闲空间中,以及将所述第一元数据写入到所述目标存储器;
若在写入所述第一日志数据后的所述已占用空间的第三大小小于已占用空间上限值,则当所述第一日志数据写入到所述空闲空间之后每获取到待写入所述日志文件的第二日志数据时,执行下述操作:
若所述第二日志数据的大小小于或等于所述空闲空间的大小,则将所述第二日志数据写入到所述空闲空间中;
当内核延迟写回周期到达时,将所述第二日志数据写入所述日志文件之后生成的所述日志文件的第二元数据写入到所述目标存储器中,其中,所述内核延迟写回周期为周期性地写回数据到所述目标存储器的时间间隔;
当内核延迟写回周期未到达时,不将所述第二元数据写入到所述目标存储器中。
2.根据权利要求1所述的方法,其特征在于,所述方法包括:
若所述已占用空间的第三大小等于或大于所述已占用空间上限值,则将所述已占用空间中的数据读出并更新到主数据库文件中,将所述日志文件截断为零长度文件。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述第二日志数据的大小大于所述空闲空间的大小,则再次对所述日志文件的文件空间进行空间增长以得到第四大小的所述空闲空间,并根据空间增长后的所述日志文件的文件属性生成所述日志文件的第三元数据。
4.根据权利要求3所述的方法,其特征在于,所述获取所述日志文件的空间增长阈值包括:
获取所述日志文件的数据写入频率;
根据所述数据写入频率确定出所述日志文件的空间增长阈值。
5.根据权利要求4所述的方法,其特征在于,所述获取所述日志文件的数据写入频率包括:
获取指定时间间隔内所述日志文件的数据写入次数,并根据所述指定时间间隔和所述数据写入次数确定出数据写入频率。
6.根据权利要求5所述的方法,其特征在于,所述根据所述数据写入频率确定出所述日志文件的空间增长阈值包括:
获取所述日志文件的数据写入频率区间和空间增长阈值区间;
根据所述数据写入频率和所述数据写入频率区间确定出目标写入频率;
确定出所述目标写入频率在所述数据写入频率区间内的目标位置,并从所述空间增长阈值区间中获取所述目标位置对应的目标空间阈值;
根据所述目标空间阈值和所述第一日志数据的大小确定出空间增长阈值。
7.根据权利要求1所述的方法,其特征在于,所述获取所述日志文件的空间增长阈值包括:
获取所述日志文件的历史空闲空间增长记录,其中,所述历史空闲空间增长记录中包括空闲空间增长次数N和N次空闲空间增长对应的N个历史空间增长阈值;
根据所述N个历史空间增长阈值确定出空间增长阈值。
8.根据权利要求6或7所述的方法,其特征在于,所述根据所述空间增长阈值对所述空闲空间进行空间增长以得到第二大小的空闲空间包括:
为所述日志文件分配与所述空间增长阈值对应大小的源增长空间,并对所述源增长空间进行预处理,以得到处于可写入状态的目标增长空间;
将所述第一大小的空闲空间和所述目标增长空间合并为所述第二大小的空闲空间。
9.根据权利要求8所述的方法,其特征在于,所述日志文件对应的文件管理系统为Ext4文件系统。
10.根据权利要求6或7所述的方法,其特征在于,所述根据所述空间增长阈值对所述空闲空间进行空间增长以得到第二大小的空闲空间包括:
为所述日志文件分配与所述空间增长阈值对应大小的可写入增长空间;
将所述第一大小的空闲空间和所述可写入增长空间合并为所述第二大小的空闲空间。
11.根据权利要求10所述的方法,其特征在于,所述日志文件对应的文件管理系统为f2fs文件系统。
12.根据权利要求9所述的方法,其特征在于,所述日志文件对应的数据库为基于WAL日志模式的数据库,所述日志文件为WAL文件,所述第一日志数据以及所述第二日志数据都为WAL帧数据。
13.根据权利要求12所述的方法,其特征在于,所述目标存储器为NAND闪存。
14.一种日志文件的数据处理终端设备,其特征在于,所述日志文件的数据写入方式为追加式写入,所述日志文件存储于目标存储器中,所述日志文件的文件空间至少包括用于存储日志数据的数据写入空间,所述终端设备包括:
数据获取单元,用于获取待写入所述日志文件的第一日志数据;
空间增长单元,用于若所述数据获取单元获取的所述第一日志数据的大小大于所述日志文件的空闲空间的第一大小,则获取所述日志文件的空间增长阈值,其中,所述空闲空间为所述数据写入空间中除已占用空间之外的空间,所述已占用空间为已写入所述日志文件中的日志数据所占用的空间;
所述空间增长单元,还用于根据所述空间增长阈值对所述日志文件的文件空间进行空间增长以得到第二大小的所述空闲空间,并根据空间增长后的所述日志文件的文件属性生成所述日志文件的第一元数据;
数据读写单元,用于将所述数据获取单元获取的所述第一日志数据写入到所述空闲空间中,以及将所述空间增长单元生成的所述第一元数据写入到所述目标存储器;
所述数据读写单元,还用于若在写入所述第一日志数据后的所述已占用空间的第三大小小于已占用空间上限值,则当所述第一日志数据写入到所述空闲空间之后所述数据获取单元每获取到待写入所述日志文件的第二日志数据时,执行以下操作:
若所述第二日志数据的大小小于或等于所述空闲空间的大小,则将所述第二日志数据写入到所述空闲空间中;
当内核延迟写回周期到达时,将所述第二日志数据写入所述日志文件之后所述空间增长单元生成的所述日志文件的第二元数据写入到所述目标存储器中,其中,所述内核延迟写回周期为周期性地写回数据到所述目标存储器的时间间隔;
当内核延迟写回周期未到达时,不将所述第二元数据写入到所述目标存储器中。
15.根据权利要求14所述的终端设备,其特征在于,所述终端设备还包括:
文件截断单元,用于若所述已占用空间的第三大小等于或大于所述已占用空间上限值,则在所述数据读写单元将所述已占用空间中的数据读出并更新到主数据库文件中之后,将所述日志文件截断为零长度文件。
16.根据权利要求15所述的终端设备,其特征在于,所述空间增长单元还用于:
若所述数据获取单元获取的第二日志数据的大小大于所述空闲空间的大小,则再次对所述日志文件的文件空间进行空间增长以得到第四大小的所述空闲空间,并根据空间增长后的所述日志文件的文件属性生成所述日志文件的第三元数据。
17.根据权利要求16所述的终端设备,其特征在于,所述空间增长单元还用于:
获取所述日志文件的数据写入频率;
根据所述数据写入频率确定出所述日志文件的空间增长阈值。
18.根据权利要求17所述的终端设备,其特征在于,所述空间增长单元还用于:
获取指定时间间隔内所述日志文件的数据写入次数,并根据所述指定时间间隔和所述数据写入次数确定出数据写入频率。
19.根据权利要求18所述的终端设备,其特征在于,所述空间增长单元还用于:
获取所述日志文件的数据写入频率区间和空间增长阈值区间;
根据所述数据写入频率和所述数据写入频率区间确定出目标写入频率;
确定出所述目标写入频率在所述数据写入频率区间内的目标位置,并从所述空间增长阈值区间中获取所述目标位置对应的目标空间阈值;
根据所述目标空间阈值和所述第一日志数据的大小确定出空间增长阈值。
20.根据权利要求14所述的终端设备,其特征在于,所述空间增长单元用于:
获取所述日志文件的历史空闲空间增长记录,其中,所述历史空闲空间增长记录中包括空闲空间增长次数N和N次空闲空间增长对应的N个历史空间增长阈值;
根据所述N个历史空间增长阈值确定出空间增长阈值。
21.根据权利要求19或20所述的终端设备,其特征在于,所述空间增长单元用于:
为所述日志文件分配与所述空间增长阈值对应大小的源增长空间,并对所述源增长空间进行预处理,以得到处于可写入状态的目标增长空间;
将所述第一大小的空闲空间和所述目标增长空间合并为所述第二大小的空闲空间。
22.根据权利要求21所述的终端设备,其特征在于,所述日志文件对应的文件管理系统为Ext4文件系统。
23.根据权利要求19或20所述的终端设备,其特征在于,所述空间增长单元用于:
为所述日志文件分配与所述空间增长阈值对应大小的可写入增长空间;
将所述第一大小的空闲空间和所述可写入增长空间合并为所述第二大小的空闲空间。
24.根据权利要求23所述的终端设备,其特征在于,所述日志文件对应的文件管理系统为f2fs文件系统。
25.根据权利要求22所述的终端设备,其特征在于,所述日志文件对应的数据库为基于WAL日志模式的数据库,所述日志文件为WAL文件,所述第一日志数据以及所述第二日志数据都为WAL帧数据。
26.根据权利要求25任一项所述的终端设备,其特征在于,所述目标存储器为NAND闪存。
27.一种计算机可读存储介质,其特征在于,包括指令,所述指令在计算机上运行时,使得计算机执行如权利要求1-13任一项所述的方法。
CN201810514690.0A 2018-05-25 2018-05-25 日志文件的数据处理方法和终端设备 Active CN108829345B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810514690.0A CN108829345B (zh) 2018-05-25 2018-05-25 日志文件的数据处理方法和终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810514690.0A CN108829345B (zh) 2018-05-25 2018-05-25 日志文件的数据处理方法和终端设备

Publications (2)

Publication Number Publication Date
CN108829345A CN108829345A (zh) 2018-11-16
CN108829345B true CN108829345B (zh) 2020-02-21

Family

ID=64146036

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810514690.0A Active CN108829345B (zh) 2018-05-25 2018-05-25 日志文件的数据处理方法和终端设备

Country Status (1)

Country Link
CN (1) CN108829345B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111433765A (zh) * 2018-11-30 2020-07-17 深圳市大疆创新科技有限公司 日志存储方法、日志读取方法、智能电池、无人机
CN114174939B (zh) * 2019-07-26 2024-01-12 三菱电机株式会社 可编程逻辑控制器、设定工具及记录介质
CN111177104B (zh) * 2019-12-28 2022-04-22 浪潮(北京)电子信息产业有限公司 一种nas存储系统的日志下刷方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105335098A (zh) * 2015-09-25 2016-02-17 华中科技大学 一种基于存储级内存的日志文件系统性能提高方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4168626B2 (ja) * 2001-12-06 2008-10-22 株式会社日立製作所 記憶装置間のファイル移行方法
CN101501623B (zh) * 2006-05-03 2013-03-06 数据机器人技术公司 感知文件系统的块存储系统、装置和方法
CN101639848B (zh) * 2009-06-01 2011-06-01 北京四维图新科技股份有限公司 一种空间数据引擎及应用其管理空间数据的方法
WO2011001470A1 (ja) * 2009-07-02 2011-01-06 三菱電機株式会社 データ記録装置、およびオーディオシステム
CN103514260B (zh) * 2013-08-13 2016-12-28 中国科学技术大学苏州研究院 内存日志文件系统及其实现方法
CN103744961B (zh) * 2014-01-06 2016-10-19 清华大学 用可重构的文件系统目录树提高非易失性存储寿命的方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105335098A (zh) * 2015-09-25 2016-02-17 华中科技大学 一种基于存储级内存的日志文件系统性能提高方法

Also Published As

Publication number Publication date
CN108829345A (zh) 2018-11-16

Similar Documents

Publication Publication Date Title
JP6343438B2 (ja) コンピュータシステム及びコンピュータシステムのデータ管理方法
US9430388B2 (en) Scheduler, multi-core processor system, and scheduling method
US11232026B2 (en) Deferred destruction for efficient resource reclamation
US8972690B2 (en) Methods and apparatuses for usage based allocation block size tuning
US7673105B2 (en) Managing memory pages
KR102050723B1 (ko) 컴퓨팅 시스템 및 그 데이터 관리 방법
CN108829345B (zh) 日志文件的数据处理方法和终端设备
CN108763572B (zh) 一种实现Apache Solr读写分离的方法和装置
CN111324427B (zh) 一种基于dsp的任务调度方法及装置
US20240061789A1 (en) Methods, apparatuses, and electronic devices for evicting memory block in cache
CN111198856A (zh) 文件管理方法、装置、计算机设备和存储介质
US20060277221A1 (en) Transactional file system with client partitioning
US10430115B2 (en) System and method for optimizing multiple packaging operations in a storage system
CN115617255A (zh) 缓存文件的管理方法和管理装置
CN113704027B (zh) 文件聚合兼容方法、装置、计算机设备和存储介质
CN111694806A (zh) 一种事务日志的缓存方法、装置、设备和存储介质
KR101979715B1 (ko) 컴퓨팅 시스템 및 그 데이터 관리 방법
CN114896215A (zh) 元数据的存储方法及装置
CN114116790A (zh) 数据处理的方法及装置
CN112764908B (zh) 网络数据采集处理方法、装置和电子设备
KR20140042428A (ko) 컴퓨팅 시스템 및 그 데이터 관리 방법
CN116795409A (zh) 一种支持进程热升级的内存处理方法、装置及电子设备
CN113806408A (zh) 一种数据缓存方法、系统、设备及存储介质
CN117556088A (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