【技术实现步骤摘要】
用于压缩文件系统元数据的方法和设备
本公开的实施例总体涉及数据存储领域,具体涉及一种用于压缩文件系统元数据的方法和设备。
技术介绍
文件系统中的数据可以分为数据和元数据。数据指代文件中的实际数据,而元数据指代用于描述数据的属性(诸如数据的存储位置)的信息。在诸如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.一种用于压缩包括间接块的文件系统元数据的方法,包括:响应于接收到向文件写入第一数据的第一请求,确定所述第一请求是否是对与至少包括第一间接块和第二间接块的第一组间接块中的所述第二间接块相关联的存储区域的首次写入;响应于所述首次写入,在存储设备上分配用于写入所述第一数据的第一组数据块;以及通过将与所述第一组数据块对应的第一组存储地址编码到所述第一间接块中,来压缩所述第一组间接块。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.一种用于压缩包括间接块的文件系统元数据的设备,包括:至少一个处理单元;至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述设备:响应于接收到...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。