一种基于固态盘的文件更新方法及系统与流程

文档序号:12550781阅读:151来源:国知局
一种基于固态盘的文件更新方法及系统与流程

本发明属于数据存储技术领域,更具体地,涉及一种基于固态盘的文件更新方法及系统。



背景技术:

闪存是一种非易失的存储器,基于闪存的固态盘具有高性能、低功耗、高可靠等诸多优点,一出现就迅速得到学术界和工业界的接受和重视,逐渐成为计算机存储系统的重要组成部分。近年来,闪存技术得到了长足的发展,随着制造技术的不断进步,闪存存储器在容量上得到了提升,单位价格也有所下降。闪存芯片的部署正在从移动设备中走到个人计算机以及大规模数据中心中去。

针对文件的更新操作,传统的处理方法是将整个文件读取到内存中,添加待插入的数据或者删除数据,然后将整个文件写回到磁盘中。特别地,如果对MB级甚至GB级的大文件仅仅修改几个bit,会产生很大的写放大。



技术实现要素:

针对现有技术的以上缺陷或改进需求,本发明提供了一种基于固态盘的文件更新方法及系统,可以支持对文件的插入和删除,并且对文件中已有数据的修改,可以结合插入和删除实现。由此解决现有技术文件系统中文件更新造成的写放大的技术问题。

为实现上述目的,按照本发明的一个方面,提供了一种基于固态盘的文件更新方法,包括:

(1)文件应用向待修改文件中删除和/或插入一段数据;

(2)存储系统读取该待修改文件的索引节点inode,并放置到内存中;

(3)将对待修改文件的修改记录添加到inode中,其中,对于待修改文件的插入操作,将在待修改文件中的插入位置、待插入数据的物理地址以及待插入数据的长度写入修改记录,对于待修改文件的删除操作,将在待修改文件中的删除位置以及待删除数据的长度写入修改记录,即将待删除的数据部分标记为删除状态;

(4)在内存中写入待插入的数据和/或删除待删除的数据;

(5)将对待修改文件的修改部分写回到固态硬盘SSD中与inode中的修改记录对应的位置,其中,修改部分包括内存中写入的待插入数据和/或删除待删除的数据。

优选地,所述方法还包括:

当对修改后的文件执行读取操作时,读取inode中的修改记录中的修改信息,判断对文件的修改类型是插入操作还是删除操作;

若是删除操作,则跳过从删除位置开始的长度为待删除数据长度的数据,获取剩余位置处的数据;

若是插入操作,则读取到文件的插入位置时,先读取从待插入数据的物理地址开始的长度为待插入数据的长度的数据,然后从插入位置的下一位置处继续读取数据。

按照本发明的另一方面,提供了一种基于固态盘的文件更新系统,包括:

文件修改模块,用于通过文件应用向待修改文件中删除和/或插入一段数据;

inode读取模块,用于通过存储系统读取该待修改文件的索引节点inode,并放置到内存中;

修改记录添加模块,用于将对待修改文件的修改记录添加到inode中,其中,对于待修改文件的插入操作,将在待修改文件中的插入位置、待插入数据的物理地址以及待插入数据的长度写入修改记录,对于待修改文件的删除操作,将在待修改文件中的删除位置以及待删除数据的长度写入修改记录,即将待删除的数据部分标记为删除状态;

内存数据修改模块,用于在内存中写入待插入的数据和/或删除待删除的数据;

固态硬盘数据修改模块,用于将对待修改文件的修改部分写回到固态硬盘SSD中与inode中的修改记录对应的位置,其中,修改部分包括内存中写入的待插入数据和/或删除待删除的数据。

优选地,所述系统还包括:

判断模块,用于当对修改后的文件执行读取操作时,读取inode中的修改记录中的修改信息,判断对文件的修改类型是插入操作还是删除操作;

第一判断处理模块,用于在是删除操作时,跳过从删除位置开始的长度为待删除数据长度的数据,获取剩余位置处的数据;

第二判断处理模块,用于在是插入操作时,读取到文件的插入位置时,先读取从待插入数据的物理地址开始的长度为待插入数据的长度的数据,然后从插入位置的下一位置处继续读取数据。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,主要有以下的技术优点:

1、修改文件时,只需将待修改的文件部分写入固态盘,减少了写入固态盘的数据量。

2、由于只写入修改部分的数据,减少了文件写入消耗的时间,提高了文件应用的性能。

3、由于闪存单元的擦除次数有限,较少的数据量写入可以减少固态盘异地更新引起的写放大,延长固态盘的寿命。

附图说明

图1为本发明实施例公开的一种基于固态盘的文件更新方法的流程示意图;

图2为文件inode的结构示意图;

图3为本发明实施例公开的一种基于固态盘的文件更新流程的交互结构示意图;

图4为插入数据前的数据布局;

图5为插入数据后的数据布局;

图6为删除数据前的数据布局;

图7为删除数据后的数据布局;

图8为修改数据之前的数据布局;

图9为修改数据之后的数据布局;

图10为更新缓存前的数据布局;

图11为更新缓存后的数据布局;

图12为本发明实施例公开的一种基于固态盘的文件更新系统的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

图1是本发明实施例公开的一种基于固态盘的文件更新方法的流程示意图,在图1所示的方法中,包括以下步骤:

(1)文件应用向待修改文件中删除和/或插入一段数据;

(2)存储系统读取该待修改文件的索引节点inode,并放置到内存中;

(3)将对待修改文件的修改记录添加到inode中,其中,对于待修改文件的插入操作,将在待修改文件中的插入位置、待插入数据的物理地址以及待插入数据的长度写入修改记录,对于待修改文件的删除操作,将在待修改文件中的删除位置以及待删除数据的长度写入修改记录,即将待删除的数据部分标记为删除状态;

为了减少由修改文件数据导致的写放大,可以通过在元数据层修改指针来降低写的数据量。在索引节点inode中添加了修改记录ModificationRecords用于记录对文件的修改信息。如图2所示,修改记录中的修改项是<operation,*addr1,*addr2,length>四元组的形式,其中operation分为两种状态插入INSERT和删除DELETE,表示对文件的修改是插入数据还是删除数据。*addr1表示对文件修改的位置,*addr2表示插入数据的物理地址。对于INSERT状态,len表示待插入数据的长度;对于DELETE状态,len表示待删除数据的长度,即将被删除的部分标记为删除状态。

(4)在内存中写入待插入的数据和/或删除待删除的数据;

(5)将对待修改文件的修改部分写回到固态硬盘SSD中与inode中的修改记录对应的位置,其中,修改部分包括内存中写入的待插入数据和/或删除待删除的数据。

为了方便对本发明实施例公开的一种基于固态盘的文件更新方法的理解,以下分别进行具体的举例说明。

图3为本发明实施例公开的一种基于固态盘的文件更新方法的流程的交互结构示意图,在对文件进行插入操作时,在元数据中的修改记录添加修改信息,只需要写入插入数据就能完成对文件的修改,达到了降低写放大的目的。以图4为例,是向一个文件中插入数据的具体过程。如图4中所示,在插入数据之前,该文件由4096*4字节的数据内容,由4个指针指向这4个数据页。如图5中所示,插入大小为100字节的数据之后,该文件指向数据的指针多出一项,修改记录中的项记录了添加这个指针的修改信息。而多出的指针指向的数据页P5,包含插入的100字节数据。以这种方式只需要写入一个4KB大小的数据页和一个指针,即可完成对文件的修改,相比于重新写入数据大大降低了写放大。

当需要删除文件中的一段数据时,我们只需要在inode中的修改记录中添加一条删除数据的记录,即将待删除数据标记为删除状态,并不是物理意义上的删除。删除数据前的数据布局如图6所示,删除数据后的数据布局如图7所示。

当需要对文件做修改时,我们可以将插入和删除结合起来达到修改文件的目的。如图8所示,是通过插入和删除来修改文件的实例。图8是插入数据前的数据布局,该文件由4096*4字节的数据内容,由4个指针指向这4个数据页。我们对闪存页P2上的数据进行修改,首先我们读取P2上的数据到内存中,修改数据,写入到一个新的闪存页P5,然后将P2所在的闪存页标记为删除,最后更新元数据中指向数据的指针即可。修改文件之后的数据布局如图9所示。

当对修改后的文件执行读取操作时,我们需要读取inode中的修改记录中的项,根据operation的类型判断对文件执行了插入操作还是删除操作。若是删除操作,则需要跳过*addr1开始长度为len的数据,获取剩余位置的数据;若是插入操作,则读取到文件的*addr1位置时,先读取*addr2开始长度为len的数据,然后再从*addr1+1处继续读取数据。

如图10所示,由于为了避免写入过多的数据在元数据中添加了指向待插入数据的指针,导致缓存cache中的数据和实际数据不一致。因此,需要更新缓存保证数据的一致性。一种可行的方式是,通过更新缓存中的数据页,将新插入的数据插入到缓存中的对应位置,但是这种方式相对复杂,会增加写操作的开销。本发明实施例提出一种简单高效的方法,当因为元数据中添加指针导致缓存中数据不一致时,将缓存中的数据全部释放掉,然后从固态硬盘SSD上重新读取数据,更新缓存后的数据布局如图11所示。由于SSD具有读写的不对称性,读性能比写性能要好,可以很快重新缓存数据,同时不会占据SSD有限的写带宽。

如图12所示为本发明实施例公开的一种基于固态盘的文件更新系统,在图12所示的系统中包括以下模块:

文件修改模块,用于通过文件应用向待修改文件中删除和/或插入一段数据;

inode读取模块,用于通过存储系统读取该待修改文件的索引节点inode,并放置到内存中;

修改记录添加模块,用于将对待修改文件的修改记录添加到inode中,其中,对于待修改文件的插入操作,将在待修改文件中的插入位置、待插入数据的物理地址以及待插入数据的长度写入修改记录,对于待修改文件的删除操作,将在待修改文件中的删除位置以及待删除数据的长度写入修改记录,即将待删除的数据部分标记为删除状态;

内存数据修改模块,用于在内存中写入待插入的数据和/或删除待删除的数据;

固态硬盘数据修改模块,用于将对待修改文件的修改部分写回到固态硬盘SSD中与inode中的修改记录对应的位置,其中,修改部分包括内存中写入的待插入数据和/或删除待删除的数据。

本发明所述的基于固态盘的文件更新方法及系统,其基本思想是在元数据中的修改记录添加修改信息,只需要写入插入数据就能完成对文件的修改,达到了降低写放大的目的。具体修改信息的记录会有多种,凡是采用本发明的设计结构和思路,做一些简单的变化或更改的设计,都落入本发明保护的范围。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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