一种文件系统的数据处理方法、装置、电子设备及存储介质与流程

文档序号:35205620发布日期:2023-08-22 17:05阅读:33来源:国知局
一种文件系统的数据处理方法、装置、电子设备及存储介质与流程

本发明是关于存储,特别是关于一种文件系统的数据处理方法以及实现该数据处理方法的装置、电子设备和存储介质。


背景技术:

1、b+树是目前最为常用的索引结构,由于其高效的插入、查找、修改性能,其被广泛应用在诸多存储系统的索引结构中。b+树包括根节点、内部节点和叶子节点,所有的叶子节点都在同一个级别,并且除根节点外,每个节点最多可以有m个子节点,至少可以有m/2个子节点,每个节点最多可包含m-1个键值,最少可包含(m/2)-1个键值,m为b+树的阶数。在搜索数据时,从根节点开始,将要搜索的数据k与根节点上的键[k1,k2,k3,…km-1]进行比较。如果k<k1,则转到根节点的左侧子节点。否则,如果k==k1,比较k2。如果k<k2,则k位于k1和k2之间。所以,搜索k2的左子级。如果k>k2,则按步骤2和3执行k3、k4、…km-1。重复上述步骤,直到到达叶子节点。如果叶子节点中存在k,则返回true,否则返回false。

2、目前,b+树的节点在内存中更新后需要持久化到磁盘(disk),以保证数据的完整性。如果要修改的节点(bnode)不在内存中,则需要将其从磁盘加载到内存中后再做修改。在不带电池保护的内存系统中,内存中b+树的更新在还没有持久化到磁盘中之前,此时掉电将导致数据丢失。但是如果在每次数据更新时都更新b+树并且等待其持久化后再返回,则会严重影响系统的性能。这里的持久化(persistence)指的是将程序数据在持久状态和瞬时状态间转换的机制。持久化能够把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、xml数据文件中等等。

3、为了避免每次数据更新时都更新b+树所带来的性能问题,采用日志(journal)来持久化需要更改的键值(key),也就是说采用日志来持久化需要更改的键值,能够避免b+树频繁的持久化节点数据。在具体实施时,键值的更新是存放在日志内存中,每隔一段时间或者日志缓存(buffer)满了后进行持久化,也就是说,数据先写入到日志层(如存储至日志内存中),再从日志层将数据写入到数据层(如存储至磁盘中)。虽然此方式能够提升性能,减少b+树更新的次数,但是若在此过程中,突然掉电或者其他异常,则会导致日志缓存数据丢失,进而导致用户数据会丢失。而为了保证数据不丢失,则会每次有键值更新的时候,将日志缓存进行持久化,但是同样会导致性能下降和明显的日志数据写放大、降低磁盘寿命等问题。另外,日志的持久化虽然减少了b+树节点持久化的次数,但是为了保证写数据的可访问性,内存中的b+树索引结构需要更新,因此会存在从磁盘中读取已持久化的数据,b+插入,分裂等一系列操作,影响写io的性能。

4、为了提升系统的读写性能,减少因为保证数据一致性而带来的日志数据写放大、性能损耗、降低固态硬盘使用寿命等问题。在实施过程中,通常会将大块的io避开(bypass)日志层,尽量减少写放大的问题,但是问题依然存在一些问题,会给文件系统的快照,克隆的实现等带来更多的复杂性,这主要是因为需要考虑避开日志层的io数据。这里的大块io指的是一次读/写io操作的连续扇区数目较大。

5、综上可知,目前所采用的通过日志的持久化方式来更新b+树的方式还存在上述诸多缺点,因而亟需解决现有技术中利用日志的持久化方式更新b+树所带来的问题。

6、公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。


技术实现思路

1、本发明的目的在于提供一种文件系统的数据处理方法,其能够改善文件系统的读写性能,提高固态硬盘的使用寿命。

2、本发明的目的在还于提供一种文件系统的数据处理装置,能够实现上述所述的数据处理方法,能够改善文件系统的读写性能,提高固态硬盘的使用寿命。

3、本发明的目的在还于提供一种电子设备,能够实现上述所述的数据处理方法,能够改善文件系统的读写性能,提高固态硬盘的使用寿命。

4、本发明的目的在还于提供一种计算机可读存储介质,能够实现上述所述的数据处理方法,能够改善文件系统的读写性能,提高固态硬盘的使用寿命。

5、为实现上述目的,本发明的实施例提供了一种文件系统的数据处理方法,所述数据处理方法包括:

6、接收并响应写操作请求,选取基于二叉树索引的日志空间写入相应数据;

7、判断是否满足预设条件;

8、响应于满足预设条件,将二叉树索引转换为用于索引数据空间的b+树索引,以将日志空间转换为数据空间。

9、在本发明的一个或多个实施方式中,所述二叉树的每个节点存储用于记录文件修改信息的文件块信息,所述文件修改信息包括被修改文件的偏移位置、修改的长度、修改数据存放的段编号、修改数据在段中的偏移位置。

10、在本发明的一个或多个实施方式中,所述预设条件选自日志空间已满、在写操作后经历了预设时间中的一种。

11、在本发明的一个或多个实施方式中,所述二叉树为avl树。

12、在本发明的一个或多个实施方式中,所述将所述二叉树索引转换为b+树索引包括:

13、将二叉树的节点插入至b+树的节点中;

14、判断当前b+树的节点中键值的数量是否超过数量限制;

15、响应于超过数量限制,将当前节点进行分裂。

16、在本发明的一个或多个实施方式中,将所述二叉树索引转换为b+树索引还包括:

17、在将二叉树的节点插入到b+树的节点中之前,还对二叉树的每个节点进行排序。

18、在本发明的一个或多个实施方式中,所述二叉树的每个节点按照被修改文件的偏移位置进行排序。

19、在本发明的一个或多个实施方式中,所述数据处理方法还包括:

20、接收并响应读操作请求,通过二叉树查找相应日志空间;

21、判断日志空间内是否存在相应数据;

22、响应于日志空间不存在数据,则通过b+树查找数据空间获取数据。

23、在本发明的一个或多个实施方式中,所述数据处理方法还包括:

24、记录用作日志空间的段;

25、在将日志空间转换为数据空间后,清除记录。

26、本发明的实施例提供了一种文件系统的数据处理装置,所述数据处理装置包括:

27、存储模块,用于接收并响应写操作请求,选取基于二叉树索引的日志空间写入相应数据;

28、判断模块,用于判断是否满足预设条件;

29、转换模块,用于响应于满足预设条件,将二叉树索引转换为用于索引数据空间的b+树索引,以将日志空间转换为数据空间。

30、本发明的实施例提供了一种电子设备,所述电子设备包括:

31、至少一个处理器;以及

32、至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理器并且存储用于由所述至少一个处理器执行的计算机程序,所述计算机程序由所述至少一个处理器执行时,使得所述电子设备执行上述所述的方法。

33、本发明的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被机器执行时实现上述所述的方法。

34、与现有技术相比,本发明通过将二叉树索引转换为b+树索引,以便于将日志空间直接转换为数据空间,一方面可有效避免数据先写入到日志空间,再从日志空间读取写入到数据空间中的操作步骤,降低了固态硬盘的写入次数,进而提高了固态硬盘的使用寿命。另一方面还可以避免执行读取已持久化的数据、b+树插入、分裂等一系列操作,改善文件系统的写操作性能。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1