CN107526743B - 用于压缩文件系统元数据的方法和设备 - Google Patents
用于压缩文件系统元数据的方法和设备 Download PDFInfo
- Publication number
- CN107526743B CN107526743B CN201610454287.4A CN201610454287A CN107526743B CN 107526743 B CN107526743 B CN 107526743B CN 201610454287 A CN201610454287 A CN 201610454287A CN 107526743 B CN107526743 B CN 107526743B
- Authority
- CN
- China
- Prior art keywords
- indirect
- data
- blocks
- indirect block
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3091—Data deduplication
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/70—Type of the data to be coded, other than image and sound
- H03M7/707—Structured documents, e.g. XML
Abstract
本公开的实施例涉及一种用于压缩文件系统元数据的方法和设备。该方法包括响应于接收到向文件写入第一数据的第一请求,确定第一请求是否是对与至少包括第一间接块和第二间接块的第一组间接块中的第二间接块相关联的存储区域的首次写入。该方法还包括响应于首次写入,在存储设备上分配用于写入第一数据的第一组数据块。此外,该方法还包括通过将与第一组数据块对应的第一组存储地址编码到第一间接块中,来压缩第一组间接块。
Description
技术领域
本公开的实施例总体涉及数据存储领域,具体涉及一种用于压缩文件系统元数据的方法和设备。
背景技术
文件系统中的数据可以分为数据和元数据。数据指代文件中的实际数据,而元数据指代用于描述数据的属性(诸如数据的存储位置)的信息。在诸如UNIX的操作系统中,文件系统元数据通常包括i节点(inode)和间接块(Indirect Block,以下简称为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所示,中间IB 110记录了1024个叶子IB(即IB 1201、1202……1201024)的地址(即IB地址1101、1102……1101024)。同时,每个叶子IB分别记录了1024个数据块的地址。例如,IB 1201记录了数据块地址1301、1302……1301024,IB 1202记录了数据块地址1301024+1、1301024+2……1302×1024,IB 1201024记录了数据块地址1301023×1024+1、1301023×1024+2……1301024×1024。由此可见,传统IB所采用的平面布局方式虽然便于查找,但是会导致对存储器空间的浪费。
随着闪存或非易失性随机存取存储器在存储系统中的广泛应用,数据在被冲刷到磁盘之前能够被聚合,使得写入的数据集通常较大并且写IO的模式表现出连续性或者部分连续性(即数据被写入到连续或者部分连续的数据块地址中)。这样的连续性或者部分连续性使得对包括IB的元数据进行压缩成为可能。
本公开的示例实施例提出了一种用于压缩包括IB的文件系统元数据的方案。该方案通过在IB中对上述连续或者部分连续的数据块地址进行压缩和存储,能够减少用于存储数据块地址的IB的数量,从而提高存储器效率。
图2示出了能够在其中实施本公开的实施例的环境200的框图。要理解的是,仅出于示例性的目的描述环境200的结构和功能而不是暗示对于本公开的范围的任何限制。本公开可以被体现在不同的结构和/或功能中。
如图2所示,环境200总体上可以包括元数据压缩系统210和元数据读取系统220。根据本文所描述主题的实现,用于压缩包括IB的文件系统元数据的方案可以包括两个阶段:元数据压缩阶段和元数据读取阶段。
在元数据压缩阶段中,元数据压缩系统210可以被配置为接收输入/输出(I/O)请求230,并且基于I/O请求230来生成经压缩的元数据240。由于初始的数据分布更多地决定数据访问性能,因此在本公开的示例实施例中,可以在初始的数据写入时(即,对于某个存储区域的首次写入)进行元数据压缩。在此情况下,I/O请求230可以包括向文件中的起始位置(在本文中也被称为偏移)首次写入一定长度的数据的请求。
在元数据读取阶段中,元数据读取系统220可以被配置为接收I/O请求250,并且基于I/O请求250来读取经压缩的元数据240,以获得文件中的数据块地址260。I/O请求250可以包括从文件中读取一定长度的数据的请求,或者重写文件中的一定长度的数据的请求。
根据本公开的实施例的用于压缩文件系统元数据的方案能够使得在读取(或重写)数据的过程中不需要对经压缩的元数据进行复杂的解压缩,因此能够在不影响数据读取性能的情况下尽可能提高存储器使用效率。以下将参考图3至8来进一步地详细描述本公开的实施例。
图3示出了根据本公开的实施例的压缩文件系统元数据的示意图。以下将对比图1来详细描述根据本公开的实施例的用于压缩文件系统元数据的方案。出于简化描述的目的,在图3中也仅示出了两层IB,即叶子IB和中间IB。例如,中间IB 110记录了1024个叶子IB(即IB 1201、1202……1201024)的地址(即IB地址1101、1102……1101024)。特别地,叶子IB被划分为多个组(在下文中也被称为“压缩组”),并且每个压缩组中的叶子IB的数目可以是例如2~16。如图3所示,每个压缩组中的叶子IB的数目为8,因此1024个叶子IB(即IB 1201、1202……1201024)可以被分为128个压缩组(即,压缩组3101、3102……310128)。每个压缩组可以具有领导IB和跟随IB。以压缩组3101为例,其包括IB 1201、1202……1208,其中IB 1201(其逻辑偏移对8求模结果为0)被称为“领导IB”并且IB 1202、1203……1208被统称为“跟随IB”。类似地,针对压缩组3102,其领导IB为IB 1209并且跟随IB包括IB 12010、12011……12016。与图1所示的在每个叶子IB中分别记录与该叶子IB相关联的数据块地址的传统IB存储方案不同,根据本公开的实施例的用于压缩文件系统元数据的方案将与压缩组中的每个IB相关联的数据块地址编码到该压缩组的领导IB中。例如,如图3所示,与压缩组3101相关联的数据块地址被编码到IB 1201中,并且与压缩组3102相关联的数据块地址被编码到IB 1209中等等。因此,本公开的实施例能够减少用于存储数据块地址的IB的数量,从而提高存储器效率。
图4示出了根据本公开的实施例的用于压缩文件系统元数据的方法400的流程图。以下将结合图2和图3来详细描述方法400。例如,方法400可以由如图2所示的元数据压缩系统210来执行。应当理解的是,方法400还可以包括未示出的附加步骤和/或可以省略所示出的步骤,本公开的范围在此方面不受限制。
方法400开始于步骤410。在步骤410中,元数据压缩系统210响应于接收到向文件写入第一数据的第一请求,确定第一请求是否是对与至少包括第一间接块和第二间接块的第一组间接块中的第二间接块相关联的存储区域的首次写入。在以下的讨论中,仅出于说明的目的,例如利用图3中所示的压缩组3101来表示在此所述的“第一组间接块”,并且“第一间接块”指代压缩组3101中的领导IB(即,IB 1201),“第二间接块”指代压缩组3101中的跟随IB中的任一个(例如,IB 1202)。
在一些实施例中,第一请求可以包括指示向文件写入第一数据的起始位置的第一偏移以及要写入的第一数据的第一长度。在这样的实施例中,可以基于第一偏移和第一长度来确定第一请求是否是对与IB1202相关联的存储区域的首次写入。在此方面,图5示出了根据本公开的实施例的根据文件偏移和数据长度来确定要写入(或者读取)的数据所对应的叶子IB的示意图。
如之前所描述的,文件系统元数据还可以包括i节点(inode),其中记录了少量数据块的地址和若干个顶层IB的地址。例如,图5示出了一个示例i节点510,其中记录了数据块5201的地址5211、数据块5202的地址5212和数据块5203的地址5213。此外,i节点510中还记录了IB 5301的地址5311,其中IB 5301为叶子IB,IB 5301记录了数据块5204、5205……5201027的地址5214、5215……5211027。因此,IB 5301也被称为“一层IB树”的顶层IB。类似地,i节点510中还记录了“二层IB树”的顶层IB的地址,即IB 5401的地址5411。IB 5401为中间IB,其可以记录1024个叶子IB的地址。出于示例的目的,在图5中IB 5401中当前仅记录了3个叶子IB(即,IB 5501、5502和5503)的地址(即,IB地址5511、5512和5513),其余地址为无效地址(例如为0xFF,指示相应叶子IB尚未创建)。例如,IB5501记录了数据块5201028和5201029(其余数据块未在图5中示出)的地址5211028和5211029。假设,第一请求指示要从文件的第8421376B处开始的写入8KB,则首先可以基于文件偏移(即,8421376B)来计算所对应的逻辑数据块的序号,即8421376B/8192B+1=1029。然后可以基于该逻辑数据块的序号来确定要写入的数据与哪个中间IB相关联,这可以通过简单的查表来确定。例如,如图5所示,第1~3个数据块(即,数据块5201、5202和5203)在i节点110中,与一层IB树相对应的数据块为第4~1027个数据块(即,数据块5204、5205……5201027),与二层IB树相对应的数据块为第1028~(1024×1024-1027)个。因此,第1029个数据块与IB 5401相关联。类似地,可以进一步确定第1029个数据块与叶子IB 5512相关联。
按照如图5所示的示例方式,可以基于第一偏移和第一长度来确定第一请求是否是对与IB 1202相关联的存储区域的首次写入。例如,图6示出了根据本公开的实施例的用于确定第一请求是否是对与第二间接块相关联的存储区域的首次写入的方法600的流程图。方法600可以视为方法400中的步骤410的一种实现,并且例如可以由如图2所示的元数据压缩系统210来执行。以下将结合图3来详细描述方法600。
在步骤610中,元数据压缩系统210基于第一偏移和第一长度,确定与第一数据相关联的第一中间间接块,其中第一中间间接块记录第一组间接块的地址。例如,元数据压缩系统210可以基于第一偏移和第一长度,确定与第一数据相关联的第一中间IB为IB 110,其中IB 110记录了压缩组3101的地址。在步骤620中,元数据压缩系统210基于第一偏移和第一长度,确定要向与第二间接块相关联的存储区域写入第一数据。接下来,方法600进行至步骤630,其中元数据压缩系统210响应于确定第一中间间接块中记录的第二间接块的地址无效,确定第一请求是对与第二间接块相关联的存储区域的首次写入。例如,当IB 110中记录的IB 1202的地址为0xFF时,可以确定第一请求是对与IB 1202相关联的存储区域的首次写入。
返回到图4,方法400进行到步骤420。在步骤420中,响应于首次写入,在存储设备上分配用于写入第一数据的第一组数据块。例如,可以在磁盘上分配与要写入的第一数据的长度相对应的第一组数据块。附加地或者备选地,还可以在磁盘上(而非存储器中)分配用于存储第二间接块IB 1202的空间(例如,8KB),使得每个IB在磁盘上仍然具有其独立的物理地址,以与传统IB存储方案相兼容。所分配的第一组数据块是逻辑上连续的数据块,然与第一组数据块对应的一组物理存储地址可能是连续的、部分连续的或者不连续的。
接下来,在步骤430中,通过将与第一组数据块对应的第一组存储地址编码到第一间接块中,来压缩第一组间接块。
在一些实施例中,可以基于第二间接块(即,跟随IB)来确定其所在的压缩组中的第一间接块(即,领导IB)。例如,可以基于IB 1202的地址在IB 110中的偏移和每个压缩组所包括的间接块的数量来确定存储在IB 110中的领导IB(即,IB 1201)的地址。在一些实施例中,所确定的IB 1201的地址(存储在IB 110中)可能是0xFF,其指示IB 1201尚未创建。在此情况下,需要在磁盘和/或存储器中分配用于存储IB 1201的空间(例如,8KB)。然后,可以将与第一组数据块对应的第一组存储地址编码到第一间接块(即,IB 1201)中。在一些实施例中,第一间接块的存储器内布局方式与传统IB的平面布局方式不同,其利用了数据块地址中可能存在的连续性(或者部分连续性)来实现将比传统IB能够存储的数据块地址更多的数据块地址压缩到第一间接块中的目的。在本文中,采用这样的存储器内布局方式的IB也被称为“经压缩的IB”。
在此方面,图7示出了根据本公开的实施例的经压缩的IB的存储器内布局700的示意图。如图7所示,经压缩的IB(出于示例的目的,其大小仍为8KB)可以包括头部710、第一区域720和第二区域730。头部710可以是固定长度(例如,64B)的区域,其提供经压缩的IB的整体信息,诸如版本号、状态、预定义标志、当前实际存储的映射(例如,数据块地址)的数量、存储器使用以及跟随IB的存储地址(例如,磁盘地址)等等。第一区域720用于压缩连续存储地址,其可以包括多个(例如,256个)第一子区域(即,第一子区域7211、7212……721256),其中每个第一子区域对应于相同数目(例如,32个)的数据块,因此第一区域720可以记录与一个压缩组相对应的数据块地址(即,256×32=8192个)。此外,例如,每个第一子区域(例如,长度为12B)可以包括用于指示32个数据块中的起始数据块的存储地址的第一字段(例如,长度为8B)以及用于指示32个数据块中的每个数据块的存储地址是否有效的第一位图(例如,长度为4B)。第二区域730用于记录非连续存储地址(或者未经压缩的地址),其可以记录多个非连续的数据块的地址及每个数据块在压缩组内的相应偏移。通过利用如图7所示的经压缩的IB的存储器内布局,可以将与第一组数据块对应的第一组存储地址编码到第一间接块(即,IB 1201)中。例如,图8图示了根据本公开的实施例的用于将与第一组数据块对应的第一组存储地址编码到第一间接块中的方法800的流程图。方法800可以视为方法400中的步骤430的一种实现,并且例如可以由如图2所示的元数据压缩系统210来执行。
在步骤810中,元数据压缩系统210基于第一偏移和第一长度,确定与第一组数据块相关联的至少一个第一子区域。如图7所示,第一区域720可以记录与一个压缩组相对应的数据块地址(例如,8192个数据块地址),并且每个第一子区域对应于相同数目(例如,32个)的数据块。因此,可以首先基于第一偏移和第一长度来确定第一组数据块的逻辑序号,然后基于该逻辑序号确定与第一组数据块相关联的至少一个第一子区域。然后,方法800进行至步骤820,其中元数据压缩系统210基于与第一组数据块对应的第一组存储地址,更新该至少一个第一子区域中的第一字段(其用于指示相同数目的数据块中的起始数据块的存储地址)。接下来,在步骤830中,其中元数据压缩系统210基于第一组存储地址,设置该至少一个第一子区域中的第一位图(其用于指示相同数目的数据块中的每个数据块的存储地址是否有效)。具体地,当确定第一组存储地址中的部分存储地址不连续时,将第一位图中与该部分存储地址相对应的比特设置为无效。然后,在步骤840中,元数据压缩系统210将该部分存储地址分别记录在第二区域(例如,图7中所示的第二区域730)中。
在一些实施例中,当完成对与第二间接块(即,IB 1202)相关联的存储区域的首次写入后,可以在第一中间间接块(即,IB 110)中利用第一间接块(即,IB 1201)的地址来更新第二间接块的地址,以使得第二间接块指向第一间接块。
根据本公开的实施例,可选地,方法400还可以包括在第一间接块被占用的空间过大情况下的处理过程。具体而言,可以通过将第一组间接块进行划分,来解决这一问题。图9A示出了根据本公开的实施例的用于划分第一组间接块的方法900的流程图。方法900开始于步骤910。在步骤910,响应于确定第一间接块中被占用的空间超过预定阈值,将第一组间接块划分成至少两组间接块,其中该至少两组间接块包括第二组间接块和第三组间接块,第二组间接块包括第一间接块并且第三组间接块至少包括第三间接块。在步骤920,将编码在第一间接块中的多个存储地址中与第三组间接块中的间接块相关联的存储地址编码到第三间接块中。
图9B示出了根据本公开的实施例的划分第一组间接块的示意图950。在图9B中,第一间接块以IB 1201表示,第一组间接块以压缩组3101表示。当IB 1201中被占用的空间超过预定阈值(例如50%)时,将第一组间接块3101划分成两组间接块,即第二组间接块9601和第三组间接块9602。第二组间接块9601包括第一间接块IB 1201以及间接块IB 1201至IB 1204,第三组间接块包括间接块IB 1205至IB1208。IB 1205至IB 1208之中的任意一个均可作为第三间接块。在该例子中,将IB 1205作为第三间接块,则原来编码在第一间接块IB 1201中的多个存储地址中与第三组间接块9602中的间接块IB 1205至IB1208相关联的存储地址编码到第三间接块IB 1205中。
应当理解,图9B所示的实施例仅仅是示意性的,而非是限制性的。本领域技术人员完全可以理解,第一组间接块不仅仅可以分成两组,在其他实施例中其是可以分成四组或者其他适当数目的组。另外,第二组间接块9601或者第三组间接块9602均可在适当的事件触发下继续被进行划分。举例而言,当第二组间接块9601中的第一间接块IB 1201中被占用的空间超过预定阈值时,则第二组间接块9601可以被继续划分。又例如,当第三组间接块9602中的第三间接块IB 1205中被占用的空间超过预定阈值时,则第三组间接块9602可以被继续划分。
图10示出了根据本公开的实施例的用于读取经压缩的文件系统元数据1000的流程图。方法1000例如可以由如图2所示的元数据读取系统220来执行。应当理解的是,方法1000还可以包括未示出的附加步骤和/或可以省略所示出的步骤,本公开的范围在此方面不受限制。
方法1000开始于步骤1010。在步骤1010,元数据读取系统220响应于接收到从文件读取第二数据的第二请求,确定是否要从与至少包括第四间接块和第五间接块的第四组间接块中的第五间接块相关联的存储区域读取第二数据。
在一些实施例中,第二请求可以包括指示向文件写入第二数据的起始位置的第二偏移以及第二数据的第二长度。在这样的实施例中,可以通过多种方式来确定是否要从与第五间接块相关联的存储区域读取第二数据。举例而言,可以基于第二偏移和第二长度,确定与第二数据相关联的第二中间间接块,其中该第二中间间接块记录第四组间接块的地址。随后,可以基于第二偏移和第二长度,确定是否要从与第五间接块相关联的存储区域读取第二数据。
接下来,在步骤1020,元数据读取系统220响应于确定要从存储区域读取第二数据,从第四间接块确定用于存储第二数据的第二组数据块的第二组存储地址。按照本公开的实施例,元数据读取系统220可以通过多种方式来从第四间接块确定用于存储第二数据的第二组数据块的第二组存储地址。在一些实施例中,可以基于第五间接块,确定第四组间接块中的第四间接块。
作为替代方案,在一些实施例中,第二请求可以包括指示向文件写入第二数据的起始位置的第二偏移以及第二数据的第二长度。而且,第四间接块可以包括用于压缩连续存储地址的第三区域,第三区域可以包括多个第三子区域,并且多个第三子区域中的每个第三子区域对应于相同数目的数据块。在这些实施例中,可以基于第二偏移和第二长度,确定与第二组数据块相关联的至少一个第三子区域,并从至少一个第三子区域确定第二组存储地址。
可以利用多种方法来从至少一个第三子区域确定第二组存储地址。在一个实施例中,至少一个第三子区域可以包括指示相同数目的数据块中的起始数据块的存储地址的第三字段和指示相同数目的数据块中的每个数据块的存储地址是否有效的第三位图。在该实施例中,可以基于第二字段和第二位图中包含的有效比特,来确定第二组存储地址中与有效比特相对应的第一存储地址。
作为又一替代方案,在一些实施例中,第四间接块还包括用于记录非连续存储地址的第四区域。在这些实施例中,可以响应于第二位图中存在无效比特,从第四区域确定第二组存储地址中与无效比特相对应的第二存储地址。
图11示出了根据本公开的实施例的用于压缩包括间接块的文件系统元数据的装置1100的框图。例如,元数据压缩系统210可以由装置1100实现。如图11所示,装置1100可以包括首次写入确定模块1110、分配模块1120和压缩模块1130。首次写入确定模块1110被配置为响应于接收到向文件写入第一数据的第一请求,确定第一请求是否是对与至少包括第一间接块和第二间接块的第一组间接块中的第二间接块相关联的存储区域的首次写入。分配模块1120被配置为响应于首次写入,在存储设备上分配用于写入第一数据的第一组数据块。压缩模块1130被配置为通过将与第一组数据块对应的第一组存储地址编码到第一间接块中,来压缩第一组间接块。
在一些实施例中,第一请求可以包括指示向文件写入第一数据的起始位置的第一偏移以及第一数据的第一长度。在这些实施例中,首次写入确定模块1110可以进一步被配置为:基于第一偏移和第一长度,确定与第一数据相关联的第一中间间接块,第一中间间接块记录第一组间接块的地址;基于第一偏移和第一长度,确定要向与第二间接块相关联的存储区域写入第一数据;以及响应于确定第一中间间接块中记录的第二间接块的地址无效,确定第一请求是对存储区域的首次写入。
在一些实施例中,压缩模块1130可以进一步被配置为基于第二间接块,确定第一组间接块中的第一间接块。
在一些实施例中,第一间接块可以包括用于压缩连续存储地址的第一区域,其中第一区域可以包括多个第一子区域,并且多个第一子区域中的每个第一子区域可以对应于相同数目的数据块。在这些实施例中,压缩模块1130可以进一步被配置为基于第一偏移和第一长度,确定与第一组数据块相关联的至少一个第一子区域,以及将第一组存储地址编码在至少一个第一子区域中。
在一些实施例中,至少一个第一子区域可以包括指示相同数目的数据块中的起始数据块的存储地址的第一字段和指示相同数目的数据块中的每个数据块的存储地址是否有效的第一位图,并且压缩模块1130可以进一步被配置为通过基于第一组存储地址来更新第一字段,以及响应于确定第一组存储地址中的部分存储地址不连续,将第一位图中与部分存储地址相对应的比特设置为无效,来将第一组存储地址编码在第一区域中的至少一个第一子区域中。在另一些实施例中,第一间接块还可以包括用于记录非连续存储地址的第二区域,并且压缩模块1130可以进一步被配置为将部分存储地址分别记录在第二区域中。
在一些实施例中,装置1100还可以包括:地址更新模块(未示出),被配置为在完成首次写入以后,在第一中间间接块中利用第一间接块的地址来更新第二间接块的地址,以使得第二间接块指向第一间接块。
在一些实施例中,装置1100还可以包括:划分模块(未示出),被配置为:响应于确定第一间接块中被占用的空间超过预定阈值,将第一组间接块划分成至少两组间接块,至少两组间接块包括第二组间接块和第三组间接块,第二组间接块包括第一间接块并且第三组间接块至少包括第三间接块;以及将编码在第一间接块中的多个存储地址中与第三组间接块中的间接块相关联的存储地址编码到第三间接块中。
图12示出了根据本公开的实施例的用于读取经压缩的文件系统元数据的装置1200的框图。例如,元数据读取系统220可以由装置1200实现。如图12所示,装置1200可以包括读取确定模块1210和存储确定模块1220。读取确定模块1210被配置为响应于接收到从文件读取第二数据的第二请求,确定是否要从与至少包括第四间接块和第五间接块的第四组间接块中的第五间接块相关联的存储区域读取第二数据。存储确定模块1220被配置为响应于确定要从存储区域读取第二数据,从第四间接块确定用于存储第二数据的第二组数据块的第二组存储地址。
在一些实施例中,第二请求可以包括指示向文件写入第二数据的起始位置的第二偏移以及第二数据的第二长度,并且读取确定模块1210进一步被配置为:基于第二偏移和第二长度,确定与第二数据相关联的第二中间间接块,第二中间间接块记录第四组间接块的地址;以及基于第二偏移和第二长度,确定要从与第五间接块相关联的存储区域读取第二数据。
在一些实施例中,存储确定模块1220可以进一步被配置为:基于第五间接块,确定第四组间接块中的第四间接块。
在一些实施例中,第四间接块可以包括用于压缩连续存储地址的第三区域,其中第三区域可以包括多个第三子区域,并且多个第三子区域中的每个第三子区域可以对应于相同数目的数据块。在这些实施例中,存储确定模块1220可以进一步被配置为:基于第二偏移和第二长度,确定与第二组数据块相关联的至少一个第三子区域;以及从至少一个第三子区域确定第二组存储地址。
在一些实施例中,至少一个第三子区域包括指示相同数目的数据块中的起始数据块的存储地址的第三字段和指示相同数目的数据块中的每个数据块的存储地址是否有效的第三位图,并且存储确定模块1220被可以进一步被配置为通过以下来从至少一个第三子区域确定第二组存储地址:基于第二字段和第二位图中包含的有效比特,确定第二组存储地址中与有效比特相对应的第一存储地址。
在一些实施例中,第四间接块还可以包括用于记录非连续存储地址的第四区域,并且存储确定模块1220被可以进一步被配置为通过以下来从第四间接块确定第二组数据块的第二组存储地址包括:响应于第二位图中存在无效比特,从第四区域确定第二组存储地址中与无效比特相对应的第二存储地址。
出于清楚的目的,在图11和图12中没有示出装置1100和装置1200的某些可选模块。然而,应当理解,上文参考图2-9所描述的各个特征同样适用于装置1100,上文参考图10所描述的各个特征同样适用于装置1200。而且,装置1100和装置1200的各个模块可以是硬件模块,也可以是软件模块。例如,在某些实施例中,装置1100和装置1200可以部分或者全部利用软件和/或固件来实现,例如被实现为包含在计算机可读介质上的计算机程序产品。备选地或附加地,装置1100和装置1200可以部分或者全部基于硬件来实现,例如被实现为集成电路(IC)、专用集成电路(ASIC)、片上系统(SOC)、现场可编程门阵列(FPGA)等。本公开的范围在此方面不受限制。
图13示出了可以用来实施本公开内容的实施例的示例设备1300的示意性框图。如图所示,设备1300包括中央处理单元(CPU)1301,其可以根据存储在只读存储器(ROM)1302中的计算机程序指令或者从存储单元1308加载到随机访问存储器(RAM)1303中的计算机程序指令,来执行各种适当的动作和处理。在RAM 1303中,还可存储设备1300操作所需的各种程序和数据。CPU 1301、ROM 1302以及RAM 1303通过总线1304彼此相连。输入/输出(I/O)接口1305也连接至总线1304。
设备1300中的多个部件连接至I/O接口1305,包括:输入单元1306,例如键盘、鼠标等;输出单元1307,例如各种类型的显示器、扬声器等;存储单元1308,例如磁盘、光盘等;以及通信单元1309,例如网卡、调制解调器、无线通信收发机等。通信单元1309允许设备1300通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法400、600、800、900和1000,可由处理单元1301执行。例如,在一些实施例中,上述方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1308。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1302和/或通信单元1309而被载入和/或安装到设备1300上。当计算机程序被加载到RAM 1303并由CPU 1301执行时,可以执行上文描述的方法400、600、800、900和1000的一个或多个步骤。
通过以上描述可以看出,本公开的示例实施例提出了一种用于压缩包括IB的文件系统元数据的方案。该方案通过在IB中对上述连续或者部分连续的数据块地址进行压缩和存储,能够减少用于存储数据块地址的IB的数量,从而提高存储器效率。具体而言,根据本公开的实施例的用于压缩文件系统元数据的方案能够使得在读取(或重写)数据的过程中不需要对经压缩的元数据进行复杂的解压缩,因此能够在不影响数据读取性能的情况下尽可能提高存储器使用效率。
本公开可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (26)
1.一种用于压缩包括间接块的文件系统元数据的方法,包括:
响应于接收到向文件写入第一数据的第一请求,确定所述第一请求是否是对与至少包括第一间接块和第二间接块的第一组间接块中的所述第二间接块相关联的存储区域的首次写入,其中所述第一间接块包括用于压缩连续存储地址的第一区域,所述第一区域包括多个第一子区域,所述多个第一子区域中的每个第一子区域对应于相同数目的数据块;
响应于所述首次写入,在存储设备上分配用于写入所述第一数据的第一组数据块;以及
通过将与所述第一组数据块对应的第一组存储地址编码到所述第一间接块中,来压缩所述第一组间接块,其中压缩所述第一组间接块使所述第一间接块存储与所述存储设备上的数据块相对应的存储地址的编码,所述存储设备被分配用于将数据写入所述文件的存储区域,所述文件与所述第一组间接块中的所述间接块中的多个间接块相关联;以及
其中编码第一组存储地址包括:
基于第一偏移和第一长度,确定与所述第一组数据块相关联的至少一个第一子区域,所述至少一个第一子区域被包括在所述多个第一子区域中;以及
将所述第一组存储地址编码在所述至少一个第一子区域中。
2.根据权利要求1所述的方法,其中所述第一请求包括指示向所述文件写入所述第一数据的起始位置的第一偏移以及所述第一数据的第一长度,并且其中确定所述第一请求是否是对与所述第二间接块相关联的存储区域的首次写入包括:
基于所述第一偏移和所述第一长度,确定与所述第一数据相关联的第一中间间接块,所述第一中间间接块记录所述第一组间接块的地址;
基于所述第一偏移和所述第一长度,确定要向与所述第二间接块相关联的所述存储区域写入所述第一数据;以及
响应于确定所述第一中间间接块中记录的所述第二间接块的地址无效,确定第一请求是对所述存储区域的所述首次写入。
3.根据权利要求1所述的方法,其中将与所述第一组数据块对应的第一组存储地址编码到所述第一间接块中包括:
基于所述第二间接块,确定所述第一组间接块中的所述第一间接块。
4.根据权利要求1所述的方法,其中所述至少一个第一子区域包括指示相同数目的数据块中的起始数据块的存储地址的第一字段和指示所述相同数目的数据块中的每个数据块的存储地址是否有效的第一位图,并且其中将所述第一组存储地址编码在所述第一区域中的至少一个第一子区域中包括:
基于所述第一组存储地址,更新所述第一字段;以及
响应于确定所述第一组存储地址中的部分存储地址不连续,将所述第一位图中与所述部分存储地址相对应的比特设置为无效。
5.根据权利要求4所述的方法,其中第一间接块还包括用于记录非连续存储地址的第二区域,并且其中将所述第一组存储地址编码在所述第一间接块中包括:
将所述部分存储地址分别记录在所述第二区域中。
6.根据权利要求2所述的方法,还包括:
在完成所述首次写入以后,在所述第一中间间接块中利用所述第一间接块的地址来更新所述第二间接块的地址,以使得所述第二间接块指向所述第一间接块。
7.根据权利要求1所述的方法,还包括:
响应于确定所述第一间接块中被占用的空间超过预定阈值,将所述第一组间接块划分成至少两组间接块,所述至少两组间接块包括第二组间接块和第三组间接块,所述第二组间接块包括所述第一间接块并且所述第三组间接块至少包括第三间接块;以及
将编码在所述第一间接块中的多个存储地址中与所述第三组间接块中的间接块相关联的存储地址编码到所述第三间接块中。
8.根据权利要求7所述的方法,还包括:
响应于接收到从文件读取第二数据的第二请求,确定是否要从与至少包括第四间接块和第五间接块的第四组间接块中的所述第五间接块相关联的存储区域读取所述第二数据;以及
响应于确定要从所述存储区域读取所述第二数据,从所述第四间接块确定用于存储所述第二数据的第二组数据块的第二组存储地址。
9.根据权利要求8所述的方法,其中所述第二请求包括指示向所述文件写入所述第二数据的起始位置的第二偏移以及所述第二数据的第二长度,并且其中确定是否要从与所述第五间接块相关联的存储区域读取所述第二数据包括:
基于所述第二偏移和所述第二长度,确定与所述第二数据相关联的第二中间间接块,所述第二中间间接块记录所述第四组间接块的地址;以及
基于所述第二偏移和所述第二长度,确定要从与所述第五间接块相关联的所述存储区域读取所述第二数据。
10.根据权利要求8所述的方法,其中从所述第四间接块确定用于存储所述第二数据的第二组数据块的第二组存储地址包括:
基于所述第五间接块,确定所述第四组间接块中的所述第四间接块。
11.根据权利要求9所述的方法,其中所述第四间接块包括用于压缩连续存储地址的第三区域,所述第三区域包括多个第三子区域,所述多个第三子区域中的每个第三子区域对应于相同数目的数据块,并且其中从所述第四间接块确定用于存储所述第二数据的第二组数据块的第二组存储地址还包括:
基于所述第二偏移和所述第二长度,确定与所述第二组数据块相关联的至少一个第三子区域;以及
从所述至少一个第三子区域确定所述第二组存储地址。
12.根据权利要求11所述的方法,其中所述至少一个第三子区域包括指示相同数目的数据块中的起始数据块的存储地址的第三字段和指示所述相同数目的数据块中的每个数据块的存储地址是否有效的第三位图,并且其中从所述至少一个第三子区域确定所述第二组存储地址包括:
基于第二字段和第二位图中包含的有效比特,确定所述第二组存储地址中与所述有效比特相对应的第一存储地址。
13.根据权利要求12所述的方法,其中所述第四间接块还包括用于记录非连续存储地址的第四区域,并且其中从所述第四间接块确定所述第二组数据块的所述第二组存储地址包括:
响应于所述第二位图中存在无效比特,从所述第四区域确定所述第二组存储地址中与所述无效比特相对应的第二存储地址。
14.一种用于压缩包括间接块的文件系统元数据的设备,包括:
至少一个处理单元;
至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述设备:
响应于接收到向文件写入第一数据的第一请求,确定所述第一请求是否是对与至少包括第一间接块和第二间接块的第一组间接块中的所述第二间接块相关联的存储区域的首次写入,其中所述第一间接块包括用于压缩连续存储地址的第一区域,所述第一区域包括多个第一子区域,所述多个第一子区域中的每个第一子区域对应于相同数目的数据块;
响应于所述首次写入,在存储设备上分配用于写入所述第一数据的第一组数据块;
通过将与所述第一组数据块对应的第一组存储地址编码到所述第一间接块中,来压缩所述第一组间接块,其中压缩所述第一组间接块使所述第一间接块存储与所述存储设备上的数据块相对应的存储地址的编码,所述存储设备被分配用于将数据写入所述文件的存储区域,所述文件与所述第一组间接块中的所述间接块中的多个间接块相关联;以及
其中所述指令当由所述至少一个处理单元执行时,至少部分通过使的所述设备执行以下动作来使得所述设备编码所述第一组存储地址,所述以下动作为:
基于第一偏移和第一长度,确定与所述第一组数据块相关联的至少一个第一子区域,所述至少一个第一子区域被包括在所述多个第一子区域中;以及
将所述第一组存储地址编码在所述至少一个第一子区域中。
15.根据权利要求14所述的设备,其中所述第一请求包括指示向所述文件写入所述第一数据的起始位置的第一偏移以及所述第一数据的第一长度,并且其中确定所述第一请求是否是对与所述第二间接块相关联的存储区域的首次写入包括:
基于所述第一偏移和所述第一长度,确定与所述第一数据相关联的第一中间间接块,所述第一中间间接块记录所述第一组间接块的地址;
基于所述第一偏移和所述第一长度,确定要向与所述第二间接块相关联的所述存储区域写入所述第一数据;以及
响应于确定所述第一中间间接块中记录的所述第二间接块的地址无效,确定第一请求是对所述存储区域的所述首次写入。
16.根据权利要求14所述的设备,其中将与所述第一组数据块对应的第一组存储地址编码到所述第一间接块中包括:
基于所述第二间接块,确定所述第一组间接块中的所述第一间接块。
17.根据权利要求16所述的设备,其中所述至少一个第一子区域包括指示相同数目的数据块中的起始数据块的存储地址的第一字段和指示所述相同数目的数据块中的每个数据块的存储地址是否有效的第一位图,并且其中将所述第一组存储地址编码在所述第一区域中的至少一个第一子区域中包括:
基于所述第一组存储地址,更新所述第一字段;以及
响应于确定所述第一组存储地址中的部分存储地址不连续,将所述第一位图中与所述部分存储地址相对应的比特设置为无效。
18.根据权利要求17所述的设备,其中第一间接块还包括用于记录非连续存储地址的第二区域,并且其中将所述第一组存储地址编码在所述第一间接块中包括:
将所述部分存储地址分别记录在所述第二区域中。
19.根据权利要求15所述的设备,其中所述指令当由所述至少一个处理单元执行时,还使得所述设备:
在完成所述首次写入以后,在所述第一中间间接块中利用所述第一间接块的地址来更新所述第二间接块的地址,以使得所述第二间接块指向所述第一间接块。
20.根据权利要求14所述的设备,其中所述指令当由所述至少一个处理单元执行时,还使得所述设备:
响应于确定所述第一间接块中被占用的空间超过预定阈值,将所述第一组间接块划分成至少两组间接块,所述至少两组间接块包括第二组间接块和第三组间接块,所述第二组间接块包括所述第一间接块并且所述第三组间接块至少包括第三间接块;以及
将编码在所述第一间接块中的多个存储地址中与所述第三组间接块中的间接块相关联的存储地址编码到所述第三间接块中。
21.根据权利要求20所述的设备,其中所述指令,当由所述至少一个处理单元执行时,还使得所述设备:
响应于接收到从文件读取第二数据的第二请求,确定是否要从与至少包括第四间接块和第五间接块的第四组间接块中的所述第五间接块相关联的存储区域读取所述第二数据;以及
响应于确定要从所述存储区域读取所述第二数据,从所述第四间接块确定用于存储所述第二数据的第二组数据块的第二组存储地址。
22.根据权利要求21所述的设备,其中所述第二请求包括指示向所述文件写入所述第二数据的起始位置的第二偏移以及所述第二数据的第二长度,并且其中确定是否要从与所述第五间接块相关联的存储区域读取所述第二数据包括:
基于所述第二偏移和所述第二长度,确定与所述第二数据相关联的第二中间间接块,所述第二中间间接块记录所述第四组间接块的地址;以及
基于所述第二偏移和所述第二长度,确定要从与所述第五间接块相关联的所述存储区域读取所述第二数据。
23.根据权利要求21所述的设备,其中从所述第四间接块确定用于存储所述第二数据的第二组数据块的第二组存储地址包括:
基于所述第五间接块,确定所述第四组间接块中的所述第四间接块。
24.根据权利要求22所述的设备,其中所述第四间接块包括用于压缩连续存储地址的第三区域,所述第三区域包括多个第三子区域,所述多个第三子区域中的每个第三子区域对应于相同数目的数据块,并且其中从所述第四间接块确定用于存储所述第二数据的第二组数据块的第二组存储地址还包括:
基于所述第二偏移和所述第二长度,确定与所述第二组数据块相关联的至少一个第三子区域;以及
从所述至少一个第三子区域确定所述第二组存储地址。
25.根据权利要求24所述的设备,其中所述至少一个第三子区域包括指示相同数目的数据块中的起始数据块的存储地址的第三字段和指示所述相同数目的数据块中的每个数据块的存储地址是否有效的第三位图,并且其中从所述至少一个第三子区域确定所述第二组存储地址包括:
基于第二字段和第二位图中包含的有效比特,确定所述第二组存储地址中与所述有效比特相对应的第一存储地址。
26.根据权利要求25所述的设备,其中所述第四间接块还包括用于记录非连续存储地址的第四区域,并且其中从所述第四间接块确定所述第二组数据块的所述第二组存储地址包括:
响应于所述第二位图中存在无效比特,从所述第四区域确定所述第二组存储地址中与所述无效比特相对应的第二存储地址。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610454287.4A CN107526743B (zh) | 2016-06-21 | 2016-06-21 | 用于压缩文件系统元数据的方法和设备 |
US15/628,563 US10901949B2 (en) | 2016-06-21 | 2017-06-20 | Method and apparatus for compressing metadata in a file system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610454287.4A CN107526743B (zh) | 2016-06-21 | 2016-06-21 | 用于压缩文件系统元数据的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107526743A CN107526743A (zh) | 2017-12-29 |
CN107526743B true CN107526743B (zh) | 2020-08-07 |
Family
ID=60735291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610454287.4A Active CN107526743B (zh) | 2016-06-21 | 2016-06-21 | 用于压缩文件系统元数据的方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10901949B2 (zh) |
CN (1) | CN107526743B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107526743B (zh) | 2016-06-21 | 2020-08-07 | 伊姆西Ip控股有限责任公司 | 用于压缩文件系统元数据的方法和设备 |
CN108733311B (zh) | 2017-04-17 | 2021-09-10 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法和设备 |
CN110391873B (zh) | 2018-04-20 | 2022-02-11 | 伊姆西Ip控股有限责任公司 | 用于确定数据传送方式的方法、装置以及计算机程序产品 |
CN111384965B (zh) * | 2018-12-28 | 2022-06-17 | 上海寒武纪信息科技有限公司 | 数据压缩解压装置和数据解压方法 |
CN109672923B (zh) * | 2018-12-17 | 2021-07-02 | 龙迅半导体(合肥)股份有限公司 | 一种数据处理方法和装置 |
CN109871355B (zh) * | 2019-01-23 | 2021-04-27 | 杭州宏杉科技股份有限公司 | 一种快照元数据存储方法、装置及设备、介质 |
CN111831212B (zh) * | 2019-04-19 | 2023-07-04 | 杭州海康威视数字技术股份有限公司 | 一种数据写入、读取方法、装置及设备 |
CN112765111A (zh) * | 2019-10-21 | 2021-05-07 | 伊姆西Ip控股有限责任公司 | 用于处理数据的方法、设备和计算机程序产品 |
CN111144224B (zh) * | 2019-12-03 | 2022-09-06 | 南京理工大学 | 基于剪切波变换与傅里叶变换的红外小目标检测方法 |
CN111370070B (zh) * | 2020-02-27 | 2023-10-27 | 中国科学院计算技术研究所 | 一种针对大数据基因测序文件的压缩处理方法 |
CN111414339B (zh) * | 2020-03-13 | 2023-04-25 | 浙江大华技术股份有限公司 | 一种文件的处理方法、系统、装置、设备及介质 |
CN112905127A (zh) * | 2021-03-25 | 2021-06-04 | 北京金风慧能技术有限公司 | 数据处理方法和数据处理系统 |
US11836388B2 (en) * | 2021-04-21 | 2023-12-05 | EMC IP Holding Company LLC | Intelligent metadata compression |
CN113326001B (zh) * | 2021-05-20 | 2023-08-01 | 锐掣(杭州)科技有限公司 | 数据处理方法、装置、设备、系统、介质及程序 |
US11816215B2 (en) * | 2022-02-16 | 2023-11-14 | Uab 360 It | System and method for archive AM scanning |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7496586B1 (en) * | 2004-05-26 | 2009-02-24 | Sun Microsystems, Inc. | Method and apparatus for compressing data in a file system |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6868417B2 (en) * | 2000-12-18 | 2005-03-15 | Spinnaker Networks, Inc. | Mechanism for handling file level and block level remote file accesses using the same server |
US6978283B1 (en) * | 2001-12-21 | 2005-12-20 | Network Appliance, Inc. | File system defragmentation technique via write allocation |
US7424497B1 (en) * | 2005-01-27 | 2008-09-09 | Network Appliance, Inc. | Technique for accelerating the creation of a point in time prepresentation of a virtual file system |
US7873799B2 (en) * | 2005-11-04 | 2011-01-18 | Oracle America, Inc. | Method and system supporting per-file and per-block replication |
US7890668B2 (en) * | 2008-02-14 | 2011-02-15 | International Business Machines Corporation | Providing indirect data addressing in an input/output processing system where the indirect data address list is non-contiguous |
US9395929B2 (en) * | 2008-04-25 | 2016-07-19 | Netapp, Inc. | Network storage server with integrated encryption, compression and deduplication capability |
US9678879B2 (en) * | 2008-05-29 | 2017-06-13 | Red Hat, Inc. | Set partitioning for encoding file system allocation metadata |
US8086585B1 (en) * | 2008-09-30 | 2011-12-27 | Emc Corporation | Access control to block storage devices for a shared disk based file system |
US8171064B2 (en) * | 2009-09-01 | 2012-05-01 | Netapp, Inc. | Methods and systems for concurrently reading direct and indirect data blocks |
US9128951B1 (en) * | 2012-04-25 | 2015-09-08 | Symantec Corporation | Systems and methods for variable-length chunking for deduplication |
US20140019706A1 (en) * | 2012-07-16 | 2014-01-16 | Infinidat Ltd. | System and method of logical object management |
US9122697B1 (en) | 2013-03-29 | 2015-09-01 | Emc Corporation | Unified data services for block and file objects |
US9122712B1 (en) | 2013-06-28 | 2015-09-01 | Emc Corporation | Compressing container files |
US9779023B1 (en) | 2015-06-30 | 2017-10-03 | EMC IP Holding Company LLC | Storing inline-compressed data in segments of contiguous physical blocks |
US20170031940A1 (en) * | 2015-07-31 | 2017-02-02 | Netapp, Inc. | Compression file structure |
US9880762B1 (en) | 2015-12-30 | 2018-01-30 | EMC IP Holding Company LLC | Compressing metadata blocks prior to writing the metadata blocks out to secondary storage |
CN107526743B (zh) | 2016-06-21 | 2020-08-07 | 伊姆西Ip控股有限责任公司 | 用于压缩文件系统元数据的方法和设备 |
US9985649B1 (en) | 2016-06-29 | 2018-05-29 | EMC IP Holding Company LLC | Combining hardware and software approaches for inline data compression |
-
2016
- 2016-06-21 CN CN201610454287.4A patent/CN107526743B/zh active Active
-
2017
- 2017-06-20 US US15/628,563 patent/US10901949B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7496586B1 (en) * | 2004-05-26 | 2009-02-24 | Sun Microsystems, Inc. | Method and apparatus for compressing data in a file system |
Also Published As
Publication number | Publication date |
---|---|
CN107526743A (zh) | 2017-12-29 |
US20180101542A1 (en) | 2018-04-12 |
US10901949B2 (en) | 2021-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107526743B (zh) | 用于压缩文件系统元数据的方法和设备 | |
CN107870728B (zh) | 用于移动数据的方法和设备 | |
US11003625B2 (en) | Method and apparatus for operating on file | |
US8683156B2 (en) | Format-preserving deduplication of data | |
CN108228647B (zh) | 用于数据拷贝的方法和设备 | |
CN110109915B (zh) | 用于管理哈希表的方法、设备和计算机程序产品 | |
US10678446B2 (en) | Bitmap processing for log-structured data store | |
US10255290B2 (en) | Identification of high deduplication data | |
CN111949605A (zh) | 用于实现文件系统的方法、设备和计算机程序产品 | |
US10795579B2 (en) | Methods, apparatuses, system and computer program products for reclaiming storage units | |
US11287996B2 (en) | Method, device and computer program product for storing data | |
CN107798063B (zh) | 快照处理方法和快照处理装置 | |
US10423580B2 (en) | Storage and compression of an aggregation file | |
CN110147203B (zh) | 一种文件管理方法、装置、电子设备及存储介质 | |
US20180341561A1 (en) | Determining modified portions of a raid storage array | |
CN111143113B (zh) | 复制元数据的方法、电子设备和计算机程序产品 | |
US9959050B2 (en) | In-memory data storage with transparent compression | |
CN111857557B (zh) | Raid类型转换的方法、设备和计算机程序产品 | |
US11176089B2 (en) | Systems and methods for implementing dynamic file systems | |
US11287993B2 (en) | Method, device, and computer program product for storage management | |
US11144243B2 (en) | Method and device for managing redundant array of independent disks and computer program product | |
US11048417B2 (en) | Method, device and computer program product for storage management | |
US9471244B2 (en) | Data sharing using difference-on-write | |
US9563363B2 (en) | Flexible storage block for a solid state drive (SSD)-based file system | |
CN111857556A (zh) | 管理存储对象的元数据的方法、装置和计算机程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200413 Address after: Massachusetts, USA Applicant after: EMC IP Holding Company LLC Address before: Ma Sazhusaizhou Applicant before: EMC Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |