一种文件读取方法、存储设备及读取系统技术方案

技术编号:9721765 阅读:186 留言:0更新日期:2014-02-27 15:05
本发明专利技术实施例提供了一种文件读取方法、存储设备及读取系统,涉及文件读取领域,该方法包括:存储设备接收客户端发送的第一读取请求,第一读取请求请求的待读数据是文件的一部分;从缓存中读取待读数据中位于缓存中的数据,从第一存储介质中读取待读数据中没有位于缓存中的数据;从第一存储介质中预读至少一个容器的数据,并将预读出的数据存储到缓存中,预读的容器中包含有文件的至少一个未读取文件分片。存储设备包括:接收模块、读取模块和预读模块。读取系统包括:用户设备和前述存储设备。本发明专利技术可以减少读取数据的时间开销,且不需要额外的硬件开支,节省了硬件成本。

【技术实现步骤摘要】
【国外来华专利技术】一种文件读取方法、存储设备及读取系统
本专利技术涉及文件读写领域,特别涉及一种文件读取方法、存储设备及读取系统。
技术介绍
DataDe-duplication(重复数据删除)技术广泛应用于存储领域。以备份系统为例,DataDe-duplication技术顺序读取待备份文件中一定大小的数据块,并检索之前已备份的数据块中是否已经存在相同的数据块。若存在与待备份数据块相同的已备份数据块,则不备份,而让待备份的文件引用之前已备份的数据块;只备份没有检索到的数据块。这里,将引用了之前已备份的数据块的文件称为重复数据删除文件(下文简称重删文件)。存储系统中已备份数据块,也称为重复数据块。由于引用了之前已备份的数据块,而这些被引用的数据块是分多次备份的,所以重删文件所具有的数据块或者说组成重删文件的数据块,在磁盘上的物理位置通常不是连续的。因此,重删文件的读取过程实际上是一个从包含有数据碎片的磁盘中读数据的过程,需要从磁盘中经过若干次的磁盘寻道才能读出所有数据块,而且磁盘的读取速度本身比较慢,这样会增加读取过程所用的时间开销。为了解决该问题,现有技术提供了一种重删文件的读取方法。具体地,该方法采用额外的存储设备作为Cache(缓存),将备份的所有重复数据块存放在该额外的存储设备上。读取重删文件时,只要读取的数据块引用了已备份的数据块,就从该额外的存储设备中读出相应的重复数据块。在实现本专利技术的过程中,专利技术人发现现有技术至少存在以下问题:由于备份的重复数据块的数据量庞大,所以采用的存储设备的容量也很大,并且为了保证读取速度,该存储设备的性能需要比硬盘的性能要高,通常采用的额外存储设备为固态硬盘(SolidStateDisk,简称SSD),而该SSD价格昂贵,从而增加了硬件成本。
技术实现思路
为了节省硬件成本并提高文件的读取性能,本专利技术实施例提供了一种文件读取方法、存储设备及读取系统。所述技术方案如下:第一方面,本专利技术实施例提供了一种文件读取方法,适用于读取存储在存储设备上的文件,所述存储设备包括第一存储介质和缓存,所述缓存的访问速度大于所述第一存储介质的访问速度,所述第一存储介质上有多个存储容器,所述文件包括多个文件分片,所述方法包括:所述存储设备接收客户端发送的第一读取请求,所述第一读取请求请求的待读数据是所述文件的一部分;从所述缓存中读取所述待读数据中位于所述缓存中的数据,从所述第一存储介质中读取所述待读数据中没有位于所述缓存中的数据;从所述第一存储介质中预读至少一个容器的数据,并将预读出的数据存储到所述缓存中,预读的容器中包含有所述文件的至少一个未读取文件分片。可选地,所述从所述第一存储介质中预读至少一个容器的数据,并将预读出的数据存储到所述缓存中,包括:从所述第一存储介质中,把预定量的未读取文件分片所在的容器中,包含所述预定量的文件分片的数量大于阈值的容器内的数据预读出来,并将预读出的数据存储到所述缓存中。可选地,所述方法还包括:在所述预定量的未读取文件分片中,选择包含所述未读取文件分片的数量不大于所述阈值的容器内的所述未读取文件分片,将选择出的所述未读取文件分片预读出并存储到所述缓存中。可选地,所述从所述第一存储介质中,把预定量的未读取文件分片所在的容器中,包含所述未读取文件分片的数量大于阈值的容器内的数据预读出来,包括:获取第一地址指针,所述第一地址指针指向所述待读数据对应的文件分片中的最后一个文件分片;在所述文件的地址指针表中,获取所述第一地址指针之后的预定量的地址指针;在获取到的地址指针指向的文件分片所在的容器中,统计各所述容器被所述预定量的地址指针所指向的次数;比较统计的次数是否大于所述阈值,若统计的次数大于所述阈值,则将所述次数大于所述阈值的容器内的数据预读出来。可选地,所述从所述第一存储介质中预读至少一个容器的数据,并将预读出的数据存储到所述缓存中,包括:从所述第一存储介质中,把预定量的未读取文件分片所在的容器内的数据预读出来,并将预读出的数据存储到所述缓存中。可选地,所述从所述第一存储介质中,把预定量的未读取文件分片所在的容器内的数据预读出来,包括:获取第一地址指针,所述第一地址指针指向所述待读数据对应的文件分片中的最后一个文件分片;在所述文件的地址指针表中,获取所述第一地址指针之后的预定量的地址指针;将获取到的地址指针指向的文件分片所在的容器内的数据预读出来。可选地,所述从所述第一存储介质中预读至少一个容器的数据,并将预读出的数据存储到所述缓存中,包括:从所述第一存储介质中,按照预定量的未读取文件分片所在的容器的序号顺序,将至少一个包含所述预定量的文件分片的容器内的数据预读出来,并将预读出的数据存储到所述缓存中。可选地,所述从所述第一存储介质中,按照预定量的未读取文件分片所在的容器的序号顺序,将至少一个包含所述预定量的文件分片的容器内的数据预读出来,包括:获取第一地址指针,所述第一地址指针指向所述待读数据对应的文件分片中的最后一个文件分片;在所述文件的地址指针表中,获取所述第一地址指针之后的预定量的地址指针;按照获取到的地址指针指向的文件分片所在的容器的序号顺序,将至少一个获取到的地址指针指向的文件分片所在的容器内的数据预读出来。可选地,所述在所述文件的地址指针表中,获取所述第一地址指针之后的预定量的地址指针,包括:在所述文件的地址指针表中,以所述第一地址指针为起始指针,比较所述地址指针表中所述第一地址指针之后的所有地址指针的数量是否不大于预定量;若所述第一地址指针之后的所有地址指针的数量大于预定量,则获取所述第一地址指针之后的所有地址指针,若所述第一地址指针之后的所有地址指针的数量不大于预定量,则获取所述预定量的地址指针。可选地,所述预定量的未读取文件分片在所述文件中是连续的,且所述预定量的未读取文件分片在所述文件中,与所述待读数据对应的文件分片相邻。可选地,所述第一读取请求为满足预读触发条件的读取请求,所述预读触发条件包括以下条件中的一种或多种:所述存储设备接收到所述第一读取请求的时间在预定时间内;所述缓存中不存在所述第一读取请求请求的待读数据,或者所述第一读取请求请求的待读数据中的一部分不存在所述缓存中;以及;在所述存储设备读取出所述第一读取请求请求的待读数据后,所述缓存中未被读取的、属于所述文件的文件分片的数量小于预设量。可选地,所述第一读取请求为满足预读触发条件的读取请求,所述预读触发条件包括以下条件中的一种或多种:所述存储设备接收到所述第一读取请求的时间在预定时间内;所述缓存中不存在所述第一读取请求请求的待读数据,或者所述第一读取请求请求的待读数据中的一部分不存在所述缓存中;在所述存储设备读取出所述第一读取请求请求的待读数据后,所述缓存中未被读取的、属于所述文件的文件分片的数量小于预设量;以及;所述第一读取请求请求的待读数据对应的文件分片为,在上一次预读时,所述预定量的未读取文件分片以外的未读取文件分片。可选地,所述方法还包括:所述存储设备接收客户端发送的第二读取请求,所述第二读取请求请求的待读数据是所述文件的一部分;从所述缓存中,读取所述第二读取请求请求的待读数据中,位于所述缓存中的数据;从所述第一存储介质中,读取所述第二读取请求请求的待读数据中,没有位于所述缓本文档来自技高网
...
一种文件读取方法、存储设备及读取系统

【技术保护点】
一种文件读取方法,适用于读取存储在存储设备上的文件,所述存储设备包括第一存储介质和缓存,所述缓存的访问速度大于所述第一存储介质的访问速度,所述第一存储介质上有多个容器,所述文件包括多个文件分片,其特征在于,所述方法包括:所述存储设备接收客户端发送的第一读取请求,所述第一读取请求请求的待读数据是所述文件的一部分;从所述缓存中读取所述待读数据中位于所述缓存中的数据,从所述第一存储介质中读取所述待读数据中没有位于所述缓存中的数据;从所述第一存储介质中预读至少一个容器的数据,并将预读出的数据存储到所述缓存中,预读的容器中包含有所述文件的至少一个未读取文件分片。

【技术特征摘要】
【国外来华专利技术】1.一种文件读取方法,适用于读取存储在存储设备上的文件,所述存储设备包括第一存储介质和缓存,所述缓存的访问速度大于所述第一存储介质的访问速度,所述第一存储介质上有多个容器,所述文件包括多个文件分片,其特征在于,所述方法包括:所述存储设备接收客户端发送的第一读取请求,所述第一读取请求为满足预读触发条件的读取请求,所述第一读取请求请求的待读数据是所述文件的一部分;从所述缓存中读取所述待读数据中位于所述缓存中的数据,从所述第一存储介质中读取所述待读数据中没有位于所述缓存中的数据;从所述第一存储介质中预读至少一个容器的数据,并将预读出的数据存储到所述缓存中,预读的容器中包含有所述文件的至少一个未读取文件分片;所述从所述第一存储介质中预读至少一个容器的数据包括:从所述第一存储介质中,把预定量的未读取文件分片所在的容器中,包含所述预定量的未读取文件分片的数量大于阈值的容器内的数据预读出来;或者,从所述第一存储介质中,把预定量的未读取文件分片所在的容器内的数据预读出来;或者,从所述第一存储介质中,按照预定量的未读取文件分片所在的容器的序号顺序,将至少一个包含所述预定量的文件分片的容器内的数据预读出来。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述预定量的未读取文件分片中,选择包含所述未读取文件分片的数量不大于所述阈值的容器内的所述未读取文件分片,将选择出的所述未读取文件分片预读出并存储到所述缓存中。3.根据权利要求1所述的方法,其特征在于,所述从所述第一存储介质中,把预定量的未读取文件分片所在的容器中,包含所述未读取文件分片的数量大于阈值的容器内的数据预读出来,包括:获取第一地址指针,所述第一地址指针指向所述待读数据对应的文件分片中的最后一个文件分片;在所述文件的地址指针表中,获取所述第一地址指针之后的预定量的地址指针;在获取到的地址指针指向的文件分片所在的容器中,统计各所述容器被所述预定量的地址指针所指向的次数;比较统计的次数是否大于所述阈值,若统计的次数大于所述阈值,则将所述次数大于所述阈值的容器内的数据预读出来。4.根据权利要求2所述的方法,其特征在于,所述从所述第一存储介质中,把预定量的未读取文件分片所在的容器中,包含所述未读取文件分片的数量大于阈值的容器内的数据预读出来,包括:获取第一地址指针,所述第一地址指针指向所述待读数据对应的文件分片中的最后一个文件分片;在所述文件的地址指针表中,获取所述第一地址指针之后的预定量的地址指针;在获取到的地址指针指向的文件分片所在的容器中,统计各所述容器被所述预定量的地址指针所指向的次数;比较统计的次数是否大于所述阈值,若统计的次数大于所述阈值,则将所述次数大于所述阈值的容器内的数据预读出来。5.根据权利要求1所述的方法,其特征在于,所述从所述第一存储介质中,把预定量的未读取文件分片所在的容器内的数据预读出来,包括:获取第一地址指针,所述第一地址指针指向所述待读数据对应的文件分片中的最后一个文件分片;在所述文件的地址指针表中,获取所述第一地址指针之后的预定量的地址指针;将获取到的地址指针指向的文件分片所在的容器内的数据预读出来。6.根据权利要求1所述的方法,其特征在于,所述从所述第一存储介质中,按照预定量的未读取文件分片所在的容器的序号顺序,将至少一个包含所述预定量的文件分片的容器内的数据预读出来,包括:获取第一地址指针,所述第一地址指针指向所述待读数据对应的文件分片中的最后一个文件分片;在所述文件的地址指针表中,获取所述第一地址指针之后的预定量的地址指针;按照获取到的地址指针指向的文件分片所在的容器的序号顺序,将至少一个获取到的地址指针指向的文件分片所在的容器内的数据预读出来。7.根据权利要求3所述的方法,其特征在于,所述在所述文件的地址指针表中,获取所述第一地址指针之后的预定量的地址指针,包括:在所述文件的地址指针表中,以所述第一地址指针为起始指针,比较所述地址指针表中所述第一地址指针之后的所有地址指针的数量是否不大于预定量;若所述第一地址指针之后的所有地址指针的数量大于预定量,则获取所述第一地址指针之后的所有地址指针,若所述第一地址指针之后的所有地址指针的数量不大于预定量,则获取所述预定量的地址指针。8.根据权利要求4所述的方法,其特征在于,所述在所述文件的地址指针表中,获取所述第一地址指针之后的预定量的地址指针,包括:在所述文件的地址指针表中,以所述第一地址指针为起始指针,比较所述地址指针表中所述第一地址指针之后的所有地址指针的数量是否不大于预定量;若所述第一地址指针之后的所有地址指针的数量大于预定量,则获取所述第一地址指针之后的所有地址指针,若所述第一地址指针之后的所有地址指针的数量不大于预定量,则获取所述预定量的地址指针。9.根据权利要求5所述的方法,其特征在于,所述在所述文件的地址指针表中,获取所述第一地址指针之后的预定量的地址指针,包括:在所述文件的地址指针表中,以所述第一地址指针为起始指针,比较所述地址指针表中所述第一地址指针之后的所有地址指针的数量是否不大于预定量;若所述第一地址指针之后的所有地址指针的数量大于预定量,则获取所述第一地址指针之后的所有地址指针,若所述第一地址指针之后的所有地址指针的数量不大于预定量,则获取所述预定量的地址指针。10.根据权利要求6所述的方法,其特征在于,所述在所述文件的地址指针表中,获取所述第一地址指针之后的预定量的地址指针,包括:在所述文件的地址指针表中,以所述第一地址指针为起始指针,比较所述地址指针表中所述第一地址指针之后的所有地址指针的数量是否不大于预定量;若所述第一地址指针之后的所有地址指针的数量大于预定量,则获取所述第一地址指针之后的所有地址指针,若所述第一地址指针之后的所有地址指针的数量不大于预定量,则获取所述预定量的地址指针。11.根据权利要求1所述的方法,其特征在于,所述预定量的未读取文件分片在所述文件中是连续的,且所述预定量的未读取文件分片在所述文件中,与所述待读数据对应的文件分片相邻。12.根据权利要求1-11任一项所述的方法,其特征在于,所述第一读取请求为满足预读触发条件的读取请求,所述预读触发条件包括以下条件中的一种或多种:所述存储设备接收到所述第一读取请求的时间在预定时间内;所述缓存中不存在所述第一读取请求请求的待读数据,或者所述第一读取请求请求的待读数据中的一部分不存在所述缓存中;以及;在所述存储设备读取出所述第一读取请求请求的待读数据后,所述缓存中未被读取的、属于所述文件的文件分片的数量小于预设量。13.根据权利要求2-11任一项所述的方法,其特征在于,所述第一读取请求为满足预读触发条件的读取请求,所述预读触发条件包括以下条件中的一种或多种:所述存储设备接收到所述第一读取请求的时间在预定时间内;所述缓存中不存在所述第一读取请求请求的待读数据,或者所述第一读取请求请求的待读数据中的一部分不存在所述缓存中;在所述存储设备读取出所述第一读取请求请求的待读数据后,所述缓存中未被读取的、属于所述文件的文件分片的数量小于预设量;以及;所述第一读取请求请求的待读数据对应的文件分片为,在上一次预读时,所述预定量的未读取文件分片以外的未读取文件分片。14.根据权利要求1-11任一项所述的方法,其特征在于,所述方法还包括:所述存储设备接收客户端发送的第二读取请求,所述第二读取请求请求的待读数据是所述文件的一部分;从所述缓存中,读取所述第二读取请求请求的待读数据中,位于所述缓存中的数据;从所述第一存储介质中,读取所述第二读取请求请求的待读数据中,没有位于所述缓存中的数据。15.根据权利要求12所述的方法,其特征在于,所述方法还包括:所述存储设备接收客户端发送的第二读取请求,所述第二读取请求请求的待读数据是所述文件的一部分;从所述缓存中,读取所述第二读取请求请求的待读数据中,位于所述缓存中的数据;从所述第一存储介质中,读取所述第二读取请求请求的待读数据中,没有位于所述缓存中的数据。16.根据权利要求13所述的方法,其特征在于,所述方法还包括:所述存储设备接收客户端发送的第二读取请求,所述第二读取请求请求的待读数据是所述文件的一部分;从所述缓存中,读取所述第二读取请求请求的待读数据中,位于所述缓存中的数据;从所述第一存储介质中,读取所述第二读取请求请求的待读数据中,没有位于所述缓存中的数据。17.一种文件存储设备,所述存储设备用于存储文件,所述存储设备包括第一存储介质和缓存,所述缓存的访问速度大于所述第一存储介质的访问速度,所述第一存储介质上有多个容器,所述文件包括多个文件分片,其特征在于,所述存储设备包括:接收模块,用于接收客户端发送的第一读取请求,所述第一读取请求为满足预读触发条件的读取请求,所述第一读取请求请求的待读数据是所述文件的一部分;读取模块,用于从所述缓存中读取所述待读数据中位于所述缓存中的数据,从所述第一存储介质中读取所述待读数据中没有位于所述缓存中的数据;预读模块,用于从所述第一存储介质中预读至少一个容器的数据,并将预读出的数据存储到所述缓存中,预读的容器中包含有所述文件的至少一个未读取文件分片;所述预读模块,用于从所述第一存储介质中,把预定量的未读取文件分片所在的容器中,包含所述预定量的未读取文件分片的数量大于阈值的容器内的数据预读出来;或者,从所述第一存储介质中,把预定量的未读取文件分片所在的容器内的数据预读出来;或者,从所述第一存储介质中,按照预定量的未读取文件分片所在的容器的序号顺序,将至少一个包含所述预定量的文件分片的容器内的数据预读出来。18.根据权利要求17所述的存储设备,其特征在于,所述预读模块还用于:在所述预定量的未读取文件分片中,选择包含所述未读取文件分片的数量不大于所述阈值的容器内的所述未读取文件分片,将选择出的所述未读取文件分片预读出并存储到所述缓存中。19.根据权利要求17所述的存储设备,其特征在于,所述预读模块包括:第一获取单元,用于获取第一地址指针,所述第一地址指针指向所述待读数据对应的文件分片中的最后一个文件分片;第二获取单元,用于在所述文件的地址指针表中,获取所述第一地址指针之后的预定量的地址指针;统计单元,用于在获取到的地址指针指向的文件分片所在的容器中,统计各所述容器被所述预定量的地址指针所指向的次数;第一预读单元,用于比较统计的次数是否大于所述阈值,若统计的次数大于所述阈值,则将所述次数大于所述阈值的容器内的数据预读出来,并将预读出的数据存储到所述缓存中。20.根据权利要求18所述的存储设备,其特征在于,所述预读模块包括:第一获取单元,用于获取第一地址指针,所述第一地址指针指向所述待读数据对应的文件分片中的最后一个文件分片;第二获取单元,用于在所述文件的地址指针表中,获取所述第一地址指针之后的预定量的地址指针;统计单元,用于在获取到的地址指针指向的文件分片所在的容器中,统计各所述容器被所述预定量的地址指针所指向的次数;第一预读单元,用于比较统计的次数是否大于所述阈值,若统计的次数大于所述阈值,则将所述次数大于所述阈值的容器内的数据预读出来,并将预读出的数据存储到所述缓存中。21.根据权利要求17所述的存储设备,其特征在于,所述预读模块包括:第三获取单元,用于获取第一地址指针,所述第一地址指针指向所述待读数据对应的文件分片中的最后一个文件分片;第四获取单元,用于在所述文件的地址指针表中,获取所述第一地址指针之后的预定量的地址指针;第二预读单元,用于将获取到的地址指针指向的文件分片所在的容器内的数据预读出来,并将预读出的数据存储到所述...

【专利技术属性】
技术研发人员:吴剑
申请(专利权)人:华为技术有限公司
类型:
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1