CN115048046B - 日志文件系统以及数据管理方法 - Google Patents
日志文件系统以及数据管理方法 Download PDFInfo
- Publication number
- CN115048046B CN115048046B CN202210579473.6A CN202210579473A CN115048046B CN 115048046 B CN115048046 B CN 115048046B CN 202210579473 A CN202210579473 A CN 202210579473A CN 115048046 B CN115048046 B CN 115048046B
- Authority
- CN
- China
- Prior art keywords
- module
- file system
- data
- block
- memory module
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明涉及一种日志文件系统以及数据管理方法,包括:超级块内存模块、索引块内存模块、写队列模块和接口模块,通过接口模块与设备的操作系统相连,超级块内存模块在内存中存在一份;索引块内存模块中至少包括一个指向超级块结构体的第一指针,第一指针用于进行数据读取和更改,索引块内存模块中至少包括一个指向写队列模块的第二指针,第二指针用于对内存空间进行优化;写队列模块用于以预分配的方式,对元数据进行分类管理,并进行存储,还用于管理写操作时元数据的基本信息,通过优化内存使用模型和写操作方式减少了对系统资源的占用,对系统资源的利用进行优化,来保证嵌入式系统的稳定性并提升闪存存储设备的使用寿命。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种日志文件系统以及数据管理方法。
背景技术
嵌入式设备上一般使用闪存存储设备,包括NOR闪存芯片和NAND闪存芯片两种,由于NOR闪存芯片的存储空间较小,所以一般仅用来做一些引导存储,很少用于数据存储。适用于存储数据的是NAND闪存芯片,例如eMMC、MMC、UFS、SD卡。闪存存储设备具有体积小、存取时间快和电池消耗低等优点。但是同时,闪存存储设备不允许原地更新,每次原地更新都会对存储芯片造成磨损,这种磨损不可逆转。为了克服这一问题,闪存存储设备使用闪存转换层(FTL),用于存储设备磨损的负载均衡。
闪存存储设备上一般会使用日志结构文件系统(简称LFS),每次写入都是以追加的方式,保证数据不会原地更新,并不会频繁删除数据。追加写的方式会让写数据在存储设备里存在很多副本,为LFS的数据安全性提供了保证,即LFS不需要额外的日志空间就可以实现数据的备份,如果发生了系统崩溃,文件系统只需要找到崩溃部分的最近副本进行恢复即可。
但是LFS文件系统的缺点是对大文件、多目录等功能支持不好,并且挂载时间不稳定。随着闪存存储设备的发展,闪存转换层被集成到了闪存存储设备中,这让传统的块设备文件系统在闪存设备上的使用逐渐可行。例如,EXT4作为一种性能均衡的文件系统,在Linux和Android操作系统中广泛使用,但是,因其对系统资源要求过多,对嵌入式操作系统的兼容性不好,因此不适合用于闪存存储和嵌入式设备。
发明内容
本发明意在提供一种日志文件系统、装置、终端设备和存储介质,以解决现有技术中存在的不足,本发明要解决的技术问题通过以下技术方案来实现。
第一个方面,本发明实施例提供一种日志文件系统,所述系统包括:超级块内存模块、索引块内存模块、写队列模块和接口模块,通过所述接口模块与设备的操作系统相连,
其中,所述超级块内存模块在内存中存在一份;所述索引块内存模块中至少包括一个指向超级块结构体的第一指针,所述第一指针用于进行数据读取和更改,所述索引块内存模块中至少包括一个指向写队列模块的第二指针,所述第二指针用于对内存空间进行优化;
所述写队列模块用于以预分配的方式,对元数据镜像分类管理,并进行存储,还用于管理写操作时元数据的基本信息。
可选地,所述超级块内存模块具体用于:
在内存中创建超级块对应的结构体;
打开磁盘分区对应设备,获取缓存区句柄;
读取位于块组中的原始数据;
将读取数据按位写入结构体中;
判断结构体中的魔数成员是否为预设值;
若所述魔数为预设值,则获取校验和算法;
根据校验和算法计算校验值;
对比计算得到校验值与读取原始校验值是否一致;
若一致,则读取EXT4文件系统的配置信息,所述配置信息至少包括每组块数量、每组索引节点;
读取EXT4文件系统的描述信息。
可选地,所述索引块内存模块,具体用于:
获取待评估文件父目录对应的结构;
将待评估文件的路径设置为空;
通过剪裁获取当前路径信息第一级目录名称;
判断剪裁后的文件名称是否大于零;
若大于零,则基于EXT4文件系统的预设函数判断所述文件名称是否是目录;
将待评估路径与第一级路径合并为待评估路径;
获取待评估路径对应的路径结构体;
调用EXT4系统中获取节点函数;
基于获取的节点函数对应的节点数据与访问信息,判断所述文件名称是否具有访问权限;
若有访问权限,则读取节点数据信息;
检查待评估路径中是否存在下级路径;
若没有下级路径,则根据所述节点数据信息,确定目标文件。
可选地,所述接口模块具体为日志磁盘块管理接口,所述日志磁盘块管理接口用于对所有由操作系统提供的磁盘读写层函数进行两层封装,统一交由日志线程管理。
可选地,所述日志磁盘块管理接口兼容POSIX接口,所述POSIX接口用于与设备的操作系统提供的文件系统函数对接。
可选地,所述写队列模块,具体用于:
被索引块内存模块直接索引,存储了分配的块号、数据起始地址、块内数据的偏移量、将要被写入的数据的总大小,以及用于描述本结构体的链表。
可选地,所述索引块内存模块至少包括文件系统目前使用块号的直接索引和超级块内存结构体的索引;超级块内存模块用于保存文件系统块设备描述符,便于管理打开磁盘。
可选地,所述索引块内存模块至少包括20个整型数据,所述超级块内存结构体至少包括14个整型数据。
可选地,所述写队列模块用于在写回模式架构的基础上,通过使用写队列的数据结构,预分配了写操作中所有的资源并且将元数据提前确定并刷新回日志。
第二个方面,本发明实施例提供基于第一方面的任一所述的日志文件系统的数据管理方法,所述方法包括:
获取用户输入的写请求;
通过RT-EXT4提供的写接口,锁定所述日志文件系统;
创建一个事务;
创建EXT4的写队列;
将修改后的元数据添加到已修改队列中;
提交事务,刷新存储设备;
释放写队列所占内存空间;
解锁文件系统。
本发明实施例包括以下优点:
本发明实施例提供的日志文件系统和数据管理方法,该系统包括:超级块内存模块、索引块内存模块、写队列模块和接口模块,通过接口模块与设备的操作系统相连,超级块内存模块位于内存;索引块内存模块中至少包括一个指向超级块结构体的第一指针,第一指针用于进行数据读取和更改,索引块内存模块中至少包括一个指向写队列模块的第二指针,第二指针用于对内存空间进行优化;写队列模块用于以预分配的方式,对元数据镜像分类管理,并进行存储,还用于管理写操作时元数据的基本信息,通过优化内存使用模型和写操作方式减少了对系统资源的占用,对系统资源的利用优化和磁盘刷新策略的更改,来保证嵌入式系统的稳定性并提升闪存存储设备的使用寿命。
附图说明
图1是本发明的一种日志文件系统实施例的步骤流程图;
图2是本发明的文件系统元数据信息交互处理流程图;
图3是本发明的基于索引节点的文件管理处理流程;
图4是本发明的又一日志文件系统的数据流程图;
图5是本发明的写队列算法伪代码示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
本发明一实施例提供一种日志文件系统,用于对日志文件系统进行优化。本实施例的执行主体终端设备上,例如,终端设备至少包括平板终端和计算机终端等。
参照图1,示出了本发明的一种日志文件系统实施例的步骤流程图,系统包括:超级块内存模块101、索引块内存模块102、写队列模块103和接口模块104,通过接口模块104与设备的操作系统相连,
其中,超级块内存模块101位于内存中,也就是说,在内存中存放一份超级块内存模块;
索引块内存模块102中至少包括一个指向超级块结构体的第一指针,第一指针用于进行数据读取和更改,索引块内存模块中至少包括一个指向写队列模块的第二指针,第二指针用于对内存空间进行优化;
写队列模块103用于以预分配的方式,对元数据镜像分类管理,并进行存储,还用于管理写操作时元数据的基本信息。
具体地,本发明实施例应用于闪存存储和嵌入式设备,该日志文件系统包括如下结构,具体为:
结构1、基于简易缓存策略的VFS(virtual File System)层结构,其包含了优化后的超级块内存结构体和索引块内存结构体;
结构2、基于写优化创建的写队列,被索引块内存结构体索引,用来管理写操作时元数据的基本信息;
结构3、基于文件路径粒度的文件系统锁结构,用于实现大粒度的文件系统互斥;
结构4、统一的日志磁盘块管理接口,对所有由操作系统提供的磁盘读写层函数进行封装,统一交由日志线程管理;
结构5、元数据预刷新日志结构,在写回日志架构的基础上,通过资源预分配的策略提前确定元数据,并在写操作之前就将元数据全部持久化到日志区,在写操作执行时再分配实际物理磁盘块。
在本发明实施例中,本发明实施例提供的日志文件系统,该系统包括:超级块内存模块、索引块内存模块、写队列模块和接口模块,通过接口模块与设备的操作系统相连,超级块内存模块位于内存;索引块内存模块中至少包括一个指向超级块结构体的第一指针,第一指针用于进行数据读取和更改,索引块内存模块中至少包括一个指向写队列模块的第二指针,第二指针用于对内存空间进行优化;写队列模块用于以预分配的方式,对元数据镜像分类管理,并进行存储,还用于管理写操作时元数据的基本信息,通过优化内存使用模型和写操作方式减少了对系统资源的占用,对系统资源的利用优化和磁盘刷新策略的更改,来保证嵌入式系统的稳定性并提升闪存存储设备的使用寿命。
本发明又一实施例对上述实施例提供的日志文件系统做进一步补充说明。
图2是本发明的文件系统元数据信息交互处理流程图,如图2所示,为了支撑操作系统对分区信息的获取,需要实现与磁盘分区中块组0,尤其是超级块中信息的交互。为了保证超级块数据的可用性和有效性,本发明所提供的文件系统会在多个块组中的第一个块中备份超级块信息。该步骤的核心工作是读取分区超级块原始数据,超级块内存模块具体用于:
在内存中创建超级块对应的结构体ext4-super-block;
打开磁盘分区对应设备,获取缓存区句柄;
读取位于块组0中的super block原始数据;
将读取数据按位写入ext4-super-block结构体中;
判断结构体中的魔数成员是否为预设值0xEF53;
若魔数为预设值,则获取校验和算法;
根据校验和算法计算校验值;
对比计算得到校验值与读取原始校验值是否一致;
若一致,则读取EXT4文件系统的配置信息,配置信息至少包括每组块数量、每组索引节点;
读取EXT4文件系统的描述信息。
图3是本发明的基于索引节点的文件管理处理流程,如图3所示,本发明实施例中使用索引节点来保存文件的属性和内容存储的位置,因此大部分针对文件属性的操作最终都会转化为针对文件索引节点的相关操作。该步骤的重要工作是基于文件路径信息定位到与之对应的索引节点文件,索引块内存模块,具体用于:
获取待评估文件父目录对应的rtems-filesystem-location-info-t结构;
将待评估文件的路径设置为空NULL;
通过剪裁获取当前路径信息第一级目录名称;
判断剪裁后的文件名称是否大于零;
若大于零,则基于EXT4文件系统的预设函数is-directory判断文件名称是否是目录;
将待评估路径与第一级路径合并为待评估路径;
获取待评估路径对应的路径结构体rtems-filesystem-location-info-t;
调用EXT4系统中获取inode节点函数rtems-ext4-get-inode-by-location;
基于获取的inode节点函数对应的节点数据与访问信息,判断文件名称是否具有访问权限;
若有访问权限,则读取inode节点数据信息;
检查待评估路径中是否存在下级路径;
若没有下级路径,则根据节点数据信息,确定目标文件。
可选地,接口模块具体为日志磁盘块管理接口,日志磁盘块管理接口用于对所有由操作系统提供的磁盘读写层函数进行两层封装,统一交由日志线程管理。
其中,日志磁盘块管理接口兼容POSIX接口,POSIX接口用于与设备的操作系统提供的文件系统函数对接。
与之前的文件日志系统相比,本发明实施例提供的日志文件系统设置有统一的精简磁盘块管理接口,在操作系统提供的磁盘块获取和同步的接口的基础上,对其进行了两层封装,用户只需要正常进行磁盘块的申请和释放即可实现将数据纳入日志区的保护。
可选地,写队列模块,具体用于:
被索引块内存模块直接索引,存储了分配的块号、数据起始地址、块内数据的偏移量、将要被写入的数据的总大小,以及用于描述本结构体的链表。
具体的,结构2被文件系统索引块直接索引,存储了分配的块号、数据起始地址、块内数据的偏移量、将要被写入的数据的总大小,以及用于描述本结构体的链表。
可选地,索引块内存模块至少包括文件系统目前使用块号的直接索引和超级块内存结构体的索引;超级块内存模块用于保存文件系统块设备描述符,便于管理打开磁盘。
日志机制的核心是处理磁盘块缓冲区。日志的基本操作包括对原子操作的操作、对缓冲区的操作、对日志空间的操作、对日志提交的操作等。文件系统在路径解析的过程中会加锁,以防止文件夹被其他用户访问。
可选地,索引块内存模块至少包括20个整型数据,超级块内存结构体至少包括14个整型数据。
具体的,结构1的简易缓存的设计,其中索引块内存结构体的大小固定,可容纳20个整型数据,包含文件系统目前使用块号的直接索引和超级块内存结构体的索引。超级块内存结构体可容纳14个整型数据,包含文件系统块设备描述符,便于管理打开磁盘。
可选地,写队列模块用于在写回模式架构的基础上,通过使用写队列的数据结构,预分配了写操作中所有的资源并且将元数据提前确定并刷新回日志。
文件系统的元数据预分配和提前刷新的日志模式。元数据的内容会在写操作实际执行之前就确定并持久化到日志区,不需要考虑后期数据块的修改问题。
图4是本发明的又一日志文件系统的数据流程图,如图4所示,对于文件系统日志区工作的流程、文件夹粒度的锁和废除队列的去除,以图4和图5(代码段)为例进行说明,其中图4中的步骤1为用户层的系统调用申请,之后所有的工作由内核处理,对应图4代码中的前两行;代码中的创建一个事务,则对应图4中的步骤2;图4中步骤3,4,5指向的队列即为写队列,可以看出写队列中的元数据是最先刷新回磁盘的,以保证文件系统数据的安全性,这部分对应于图5代码中的5,6两行;文件系统处理写操作的最后一步是图3中的7,8两步,用户数据的写时执行在元数据刷新之后的(图4代码第7行),可以看出用户数据没有经过日志区,而是通过顺序的强制刷新模式保证了数据的顺序性和刷新的及时性;图4中显示了图5代码段第3,9两行的作用,即消除了日志区中的冗余队列,至此文件系统的写流程结束。
本发明的安装实现步骤如下:
将嵌入式系统交叉编译到需要的硬件平台上,之后将所有提供的代码复制到嵌入式操作系统的文件系统库的目录下,之后配置对应的嵌入式系统的文件系统挂载配置文件,将本发明所提供的文件系统注册使用;
将文件系统提供的标准POSIX接口与操作系统提供的文件系统函数对接,保证虚拟文件系统层的工作正常;
将所有的系统提供的底层磁盘管理的读、写、同步接口与文件系统中使用到的磁盘块获取、同步接口对接,保证文件系统与磁盘的交互正常。
对文件系统进行挂载使用。例如在命令行用户界面中(例如shell)使用文件系统挂载命令(例如mount),挂载使用本发明提供的文件系统。
本发明实施例提供一种适合于NAND闪存存储和嵌入式设备的日志结构文件系统,该文件系统通过优化内存使用模型和写操作方式减少了对系统资源的占用。在日志模块中,通过对元数据管理方式的优化和文件系统锁粒度的更改,实现了一种轻量级的日志模块来保证数据的安全性。本文件系统的核心是对系统资源的利用优化和磁盘刷新策略的更改,来保证嵌入式系统的稳定性并提升闪存存储设备的使用寿命。
本发明要解决的技术问题通过以下技术方案来实现:
简易缓存机制:提供一个新的结构体:写队列,并以预分配的方式,多单位分配可能需要的数据块,将写操作的元数据拆分,元数据信息都会保存在写队列里。在索引块内存结构体中维护一个指针来指向写队列结构体,对写时的内存分配做优化。此外,在索引块内存结构体中删除与文件读写操作无关的数据结构,既减少了索引块的内存占用,又减少与系统之间的交互。采用同样的方式缩减超级块结构体,并在索引块中存储一个指向超级块结构体的指针,方便所有的数据更改和读取工作。
写优化机制:如前,在简易缓存机制中设计了文件系统块的预分配和多块分配策略,以减少文件系统的碎片化和数据的一致性。管理新分配的文件系统块会花费很大的开销:这些新分配的块不仅会影响到文件系统的一致性,还会影响到文件系统的写入速度。为了实现块的统一管理,在索引块中采用直接索引策略来管理这些分配块,并且设计了一种写队列的写回方式:所有需要写的数据都会将其元信息存储到写队列中,此时操作系统并不会产生分配磁盘块和具体写的行为,等待所有的元数据确定之后,直接刷新回磁盘,提前保证文件系统的元数据一致性,数据块的数据则等待操作系统真正处理了写数据的插入后再处理。
元数据预刷新日志结构:传统文件系统中的数据分为元数据和数据块数据,其中元数据的安全性保证了文件系统的可用性,只要元数据的一致性得到了保证,文件系统就可以正常的实现挂载和文件的创建读写。因此,在设计文件系统日志时,元数据的安全性是首先需要被考虑的问题。传统日志结构中的写回模式仅考虑了元数据的安全性,速度较快,资源消耗较少,但是这种方式没有考虑到写操作在执行的过程中也会影响到元数据,比如文件的访问时间和修改时间等。在写回模式架构的基础上,通过使用写队列的数据结构,预分配了写操作中所有的资源并且将元数据提前确定并刷新回日志区,实际物理磁盘块的分配并不在此时执行,更早的保证了文件系统元数据的安全。真正的物理磁盘块分配是在写操作执行时才被执行,并且采取数据块的强制刷新策略(写满即刷新)以保证数据块内容的安全性。
本发明实施例为使用闪存存储的嵌入式设备提供了标准的POSIX文件系统接口,任何支持POSIX文件系统接口的嵌入式系统,都可以通过更改文件系统的底层磁盘管理接口来实现本文件系统的支持与使用。
与现有的技术相比,本发明的优点在于:
本发明考虑了文件系统的跨系统兼容性,因此可以跨平台使用。现有闪存文件系统的适用面很窄,需要将闪存存储模拟成块设备,因此在很多情况下无法跨平台使用。
本发明考虑了嵌入式系统的内存资源受限,对系统资源的要求很低。
本发明考虑了写操作的复杂性,并采用直接索引和预刷新策略进行优化,随机写的性能大幅提升。
本发明考虑到了日志模块的复杂性和对资源的高消耗,基于写回模式的结构设计拥有更好的性能,并且拥有写队列的统一管控,比写回模式拥有更高的安全性,并且对数据的完整性和一致性有更好的保护。
图5是本发明的写队列算法伪代码示意图,如图5所示,本发明实施例提供基于上述的日志文件系统的数据管理方法,该方法包括:
获取用户输入的写请求;
通过RT-EXT4提供的写接口,锁定日志文件系统;
创建一个事务;
创建EXT4的写队列;
将修改后的元数据添加到已修改队列中;
提交事务,刷新存储设备;
释放写队列所占内存空间;
解锁文件系统。
本发明实施例提供的日志文件系统和数据管理方法,该系统包括:超级块内存模块、索引块内存模块、写队列模块和接口模块,通过接口模块与设备的操作系统相连,超级块内存模块位于内存;索引块内存模块中至少包括一个指向超级块结构体的第一指针,第一指针用于进行数据读取和更改,索引块内存模块中至少包括一个指向写队列模块的第二指针,第二指针用于对内存空间进行优化;写队列模块用于以预分配的方式,对元数据镜像分类管理,并进行存储,还用于管理写操作时元数据的基本信息,通过优化内存使用模型和写操作方式减少了对系统资源的占用,对系统资源的利用优化和磁盘刷新策略的更改,来保证嵌入式系统的稳定性并提升闪存存储设备的使用寿命。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
本发明实施例提供的日志文件系统,通过该系统包括:超级块内存模块、索引块内存模块、写队列模块和接口模块,通过接口模块与设备的操作系统相连,超级块内存模块位于内存;索引块内存模块中至少包括一个指向超级块结构体的第一指针,第一指针用于进行数据读取和更改,索引块内存模块中至少包括一个指向写队列模块的第二指针,第二指针用于对内存空间进行优化;写队列模块用于以预分配的方式,对元数据镜像分类管理,并进行存储,还用于管理写操作时元数据的基本信息,通过优化内存使用模型和写操作方式减少了对系统资源的占用,对系统资源的利用优化和磁盘刷新策略的更改,来保证嵌入式系统的稳定性并提升闪存存储设备的使用寿命。
应该指出,上述详细说明都是示例性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语均具有与本申请所属技术领域的普通技术人员的通常理解所相同的含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请所述的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式。此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,以便这里描述的本申请的实施方式能够以除了在这里图示或描述的那些以外的顺序实施。
此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于描述,在这里可以使用空间相对术语,如“在……之上”、“在……上方”、“在……上表面”、“上面的”等,用来描述如在图中所示的一个器件或特征与其他器件或特征的空间位置关系。应当理解的是,空间相对术语旨在包含除了器件在图中所描述的方位之外的在使用或操作中的不同方位。例如,如果附图中的器件被倒置,则描述为“在其他器件或构造上方”或“在其他器件或构造之上”的器件之后将被定位为“在其他器件或构造下方”或“在其他器件或构造之下”。因而,示例性术语“在……上方”可以包括“在……上方”和“在……下方”两种方位。该器件也可以其他不同方式定位,如旋转90度或处于其他方位,并且对这里所使用的空间相对描述作出相应解释。
在上面详细的说明中,参考了附图,附图形成本文的一部分。在附图中,类似的符号典型地确定类似的部件,除非上下文以其他方式指明。在详细的说明书、附图及权利要求书中所描述的图示说明的实施方案不意味是限制性的。在不脱离本文所呈现的主题的精神或范围下,其他实施方案可以被使用,并且可以作其他改变。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种日志文件系统,其特征在于,所述系统包括:超级块内存模块、索引块内存模块、写队列模块和接口模块,通过所述接口模块与设备的操作系统相连,
其中,所述超级块内存模块位于内存中;所述索引块内存模块中至少包括一个指向超级块结构体的第一指针,所述第一指针用于进行数据读取和更改,所述索引块内存模块中至少包括一个指向写队列模块的第二指针,所述第二指针用于对内存空间进行优化;所述索引块内存模块,具体用于:
获取待评估文件父目录对应的结构;
将待评估文件的路径设置为空;
通过剪裁获取当前路径信息第一级目录名称;
判断剪裁后的文件名称是否大于零;
若大于零,则基于EXT4文件系统的预设函数判断所述文件名称是否是目录;
将待评估路径与第一级路径合并为待评估路径;
获取待评估路径对应的路径结构体;
调用EXT4系统中获取节点函数;
基于获取的节点函数对应的节点数据与访问信息,判断所述文件名称是否具有访问权限;
若有访问权限,则读取节点数据信息;
检查待评估路径中是否存在下级路径;
若没有下级路径,则根据所述节点数据信息,确定目标文件;
所述写队列模块用于以预分配的方式,对元数据镜像分类管理,并进行存储,还用于管理写操作时元数据的基本信息。
2.根据权利要求1所述的系统,其特征在于,所述超级块内存模块具体用于:
在内存中创建超级块对应的结构体;
打开磁盘分区对应设备,获取缓存区句柄;
读取位于块组中的原始数据;
将读取数据按位写入结构体中;
判断结构体中的魔数成员是否为预设值;
若所述魔数为预设值,则获取校验和算法;
根据校验和算法计算校验值;
对比计算得到校验值与读取原始校验值是否一致;
若一致,则读取EXT4文件系统的配置信息,所述配置信息至少包括每组块数量、每组索引节点;
读取EXT4文件系统的描述信息。
3.根据权利要求1所述的系统,其特征在于,所述接口模块具体为日志磁盘块管理接口,所述日志磁盘块管理接口用于对所有由操作系统提供的磁盘读写层函数进行两层封装,统一交由日志线程管理。
4.根据权利要求3所述的系统,其特征在于,所述日志磁盘块管理接口兼容POSIX接口,所述POSIX接口用于与设备的操作系统提供的文件系统函数对接。
5.根据权利要求1所述的系统,其特征在于,所述写队列模块,具体用于:
被索引块内存模块直接索引,存储了分配的块号、数据起始地址、块内数据的偏移量、将要被写入的数据的总大小,以及用于描述本结构体的链表。
6.根据权利要求1所述的系统,其特征在于,所述索引块内存模块至少包括文件系统目前使用块号的直接索引和超级块内存结构体的索引;超级块内存模块用于保存文件系统块设备描述符,便于管理打开磁盘。
7.根据权利要求6所述的系统,其特征在于,所述索引块内存模块至少包括20个整型数据,所述超级块内存结构体至少包括14个整型数据。
8.根据权利要求1所述的系统,其特征在于,所述写队列模块用于在写回模式架构的基础上,通过使用写队列的数据结构,预分配了写操作中所有的资源并且将元数据提前确定并刷新回日志。
9.一种基于如权利要求1-8任一所述的日志文件系统的数据管理方法,其特征在于,所述方法包括:
获取用户输入的写请求;
通过RT-EXT4提供的写接口,锁定所述日志文件系统;
创建一个事务;
创建EXT4的写队列;
将修改后的元数据添加到已修改队列中;
提交事务,刷新存储设备;
释放写队列所占内存空间;
解锁文件系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210579473.6A CN115048046B (zh) | 2022-05-26 | 2022-05-26 | 日志文件系统以及数据管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210579473.6A CN115048046B (zh) | 2022-05-26 | 2022-05-26 | 日志文件系统以及数据管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115048046A CN115048046A (zh) | 2022-09-13 |
CN115048046B true CN115048046B (zh) | 2022-11-25 |
Family
ID=83159494
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210579473.6A Active CN115048046B (zh) | 2022-05-26 | 2022-05-26 | 日志文件系统以及数据管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115048046B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115658624B (zh) * | 2022-11-02 | 2023-11-21 | 中国科学院空间应用工程与技术中心 | 一种应对系统不稳定时间区间的元数据写入方法和系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968563A (zh) * | 2018-09-29 | 2020-04-07 | 华为技术有限公司 | 一种数据存储方法、元数据服务器及客户端 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1295613C (zh) * | 2002-10-24 | 2007-01-17 | 华为技术有限公司 | 通用Windows程序运行日志信息记录方法 |
CN102955720B (zh) * | 2011-08-25 | 2015-09-09 | 北京中科智网科技有限公司 | 一种提高ext文件系统稳定性的方法 |
CN104461391B (zh) * | 2014-12-05 | 2019-08-02 | 上海宝存信息科技有限公司 | 一种存储设备元数据管理处理方法及系统 |
CN105335098B (zh) * | 2015-09-25 | 2019-03-26 | 华中科技大学 | 一种基于存储级内存的日志文件系统性能提高方法 |
CN105868396A (zh) * | 2016-04-19 | 2016-08-17 | 上海交通大学 | 内存文件系统的多版本控制方法 |
CN107862064B (zh) * | 2017-11-16 | 2021-09-10 | 北京航空航天大学 | 一个基于nvm的高性能、可扩展的轻量级文件系统 |
CN108090168B (zh) * | 2017-12-14 | 2021-01-12 | 厦门市美亚柏科信息股份有限公司 | 一种通用f2fs文件系统解析方法、终端设备及存储介质 |
CN112463724B (zh) * | 2020-11-05 | 2022-07-12 | 苏州浪潮智能科技有限公司 | 一种轻量级文件系统的数据处理方法和系统 |
CN112540931B (zh) * | 2020-12-16 | 2022-05-24 | 华中科技大学 | 保证安全非易失内存中数据崩溃一致性的方法及处理器 |
CN113505363B (zh) * | 2021-08-04 | 2022-11-29 | 上海瓶钵信息科技有限公司 | 通过软件方式实现存储空间防重放的方法和系统 |
CN114327290B (zh) * | 2021-12-31 | 2022-12-02 | 科东(广州)软件科技有限公司 | 一种磁盘分区的结构、格式化方法和访问方法 |
-
2022
- 2022-05-26 CN CN202210579473.6A patent/CN115048046B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968563A (zh) * | 2018-09-29 | 2020-04-07 | 华为技术有限公司 | 一种数据存储方法、元数据服务器及客户端 |
Also Published As
Publication number | Publication date |
---|---|
CN115048046A (zh) | 2022-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kwon et al. | Strata: A cross media file system | |
US7035881B2 (en) | Organization of read-write snapshot copies in a data storage system | |
KR101914019B1 (ko) | 분산 데이터베이스 시스템들을 위한 고속 장애 복구 | |
KR101827239B1 (ko) | 분산 데이터 시스템들을 위한 전 시스템에 미치는 체크포인트 회피 | |
KR101932372B1 (ko) | 인 플레이스 스냅샷들 | |
US8478931B1 (en) | Using non-volatile memory resources to enable a virtual buffer pool for a database application | |
KR101764897B1 (ko) | 데이터베이스 엔진 및 개별 분산 저장 서비스를 갖는 데이터베이스 시스템 | |
KR101926674B1 (ko) | 로그 레코드 관리 | |
US11386065B2 (en) | Database concurrency control through hash-bucket latching | |
US8972345B1 (en) | Modifying data structures in distributed file systems | |
AU2006262111B2 (en) | Managing memory pages | |
CN106326229B (zh) | 一种嵌入式系统的文件存储方法和装置 | |
CN112597254B (zh) | 面向混合dram-nvm主存的联机事务型数据库系统 | |
US20060277221A1 (en) | Transactional file system with client partitioning | |
CN115048046B (zh) | 日志文件系统以及数据管理方法 | |
US8082230B1 (en) | System and method for mounting a file system on multiple host computers | |
CN110134657A (zh) | 基于非易失主存的文件系统元数据操作加速方法和系统 | |
CN113204520B (zh) | 一种基于分布式文件系统的遥感数据快速并发读写方法 | |
CN116226232A (zh) | 面向分布式数据库的持久内存数据存储方法及系统 | |
JP2005316708A (ja) | 階層記憶装置、その復旧方法、及び復旧プログラム | |
KR20220088274A (ko) | 코어별 저널 구조를 포함하는 컴퓨팅 시스템 | |
Sun et al. | Breaking apart the {VFS} for managing file systems | |
US11061609B2 (en) | Distributed memory object method and system enabling memory-speed data access in a distributed environment | |
CN115329141A (zh) | 一种面向持久内存的数据管理方法及持久内存控制器 | |
JP4131579B2 (ja) | データ管理システムおよびデータ管理方法 |
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 |