一种文件存储的方法、装置及存储系统与流程

文档序号:15614894发布日期:2018-10-09 21:07阅读:112来源:国知局
本发明实施例涉及存储系统领域,尤其涉及一种文件存储的方法、装置及存储系统。
背景技术
::为了解决数据存储安全性问题,独立磁盘冗余阵列(redundantarraysofinexpensivedisks,raid)被提出,其是一种将多块独立的磁盘disk按照不同的方式组合形成一个单独的逻辑硬盘组。以raid5为例,其将数据以条带的形式存储在raid5磁盘阵列的各个磁盘上,且每个条带内还具有还原该条带所存储的数据的校验信息,一个条带内的校验信息和存储于该条带上的数据位于不同的磁盘上,这样当raid5磁盘阵列中一个磁盘发生故障时,那么发生故障的磁盘上的被损坏数据可以根据未发生故障的磁盘上的数据以及校验信息恢复和重建。如图1所示,图1示出了raid5的数据存储过程中,在图1中以raid5磁盘阵列包括磁盘1-磁盘3共3块磁盘为例,待写入raid5磁盘阵列的数据被分割为6个等长的数据块,例如数据块1-数据块6,其中,数据块1、数据块2以及校验信息1形成条带1,数据块3、数据块4和校验信息2形成条带2,数据块5、数据块6和校验信息3形成条带3。但是,现有技术中是以逻辑磁盘块来分配和管理raid5磁盘阵列的,且磁盘阵列仅支持一种大小的条带(例如,4k)。由于条带大小不同,存储文件时的存储性能也不同,因此,若一个文件既包括大容量的文件又包括小容量的文件,若采用大条带存储该文件,大条带超过了小容量的文件的存储需要,则会浪费该大条带的空间,若采用小条带存储该文件,则每次存储该文件时所能存储的文件容量大小将会被限制,这样大容量的文件需要多次存储才能完全存储,因此会降低存储性能。技术实现要素:本申请提供一种文件存储的方法、装置及存储系统,用以解决现有技术中由于磁盘阵列的条带大小固定所引起的存储利用率低以及存储性能低的问题。为达到上述目的,本申请采用如下技术方案:第一方面,本发明实施例提供一种文件存储的方法,包括:接收携带目标文件的标识的第一操作请求,该第一操作请求用于在磁盘阵列中写入目标文件,目标文件的标识用于确定目标文件的文件索引表;根据目标文件的标识,获取目标文件的文件索引表,目标文件的文件索引表中记录有目标文件需要的目标条带大小;在需要向磁盘阵列中写入目标文件时,根据目标文件的文件索引表为目标文件分配与目标条带大小相等的第一条带,该第一条带包括至少一个条带,至少一个条带的地址连续。本发明实施例提供一种文件存储的方法,通过根据第一操作请求中携带的目标文件的标识,首先从目标文件的标识所指示的目标文件的文件索引表中确定目标文件需要的目标条带大小,并根据目标文件需要的目标条带大小为其分配与目标条带大小相等的第一属性条带,这样若一个raid5中需要存储多个大小不同的文件时,可以根据每个文件所请求的条带大小实现对该文件的存储,从而避免了现有技术中存在的由于raid5条带固定导致的在存储不同大小的文件时所引起的存储性能低以及浪费存储空间的问题。结合第一方面,在第一方面的第一种可能的实现方式中,目标文件的文件索引表中还记录目标文件的文件内偏移量与磁盘位置之间的映射关系,其中,文件内偏移量为目标文件包括的每个字节相对于目标文件首字节的偏移量,磁盘位置为目标文件包括的每个字节在磁盘阵列包括的磁盘上的存储地址,本发明实施例提供的方法还包括:接收文件系统发送的携带有第一文件内偏移量以及文件读取大小的第二操作请求,第一文件内偏移量是指从目标文件中请求读取的目标内容的起始字节相对于所述目标文件首字节的偏移量,根据第一文件内偏移量,获取存储在第一磁盘位置到第二磁盘位置上的数据作为请求读取的目标内容,第一磁盘位置为第一文件内偏移量在磁盘上的存储地址,第二磁盘位置为请求读取的目标内容的最后一个字节在磁盘上的存储地址;将请求读取的目标内容返回给文件系统。通过读取文件内偏移量所在条带上的所有数据,能够提高读取效率。结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,根据目标文件的标识,获取目标文件的文件索引表,包括:根据目标文件的标识,从根文件索引表中确定与目标文件的标识存在对应关系的用于确定目标文件的文件索引表的第一标识,根文件索引表中至少存储有目标文件的标识与第一标识之间的映射关系;根据第一标识,将第一标识所指示的文件索引表确定为目标文件的文件索引表,通过从根文件索引表中以目标文件的标识索引文件索引表的第一标识,能够提高确定目标文件的文件索引表的准确性。结合第一方面至第一方面的第二种可能的实现方式中任意一项,在第一方面的第三种可能的实现方式中,接收第一操作请求之前,本发明实施例提供的方法还包括:接收携带目标文件需要的目标条带大小的第三操作请求,该第三操作请求用于指示建立目标文件的文件索引表;根据第三操作请求,建立目标文件的文件索引表,目标文件的文件索引表中记录有所述目标文件需要的目标条带大小。结合第一方面至第一方面的第三种可能的实现方式中任意一项,在第一方面的第四种可能的实现方式中,根据所述目标文件的文件索引表为目标文件分配与所述目标条带大小相等的第一属性条带,并按照第一属性条带将目标文件存储在磁盘阵列中之前,本发明实施例提供的方法还包括:确定磁盘阵列中不存在第一属性条带,获取第二属性条带的预设信息表,第二属性条带的预设信息表用于记录第二属性条带包括的至少一个第二条带中每个第二条带的状态,第一属性条带的大小与第二属性条带的大小不同,根据目标条带大小以及第二属性条带的预设信息表中记录的每个第二条带的状态,获取第一属性条带,通过根据系统预先具有的条带大小,获取目标文件请求的条带大小,这样可以实现多条带管理。结合第一方面至第一方面的第四种可能的实现方式中任意一项,在第一方面的第五种可能的实现方式中,目标条带大小小于第二属性条带的大小,根据目标条带大小以及第二属性条带的预设信息表中记录的每个第二条带的状态,获取第一属性条带,包括:根据目标条带大小,将候选第二条带按照预设规则划分为地址连续且大小相等的n个子条带,其中,n为大于或等于2的整数,n个子条带的大小之和等于候选第二条带的大小,候选第二条带为至少一个第二条带中任意一个处于空闲状态的第二条带,将n个子条带中每个子条带作为一个第一条带,以获取第一属性条带。结合第一方面至第一方面的第五种可能的实现方式中任意一项,在第一方面的第六种可能的实现方式中,本发明实施例提供的方法还包括:获取第一属性条带的预设信息表,第一属性条带的预设信息表中记录有n个子条带中每个子条带的状态,根据第一属性条带的预设信息表,确定n个子条带中每个子条带的状态,确定n个子条带的状态均为空闲状态,则将n个子条带合并,以获取一个第二条带。结合第一方面至第一方面的第六种可能的实现方式中任意一项,在第一方面的第七种可能的实现方式中,第一属性条带的大小大于第二属性条带的大小,根据所述目标条带大小以及第二属性条带的预设信息表中记录的每个第二条带的状态,获取第一属性条带,包括:从第二属性条带的预设信息表中获取m个地址连续且处于空闲状态的第二条带,其中,m为大于或等于2的整数,m个地址连续的且处于空闲状态的第二条带的大小之和与第一条带的大小相等,将m个地址连续的且处于空闲状态的第二条带合并,以获取第一属性条带。结合第一方面至第一方面的第七种可能的实现方式中任意一项,在第一方面的第八种可能的实现方式中,一个属性条带的预设信息表包括一个属性条带包括的每个条带与指示符之间的对应关系,指示符包括第一指示符和第二指示符,第一指示符用于指示一个属性条带中的一个条带的状态为空闲状态;第二指示符用于指示一个属性条带中的一个条带的状态为占用状态。第二方面,本发明实施例提供一种文件存储的装置,包括:接收单元,用于接收携带目标文件的标识的第一操作请求,该第一操作请求用于在磁盘阵列中写入目标文件,目标文件的标识用于确定目标文件的文件索引表,获取单元,用于根据目标文件的标识,获取目标文件的文件索引表,目标文件的文件索引表中记录有目标文件需要的目标条带大小,分配单元,用于根据目标文件的文件索引表为目标文件分配与目标条带大小相等的第一属性条带,并按照第一属性条带将目标文件存储在磁盘阵列中,第一属性条带包括至少一个第一条带。结合第二方面,在第二方面的第一种可能的实现方式中,本发明实施例提供的目标文件的文件索引表中还记录目标文件的文件内偏移量与磁盘位置之间的映射关系,其中,文件内偏移量为目标文件包括的每个字节相对于目标文件首字节的偏移量,磁盘位置为目标文件包括的每个字节在磁盘阵列包括的磁盘上的存储地址,接收单元,还用于接收文件系统发送的携带有第一文件内偏移量以及文件读取大小的第二操作请求,第一文件内偏移量是指从目标文件中请求读取的目标内容的起始字节相对于目标文件首字节的偏移量;获取单元,还用于根据第一文件内偏移量,获取存储在第一磁盘位置到第二磁盘位置上的数据作为请求读取的目标内容,第一磁盘位置为第一文件内偏移量在磁盘上的存储地址,第二磁盘位置为请求读取的目标内容的最后一个字节在磁盘上的存储地址;发送单元,用于将请求读取的目标内容返回给文件系统。结合第二方面或第二方面的第一种可能的实现方式中,在第二方面的第二种可能的实现方式中,本发明实施例提供的装置还包括:确定单元,用于根据目标文件的标识,从根文件索引表中确定与目标文件的标识存在对应关系的第一标识,根文件索引表中至少存储有目标文件的标识与第一标识之间的映射关系,第一标识用于确定目标文件的文件索引表;以及根据第一标识,将第一标识所指示的文件索引表确定为目标文件的文件索引表。结合第二方面至第二方面的第二种可能的实现方式中任意一项,在第二方面的第三种可能的实现方式中,接收单元还用于,接收携带目标文件需要的目标条带大小的第三操作请求,第三操作请求用于指示建立目标文件的文件索引表;本发明实施例提供的装置还包括建立单元,用于根据第三操作请求,建立目标文件的文件索引表,目标文件的文件索引表中记录有目标文件需要的目标条带大小。结合第二方面至第二方面的第三种可能的实现方式中任意一项,在第二方面的第四种可能的实现方式中,本发明实施例提供的装置还包括:获取单元,还用于确定磁盘阵列中不存在第一属性条带,获取第二属性条带的预设信息表,第二属性条带的预设信息表用于记录第二属性条带包括的至少一个第二条带中每个第二条带的状态,第一属性条带的大小与第二属性条带的大小不同,以及根据目标条带大小以及第二属性条带的预设信息表中记录的每个第二条带的状态,获取第一属性条带。结合第二方面至第二方面的第四种可能的实现方式中任意一项,在第二方面的第五种可能的实现方式中,目标条带大小小于第二属性条带的大小,本发明实施例提供的装置还包括:划分单元,用于根据目标条带大小,将候选第二条带按照预设规则划分为地址连续且大小相等的n个子条带,其中,n为大于或等于2的整数,n个子条带的大小之和等于候选第二条带的大小,候选第二条带为至少一个第二条带中任意一个处于空闲状态的第二条带,获取单元,具体用于将n个子条带中每个子条带作为一个第一条带,以获取第一属性条带。结合第二方面至第二方面的第五种可能的实现方式中任意一项,在第二方面的第六种可能的实现方式中,获取单元,还用于获取第一属性条带的预设信息表,该第一属性条带的预设信息表中记录有n个子条带中每个子条带的状态,确定单元,还用于根据第一属性条带的预设信息表,确定n个子条带中每个子条带的状态,本发明实施例提供的装置还包括:合并单元,用于确定n个子条带的状态均为空闲状态,则将n个子条带合并,以获取一个第二条带。结合第二方面至第二方面的第六种可能的实现方式中任意一项,在第二方面的第七种可能的实现方式中,第一属性条带的大小大于第二属性条带的大小,获取单元,还用于从第二属性条带的预设信息表中获取m个地址连续且处于空闲状态的第二条带,其中,m为大于或等于2的整数,m个地址连续的且处于空闲状态的第二条带的大小之和与第一条带的大小相等;以及用于将m个地址连续的且处于空闲状态的第二条带合并,以获取第一属性条带。第三方面,本发明实施例提供一种控制器,该控制器包括:处理器、存储器、通信总线和通信接口,其中,处理器、存储器和通信接口通过通信总线连接并完成相互间的通信;通信接口,用于与文件系统及raid通信;存储器,用于存储计算机执行指令;当控制器运行时,处理器,用于运行计算机执行指令,以使得控制器执行如第一方面至第一方面的第八种可能的实现方式中任意一项所描述的文件存储的方法。第四方面,本发明实施例提供一种存储系统,包括文件系统、独立磁盘冗余阵列(redundantarrayofindependentdisks,raid),以及如第二方面至第二方面的第八种可能的实现方式所描述的文件存储的装置或者第三方面所描述的控制器,其中,raid,用于存储文件,文件系统用于下发读取或者写入操作请求。第五方面,本发明实施例提供一种计算机可读存储介质,包括指令,当其在文件存储的装置上运行时,使得文件存储的装置执行如第一方面至第一方面的第八种可能的实现方式中任意一项所描述的文件存储的方法。第六方面,本发明实施例提供一种包含指令的计算机程序产品,当其在文件存储的装置上运行时,使得文件存储的装置执行如第一方面至第一方面的第八种可能的实现方式中任意一项所描述的文件存储的方法。附图说明图1为现有技术中提供的一种raid5的原理示意图;图2a为本发明实施例提供的一种存储系统的结构示意图;图2b为本发明实施例提供的一种文件索引表的结构示意图;图2c为本发明实施例提供的一种文件索引表在存储系统中存储结构示意图;图2d为本发明实施例提供的一种文件存储的装置的结构示意图一;图2e为本发明实施例提供的一种客户端的结构示意图;图3为本发明实施例提供的一种文件存储的方法的流程示意图一;图4为本发明实施例提供的一种文件存储的方法的流程示意图二;图5为本发明实施例提供的一种文件存储的方法的流程示意图三;图6为本发明实施例提供的一种文件存储的方法的流程示意图四;图7为本发明实施例提供的一种预设信息表的采用位图表示的示意图;图8为本发明实施例提供的一种条带划分的示意图;图9为本发明实施例提供的一种不同文件对应不同条带的示意图;图10为本发明实施例提供的一种文件存储的装置的结构示意图二;图11为本发明实施例提供的一种文件存储的装置的结构示意图三。具体实施方式为了便于清楚描述本发明实施例的技术方案,在本发明的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。需要说明的是,本发明实施例中一个属性条带包括至少一个条带,该至少一个条带中每个条带的大小均与该一个属性条带所指示的大小相同,例如,第一属性条带(256k)包括至少一个第一条带,则该至少一个第一条带中每个第一条带的大小均为256k,第二属性条带(32k)包括至少一个第二条带,则该至少一个第二条带中每个第二条带的大小均为32k。一般情况下,条带大小不同,存储系统的存储性能也会不同,例如,以raid5磁盘为例,若请求写入的文件大小为1024k,此时raid5磁盘具有的条带大小为256k,(以raid5包括3个磁盘为例)由于一次能够写入的文件大小为:条带大小×(磁盘个数-1),这样,将1024k的文件写入raid5中,则需要执行2次写入操作才能将1024k的文件写入raid5中,若raid5磁盘具有的条带大小为4k,则需要执行128次写入操作才能将1024k的文件写入raid5中,这样会占用更多的cpu资源,从而降低存储系统性能。另一方面,条带也是raid上的最小单位,例如,若请求写入的文件大小为8k,条带为256k,此时虽然仅需要一次写入操作就可以将8k的文件写入raid5中,但是raid5中可能只存储有8k的数据,这样会使得raid5最多具有504k的空间未存储数据,从而会浪费磁盘空间。现有技术中,一个文件可能既包括大容量的文件,又包括小容量的文件,且大容量的文件和小容量的文件需要的条带大小不同。例如,以文件为视频文件为例,视频文件通常包括媒体内容文件和媒体索引文件,媒体内容文件和媒体索引文件大小相差巨大,通常媒体内容文件的容量大小为几兆(m)或者几十兆甚至几吉,而媒体索引文件的容量大小只有几千(k)或者几十k,若采用满足媒体内容文件的大条带存储该视频文件,则会降低存储空间,若采用满足媒体索引文件存储的小条带存储该视频文件时,则会降低存储系统性能。因此,本发明实施例以文件请求的条带大小来选择满足文件请求的条带大小的条带,并依此来分配raid5空间,这样不仅可以避免由于raid中仅支持一种大小的条带在既存储大容量的文件又存储小容量的文件时,所引起的存储空间浪费和存储性能下降的问题。如图2a所示,图2a示出了本发明实施例提供的文件存储的方法所应用的存储系统架构示意图,该存储系统包括客户端10、文件系统20、存储设备50文件存储的装置30以及独立磁盘冗余阵列raid540(本发明实施例以raid5为例说明,可以理解的是,本发明实施例的独立磁盘冗余阵列还可以为raid0-raid10中任意一个按条带的大小将文件进行i/o的raid)以及文件存储的装置30。其中,客户端10用于向文件系统20发送文件操作请求,该文件操作请求可以为读取操作请求或写入操作请求,也即输入输出(input/output,i/o)请求,该读取操作请求或写入操作请求中携带目标文件的文件内偏移量和读取大小,文件系统20用于根据客户端10发送的文件操作请求确定文件操作请求所请求文件类型,其中,文件类型包括文件元数据,和/或文件数据;文件元数据是指文件系统中的属性数据,比如:文件格式、文件大小等数据,文件数据是指文件的内容数据。文件系统20在确定文件类型为文件元数据时,将文件元数据写入存储设备50中,在确定文件类型为文件数据时,将根据读取操作请求或写入操作请求中携带的文件内偏移量从独立磁盘冗余阵列raid540中读取数据或者向raid540写入数据。本发明实施例中的文件系统可以为:ext3文件系统或者xfs文件系统。其中,raid5至少包括n个磁盘,n为大于或等于3的整数,如图2a所示,图2a以raid5包括三个磁盘为例,如图2a中所示的磁盘401、磁盘402以及磁盘403。可以理解的是,本发明实施例仅是示例性的示出了三个磁盘,在实际使用过程中raid5可以包括三块或三块以上的磁盘。本发明实施例中raid5中的文件存储的装置用于以多种条带大小的方式存储不同大小的文件,以管理raid5中的磁盘,该文件存储的装置用于将待写入raid5的数据按条带划分为多个数据块,将多个数据块和该多个数据块所在的条带上的校验信息存储到阵列中的各个磁盘上,并且校验信息和相对应的数据分别存储于不同的磁盘上,其中任意n-1块磁盘上都存储完整的数据,也就是说有相当于一块磁盘容量的空间用于存储校验信息,其中任何一个盘损坏都可以根据校验信息恢复。其中,校验信息是由每个条带中的数据位使用异或运算(xor)得出,这样在一个磁盘发生损坏时,可以通过条带中的数据位和奇偶校验位使用异或运算来还原丢失的那部分数据。本发明实施例中raid5的起始位置预留一定空间作为索引区(indexzone),索引区用于保存存储在raid5中每个文件对应的文件索引表(fileindextable,fit)、每个类型条带对应的预设信息表(又称为:空闲空间表(freespacetable,fst)),以及根文件索引表(rootfit)。本发明实施例中条带大小指的是写在每块磁盘上的条带数据块的大小。通常,raid的条带大小一般在2kb(b表示字节)到512kb之间(或者更大),其数值是2的n次方,n为大于或等于1的整数,即raid的条带大小可以为2kb,4kb,8kb,16kb,32kb或者256kb。其中,一个文件的文件索引表用于记录该文件的文件内偏移量和磁盘位置之间的映射关系(如图2b所示)以及该文件对应的条带大小,其中,文件内偏移量为该文件包括的每个字节相对于该文件首字节的偏移量,一般用字节表示。磁盘位置为目标文件包括的每个字节在磁盘阵列包括的磁盘上的存储地址。磁盘位置也可以指磁盘读写位置相对磁盘起始位置的偏移,一般用扇区表示。可以理解的是一个文件的文件索引表中存储有多个索引项,一个索引项用于记录一个该文件包括的任意一个文件内偏移量与磁盘位置之间的映射关系,一个索引项通常包括两个字段,一个索引项包括的两个字段通常为:(k,v),其中,k表示文件内偏移量,v表示磁盘位置。例如,如图2b所示,图2b示出了三种属性的条带,即大小为256k的条带、大小为32k的条带和大小为4k的条带,以大小为256k的条带为例,若一个文件需要的条带为256k,且该文件对应的fit中记录的一个索引项为(0,256kb),则表示该文件的第1个字节(也即首字节)存储在磁盘中的地址为256。其中,根文件索引表用于保存存储在raid5中的文件标识与该文件对应的fit之间的映射关系。如表1所示,表1示出了本发明实施例提供的根文件索引表的一种示意:表1根文件索引表控制器可以根据文件系统发送的i/o请求中携带的文件标识,通过查询根文件索引表,以确定每个文件对应的fit的标识,然后根据每个文件对应的fit的标识确定每个文件对应的fit。例如,文件标识为文件1,则文件存储的装置可以通过查询表1确定文件1的fit为fit1。文件标识可以为任意一个可以唯一识别文件的标识,例如,文件的名称、文件地址等。可选的,本发明实施例中的fit采用b树(或b+树)实现。如图2c所示,在b树中,每一个节点对应一个磁盘块,并且每个节点对应的磁盘块大小相等。一个节点存储有多个索引项,如上所描述的一个索引项通常包括的字段为:文件内偏移量和磁盘位置。其中,每个类型条带对应的预设信息表用于指示该类型条带包括的至少一个条带中每个条带的状态(占用状态或者空闲状态)。此外,本发明实施例中的索引区中还保存有raid5的配置管理信息。可以理解的是,本发明实施例中的文件索引表仅是实现记录文件需要的条带大小以及文件内偏移与磁盘位置之间映射关系的一种实现方式,还可以采用其他实现方式来记录文件需要的条带大小以及文件内偏移与磁盘位置之间映射关系,本发明实施例对此不进行限定。根文件索引表仅是实现记录文件的标识以及文件对应的文件索引表的标识之间映射关系的一种实现方式,还可以采用其他实现方式来记录文件的标识以及文件对应的文件索引表的标识之间映射关系,本发明实施例对此不进行限定。预设信息表仅是实现记录每个属性条带包括的条带状态的一种实现方式,当然还可以采用其他形式来实现记录每个属性条带包括的条带状态,本发明实施例对此不进行限定。本发明实施例中的文件存储的装置可以采用控制器来实现,如图2d所示,图2d示出了文件存储的装置的一种可能的结构,如图2d所示,该文件存储的装置30包括:包括存储器511、处理器512、系统总线513、电源组件514、输入输出接口515、以及通信组件516等。其中,存储器511可用于存储数据、软件程序以及模块,主要包括存储程序区和存储数据区,存储程序区可存储操作系统、至少一个功能所需的应用程序等,存储数据区可存储文件存储的装置30的使用所创建的数据等。处理器512通过运行或执行存储在存储器511内的软件程序和/或模块,以及调用存储在存储器511内的数据,执行文件存储的装置30的各种功能和处理数据。系统总线513包括地址总线、数据总线、控制总线,用于传输数据和指令;电源组件514用于为文件存储的装置30的各个组件提供电源;输入输出接口515为处理器512和外围接口模块之间提供接口;通信组件516用于为文件存储的装置30和其他设备之间进行有线或无线方式的通信。上述如图2a所示的至少一个客户端10作为存储系统中被服务的对象,为客户提供本地服务。参见图2e,该客户端10可以包括:存储器611、处理器612、输入单元614、显示单元615、电源组件613以及系统总线616等部件,其中,存储器611、处理器612、输入单元614、显示单元615、电源组件613与系统总线616相连。其中,存储器611可用于存储数据、软件程序以及模块,主要包括存储程序区和存储数据区,存储程序区可存储操作系统、至少一个功能所需的应用程序等。电源组件613用于为客户端10的各个组件提供电源;输入单元614用于向客户端输入用户的操作指令,可以理解的是,客户端还可以包括通信接口用于支持客户端与文件存储的装置。可以理解的是,图2d和图2e仅是示例性的给出了本发明实施例提供的客户端10和文件存储的装置30的结构,在实际使用过程中客户端10和文件存储的装置30可以包括比图2e和图2d所示的更多组件或者更少组件。如图3所示,图3示出了本发明实施例提供的一种文件存储的方法,包括:s101、文件存储的装置接收文件系统发送的第一操作请求,该第一操作请求中携带目标文件的标识,该第一操作请求用于在磁盘阵列中写入目标文件,目标文件的标识用于确定目标文件的文件索引表。s102、文件存储的装置根据目标文件的标识,获取目标文件的文件索引表,该目标文件的文件索引表中记录有目标文件需要的目标条带大小。可选的,目标文件的文件索引表用于指示在接收到向磁盘阵列中写入目标文件的写操作请求时,为目标文件分配与目标条带大小相等的第一属性条带。s103、文件存储的装置根据目标文件的文件索引表为目标文件分配与目标条带大小相等的第一属性条带,并按照第一属性条带将目标文件存储在磁盘阵列中,其中,第一属性条带包括至少一个第一条带。本发明实施例提供一种文件存储的方法,通过根据第一操作请求中携带的目标文件的标识,首先从目标文件的标识所指示的目标文件的文件索引表中确定目标文件需要的目标条带大小,并根据目标文件需要的目标条带大小为其分配与目标条带大小相等的第一属性条带,这样若一个raid5中需要存储多个大小不同的文件时,可以根据每个文件所请求的条带大小实现对该文件的存储,从而避免了现有技术中存在的由于raid5条带固定导致的在存储不同大小的文件时所引起的存储性能低以及浪费存储空间的问题。可以理解的是,为了提高管理效率,本发明实施例中目标文件需要的目标条带大小需要结合raid所支持的几种属性的条带大小设置。例如,raid5支持的条带大小为256k和32k,则目标文件需要的目标条带大小也应该为256k或者32k。可以理解的是,本发明实施例在文件存储的装置创建目标文件的文件索引表后,以及文件存储的装置向raid中写入目标文件时为目标文件分配该目标文件的文件索引表中所记录的条带大小后,还可以根据目标文件的大小,将目标文件按照第一属性条带写入raid中。可选的,本发明实施例步骤s103可以根据以下方式实现:s1031、文件存储的装置获取第一操作请求中携带目标文件的大小。s1032、文件存储的装置根据第一属性条带,将目标文件写入raid中,以及在目标文件的文件索引表中记录目标文件的每个文件内偏移量与磁盘位置之间的映射关系。其中,文件内偏移量为目标文件包括的每个字节相对于目标文件首字节的偏移量,磁盘位置为目标文件包括的每个字节在所述磁盘阵列包括的磁盘上的存储地址。示例性的,若目标文件的大小请求的条带大小为256k,目标文件的大小为2m,raid5包括4个磁盘,则一次向raid5中写入的文件大小为256k×3=768k,即仅需要三次写入操作即可将目标文件写入raid5的磁盘中,但是,由于本发明是根据目标文件的请求的大小来分配条带,因此,一个文件对应一个条带,若按照一个目标文件所请求的条带,将该目标文件存储时,若存在剩余空间,则将该剩余空间用0补齐,例如,本申请中为目标文件分配的磁盘空间为存在256k的剩余空间,可以采用0补齐。示例性的,如表2所示,表2示出了本发明实施例提供的一种目标文件的文件索引表的结构。表2文件内偏移量与磁盘位置之间的映射关系第一磁盘第二磁盘第三磁盘(0,256)(256,512)(512,1024)(1,257)(257,513)(513,1025)(2,258)(258,514)(514,1026)…….…….…….可以理解的是,在将目标文件存储在raid5后,可以根据文件系统的操作请求对目标文件进行相应的管理,例如,可以根据文件系统的读取操作请求,读取所请求的目标文件,也可以根据文件系统的写入操作请求对目标文件改写,或者继续写入目标文件,以下将结合读取操作请求和写入操作请求分别介绍:可选的,一方面,结合图3,如图4所示,本发明实施例还包括:s104、文件存储的装置接收文件系统发送的第二操作请求,第二操作请求中携带有第一文件内偏移量以及文件读取大小,该第一文件内偏移量是请求读取的字节相对于目标文件首字节的偏移量。其中,文件读取大小用于确定请求读取的目标内容的最后一个字节。例如,第一文件内偏移量为0,则表示第一文件内偏移量与目标文件的首字节之间的偏移量为0k,也可以理解为第一文件内偏移量即为目标文件的首字节。第一文件内偏移量为256k,则表示第一文件内偏移量与目标文件的首字节的偏移量为256,也可以理解为第一文件内偏移量即为目标文件的第256个字节。s105、文件存储的装置根据第一文件内偏移量,获取存储在第一磁盘位置到第二磁盘位置上的数据作为请求读取的目标内容,第一磁盘位置为第一文件内偏移量在磁盘上的存储地址,第二磁盘位置为请求读取的目标内容的最后一个字节在磁盘上的存储地址。可选的,步骤s105可以通过以下方式实现:s1051、根据第一文件内偏移量,确定目标文件内偏移量,该目标文件内偏移量用于确定从目标文件的哪个字节开始读取数据。可以理解的是,在实际过程中,若第一文件内偏移量与条带对齐,则目标文件内偏移量即为第一文件内偏移量,其中,文件内偏移量与条带对齐是指该文件内偏移量所对应的磁盘位置为存储该文件内偏移量的磁盘上的第一个位置。若第一文件内偏移量未与条带对齐,则将对齐后的文件内偏移量确定为目标文件内偏移量。例如,以表1为例,请求读取的第一文件内偏移量为513k,则将第一文件内偏移量与条带对齐后,所确定的目标文件内偏移量为512k。s1052、文件存储的装置根据目标文件内偏移量,读取目标文件内偏移量所在条带上所有的数据。s1053、文件存储的装置从所有的数据中获取存储在第一磁盘位置至第二磁盘位置上地址连续的数据,作为请求读取的目标内容。s106、将请求读取的目标内容返回给文件系统。示例性的,以目标文件请求的条带大小为256k,raid5包括3个磁盘为例,其中,一个磁盘用于存储校验信息,若读取操作请求中请求的第一文件内偏移量为512k,读取的大小为100k,由于第一文件内偏移量与条带对齐,即第一文件内偏移量存储在该目标文件所存储的磁盘上的第一个位置,即第一文件内偏移量在磁盘上的位置为1024。且第一文件内偏移量从目标文件的文件索引表中所确定的索引项为(512,1024),那么文件存储的装置则从raid5中读取在磁盘上的地址位于1024-(1024+256)范围内的数据,并从地址为1024-(1024+256)范围内的数据中选择请求读取的100k(即存储在磁盘上的地址为1024至存储在磁盘上的地址为1124之间的地址连续数据)数据,返回给文件系统。另一方面,若读取操作请求中请求的第一文件内偏移量为513k,读取的大小为100k,根据上述描述将第一文件内偏移量对齐后确定的目标文件内偏移量为512k,则文件存储的装置从raid5中读取在磁盘上的地址位于1024-(1024+256)范围内的数据,并从地址为1024-(1024+256)范围内的数据中选择请求读取的100k(即存储在磁盘上的地址为1025至存储在磁盘上的地址为1125之间的连续数据)数据,返回给文件系统。可以理解的是,若从raid中读取数据时,若目标文件的文件索引表中不存在第一文件内偏移量所对应的磁盘位置,则文件存储的装置向文件系统返回读取失败的指示信息。可选的,本发明实施例中第一操作请求中还携带有目标文件的标识,该目标文件的标识用于确定目标文件的文件索引表。本发明实施例中的步骤s102可以通过以下方式实现:s1021、文件存储的装置根据目标文件的标识,从根文件索引表中确定与目标文件的标识存在对应关系的第一标识,该根文件索引表中至少存储有目标文件的标识与第一标识之间的映射关系,第一标识用于确定目标文件的文件索引表。本发明实施例中目标文件的标识用于唯一识别该目标文件,该目标文件的标识可以为目标文件的名称、地址等,本发明实施例对此不进行限定。本发明实施例中根文件索引表中可以至少记录目标文件的标识与目标文件的文件索引表之间的映射关系,文件索引表的标识用于唯一识别文件索引表,该文件索引表的标识可以根据需要设置,只要可以保证唯一识别文件索引表即可。s1022、根据第一标识,将第一标识所指示的文件索引表确定为目标文件的文件索引表,以获取目标文件的文件索引表。示例性的,以目标文件的标识为文件1为例,如表1所示,则通过查询根文件索引表可确定文件1的文件索引表为fit1。结合图3,如图5所示,本发明实施例在步骤s101之前还包括:s107、文件存储的装置接收文件系统发送的接收第三操作请求,该第三操作请求中携带目标文件需要的目标条带大小,该第三操作请求用于指示建立目标文件的文件索引表。s108、文件存储的装置根据第三操作请求,建立目标文件的文件索引表,目标文件的文件索引表中记录有目标文件需要的目标条带大小。本发明实施例通过执行s107和s108即可创建目标文件的文件索引表,并在后续写入目标文件时,可以根据目标文件的文件索引表记录的目标条带的大小为目标文件分配第一属性条带,从而在一个raid中存在不同大小的文件时,实现了多条带存储。可选的,本发明实施例还包括:s109、文件存储的装置接收文件系统发送的写入操作请求,该写入操作请求中携带有第二文件内偏移量,该第二文件内偏移量为待写入的数据相对于目标文件的首字节之间的偏移量。s110、文件存储的装置若确定目标文件的文件索引表中不存在第二文件内偏移量对应的第二磁盘位置,则为目标文件重新分配目标条带,并记录到文件索引表中。可以理解的是,若不存在第二文件内偏移量对应的第二磁盘位置,则表明该写入操作请求请求写入的数据与目标文件不是同一个文件。s111、文件存储的装置若确定目标文件的文件索引表中存在第二文件内偏移量对应的第二磁盘位置,则将第二文件内偏移量写入第二磁盘位置。因此,结合图3,如图6所示,本发明实施例在步骤s103之前,还包括:s112、文件存储的装置确定磁盘阵列中不存在第一属性条带,获取第二属性条带的预设信息表,第二属性条带的预设信息表用于记录第二属性条带包括的至少一个第二条带中每个第二条带的状态,第一属性条带的大小与第二属性条带的大小不同。s113、文件存储的装置根据目标条带大小以及第二属性条带的预设信息表中记录的每个第二条带的状态,获取第一属性条带。在实际使用过程中可能会存在所请求的目标条带大小大于raid当前所具有的条带大小或者目标条带大小小于raid当前所具有的条带大小的情况,由于此两种情况下,获取第一属性条带的方式存在差异,因此以下将分别介绍此两种情况下获取第一条带的方式。一方面,目标条带大小小于第二属性条带的大小,则步骤s113可以通过以下方式实现:s1131a、文件存储的装置根据目标条带大小,将候选第二条带按照预设规则划分为地址连续且大小相等的n个子条带,其中,n为大于或等于2的整数,n个子条带的大小之和等于候选第二条带的大小,候选第二条带为至少一个第二条带中任意一个处于空闲状态的第二条带。可选的,本发明实施例中n的个数由目标条带的大小以及候选第二条带的大小确定。示例性的,n=候选第二条带的大小/目标条带的大小。例如,候选第二条带的大小为256k,目标条带的大小为32k,则可以将候选第二条带的大小划分为8个地址连续的子条带。可以理解的是,可以根据第二属性条带的预设信息表中记录的每个第二条带的状态,从第二属性条带中选择一个处于空闲状态的第二条带作为获取第一属性条带的候选第二条带。示例性的,本发明实施例中一个属性条带的预设信息表采用位图实现,其中,位图是一个连续存储的比特(bit)序列,一个bit对应一个条带。具体的,一个属性条带的预设信息表包括该属性条带包括的每个条带与指示符之间的对应关系,指示符包括第一指示符和第二指示符,第一指示符用于指示一个属性条带中的一个条带的状态为空闲状态;第二指示符用于指示一个属性条带中的一个条带的状态为占用状态。示例性的,第一指示符为“0”,第二指示符为“1”,则如图7所示,图7以第二属性的条带大小为256k为例,该第二属性的条带包括7个条带,每个条带的大小均为256k,可以理解的是,每个条带均有一个标识,用于唯一识别该条带,以第二属性的条带的预设信息表为1010001,则表示第二属性的条带的第一个256k条带的状态为占用状态,第二个256k条带的状态为空闲状态,以此类推,本发明实施例在此不再赘述。s1132a、文件存储的装置将n个子条带中每个子条带作为一个第一条带,以获取第一属性条带。可以理解的是,在步骤s1132a后,还可以包括:s1133a、文件存储的装置建立第一属性条带的预设信息表,第一属性条带的预设信息表用于记录第一属性条带包括的n个子条带中每个子条带的状态。结合图7,则可以将第二个条带确定为候选第二条带,以目标条带大小为32k为例,则并将候选第二条带划分为8个子条带,如图8所示。可以理解的是,将一个第二条带划分为n个子条带后,这n个子条带将合并形成一个第一属性类型的条带,例如,将256k类型的条带划分为8个子条带后,这8个子条带将合并形成一个大小为32k的条带,此时,可以在存储系统中建立该第一属性条带对应的预设信息表,并且在该n个子条带中每个子条带中记录每个条带的状态。具体记录的方式如上所述,本发明实施例在此不再赘述。当然,若文件系统请求的目标文件的目标条带大小为第二条带大小,且存储系统中不存在第二条带大小的条带,若此时,新形成的第一条带中存在空闲条带还可以将新形成的第一条带的空闲条带进一步划分以形成满足第二条带大小的条带。如图8所示,文件系统请求的第二条带大小为4k,可以通过将32k类型条带中的一个条带划分,以形成4k类型的条带。可选的,本发明实施例中在步骤s1133a后还可以包括:s1134a、文件存储的装置根据第一属性条带的预设信息表,确定n个子条带中每个子条带的状态。s1135a、文件存储的装置确定n个子条带的状态均为空闲状态,则将n个子条带合并,以获取一个第二条带。另一方面,目标条带大小大于第二条带的大小,则步骤s113可以通过以下方式实现:s1131b、文件存储的装置从第二属性条带的预设信息表中获取m个地址连续且处于空闲状态的第二条带,其中,m为大于或等于2的整数,m个地址连续的且处于空闲状态的第二条带的大小之和与第一条带的大小相等。s1132b、文件存储的装置将m个地址连续的且处于空闲状态的第二条带合并,以获取第一属性条带。如图9所示,图9示出了包括三块磁盘的raid5在存储需要不同条带大小的文件时的示意图,其中,文件1(包括图9中的数据n1、n2、n3以及n4)需要的条带大小为4k,文件2(包括图9中的数据f1、f2、f3以及f4)需要的条带大小为8k,文件3(包括图9中的数据x1、x2、x3、x4、x5、x6、x7以及x8)需要的条带大小为16k。图9中p1、p2、p3、p4、p5、p6、p7以及p8分别表示校验信息。由图9可知,文件1、文件2和文件3分别以各自需要的条带大小在raid5中存储,从而实现了raid5支持多条带管理。此外,由于现有技术中raid5仅支持一种条带类型,这样若用大条带存储小文件时,由于大条带的存储能力大于小文件的需求,因此,raid5的磁盘空间中会存在空闲空间,这时,空闲空间中会填充“0”。这样,在接收到新写入数据时,新写入的数据会被按照raid5支持的类型存储在空闲空间中,这样会使得存储在该类型条带上的校验信息发生改变,例如,如图1所示,若存储数据块2的磁盘块(记为磁盘块2)上存在空闲空间,且新写入的数据需要写在磁盘块2的空闲空间上。这时由于存储在磁盘块2上的数据发生变化,则存储在磁盘3上磁盘块3(图1中由于存储校验1的磁盘块)的校验1也会发生改变,通常现有技术中的做法是读取位于磁盘块1(即磁盘1中存储数据块1的磁盘块)和磁盘块2(即磁盘2中存储数据块2的磁盘块)上的数据块1和数据块2,并重新计算校验信息,并将重新计算的校验信息写入磁盘3上的磁盘块3中,这样势必导致一次写操作引入了额外的读操作和写操作。而本申请中是以文件大小对raid5的空间管理,这样即使一个文件对应的磁盘块上存在空闲空间,若新写入的数据所请求的条带大小和该文件的条带大小不一致,则新写入的数据并不会写入该空闲空间,而是为会其重新分配条带类型,因此,避免了引入额外的读操作和写操作。上述主要从文件存储的装置和文件系统之间交互的角度对本申请提供的方案进行了介绍。可以理解的是,文件存储的装置等为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的文件存储的装置及方法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。本发明实施例可以根据上述方法示例对文件存储的装置等进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在采用对应各个功能划分各个功能模块的情况下,图10示出了上述实施例中所涉及的文件存储的装置的一种可能的结构示意图,文件存储的装置30包括:接收单元301、获取单元302和分配单元303。其中,接收单元301用于支持文件存储的装置30执行上述实施例中的步骤s101以及s104、s106以及s107、s109;获取单元302用于支持文件存储的装置30执行上述实施例中的步骤s102、s105(s1051、s1052、s1053)以及s112、s113以及s1132a以及s1135a、s1131b,分配单元303,用于支持文件存储的装置30执行上述实施例中的步骤s103(s1031、s1032)以及s110。可以理解的是,本发明实施例提供的文件存储的装置30还可以包括发送单元304、确定单元305、建立单元306、划分单元307以及合并单元308,其中,发送单元304用于支持文件存储的装置30执行上述实施例中的步骤s106,确定单元305用于支持文件存储的装置30执行上述实施例中的步骤s1021、s1022以及s1134a、建立单元306用于支持文件存储的装置30执行上述实施例中的步骤s108以及s1133a,写入单元,用于支持文件存储的装置30执行上述实施例中的步骤s111。划分单元307,用于支持文件存储的装置30执行上述实施例中的步骤s112,合并单元308用于支持文件存储的装置30执行上述实施例中的步骤s1132b。上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。在采用集成的单元的情况下,图11示出了上述实施例中所涉及的文件存储的装置30的一种可能的逻辑结构示意图。文件存储的装置30包括:处理模块312和通信模块313。处理模块312用于对文件存储的装置30的动作进行控制管理,例如,处理模块312用于执行上述实施例中的步骤s101、s102(s1021、s1022)、s103(s1031、s1032)、s104、s105(s1051、s1052、s1053)、s106(s1061a、s1132a、s1063a、s1134a、s1135a、s1131b、s1062b)、s107、s108、s109、s110、s111以及s112、s113,和/或用于本文所描述的技术的其他过程。通信模块313用于支持文件存储的装置30与文件系统以及raid的通信。文件存储的装置30还可以包括存储模块311,用于存储文件存储的装置30的程序代码和数据。其中,处理模块312可以是处理器或控制器,例如可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。通信模块313可以是收发器、收发电路或收发器等。存储模块311可以是存储器。当处理模块312为处理器,通信模块313为收发器,存储模块311为存储器时,本发明实施例所涉及的文件存储的装置可以为图2d所示的设备。一方面,本发明实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当计算机可读存储介质在文件存储的装置上运行时,使得文件存储的装置执行上述实施例中的步骤s101、s102(s1021、s1022)、s103(s1031、s1032)、s104、s105(s1051、s1052、s1053)、s106(s1061a、s1132a、s1063a、s1134a、s1135a、s1131b、s1062b)、s107、s108、s109、s110、s111以及s112、s113。在上述实施例中,可以全部或部分的通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例多描述的流程或功能。所述计算机可以使通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点,计算机、服务器或数据中心通过有线(例如,同轴电缆、光纤、数字用户线dsl)或无线(例如,红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。计算机可读存储介质可以是计算机能够读取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以使磁性介质,(例如,软盘,硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如,固态硬盘(solidststedisk,ssd))等。通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1