CN105027122A - 压缩和重复数据删除分层驱动 - Google Patents

压缩和重复数据删除分层驱动 Download PDF

Info

Publication number
CN105027122A
CN105027122A CN201480011389.8A CN201480011389A CN105027122A CN 105027122 A CN105027122 A CN 105027122A CN 201480011389 A CN201480011389 A CN 201480011389A CN 105027122 A CN105027122 A CN 105027122A
Authority
CN
China
Prior art keywords
file
data
file system
cold
metadata
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.)
Granted
Application number
CN201480011389.8A
Other languages
English (en)
Other versions
CN105027122B (zh
Inventor
P·V·巴盖尔
S·托马尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Oracle International Corp filed Critical Oracle International Corp
Publication of CN105027122A publication Critical patent/CN105027122A/zh
Application granted granted Critical
Publication of CN105027122B publication Critical patent/CN105027122B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

提供了用于居间文件系统驱动的方法、装置和系统,其在现有基本文件系统之上提供逻辑文件系统。一种这样的居间文件系统驱动是压缩和重复数据删除分层驱动(“COLD驱动”)。文件系统操作通过COLD驱动从操作系统被截获,其中COLD驱动是作为在现有基本文件系统之上操作的上层操作系统驱动提供的。通过经由各种模块处理文件数据,现有的基本文件系统可以被扩展为具有压缩、重复数据删除、加索引及其它功能的逻辑文件系统。COLD驱动可以在无需对现有基本文件系统结构或基本文件系统驱动进行修改的情况下实现。因此,服务器部署可以利用由COLD驱动提供的附加文件系统功能,而无需迁移到另一文件系统。

Description

压缩和重复数据删除分层驱动
技术领域
本公开涉及文件系统,并且更具体而言,涉及压缩和重复数据删除分层驱动。
背景技术
在具有大数据处理需求的企业环境中,降低总拥有成本是一个重要的考虑。例如,为了优化硬件利用并减少所需服务器的数量,可能期望在单个服务器上合并多个应用处理,例如通过利用虚拟化或其它技术在单个服务器上容纳多个服务。在另一个例子中,可以期望利用集群文件系统来为若干服务器提供共享的合并存储。
这种合并的服务器环境将常常经历具有许多并发数据请求的繁重的读写负荷。为了以及时的方式给这种数据请求提供服务并且为了满足应用性能需求,使用诸如固态盘的昂贵的高速介质可以是优选的。从而,最大化可用数据储存的利用变成降低总拥有成本的更大因素。
最大化数据储存利用的一种方法是压缩数据,这会以增加处理器开销为代价提供显著的空间节约。另一种方法是提供重复数据删除,其中数据的冗余拷贝被消除并且用对数据的单个拷贝的引用代替。这两种方法还可以组合并且可能对合并的服务器环境尤其有效。
为了提供更高的性能并且为了优化自由空间管理,诸如压缩和重复数据删除的特征通常在低层次紧密集成到文件系统中。但是,许多现有的文件系统不提供对压缩和重复数据删除的固有集成支持。而且,当系统已经在使用缺乏对压缩和重复数据删除特征的固有支持的特定文件系统时,迁移到具有这种特征支持的不同文件系统上常常是不可行或不实际的,尤其是对受限于特定众所周知的工作环境的生产系统。虽然开源文件系统可以允许添加新特征的可能性,但是这种任务可能需要大量的开发和测试资源来以确保正确的集成、兼容性和稳定性。
这部分中所描述的方法是可以被推行的方法,但不一定是之前已经被设想或推行的方法。因此,除非另外指出,否则不应当仅仅由于这部分中描述的任何方法被包括在这部分中就假设它们是现有技术。
附图说明
本发明是通过例子而不是通过限制的方式在附图的各图中例示的,并且在附图中相同的标号表示相同的元素,并且其中:
图1A是描绘根据实施例的利用压缩和重复数据删除分层(COLD)驱动来扩展文件系统功能的示例计算机系统的框图;
图1B是描绘根据实施例的由压缩和重复数据删除分层(COLD)驱动使用的示例元数据文件的框图;
图1C是描绘根据实施例的由压缩和重复数据删除分层(COLD)驱动创建的元数据记录的框图;
图2是描绘根据实施例的用于通过压缩和重复数据删除分层(COLD)驱动给数据请求提供服务的处理的流程图;
图3是可以实现实施例的计算机系统的框图。
具体实施方式
在以下描述中,为了解释,阐述了各种具体细节,以便提供对本发明的透彻理解。但是,显然,本发明没有这些具体细节也可以被实践。在其它情况下,众所周知的结构和设备以框图形式示出,以避免不必要地模糊本发明。
总体概述
在实施例中,文件系统操作经过居间文件系统驱动,该文件系统驱动在现有的基本文件系统之上提供逻辑文件系统。在一个实施例中,居间文件系统具体而言是压缩和重复数据删除分层驱动(“COLD驱动”)。COLD驱动提供在现有基本文件系统之上接口的上层操作系统驱动,从而通过提供具有压缩、重复数据删除、加索引和其它特征的逻辑文件系统来扩展基本文件系统的功能。COLD驱动所需的元数据可以作为基本文件系统的标准基本文件存储,从而允许现有的文件系统被原样使用。此外,通过使用诸如POSIX的可移植文件系统应用编程接口(API)来与下层基本文件系统接口,可以使COLD驱动模块化并可跨广泛的文件系统和操作系统移植。以这种方式,生产系统可以继续使用现有的众所周知的配置,同时COLD驱动提供在企业空间中需要的新特征,尤其是适于合并环境的存储优化特征。
系统概述
图1A是描绘根据实施例的利用压缩和重复数据删除分层(COLD)驱动130来扩展基本文件系统160功能的示例计算机系统100的框图。计算机系统100包括计算设备110和数据存储设备150。计算设备110包括操作系统111、应用120A、应用120B和应用120C。操作系统111包括COLD驱动130和基本文件系统接口140。COLD驱动130包括压缩引擎132、重复数据删除引擎134和加索引引擎136。数据存储设备150包括基本文件系统160。基本文件系统160包括文件系统元数据162、基本数据文件165、COLD数据文件170和COLD元数据文件180。
计算机系统100示出了其中单个计算设备110并发执行多个应用120A-120C的合并环境。应用120A-120C、COLD驱动130和基本文件系统接口140可以全部驻留在存储器(例如,DRAM和/或高速缓存存储器)中。应用120A-120C可以针对基于数据库的应用、web服务、高性能计算(HPC)任务、以及其它通用应用。
应用120A-120C可以代表固有地执行的线程或者作为代替可以代表不同虚拟机上单独的虚拟处理。在利用虚拟化的情况下,虚拟机可以将传递或转化驱动用于对下层主机操作系统或操作系统111的基本文件系统接口140的共享访问。
虽然在图1A中示出了单个计算设备110,但是,在备选实施例中,可以使用多个计算设备。例如,多个设备可以与基本文件系统160接口,作为集群文件系统。
数据存储设备150可以代表任何类型的存储池,包括一个或多个物理盘,诸如硬盘驱动器、固态盘和其它存储介质。数据存储设备150可以被设置为独立磁盘冗余阵列(RAID)或者适于高可用性和高性能的另一配置。数据存储设备150还可以由卷管理器管理,从而允许多个盘被动态地聚合。在一个实施例中,数据存储设备150可以是可本地访问的直接连接的储存器。在其它实施例中,对数据存储设备150的访问可以经存储区域网络(SAN)提供,诸如通过因特网小型计算机系统接口(iSCSI)目标,或者通过诸如网络文件系统(NFS)和通用因特网文件系统(CIFS)的网络访问协议。
处理概述
在详细讨论COLD驱动130的处理步骤之前,对COLD驱动130可以如何扩展基本文件系统160的功能提供广泛处理概述会是有帮助的。假定基本文件系统160具有4KB或4096字节的分配单元,并且COLD驱动130的逻辑块规模也被设置为4KB。应用120A可以请求创建具有12KB数据内容的新文件,该文件将通常填充基本文件系统160中的3个分配单元。文件创建请求被COLD驱动130截获,COLD驱动130经由压缩引擎132分析数据内容。压缩引擎132把数据内容分成每个4KB的3个逻辑块,并且确定这3个逻辑块是高度可压缩的。
由于逻辑数据是高度可压缩的,因此压缩引擎132把这3个逻辑块压缩为单独的独立压缩块,然后将所述单独的独立压缩块级联到一起。然后,基本文件系统接口140被调用,以便把级联的压缩数据块写入新的COLD数据文件170中,该COLD数据文件170可以只占用基本文件系统160中的1个分配单元。文件系统元数据162也可以被更新,以反映新文件创建。包括指向每个压缩块的指针和解压缩元数据的元数据记录也被写入COLD元数据文件180。从而,当不考虑COLD驱动元数据的可忽略的贡献时,节省了2个分配单元的空间。
当应用120A、120B或120C在稍后的时间请求读取COLD数据文件170时,COLD驱动130可以截获该请求并利用COLD元数据文件180经由压缩引擎132来解压缩适当的压缩块。此外,COLD驱动130可以截获信息调用(诸如文件列表调用),使得COLD数据文件170看起来像具有12KB文件规模的标准基本文件。诸如COLD元数据文件180的特殊元数据文件也可以隐藏不被用户访问和看到。从而,COLD驱动130可以透明地操作,而无需应用、终端用户或下层基本文件系统160的行为的任何改变。
除了压缩之外,COLD驱动130还可以提供基本文件系统160通常不可获得的其它有用功能。如图1A的COLD驱动130中所示,重复数据删除引擎134和加索引引擎136也存在,它们可以提供重复数据删除和加索引功能。用于这些功能的元数据可以存储在诸如COLD元数据文件180的元数据文件中。但是,由于这些元数据文件可以作为标准基本文件存储在基本文件系统160中,因此不需要改变基本文件系统160或文件系统元数据162的结构。
当作出对诸如基本数据文件165的基本文件的文件请求时,COLD驱动130可以以旁路模式操作,其中请求被直接传递到基本文件系统接口140。这还可以在COLD驱动130断定以固有形式创建文件更高效的时候发生,例如,在要被写入的新文件已经被高度压缩的情况下。
COLD驱动操作
为了理解计算机系统100的操作和数据流,以一般化的方式审视COLD驱动130的处理步骤会是有指导性的。转向图2,图2是描绘根据实施例的用于通过压缩和重复数据删除分层(COLD)驱动130给数据请求提供服务的处理200的流程图。
在方框202,参考图1A,应用120A调用居间文件系统驱动(或COLD驱动130),以请求对可经由COLD驱动130访问的逻辑文件系统(或COLD文件系统)中的一个或多个逻辑文件进行一个或多个操作,其中COLD文件系统与COLD元数据文件180中的COLD元数据关联,COLD元数据文件180包括COLD文件系统中的逻辑文件与基本文件系统160中的基本文件之间的元数据映射。
在写操作的情况下,可以假设,在方框202之前,COLD数据文件170和COLD元数据文件180利用标准文件创建调用在基本文件系统160中创建并存储,但还没有填充数据。在读操作的情况下,可以假设,在方框202之前,COLD数据文件170已经填充了数据,并且COLD元数据文件180已经具有用于COLD数据文件170的对应的元数据记录。
COLD驱动130作为上层驱动位于现有的基本文件系统160之上。由于COLD驱动130处于应用120A-120C与基本文件系统接口140之间,因此来自应用120A-120C的所有文件系统调用都被COLD驱动130截获,然后被利用基本文件系统接口140相应地进行处理。这些文件系统调用可以包括读和写操作。COLD驱动130还可以接收来自操作系统111的其它处理的文件系统调用,这些处理在图1A中没有具体地示出。
在方框202,对本例可以假定,应用120A通过请求文件读操作来调用COLD驱动130,该文件读操作指定在由COLD数据文件170所表示的逻辑文件中从字节偏移量13000到字节偏移量13500的读范围及其在COLD元数据文件180中的对应元数据。对与COLD数据文件对应的逻辑文件的文件系统调用可以由COLD驱动130处理并适当地通过压缩引擎132、重复数据删除引擎134、加索引引擎136以及任何其它已安装的模块。在文件系统调用针对基本数据文件的情况下,COLD驱动130可以直接把文件系统调用传递到基本文件系统接口140。
压缩引擎132、重复数据删除引擎134、加索引引擎136和COLD驱动130的其它引擎模块可以作为软件和硬件的任何组合被提供。在一些实施例中,COLD驱动130可以是主要基于软件的解决方案,其中,压缩引擎132、重复数据删除引擎134和加索引引擎136是诸如编程语言库和源代码的软件部件,利用COLD驱动130被编译成可执行的二进制或机器代码。在其它实施例中,COLD驱动130的一部分可以由硬件协助或实现,例如数字信号处理(DSP)芯片、图形处理单元(GPU)、微控制器、片上系统(SoC)、或者可以在计算设备110上存在但未在图1A中具体示出的其它硬件部件。此外,虽然压缩引擎132、重复数据删除引擎134和加索引引擎136在图1A中具体地示出,但是,依赖于为逻辑文件系统设置的期望特征,引擎的任何组合都可以在COLD驱动130中被使用。
在方框204,参考图1A和图1B,COLD驱动130执行所请求的读操作,包括访问元数据记录182,以确定文件区域映射184D把所请求的逻辑文件读范围映射到COLD数据文件170的压缩数据块172D。上述确定可以通过在COLD元数据文件180中搜索用于引用COLD数据文件170的特定元数据记录的记录索引181来实现。因此,记录索引181可以包括用于指向元数据记录182的文件索引#170的条目。如元数据记录182的文件元数据183中所示,“FILEINDEX=170”匹配所请求的文件索引170。
在定位适当的元数据记录182之后,文件区域映射的列表可被逐步通过,以找出指向偏移量“D”的文件区域映射184D,然后,适当压缩的数据块172D可以被定位并由COLD驱动130处理。如果数据请求是针对大的数据块,则多个文件区域映射可以被访问。这种逐步通过处理在以下“文件结构”标题下被更详细的描述。
如图1B中所示,COLD数据文件170的结构是压缩数据块的顺序二进制级联,元数据中的文件区域映射指定每个压缩数据块的位置。每个压缩数据块可以独立于任何其它压缩数据块被解压缩,并且可以在每一块内包括任何所需的压缩元数据头部。
虽然方框204指定从逻辑文件到“基本文件”的映射,但这并不暗示这两组文件是相互排斥的。由于COLD数据文件170可以作为标准基本文件被存储在基本文件系统160中,因此COLD数据文件170也可以被认为是“基本文件”,但它的内容将是不可破译的,除非存在COLD驱动130。COLD驱动130的存在还透明地隐藏了作为基本文件的COLD数据文件170的下层结构。关于被存储为标准基本文件的COLD数据文件的更多细节,请参阅以下标题“文件系统概述”。
每个文件区域映射可以被限制到最大预定逻辑数据块规模,最大预定逻辑数据块规模可以被限制到操作系统111的页规模,例如4KB。在这种情况下,包含用于读请求的指定范围的特定文件区域映射可以容易地通过逐步通过文件区域映射的连续有序列表来确定。例如,假设4KB的逻辑数据块规模,文件区域映射184A映射到逻辑字节0-4095,文件区域映射184B映射到逻辑字节4096-8191,文件区域映射184C映射到逻辑字节8192-12287,并且文件区域映射184D映射到逻辑字节12288-16384。在本例中,为了给逻辑字节13000-13500的所请求范围提供服务,只需要一个文件区域映射184D。但是,更大的指定范围可能需要访问多个文件区域映射来满足所请求的操作。
在元数据记录的文件区域映射中所反映的适当的逻辑文件到基本文件映射将在方框204中确定,无论请求是读还是写操作。但是,对于创建新文件或附加到现有文件的写操作,还可能需要创建新的元数据记录、创建新的文件区域映射和/或修改现有的文件区域映射,这在处理200中没有具体地反映。类似地,诸如文件删除或文件移动操作的其它文件系统请求也可能需要修改和删除元数据记录和文件区域映射,这在处理200中也没有具体地反映。
在方框206,参考图1A和图1B,COLD驱动130执行所请求的读操作,包括访问被确定为映射到所请求的逻辑文件的COLD数据文件170。更具体而言,由于映射到感兴趣的块的文件区域映射组已经被识别出来,因此现在可以开始实际的文件系统操作。在读的情况下,压缩数据块172D被处理,并通过压缩引擎132被转化,以解压缩到存储器缓冲区中,这可以利用请求来指定。对于未压缩的数据块,数据可以被直接拷贝到存储器缓冲区。如果需要的话,COLD驱动130的任何其它引擎都可以被调用,以便把COLD数据文件170中的数据块正确地转化成缓冲区内其逻辑数据等同物。
在写的情况下,写缓冲区可以通过COLD驱动130的一个或多个引擎(包括压缩引擎132、重复数据删除引擎134和加索引引擎136)被处理,如下面进一步描述的。在确定对元数据记录182的任何所需修改或添加之后,适当的文件块可被写入COLD数据文件170,或写入单独的提交容器文件,如下面进一步描述的。如果重复数据删除引擎134发现重复块,则根本没有文件块可以被写。但是,重复数据删除引擎134可以参与带外(out-of-band),在这种情况下,写总是可以进行并且重复块代替地在以后的时间被除去和合并。
因此,如上所述的COLD驱动提供了灵活且模块化的驱动,它通过提供具有压缩、重复数据删除、加索引和企业空间中高度需求的其它特征的逻辑文件系统扩展了现有基本文件系统的功能。通过利用现有基本文件系统的标准文件系统调用提供COLD驱动作为上层操作系统驱动,不需要修改现有文件系统结构或驱动,从而允许生产服务器继续使用众所周知的配置,同时独立且并行地实现新的COLD驱动模块的开发。
文件系统概述
返回图1A,将更详细地描述基本文件系统160的组织和结构。基本文件系统160包括基本数据文件165,以基本文件系统160的固有格式存储的数据文件,描述关联元数据(诸如索引节点(inode)和文件名关联表)的文件系统元数据162。由COLD驱动130处理过的文件可以存储为COLD数据文件,诸如COLD数据文件170。虽然COLD数据文件170与基本数据文件165之间的数据存储格式可以不同,但是在基本文件系统160中存储这两种文件类型的方法可以是相同的,并且文件系统元数据162以相同方式描述用于基本数据文件165和COLD数据文件170的关联元数据。因此,假设COLD驱动130缺失或停用,从操作系统111的观点来看,基本数据文件165和COLD数据文件170看起来就只是两个标准基本数据文件。但是,如以上所提到的,COLD数据文件170可以被构造为压缩数据块的顺序二进制级联,而基本数据文件165可以被构造为在没有任何压缩或其它数据处理的情况下的基本文件系统160的标准二进制文件。
在COLD驱动130存在的情况下,相比于对基本文件系统160的标准文件(诸如基本数据文件165)的调用,针对COLD数据文件(诸如COLD数据文件170)的文件系统调用将被区别对待。例如,由于COLD数据文件170可以通过COLD驱动130的压缩引擎132进行处理,因此COLD数据文件170可以包含压缩数据。因此,为了取回真正的逻辑数据,而不是仅仅存储在基本文件系统160中的压缩数据,COLD元数据文件180指定让COLD驱动130解释COLD数据文件170所需的任何附加元数据,例如,COLD数据文件170内压缩块的偏移量。
从而,COLD驱动130向逻辑文件系统(也被称为COLD文件系统)提供居间文件系统驱动。如图1A中所示,COLD驱动130处于程序与下层文件系统接口、或者应用120A-120C与基本文件系统接口140之间。在这个意义上,术语“居间”是指截获通常将直接传递到基本文件系统接口140的文件系统调用。如果文件系统调用是针对基本文件系统160的固有文件,诸如基本数据文件165,则COLD驱动130可以用作到基本文件系统接口140的传递。但是,如果文件系统调用是针对COLD数据文件(诸如COLD数据文件170),则COLD驱动130处理文件系统调用,以提供对逻辑文件系统或COLD文件系统的透明访问,在必要的时候与基本文件系统接口140接口。
COLD元数据文件180与COLD数据文件170一起定义COLD文件系统内的逻辑文件。在本申请中所使用的术语“逻辑文件”指的是可以与基本文件系统160的标准文件以相同方式访问的文件。例如,如果COLD驱动130创建了被压缩和加密的COLD数据文件170,则COLD数据文件170的“逻辑文件”对应于COLD数据文件170的未压缩和解密的或者普通二进制数据表示。另外,虽然前面的例子集中在元数据记录中基本数据文件到逻辑文件的一对一关联,但是一些元数据记录也可以为单个逻辑文件引用多个基本数据文件,如以下在“重复数据删除”标题之下讨论的。
作为标准文件的元数据
COLD元数据文件180可以以与基本数据文件165相同的方式存储。因此,用于COLD驱动130的附加元数据可以利用标准基本文件系统调用作为标准文件被存储和维护,而不是被存储在专用的文件系统元数据区域或文件系统元数据162中。虽然标准文件是一个示例数据结构,但是作为基本文件系统160下的标准结构被支持的任何数据结构都可以被使用。例如,如果基本文件系统160是数据库文件系统,则COLD数据文件170可以被存储为数据库记录,而不是文件。
可以为每个COLD数据文件170创建单独的COLD元数据文件180,或者单个COLD元数据文件180可以描述多个COLD数据文件。以这种方式,COLD驱动130不需要理解文件系统元数据162的具体格式,因为文件系统元数据162不被直接修改,而是仅仅通过从基本文件系统接口140调用的标准文件系统调用被间接地修改。此外,COLD驱动130可以被逐步用于生产系统,而不需要基本文件系统160的显著修改或停机时间,因为标准基本数据文件和COLD数据文件可以在同一系统上共存。在把COLD驱动130引入计算机系统中后,还可以引入异步数据转换处理,以便把标准基本数据文件转换成COLD数据文件,如以下在“后台文件转换”标题之下所描述的。
操作系统透明性
为了维持基本文件系统160的一致视图并且为了隐藏COLD驱动130的底层实现,文件系统调用可以被修改以返回结果,使得COLD驱动130的操作对应用120A-120C和用户是透明的。例如,即使COLD元数据文件180可以被存储为标准文件,但是COLD元数据文件180可以不出现在目录列表中,从而隐藏不被普通文件系统调用看到。因此,如果COLD驱动130接收到列出特定目录或文件夹的内容的请求,则COLD元数据文件可以从呈现给用户或应用的列表中被过滤。在另一个例子中,COLD数据文件170的列表可以显示逻辑未压缩规模作为文件规模,而不是文件系统元数据162中定义的实际的压缩文件规模。从而,从应用或用户的角度看,COLD数据文件170和基本数据文件165都仅仅作为标准基本数据文件出现和工作。因此,COLD驱动130可以提供对逻辑文件系统或COLD文件系统的透明访问,就好像它正充当基本文件系统本身或基本文件系统160。
COLD驱动130可以利用特定于计算设备110的操作系统111的各种方法来实现。例如,如果操作系统111是Windows类型环境,则COLD驱动130可以利用过滤器驱动机制来实现。如果操作系统111是UNIX类型环境,则COLD驱动130可以利用vnode/虚拟文件系统(VFS)接口来实现。类似的方法可以被用于在其它OS环境中实现COLD驱动130。
虽然COLD驱动130的操作可以通常对用户并且对应用是透明的,但是新的管理工具和API调用仍然可以被提供,以允许用户检查与COLD驱动130关联的元数据,例如,以确定文件压缩率。以这种方式,COLD驱动130的操作和效果可以被容易地测量并验证,而无需中断基本文件系统160或基本文件系统接口140。
基本文件系统接口140可以包括操作系统或内核驱动,从而允许计算设备110的操作系统利用基本文件系统160安装、读、写和执行各种操作。在常规的系统配置中,应用120A-120C直接与基本文件系统接口140通信。因此,如果基本文件系统160不固有地支持压缩、重复数据删除、加索引或其它期望的功能,则这些功能无法在不改变基本文件系统160的结构和基本文件系统接口140的代码的情况下添加。
但是,通过添加COLD驱动130,上述特征可以被容易地添加,其中COLD驱动130运行以提供堆叠在固有基本文件系统160之上的居间文件系统。如图1A中所示,COLD驱动130是堆叠在基本文件系统接口140之上的上层驱动,从而截获来自应用120A-120C的文件系统调用。然后,文件系统调用可以由任何数量的提供增强功能的引擎模块(包括压缩引擎132、重复数据删除引擎134和加索引引擎136)处理。然后,这些引擎模块可以与基本文件系统接口140通信,以执行对基本文件系统160的期望的文件系统调用。
模块化和可移植性
通过基本上或完全把COLD驱动130和基本文件系统接口140之间的通信限制到标准化的可移植文件系统API调用(诸如由POSIX定义的那些),可以使COLD驱动130容易对多种操作系统和多种文件系统可迁移。由于实现压缩、重复数据删除和加索引的代码分别由压缩引擎132、重复数据删除引擎134和加索引引擎136执行,因此基本文件系统接口140和基本文件系统160可以在没有任何修改的情况下被原样使用,从而允许生产系统保留众所周知的工作配置。而且,COLD驱动130的新引擎模块可以与基本文件系统160独立并分开开发和测试,从而允许为未来发展进行快速原型设计并提供模块化和并行的路径。
特定文件系统或特定操作系统的专属特征可以只根据需要被使用,以促进系统集成或提高性能。例如,特定于集群文件系统的文件锁定可以被用来允许COLD驱动130正确地在集群环境中运行。在另一个例子中,COLD驱动130可以显式地调用特定于OS的清除命令来移除不想要的页,以防止其占用存储器。例如,如果COLD压缩单元对应于多个未压缩的页块,并且只有所述页块中的一个页块被修改或更新,则所有页块都可以显式地被CLOD驱动130清除,以准备制作新的对应COLD压缩单元。
文件结构
图1A示出了整个计算机系统100的广泛概览,图1B示出了用于存储在基本文件系统160中的COLD元数据和COLD数据文件的更详细的示例性文件结构。因此,转向图1B,图1B是描绘根据实施例的由压缩和重复数据删除分层(COLD)驱动130使用的示例COLD元数据文件180的框图。相同编号的元素可以对应于图1A的相同元素。COLD数据文件170包括压缩数据块172A、压缩数据块172B、压缩数据块172C和压缩数据块172D。COLD元数据文件180包括记录索引181和元数据记录182。元数据记录182包括文件元数据183、文件区域映射(FRM)184A、文件区域映射184B、文件区域映射184C、文件区域映射184D和文件区域映射184E。图1B的元素可以利用所存储的数据在计算机存储器中表示,其中所存储的数据利用数组、链表、图表或者由在主计算机中执行的计算机程序逻辑生成并管理的其它数据结构来组织,如进一步描述的。
如图1B中所示,COLD数据文件170被构造为压缩数据块172A-172D的顺序邻近集合,其中每个块可以被独立地解压缩,而不引用任何其它压缩数据块。由于压缩数据块从文件的开始被顺序存储,因此由于压缩产生的空间节约将总是在文件的尾端聚集,而不是在开始或中间聚集。因此,即使基本文件系统160不固有地支持稀疏文件,但都将导致恰当的文件系统空间节约。
每个压缩数据块可以以压缩头部开始,从而允许压缩引擎132确定每个压缩数据块的规模和相应未压缩逻辑数据块的规模。每个压缩数据块的每个相应未压缩逻辑数据块也可以被限制到预定的规模。例如,为了优化数据块在存储器中的高速缓存,未压缩数据规模可以被限制为等于或小于操作系统(OS)页的规模,例如4KB或8KB。
把数据块限制到OS页规模会导致过度压缩元数据和降低的压缩效率,尤其是在OS页规模小的情况下。为了解决这个问题,阈值可以被用来确定跨多个OS页的文件区域映射组对单个压缩数据块来说是否适合。例如,如果压缩元数据超过特定压缩块内的数据的4%,则压缩块可以被允许扩大到跨多个文件区域映射和多个OS页的较大的未压缩数据规模,以降低压缩块内的压缩元数据的百分比。尽管如此,为了清晰和简化,本申请中的每个压缩数据块都被假定为仅与单个文件区域映射关联。
记录索引181把COLD元数据文件180中的所有元数据记录加索引。虽然记录索引181在图1B中被示出为COLD元数据文件180的一部分,但是记录索引181也可以被存储在另一个文件中。如果在记录索引181中发现特定文件索引的条目,则该特定文件索引指向COLD数据文件,并且该条目包括指向正确元数据记录的指针。如果在记录索引181中没有发现条目,则该文件索引指向基本数据文件,并且COLD驱动130可以绕到基本文件系统接口140。
由于COLD数据文件170不包括指示压缩数据块172A-172D的规模和偏移量的任何数据结构,因此需要利用COLD元数据文件180为任何数据读或写请求正确地提供服务。如先前所讨论的,可以为每个COLD数据文件170创建单独的COLD元数据文件180,或者单个COLD元数据文件180可以描述多个或全部COLD数据文件,例如通过包含多个元数据记录。如果为每个COLD数据文件提供单独的COLD元数据文件,则记录索引181可以被可选地省略,因为COLD元数据文件的存在指示相应的COLD数据文件的存在,并且COLD元数据文件的缺乏指示相应的基本文件。每个元数据记录可以包含文件元数据和描述每个数据块的逻辑文件系统到基本文件系统映射的文件区域映射的有序列表。
文件区域映射
如图1B中所示,每个文件区域映射184A-184E包括文件编号索引(F#)、校验和(C#)、标志(Flags)和文件系统偏移量(Offset)。F#可以指图1A的文件系统元数据162中的inode编号或另一索引。C#可以指关于逻辑数据块的计算的校验和,诸如安全哈希算法1或2(SHA-1或SHA-2)。在利用加密的情况下,校验和可以代替地是关于对应的压缩和加密数据块。Flags可以引用关于包括压缩方法的数据块的信息(如果有的话)。Offset可以引用对于文件区域映射的逻辑数据块在对应COLD数据文件中的文件系统偏移量。文件区域映射184A-184E中所示出的元素仅仅是示例性的,并且,依赖于要由COLD驱动130支持的引擎模块,其它实施例可以包括其它元素。但是,最起码,每个文件区域映射需要把逻辑数据范围匹配到图1A的基本文件系统160中的匹配偏移量。
如以上所讨论的,每个压缩数据块可以映射到特定的预定最大未压缩逻辑块规模,诸如OS页规模,例如四千字节(4KB)。假设4KB的逻辑块规模,其可以被设置为COLD驱动130的可调节变量或以别的方式存储在文件元数据183中。在这种情况下,元数据记录182可以描述具有4KB×4或16KB的最大未压缩规模的文件。从而,文件区域映射184A描述逻辑字节0-4095,文件区域映射184B描述逻辑字节4096-8191,文件区域映射184C描述逻辑字节8192至12287,并且文件区域映射184D描述逻辑字节12288至16383。因此,读请求可以通过逐步顺序通过文件区域映射的有序列表来满足,直到所请求的起始偏移量在对应文件区域映射的逻辑字节范围内为止,然后取回并适当地处理,例如通过解压缩在基本文件系统160中被引用的数据。
如果最后一个压缩数据块172D没有填满整个4K逻辑块,则文件区域映射184E可以指示最后一个逻辑块的规模。例如,校验和或C#字段(zzz)可以存储与文件区域映射184D关联的最后一个逻辑块的规模,因为最后一个文件区域映射184E不实际引用任何压缩数据块,而是仅仅示意文件的结束并且因此不需要校验和。作为替代或者附加地,每个文件区域映射还可以显式指定逻辑块规模,或者逻辑块规模可以根据对应压缩数据块的头部确定。
自适应压缩
除图1B所示例子之外的另一个元数据例子将有助于例示COLD驱动130的各种附加功能,诸如自适应压缩和重复数据删除。相应地,图1C是描绘根据实施例的由压缩和重复数据删除分层(COLD)驱动130创建的元数据记录182的框图。相同编号的元素可以对应于图1A中相同元素。COLD数据文件170包括未压缩的数据块172A和压缩数据块172B。COLD数据文件174包括压缩数据块176A、压缩数据176B和未压缩数据176C。COLD元数据文件180包括记录索引181和元数据记录182。元数据记录182包括文件元数据183、文件区域映射184A、文件区域映射184B、文件区域映射184C、文件区域映射184D和重复数据删除表186。图1C的元素可以利用所存储的数据在计算机存储器中表示,其中所存储的数据利用数组、链表、图表或者由在主计算机中执行的计算机程序逻辑生成并管理的其它数据结构来组织,如进一步描述的。
虽然,为了简化,图1C的COLD元数据文件180仅示出了单个元数据记录182,但是其它实施例可以包括多个元数据记录。例如,可以为与COLD数据文件174对应的文件索引174提供元数据记录。作为替代,可以为COLD数据文件174提供单独的COLD元数据文件。
如图1C中所示,不是存储在基本文件系统160上的COLD数据文件的每个数据块都可以被压缩。例如,与文件区域映射184A对应的逻辑数据可以已经是高度压缩的数据,从而如果再次压缩则导致非常低的压缩率。因此,压缩开销会超过存储利用率的小幅减少。从而,压缩引擎132可以支持自适应压缩,其中,只有在实现一定的最小压缩率的情况下数据块才被压缩,例如至少压缩12.5%。文件区域映射184A中的元数据“Flags=vvv”可以指示压缩方法是“存储”,或者无压缩。
性能平衡
另外,出于性能原因,被频繁修改的一些块可以留作未压缩数据块,以绕开压缩开销。例如,压缩引擎132中的策略可以指定COLD数据文件中最后一个或尾部基本数据块应当保持未压缩,因为数据可能常常被附加到文件的末端,从而触发对尾部块的代价高的再压缩。一旦发生填充尾部块的数据附加而需要新块,之前的尾部块就可以被异步压缩。
对压缩的COLD数据块的写请求也可以在特殊的提交容器中收集,用于在以后的时间整合。就像其它COLD元数据文件,这种提交容器可以是基本文件系统160的另一基本文件。因此,可以通过更新文件区域映射以便把逻辑块重映射到提交容器中的基本块来向写请求提供服务。通过使用提交容器,移动、重新压缩和合并数据块的处理可以被推迟直到对于COLD数据块的写活动频率减小为止或者直到使得稀疏处理周期可用为止。
为了保持计算设备110响应并且满足应用120A-120C的性能需求,COLD驱动130可以调整压缩引擎132和其它引擎的性能参数,以实施目标性能基线,例如不超过平均5%的处理开销。因此,如果COLD驱动130消耗过多的处理周期,则COLD驱动130可以按比例缩减各种引擎的侵略或者推迟文件系统记账处理,以优化性能。
后台文件转换
此外,如前所述,由于COLD驱动130可以在任何时间被引入计算设备110,因此基本文件系统160仍然可以包括大量的标准未压缩基本数据文件,这些文件可以有利地被转换为压缩的COLD数据文件。把标准基本数据文件转换成COLD数据文件的处理可以作为后台进程运行,其中COLD驱动130缓慢通过文件系统元数据162和COLD元数据文件180,以定位候选标准数据文件,用于在空闲处理器周期可用时转换成COLD数据文件。这个转换处理可以忽略转换需要保持其固有格式的某些系统文件,例如在COLD驱动130可以被加载到操作系统中之前进行启动所需的OS文件。
重复数据删除
如图1C中所示,每个文件区域映射184A-184D独立地引用与文件元数据183不同的文件索引,并且可以不必引用相同的COLD数据文件。因此,如在元数据记录182中所示,文件区域映射184A、184B和184D全都引用COLD数据文件170或F#=170,而文件区域映射184C引用COLD数据文件174或F#=174。这可以指示图1A的重复数据删除引擎134的处理。重复数据删除引擎134可以为将被写入的每个逻辑数据块计算校验和,从而将该校验和与COLD元数据文件180中现有的校验和匹配,并且把具有重复校验和的逻辑数据块重映射到单个基本数据块。
例如,假设文件系统调用在COLD驱动130处被接收,以便把写缓冲区冲刷到新的数据文件或COLD数据文件170。写缓冲区可以包含12K的数据,从而均匀地分割成三个(3)4K的未压缩数据块。还假设COLD数据文件174已经存在,并且重复数据删除表186已经如所示出的那样被填充。重复数据删除表186匹配所有现有逻辑块的校验和与基本文件系统160中它们的关联的COLD数据块。如前面所讨论的,当利用加密时,可以代替地对压缩和加密数据计算校验和。虽然本例利用重复数据删除表186作为加速结构,但是替代实施例可以略去重复数据删除表186并且代替地直接参考COLD元数据文件180和/或文件系统元数据162来以识别现有数据块的校验和。
第一个数据块可以是已高度压缩的数据。在这种情况下,压缩引擎132可以利用自适应压缩来将文件区域映射184A写为引用所示出的未压缩数据块172A,未压缩数据块172A包含原样拷贝的第一个数据块的内容。用于文件区域映射184A的校验和也可以添加到重复数据删除表186,例如作为新条目“#4.C#(vvv)->F#(170),a”。
在计算出校验和C#为“www”之后,检查第二个数据块,通过扫描重复数据删除表186并且匹配记录#2中的C#,可以发现校验和“www”已经与现有的COLD压缩数据块176B(或者在偏移量d处的F#=174)关联。如果校验和功能足够健壮,则可以对于匹配的校验和假设为完全相同的数据块。但是,如果校验和功能具有显著的冲突可能,则可以在第二个数据块与现有的压缩数据块176B的逻辑数据之间进行二进制比较,以验证这些块是完全相同的。
假设为完全相同的块,则在COLD数据文件170中写另一个重复的块是没有必要的。相反,文件区域映射184B被重映射,以指向现有的块或压缩数据块176B。以这种方式,重复的文件、具有小变化的文件修订以及大而稀疏的文件可以利用重复数据删除引擎134被高效地表示。由于未创建具有新校验和的新块,因此没有另外的条目需要添加到重复数据删除表186。
在每次数据块写之前扫描和维护重复数据删除表186可以被证明是显著的处理负担。在这种情况下,对重复块的检查可以基于调度或周期性来在带外执行,而不是在带内或者在每次数据块写之前执行。一旦发现重复块,一个块就被选择作为单个块保留,并且对各个重复块的所有引用都被重新映射到那单个块。
由于COLD数据文件是数据块的顺序二进制级联,因此,除非被除去的重复数据块恰好位于文件的尾端,否则回收从重复数据删除所获得的磁盘空间要求COLD数据文件被合并,以释放来自不再被引用的被除去的块的空间。合并可以周期性地执行或者在空闲处理周期和/或盘I/O可用时执行,并且使得需要级联现有被引用的数据块,同时省略任何孤立或未被引用的数据块,并且相应地调节对应文件区域映射的偏移量。因此,自由空间移向文件的尾端,从而允许COLD数据文件的文件规模减小并且自由空间被基本文件系统160回收。由于合并可能需要大量的处理和文件系统开销,因此,对用于重复数据删除的一个单个块的选择可以包括合并的最小化作为重要因素。
第三个数据块具有校验和C#=xxx,并且因此在重复数据删除表186中不具有匹配条目。从而,压缩数据块172B根据第三个数据块被创建并且立即被附加到未压缩的数据块172A之后。文件区域映射184C的校验和也可以被添加到重复数据删除表186,例如作为新条目“#5.C#(xxx)->F#(170),b”。如先前所描述的,压缩元数据首部可以被存储在每个压缩数据块的开始,或者第三个数据块的压缩数据块172B。作为替代,压缩元数据可以被存储在文件区域映射中。例如,文件区域映射184C的“Flags=ggg”部分可以指定特定的压缩方法以及任何其它压缩元数据。因此,无论在哪种情况下,对压缩元数据的引用都被添加到元数据记录182。
由于没有更多数据块要保留,因此文件区域映射184D被格式化为指示文件索引170的结束的EOF映射。由于文件区域映射184D不包括实际的校验和,因此没有条目被添加到重复数据删除表186。
加索引
由于文件块内容扫描在为COLD数据文件计算校验和时发生,因此在这种扫描期间并发执行索引提取以便提取用于插入管理数据库的有用文件内容元数据会是有利的。然后,管理数据库中的文件内容元数据可以被用来实施某些文件系统级策略。从而,当压缩引擎132或重复数据删除引擎134对文件块计算校验和时,加索引引擎136也可以被调用,以执行对同一个文件块的加索引。
硬件概述
根据一个实施例,本文所述的技术是由一个或多个专用计算设备实现的。专用计算设备可以被硬连线以执行所述技术,或者可以包括被持久性编程为执行所述技术的诸如一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的数字电子设备,或者可以包括被编程为按照固件、存储器、其它存储设备或者其组合中的程序指令执行所述技术的一个或多个通用硬件处理器。这种专用计算设备还可以将定制的硬连线逻辑、ASIC或FPGA与定制编程结合以实现所述技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或者为了实现所述技术而合并硬连线和/或程序逻辑的任何其它设备。
例如,图3是例示可以实现本发明的实施例的计算机系统300的框图。计算机系统300包括用于传送信息的总线302或者其它通信机构,以及与总线302耦合的、用于处理信息的硬件处理器304。硬件处理器304可以是例如通用微处理器。
计算机系统300还包括耦合到总线302用于存储信息和要由处理器304执行的指令的主存储器306,诸如随机存取存储器(RAM)或者其它动态存储设备。主存储器306还可以用于在要由处理器304执行的指令的执行过程中存储临时变量或其它中间信息。当存储在处理器504可访问的存储介质中时,这种指令使计算机系统300成为被定制成执行指令中所指定的操作的专用机器。
计算机系统300还包括耦合到总线302的、用于存储用于处理器304的指令和静态信息的只读存储器(ROM)308或者其它静态存储设备。存储设备310(诸如磁盘或光盘)被提供并耦合到总线302,用于存储信息和指令。
计算机系统300可以经总线302耦合到显示器312(诸如阴极射线管(CRT)),用于向计算机用户显示信息。包括字母数字和其它键的输入设备314耦合到总线302,用于向处理器304传送信息和命令选择。另一种类型的用户输入设备是光标控制设备316,诸如鼠标、轨迹球、或者光标方向键,用于向处理器304传送方向信息和命令选择并且用于控制显示器312上的光标运动。这种输入设备通常具有沿两个轴(第一轴(例如,x)和第二轴(例如,y))的两个自由度,这允许设备在平面中指定位置。
计算机系统300可以利用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑实现本文所述的技术,这些与计算机系统系统结合使计算机系统300成为专用机器或者将计算机系统300编程为专用机器。根据一个实施例,本文所述的技术通过响应于处理器304执行主存储器306中所包含的一条或多条指令的一个或多个序列由计算机系统300执行。这种指令可以被从另一个存储介质(诸如存储设备310)读到主存储器306中。主存储器306中所包含的指令序列的执行使处理器304执行本文所述的步骤。在替代实施例中,硬连线的电路可以代替软件指令或者与之结合使用。
在本文中所使用的术语“存储介质”指存储使机器以特定方式操作的指令和/或数据的任何介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括,例如,光或磁盘,诸如存储设备310。易失性介质包括动态存储器,诸如主存储器306。存储介质的常见形式包括,例如,软盘、柔性盘、硬盘、固态驱动器、磁带、或者任何其它磁性数据存储介质,CD-ROM、任何其它光学数据存储介质,任何具有孔图案的物理介质,RAM、PROM及EPROM、FLASH-EPROM、NVRAM,任何其它存储器芯片或磁带盒。
存储介质与传输介质不同但是可以与其结合使用。传输介质参与在存储介质之间传输信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线302的电线。传输介质还可以采取声波或光波的形式,诸如在无线电波和红外线数据通信处理中生成的那些波。
各种形式的介质可以参与把一个或多个指令的一个或多个序列携带到处理器304以供执行。例如,指令可以最初在远程计算机的固态驱动器或磁盘上携带。远程计算机可以把指令加载到其动态存储器中,并且利用调制解调器经电话线发送指令。计算机系统500本地的调制解调器可以在电话线上接收数据,并且使用红外线发送器把数据转换成红外线信号。红外线探测器可以接收在红外线信号中携带的数据,并且合适的电路可以把数据放到总线302上。总线502把数据携带到主存储器306,处理器304从主存储器306取回并执行指令。在被处理器304执行之前或之后,由主存储器306接收到的指令可以可选地存储在存储设备310上。
计算机系统300还包括耦合到总线302的通信接口318。通信接口318提供耦合到网络链路320的双路数据通信,其中网络链路320连接到本地网络322。例如,通信接口318可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器、或者向对应类型的电话线路提供数据通信连接的调制解调器。作为另一个例子,通信接口318可以是向兼容的LAN提供数据通信连接的局域网(LAN)卡。无线链路也可以被实现。在任何这种实现中,通信接口318发送并接收携带代表各种类型的信息的数字数据流的电信号、电磁信号或光信号。
网络链路320通常通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路320可以通过本地网322向主机计算机324或者向由因特网服务提供商(ISP)326运营的数据设备提供连接。ISP326进而通过全球范围的分组数据通信网络(现在通常称为“因特网”328)提供数据通信服务。本地网322和因特网328都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号和网络链路320上并且通过通信接口318的信号是传输介质的示例形式,其中通信接口318把数字数据携带到计算机系统300并且从计算机系统300携带数字数据。
计算机系统300可以通过(一个或多个)网络、网络链路320和通信接口318发送消息和接收数据,包括程序代码。在因特网例子中,服务器330可以通过因特网328、ISP 326、本地网322和通信接口318发送所请求的用于应用程序的代码。
所接收到的代码可以在被接收到时由处理器304执行,和/或存储在存储设备310或其它非易失性储存器中,用于以后执行。
在以上说明书中,已经参考随实现方式而变化的众多具体细节描述了本发明的实施例。本发明的唯一和排它指示,以及本申请人预期要作为本发明的内容,是以从本申请发布的权利要求发布的具体形式的权利要求的集合,包括任何后续的修正。本文对这些权利要求中包含的术语专门阐述的任何定义应当控制权利要求中所使用的这些术语的含义。因此,没有在权利要求中专门记载的限制、元素、性质、特征、优点或属性不应当以任何方式限制该权利要求的范围。因此,说明书和附图要被视为示例性的而不是限制性的。

Claims (15)

1.一种方法,包括:
调用居间文件系统驱动,以请求对经由所述居间文件系统驱动可访问的一个或多个逻辑文件进行一个或多个操作;
其中所述逻辑文件系统与元数据关联,所述元数据至少部分地定义所述逻辑文件系统,所述元数据包括所述逻辑文件系统中的逻辑文件与基本文件系统中的基本文件之间的元数据映射;
执行所述一个或多个操作,其中执行所述一个或多个操作包括:
访问所述元数据映射,以确定一个或多个基本文件被映射到所述一个或多个逻辑文件;
访问被确定为映射到所述一个或多个逻辑文件的所述一个或多个基本文件;及
其中该方法是在一个或多个计算设备上执行的。
2.如权利要求1所述的方法,其中所述元数据是在所述基本文件系统的文件中。
3.如权利要求1所述的方法,其中所述元数据与所述基本文件系统的专用文件系统元数据区域分开。
4.如权利要求1所述的方法,还包括,在调用所述居间文件系统驱动之前,在所述基本文件系统中创建并存储所述元数据。
5.如权利要求1所述的方法,其中所述一个或多个操作包括把所述一个或多个逻辑文件读到缓冲区中,并且其中所述执行还包括:
根据所述元数据映射把所述一个或多个基本文件转化到所述缓冲区中。
6.如权利要求5所述的方法,其中所述元数据引用压缩元数据,并且其中所述转化还使用所述压缩元数据来把所述一个或多个基本文件解压缩到所述缓冲区中。
7.如权利要求1所述的方法,其中所述一个或多个操作包括从缓冲区写入所述一个或多个逻辑文件中,并且其中所述执行还包括:
根据所述元数据映射把所述缓冲区转化到所述一个或多个基本文件中。
8.如权利要求7所述的方法,其中,在所述转化之前,所述元数据映射把所述一个或多个逻辑文件中的至少一个逻辑数据块映射到所述一个或多个基本文件中的基本数据块,并且其中所述执行还包括:
更新所述元数据映射,使得所述至少一个或多个逻辑数据块被重映射到所述基本文件系统的提交容器文件。
9.如权利要求7所述的方法,其中所述转化把所述缓冲区压缩到所述一个或多个基本文件中,并且其中所述转化在所述元数据中添加对压缩元数据的引用,所述压缩元数据能够用于解压缩所述被压缩的缓冲区。
10.如权利要求9所述的方法,其中所述压缩所述缓冲区使用自适应压缩,以跳过压缩所述缓冲区的低于最小压缩率的块。
11.如权利要求9所述的方法,其中所述压缩所述缓冲区应用策略,以跳过压缩所述缓冲区的与所述一个或多个基本文件的任何尾部基本数据块对应的块。
12.如权利要求7所述的方法,其中所述转化还为包括所述一个或多个逻辑文件的多个逻辑数据块计算多个校验和,所述多个校验和被写入所述元数据。
13.如权利要求12所述的方法,其中所述转化还检查所述多个校验和以发现所述元数据中存在的重复校验和,从而把具有重复校验和的逻辑数据块重映射到所述基本文件系统的所述基本文件中的单个基本数据块。
14.一种装置,包括被配置为执行如权利要求1-13中任何一项所述的方法的一个或多个设备。
15.一种包括指令的计算机可读存储介质,当所述指令被一个或多个处理器执行时使得执行如权利要求1-13中任何一项所述的方法。
CN201480011389.8A 2013-01-02 2014-01-02 压缩和重复数据删除分层驱动 Active CN105027122B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/733,029 2013-01-02
US13/733,029 US9424267B2 (en) 2013-01-02 2013-01-02 Compression and deduplication layered driver
PCT/US2014/010084 WO2014107519A2 (en) 2013-01-02 2014-01-02 Compression and deduplication layered driver

Publications (2)

Publication Number Publication Date
CN105027122A true CN105027122A (zh) 2015-11-04
CN105027122B CN105027122B (zh) 2019-09-10

Family

ID=50031531

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480011389.8A Active CN105027122B (zh) 2013-01-02 2014-01-02 压缩和重复数据删除分层驱动

Country Status (4)

Country Link
US (2) US9424267B2 (zh)
EP (1) EP2941723B1 (zh)
CN (1) CN105027122B (zh)
WO (1) WO2014107519A2 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105389387A (zh) * 2015-12-11 2016-03-09 上海爱数信息技术股份有限公司 一种基于压缩的重复数据删除性能及重删率提升的方法和系统
CN107273049A (zh) * 2017-06-09 2017-10-20 郑州云海信息技术有限公司 一种应用在统一存储管理系统上的卷管理方法
CN107315973A (zh) * 2016-04-27 2017-11-03 西部数据科技股份有限公司 用于安全元数据修改的一般化验证方案
CN112335212A (zh) * 2018-03-16 2021-02-05 阿克利奥公司 消息数据的处理的方法和装置
CN113795827A (zh) * 2019-05-03 2021-12-14 Emc Ip控股有限公司 用于重复数据删除云分层的垃圾收集
US11882200B2 (en) 2018-03-16 2024-01-23 Acklio Method and apparatus processing of message data
US11989124B2 (en) 2019-04-26 2024-05-21 EMC IP Holding Company LLC Garbage collection for a deduplicated cloud tier with encrypted segments

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9521198B1 (en) * 2012-12-19 2016-12-13 Springpath, Inc. Systems and methods for implementing an enterprise-class converged compute-network-storage appliance
US10049022B2 (en) 2013-06-24 2018-08-14 Oracle International Corporation Systems and methods to retain and reclaim resource locks and client states after server failures
US9507800B2 (en) * 2013-10-23 2016-11-29 Netapp, Inc. Data management in distributed file systems
US9575974B2 (en) 2013-10-23 2017-02-21 Netapp, Inc. Distributed file system gateway
US9880928B1 (en) * 2014-09-26 2018-01-30 EMC IP Holding Company LLC Storing compressed and uncompressed data in blocks having different allocation unit sizes
US10101938B2 (en) 2014-12-30 2018-10-16 International Business Machines Corporation Data storage system selectively employing multiple data compression techniques
US9608665B2 (en) * 2015-01-29 2017-03-28 The Boeing Company Adaptive compression of data
US9425819B1 (en) * 2015-01-29 2016-08-23 The Boeing Company Adaptive compression of data
US10503445B2 (en) * 2015-03-23 2019-12-10 Netapp, Inc. Data structure store and data management
US10140461B2 (en) * 2015-10-30 2018-11-27 Microsoft Technology Licensing, Llc Reducing resource consumption associated with storage and operation of containers
US10678704B2 (en) 2016-03-29 2020-06-09 Samsung Electronics Co., Ltd. Method and apparatus for enabling larger memory capacity than physical memory size
US10528284B2 (en) 2016-03-29 2020-01-07 Samsung Electronics Co., Ltd. Method and apparatus for enabling larger memory capacity than physical memory size
US10496543B2 (en) 2016-03-31 2019-12-03 Samsung Electronics Co., Ltd. Virtual bucket multiple hash tables for efficient memory in-line deduplication application
US9983821B2 (en) 2016-03-29 2018-05-29 Samsung Electronics Co., Ltd. Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application
US9966152B2 (en) 2016-03-31 2018-05-08 Samsung Electronics Co., Ltd. Dedupe DRAM system algorithm architecture
US9575681B1 (en) 2016-04-29 2017-02-21 International Business Machines Corporation Data deduplication with reduced hash computations
US10558363B2 (en) 2016-08-09 2020-02-11 International Business Machines Corporation Hybrid compressed media in a tiered storage environment
KR102559518B1 (ko) * 2016-09-28 2023-07-26 에스케이하이닉스 주식회사 메모리 제어장치 및 방법
US10635639B2 (en) * 2016-11-30 2020-04-28 Nutanix, Inc. Managing deduplicated data
US10331902B2 (en) 2016-12-29 2019-06-25 Noblis, Inc. Data loss prevention
CN113296709B (zh) 2017-06-02 2024-03-08 伊姆西Ip控股有限责任公司 用于去重的方法和设备
CN110427340B (zh) * 2018-04-28 2023-08-04 伊姆西Ip控股有限责任公司 用于文件存储的方法、装置和计算机存储介质
CN110955381B (zh) * 2018-09-26 2023-12-26 山东华软金盾软件股份有限公司 一种压缩文件外发包的装置及方法
US11221778B1 (en) * 2019-04-02 2022-01-11 Pure Storage, Inc. Preparing data for deduplication
CN111857550B (zh) * 2019-04-29 2024-03-22 伊姆西Ip控股有限责任公司 用于数据去重的方法、设备以及计算机可读介质
US11100018B2 (en) * 2019-10-24 2021-08-24 EMC IP Holding Company, LLC System and method for supporting wire efficient replication using self-descriptive data buffer
US11362672B2 (en) * 2020-05-08 2022-06-14 Qualcomm Incorporated Inline decompression
US11960452B2 (en) * 2021-06-23 2024-04-16 Nutanix, Inc. Independent encoding and transformation of related data replicas and localized background data management in a distributed file system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070152852A1 (en) * 2006-01-05 2007-07-05 Norihisa Suzuki Network Integrated Data Compression System
CN101571869A (zh) * 2009-05-31 2009-11-04 北京握奇数据系统有限公司 一种智能卡的文件存储、读取方法及装置
US20120041964A1 (en) * 2010-08-13 2012-02-16 At&T Intellectual Property I, L.P. System and Method for File Format Management
WO2012024800A1 (en) * 2010-08-25 2012-03-01 Rayan Zachariassen Method and system for extending data storage system functions

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6195650B1 (en) * 2000-02-02 2001-02-27 Hewlett-Packard Company Method and apparatus for virtualizing file access operations and other I/O operations
WO2003073289A1 (en) * 2002-02-27 2003-09-04 Science Park Corporation Computer file system driver control method, program thereof, and program recording medium
US7111147B1 (en) * 2003-03-21 2006-09-19 Network Appliance, Inc. Location-independent RAID group virtual block management
US7653699B1 (en) * 2003-06-12 2010-01-26 Symantec Operating Corporation System and method for partitioning a file system for enhanced availability and scalability
US7188118B2 (en) 2003-11-26 2007-03-06 Veritas Operating Corporation System and method for detecting file content similarity within a file system
US7409494B2 (en) * 2004-04-30 2008-08-05 Network Appliance, Inc. Extension of write anywhere file system layout
US20070061509A1 (en) * 2005-09-09 2007-03-15 Vikas Ahluwalia Power management in a distributed file system
US7797570B2 (en) * 2005-11-29 2010-09-14 Netapp, Inc. System and method for failover of iSCSI target portal groups in a cluster environment
US8577940B2 (en) * 2006-03-20 2013-11-05 Parallels IP Holdings GmbH Managing computer file system using file system trees
JP5431148B2 (ja) * 2006-05-31 2014-03-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ストレージ用論理データオブジェクトの変換方法およびシステム
US20080043272A1 (en) * 2006-08-18 2008-02-21 Intermec Ip Corp. Method, system and article for exposing printer functionality via a logical file system
US7747584B1 (en) * 2006-08-22 2010-06-29 Netapp, Inc. System and method for enabling de-duplication in a storage system architecture
US7647308B2 (en) * 2006-11-08 2010-01-12 Mcafee, Inc. Method and system for the detection of file system filter driver based rootkits
GB0623916D0 (en) * 2006-11-30 2007-01-10 Ibm Methods, apparatus and computer programs for change management in a data processing environment
US20090307193A1 (en) 2008-06-10 2009-12-10 Microsoft Corporation Testing File System Semantic Parity
WO2011026530A1 (en) * 2009-09-07 2011-03-10 Tomtom International B.V. Navigation apparatus and method of supporting hands-free voice communication
US8510275B2 (en) * 2009-09-21 2013-08-13 Dell Products L.P. File aware block level deduplication
US20120084272A1 (en) * 2010-10-04 2012-04-05 International Business Machines Corporation File system support for inert files
WO2012056493A1 (en) * 2010-10-26 2012-05-03 Hitachi, Ltd. File management method and computer system
US9053339B2 (en) * 2010-10-27 2015-06-09 Hytrust, Inc. System and method for secure storage of virtual machines
US10216759B2 (en) * 2010-11-22 2019-02-26 Microsoft Technology Licensing, Llc Heterogeneous file optimization
US8645615B2 (en) * 2010-12-09 2014-02-04 Apple Inc. Systems and methods for handling non-volatile memory operating at a substantially full capacity
US9235502B2 (en) * 2011-09-16 2016-01-12 Apple Inc. Systems and methods for configuring non-volatile memory
US20130304705A1 (en) * 2012-05-11 2013-11-14 Twin Peaks Software, Inc. Mirror file system
US8612382B1 (en) * 2012-06-29 2013-12-17 Emc Corporation Recovering files in data storage systems
US9027031B2 (en) * 2012-10-15 2015-05-05 Vmware, Inc. Allowing inter-process communication via file system filter

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070152852A1 (en) * 2006-01-05 2007-07-05 Norihisa Suzuki Network Integrated Data Compression System
CN101571869A (zh) * 2009-05-31 2009-11-04 北京握奇数据系统有限公司 一种智能卡的文件存储、读取方法及装置
US20120041964A1 (en) * 2010-08-13 2012-02-16 At&T Intellectual Property I, L.P. System and Method for File Format Management
WO2012024800A1 (en) * 2010-08-25 2012-03-01 Rayan Zachariassen Method and system for extending data storage system functions

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105389387A (zh) * 2015-12-11 2016-03-09 上海爱数信息技术股份有限公司 一种基于压缩的重复数据删除性能及重删率提升的方法和系统
CN105389387B (zh) * 2015-12-11 2018-12-14 上海爱数信息技术股份有限公司 一种基于压缩的重复数据删除性能及重删率提升的方法和系统
CN107315973A (zh) * 2016-04-27 2017-11-03 西部数据科技股份有限公司 用于安全元数据修改的一般化验证方案
CN107315973B (zh) * 2016-04-27 2021-09-10 西部数据技术公司 用于安全元数据修改的一般化验证方案
CN107273049A (zh) * 2017-06-09 2017-10-20 郑州云海信息技术有限公司 一种应用在统一存储管理系统上的卷管理方法
CN107273049B (zh) * 2017-06-09 2020-06-02 郑州云海信息技术有限公司 一种应用在统一存储管理系统上的卷管理方法
CN112335212A (zh) * 2018-03-16 2021-02-05 阿克利奥公司 消息数据的处理的方法和装置
CN112335212B (zh) * 2018-03-16 2023-04-04 阿克利奥公司 消息数据的处理的方法和装置
US11882200B2 (en) 2018-03-16 2024-01-23 Acklio Method and apparatus processing of message data
US11989124B2 (en) 2019-04-26 2024-05-21 EMC IP Holding Company LLC Garbage collection for a deduplicated cloud tier with encrypted segments
CN113795827A (zh) * 2019-05-03 2021-12-14 Emc Ip控股有限公司 用于重复数据删除云分层的垃圾收集

Also Published As

Publication number Publication date
US9846700B2 (en) 2017-12-19
EP2941723B1 (en) 2022-06-01
US20160328415A1 (en) 2016-11-10
CN105027122B (zh) 2019-09-10
US20140188819A1 (en) 2014-07-03
WO2014107519A2 (en) 2014-07-10
EP2941723A2 (en) 2015-11-11
WO2014107519A3 (en) 2014-08-28
US9424267B2 (en) 2016-08-23

Similar Documents

Publication Publication Date Title
CN105027122A (zh) 压缩和重复数据删除分层驱动
US8538936B2 (en) System and method for data compression using compression hardware
US7496586B1 (en) Method and apparatus for compressing data in a file system
US8214388B2 (en) System and method for adding a storage server in a distributed column chunk data store
US9141626B2 (en) Volume having tiers of different storage traits
US9116904B2 (en) File system operation on multi-tiered volume
US9262313B2 (en) Provisioning in heterogenic volume of multiple tiers
AU2014212170A1 (en) Reduced redundancy in stored data
US9524300B2 (en) Heterogenic volume generation and use system
US20180067662A1 (en) Memory-based on-demand data page generation
CN105144160A (zh) 利用闪存高速缓存中动态生成的替代数据格式加速查询的方法
WO2021156677A2 (en) Data management system and method of controlling
US11741144B2 (en) Direct storage loading for adding data to a database
CN100449545C (zh) 访问扇区数据的方法和系统
US10719554B1 (en) Selective maintenance of a spatial index
US10909091B1 (en) On-demand data schema modifications
US7424574B1 (en) Method and apparatus for dynamic striping
US20230376451A1 (en) Client support of multiple fingerprint formats for data file segments
US20230376461A1 (en) Supporting multiple fingerprint formats for data file segment
WO2016194159A1 (ja) 計算機、データベース管理方法、データベース管理システム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant