当前位置: 首页 > 专利查询>伊姆西公司专利>正文

用于压缩文件系统元数据的方法和设备技术方案

技术编号:16919255 阅读:135 留言:0更新日期:2017-12-31 14:50
本公开的实施例涉及一种用于压缩文件系统元数据的方法和设备。该方法包括响应于接收到向文件写入第一数据的第一请求,确定第一请求是否是对与至少包括第一间接块和第二间接块的第一组间接块中的第二间接块相关联的存储区域的首次写入。该方法还包括响应于首次写入,在存储设备上分配用于写入第一数据的第一组数据块。此外,该方法还包括通过将与第一组数据块对应的第一组存储地址编码到第一间接块中,来压缩第一组间接块。

【技术实现步骤摘要】
用于压缩文件系统元数据的方法和设备
本公开的实施例总体涉及数据存储领域,具体涉及一种用于压缩文件系统元数据的方法和设备。
技术介绍
文件系统中的数据可以分为数据和元数据。数据指代文件中的实际数据,而元数据指代用于描述数据的属性(诸如数据的存储位置)的信息。在诸如UNIX的操作系统中,文件系统元数据通常包括i节点(inode)和间接块(IndirectBlock,以下简称为IB)等。其中,间接块是最重要的元数据,其是动态分配的指向文件的数据块(即用于存储数据的存储单元)的指针空间。IB采用分层结构来被组织,其中上一层IB用于存储下一层IB的地址,并且位于最低层的IB(即,叶子IB)用于存储数据块的地址。明显地,将尽可能多的间接块保持在内存中对于获得较好的数据访问性能是重要的。然而,传统IB采用平面布局方式并且按照逻辑偏移来排列,这将导致对存储器空间的浪费。例如,假设每个IB的大小为8K字节(B),每个数据块的大小也为8KB,并且每个数据块的地址为8B,则1PB(Pebibyte,1PB=260B)的数据所对应的叶子IB需要1TB(Tebibyte,1TB=250B)的存储器空间。
技术实现思路
本公开的实施例提供了一种用于压缩文件系统元数据的方法和设备。根据本公开的第一方面,提供了一种用于压缩包括间接块的文件系统元数据的方法。该方法包括响应于接收到向文件写入第一数据的第一请求,确定第一请求是否是对与至少包括第一间接块和第二间接块的第一组间接块中的第二间接块相关联的存储区域的首次写入。该方法还包括响应于首次写入,在存储设备上分配用于写入第一数据的第一组数据块。此外,该方法还包括通过将与第一组数据块对应的第一组存储地址编码到第一间接块中,来压缩第一组间接块。根据本公开的第二方面,提供了一种用于压缩包括间接块的文件系统元数据的设备。该设备包括至少一个处理单元和至少一个存储器。至少一个存储器被耦合到至少一个处理单元并且存储用于由至少一个处理单元执行的指令。该指令当由至少一个处理单元执行时,使得设备:响应于接收到向文件写入第一数据的第一请求,确定第一请求是否是对与至少包括第一间接块和第二间接块的第一组间接块中的第二间接块相关联的存储区域的首次写入;响应于首次写入,在存储设备上分配用于写入第一数据的第一组数据块;以及通过将与第一组数据块对应的第一组存储地址编码到第一间接块中,来压缩第一组间接块。根据本公开的第三方面,提供了一种用于读取经压缩的文件系统元数据的方法。该方法包括响应于接收到从文件读取第二数据的第二请求,确定是否要从与至少包括第四间接块和第五间接块的第四组间接块中的第五间接块相关联的存储区域读取第二数据。该方法还包括响应于确定要从该存储区域读取第二数据,从第四间接块确定用于存储第二数据的第二组数据块的第二组存储地址。根据本公开的第四方面,提供了一种用于读取经压缩的文件系统元数据的设备。该设备包括至少一个处理单元和至少一个存储器。至少一个存储器被耦合到至少一个处理单元并且存储用于由至少一个处理单元执行的指令。该指令当由至少一个处理单元执行时,使得设备:响应于接收到从文件读取第二数据的第二请求,确定是否要从与至少包括第四间接块和第五间接块的第四组间接块中的第五间接块相关联的存储区域读取第二数据;以及响应于确定要从该存储区域读取第二数据,从第四间接块确定用于存储第二数据的第二组数据块的第二组存储地址。根据本公开的第五方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令。机器可执行指令在被执行时使得机器执行根据本公开的第一方面所描述的方法的任意步骤。根据本公开的第六方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令。机器可执行指令在被执行时使得机器执行根据本公开的第三方面所描述的方法的任意步骤。提供
技术实现思路
部分是为了简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。
技术实现思路
部分无意标识本公开的关键特征或主要特征,也无意限制本公开的范围。附图说明通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。图1示出了传统IB的存储方案100的示意图;图2示出了能够在其中实施本公开的实施例的环境200的框图;图3示出了根据本公开的实施例的压缩文件系统元数据300的示意图;图4示出了根据本公开的实施例的用于压缩文件系统元数据的方法400的流程图;图5示出了根据本公开的实施例的根据文件偏移和数据长度来确定要写入(或者读取)的数据所对应的叶子IB的示意图500;图6示出了根据本公开的实施例的用于用于确定第一请求是否是对与第二间接块相关联的存储区域的首次写入的方法600的流程图;图7示出了根据本公开的实施例的经压缩的IB的存储器内布局700的示意图;图8示出了根据本公开的实施例的用于将与第一组数据块对应的第一组存储地址编码到第一间接块中的方法800的流程图;图9A示出了根据本公开的实施例的用于划分第一组间接块的方法900的流程图;图9B示出了根据本公开的实施例的划分第一组间接块的示意图950;图10示出了根据本公开的实施例的用于读取经压缩的文件系统元数据1000的流程图;图11示出了根据本公开的实施例的用于压缩包括间接块的文件系统元数据的装置1100的框图;图12示出了根据本公开的实施例的用于读取经压缩的文件系统元数据的装置1200的框图;以及图13示出了可以用来实施本公开内容的实施例的示例设备1300的示意性框图。具体实施例下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。图1示出了传统IB的存储方案100的示意图。传统IB采用分层结构来被组织,其中上一层IB用于存储下一层IB的地址,并且位于最低层的IB(即,叶子IB)用于存储数据块的地址。出于简化描述的目的,在图1中仅示出了两层IB,即叶子IB和叶子IB的上一层IB(在本文中也被称为“中间IB”)。然而,应当理解,IB层次结构可以包括更多的层次。此外,仅仅出于说明的目的,在图1(以及之后的各附图)中,将每个IB以及每个数据块的大小示为8KB,并且将每个地址(即IB地址或者数据块地址,并且在下文中也被称为“映射”)所占用的存储空间示为8B。如图1所示,中间IB110记录了1024个叶子IB(即IB1201、1202……1201024)的地址(即IB地址1101、1102……1101024本文档来自技高网
...
用于压缩文件系统元数据的方法和设备

【技术保护点】
一种用于压缩包括间接块的文件系统元数据的方法,包括:响应于接收到向文件写入第一数据的第一请求,确定所述第一请求是否是对与至少包括第一间接块和第二间接块的第一组间接块中的所述第二间接块相关联的存储区域的首次写入;响应于所述首次写入,在存储设备上分配用于写入所述第一数据的第一组数据块;以及通过将与所述第一组数据块对应的第一组存储地址编码到所述第一间接块中,来压缩所述第一组间接块。

【技术特征摘要】
1.一种用于压缩包括间接块的文件系统元数据的方法,包括:响应于接收到向文件写入第一数据的第一请求,确定所述第一请求是否是对与至少包括第一间接块和第二间接块的第一组间接块中的所述第二间接块相关联的存储区域的首次写入;响应于所述首次写入,在存储设备上分配用于写入所述第一数据的第一组数据块;以及通过将与所述第一组数据块对应的第一组存储地址编码到所述第一间接块中,来压缩所述第一组间接块。2.根据权利要求1所述的方法,其中所述第一请求包括指示向所述文件写入所述第一数据的起始位置的第一偏移以及所述第一数据的第一长度,并且其中确定所述第一请求是否是对与所述第二间接块相关联的存储区域的首次写入包括:基于所述第一偏移和所述第一长度,确定与所述第一数据相关联的第一中间间接块,所述第一中间间接块记录所述第一组间接块的地址;基于所述第一偏移和所述第一长度,确定要向与所述第二间接块相关联的所述存储区域写入所述第一数据;以及响应于确定所述第一中间间接块中记录的所述第二间接块的地址无效,确定第一请求是对所述存储区域的所述首次写入。3.根据权利要求1所述的方法,其中将与所述第一组数据块对应的第一组存储地址编码到所述第一间接块中包括:基于所述第二间接块,确定所述第一组间接块中的所述第一间接块。4.根据权利要求2所述的方法,其中所述第一间接块包括用于压缩连续存储地址的第一区域,所述第一区域包括多个第一子区域,所述多个第一子区域中的每个第一子区域对应于相同数目的数据块,并且其中将与所述第一组数据块对应的第一组存储地址编码到所述第一间接块中还包括:基于所述第一偏移和所述第一长度,确定与所述第一组数据块相关联的至少一个第一子区域;以及将所述第一组存储地址编码在所述至少一个第一子区域中。5.根据权利要求4所述的方法,其中所述至少一个第一子区域包括指示相同数目的数据块中的起始数据块的存储地址的第一字段和指示所述相同数目的数据块中的每个数据块的存储地址是否有效的第一位图,并且其中将所述第一组存储地址编码在所述第一区域中的至少一个第一子区域中包括:基于所述第一组存储地址,更新所述第一字段;以及响应于确定所述第一组存储地址中的部分存储地址不连续,将所述第一位图中与所述部分存储地址相对应的比特设置为无效。6.根据权利要求5所述的方法,其中第一间接块还包括用于记录非连续存储地址的第二区域,并且其中将所述第一组存储地址编码在所述第一间接块中包括:将所述部分存储地址分别记录在所述第二区域中。7.根据权利要求2所述的方法,还包括:在完成所述首次写入以后,在所述第一中间间接块中利用所述第一间接块的地址来更新所述第二间接块的地址,以使得所述第二间接块指向所述第一间接块。8.根据权利要求1所述的方法,还包括:响应于确定所述第一间接块中被占用的空间超过预定阈值,将所述第一组间接块划分成至少两组间接块,所述至少两组间接块包括第二组间接块和第三组间接块,所述第二组间接块包括所述第一间接块并且所述第三组间接块至少包括第三间接块;以及将编码在所述第一间接块中的多个存储地址中与所述第三组间接块中的间接块相关联的存储地址编码到所述第三间接块中。9.一种用于读取经压缩的文件系统元数据的方法,包括:响应于接收到从文件读取第二数据的第二请求,确定是否要从与至少包括第四间接块和第五间接块的第四组间接块中的所述第五间接块相关联的存储区域读取所述第二数据;以及响应于确定要从所述存储区域读取所述第二数据,从所述第四间接块确定用于存储所述第二数据的第二组数据块的第二组存储地址。10.根据权利要求9所述的方法,其中所述第二请求包括指示向所述文件写入所述第二数据的起始位置的第二偏移以及所述第二数据的第二长度,并且其中确定是否要从与所述第五间接块相关联的存储区域读取所述第二数据包括:基于所述第二偏移和所述第二长度,确定与所述第二数据相关联的第二中间间接块,所述第二中间间接块记录所述第四组间接块的地址;以及基于所述第二偏移和所述第二长度,确定要从与所述第五间接块相关联的所述存储区域读取所述第二数据。11.根据权利要求9所述的方法,其中从所述第四间接块确定用于存储所述第二数据的第二组数据块的第二组存储地址包括:基于所述第五间接块,确定所述第四组间接块中的所述第四间接块。12.根据权利要求10所述的方法,其中所述第四间接块包括用于压缩连续存储地址的第三区域,所述第三区域包括多个第三子区域,所述多个第三子区域中的每个第三子区域对应于相同数目的数据块,并且其中从所述第四间接块确定用于存储所述第二数据的第二组数据块的第二组存储地址还包括:基于所述第二偏移和所述第二长度,确定与所述第二组数据块相关联的至少一个第三子区域;以及从所述至少一个第三子区域确定所述第二组存储地址。13.根据权利要求12所述的方法,其中所述至少一个第三子区域包括指示相同数目的数据块中的起始数据块的存储地址的第三字段和指示所述相同数目的数据块中的每个数据块的存储地址是否有效的第三位图,并且其中从所述至少一个第三子区域确定所述第二组存储地址包括:基于所述第二字段和所述第二位图中包含的有效比特,确定所述第二组存储地址中与所述有效比特相对应的第一存储地址。14.根据权利要求13所述的方法,其中所述第四间接块还包括用于记录非连续存储地址的第四区域,并且其中从所述第四间接块确定所述第二组数据块的所述第二组存储地址包括:响应于所述第二位图中存在无效比特,从所述第四区域确定所述第二组存储地址中与所述无效比特相对应的第二存储地址。15.一种用于压缩包括间接块的文件系统元数据的设备,包括:至少一个处理单元;至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述设备:响应于接收到...

【专利技术属性】
技术研发人员:赵军平赵奕龙
申请(专利权)人:伊姆西公司
类型:发明
国别省市:美国,US

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

1