在部分克隆中使用压缩的方法及系统的制作方法

文档序号:6496478阅读:242来源:国知局
在部分克隆中使用压缩的方法及系统的制作方法
【专利摘要】提供了一种带压缩地对数据容器进行部分复制的方法和系统。存储操作系统确定源数据容器的要被克隆的部分是否包括使用非可变压缩组尺寸压缩的多个压缩块。操作系统以非可变压缩组尺寸克隆多个压缩块,并且对数据容器的不处在非可变压缩组尺寸之内的多个块进行解压缩。所述多个压缩块和所述不处在非可变压缩组尺寸之内的多个块随后被存储为源数据容器的部分克隆副本。
【专利说明】在部分克隆中使用压缩的方法及系统
【技术领域】
[0001]本发明涉及存储系统。
【背景技术】
[0002]存储系统通常包括可输入信息并且可以按需从中获得信息的一个或多个存储装置。存储系统通常包括存储操作系统,其特别是通过调用支持系统实现的存储业务的存储操作对系统进行功能性的组织。存储系统可以按照各种存储架构来实现,这些存储架构包括但不限于网络附属存储环境、存储区域网络以及直接附接到用户或主计算机的存储装置。信息存储优选地被实现为物理磁盘的一个或多个存储“卷”,这些“卷”限定了存储空间的总体逻辑布置。
[0003]存储系统通常以存储阵列存储信息,然后可将其复制和存档以用于灾难恢复或任何其他用途。复制处理通常被称为“备份”操作。
[0004]存储系统通常使用非可变压缩尺寸来对存储在所述存储装置的信息进行压缩。这种方法在克隆完整的数据容器时是高效的。如果数据容器被部分克隆,则非可变压缩组尺寸可能不够高效,这是因为人们必须解压缩该数据容器的被克隆部分中的所有数据块,并使用非可变压缩组尺寸来压缩数据容器的该部分。于是需要不断的努力以改善带有压缩的部分克隆技术。

【发明内容】

[0005]在一个实施例中,提供了一种带压缩地对数据容器进行部分复制的方法和系统。存储操作系统确定源数据容器的要被克隆的部分是否包括使用非可变压缩组尺寸压缩的多个压缩块。操作系统以非可变压缩组尺寸复制多个压缩块,并且对数据容器的不处在非可变压缩组尺寸之内的多个块进行解压缩。所述多个压缩块和所述不处在非可变压缩组尺寸之内的多个块随后被存储为源数据容器的部分克隆副本。
[0006]在另一个实施例中,提供了用于克隆数据容器的机器实现的方法,该数据容器具有处在非可变压缩组尺寸之内的一些块以及不处在非可变压缩组尺寸内的一个块。该方法包括确定使用非可变压缩组尺寸压缩的多个压缩块;以非可变压缩组尺寸克隆所述多个压缩块;解压缩数据容器的不处在非可变压缩组尺寸之内的多个块;和存储所述多个压缩块和所述不处在非可变压缩组尺寸之内的多个块,来作为数据容器的部分克隆部分。
[0007]在又一实施例中,提供了用于克隆数据容器的机器实现方法。该方法包括扫描源数据容器以生成源数据容器的一部分的克隆副本。源数据容器的该部分包括使用非可变压缩组尺寸压缩的多个块以及不处在非可变压缩组尺寸之内的至少一个块。
[0008]该方法进一步包括从源数据容器读数所述至少一个块,以及使用所述至少一个块以及使用非可变压缩组尺寸压缩的多个块来生成源数据容器的该部分的克隆副本。
[0009]在另一个实施例中提供了一种系统。该系统包括与存储系统接口的第一计算系统,其具有执行指令以在存储装置中保持多个数据容器的硬件处理器。处理器扫描源数据容器,以生成数据容器的一部分的克隆副本,其中源数据容器的该部分包括使用非可变压缩组尺寸压缩的多个块以及不处在非可变压缩组尺寸之内的至少一个块;从源数据容器读取所述至少一个块;以及使用所述至少一个块以及使用非可变压缩组尺寸压缩的多个块来生成源数据容器的该部分的克隆副本。
[0010]在又一实施例中提供一种计算机程序产品。该计算机程序产品包括其中嵌入有计算机可读指令的计算机可用存储介质,所述计算机可读指令用于克隆数据容器,该数据容器具有处在非可变压缩组尺寸之内的一些块以及不处在非可变压缩组尺寸内的一个块。所述计算机可读指令包括:用于确定使用用于克隆数据容器的一部分的非可变压缩组尺寸压缩的多个压缩块的指令;用于以非可变压缩组尺寸克隆所述多个压缩块的指令;用于解压缩数据容器的不处在非可变压缩组尺寸之内的多个块的指令;和用于存储多个压缩块和不处在非可变压缩组尺寸之内的多个块,来作为数据容器的部分克隆部分的指令。
[0011]本文所公开的实施例具有优点,因为允许用户同时利用部分SIS克隆和压缩。
[0012]提供此简要概述以提供对本发明特性的快速理解。对本发明的完整理解可以通过参照结合附图对本发明各个实施例的详细说明来获得。
【专利附图】

【附图说明】
[0013]下面将参照各种实施例的附图对前述特征和其它特征进行说明。在附图中,相同的部件具有相同的附图标记。图示的实施例旨在说明本发明,但不限制本发明。附图中:
[0014]图1示出了使用本文所公开的实施例的系统的框图。
[0015]图2示出了根据一个实施例所使用的存储操作系统的示例。
[0016]图3示出了存储数据容器的元数据的示例。
[0017]图4A示出了根据一个实施例的数据容器的树形结构。
[0018]图4B示出了克隆图4A的数据容器的示例。
[0019]图4C示出了一个源数据容器和该源数据容器的部分克隆的示例。
[0020]图4D示出了压缩的数据容器。
[0021]图4E示出了根据一个实施例的处理流程图。
[0022]图5示出了根据一个实施方式使用的处理系统的框图。
【具体实施方式】
[0023]作为初步说明,本文中所使用的术语“组件”、“模块”、“系统”等用来表示与计算机相关的实体,可以是执行可编程指令的通用处理器、硬件、固件以及它们的组合。例如,组件可以是(但不限于)在处理器上运行的进程、处理器、对象、可执行文件、执行的线程、程序和/或计算机。
[0024]作为示例,在服务器运行的应用程序以及该服务器都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,而且组件可以位于一台计算机内和/或分布在两个或更多计算机之间。另外,这些组件也可以由其上存储有各种数据结构的各种计算机可读介质执行。这些组件也可以例如根据具有一个或多个数据包(例如,来自在本地系统、分布式系统中和/或通过诸如互联网的网络上通过信号与其它系统交互的组件的数据)的信号而通过本地和/或远程进程进行通信。[0025]根据要求保护主题的计算机可执行组件可以被存储在计算机可读介质上,所述计算机可读介质包括但不限于ASIC (专用集成电路)、⑶(光盘)、DVD (数字视频盘)、R0M (只读存储器)、软盘、硬盘、EEPROM (电可擦除可编程只读存储器)、存储棒、闪速存储装置或任何其它非易失性存储装置,或任何其它存储装置。
[0026]在一个实施例中,提供了用于带压缩地部分复制数据容器的方法和系统。存储操作系统确定源数据容器的要被克隆的部分是否包括使用非可变压缩组尺寸压缩的多个压缩块。操作系统以非可变压缩组尺寸复制该多个压缩块,并且对数据容器的不处在非可变压缩组尺寸之内的多个块进行解压缩。所述多个压缩块和所述不处在非可变压缩组尺寸之内的多个块随后被存储为源数据容器的部分克隆副本。
[0027]图1是包括可以有利地应用本发明的存储系统108的操作环境100 (也称为系统100)的示意框图。系统100用于存储一个或多个数据容器,例如目录、文件、结构化和非结构化数据。数据容器然后可以使用可变和非可变压缩尺寸进行部分克隆,见下文的详细描述。
[0028]存储系统108可以是提供与存储装置(例如存储子系统132的存储装置130)中的信息组织相关的存储服务的一个或多个计算系统。存储装置130可以是适用于存储数据的例如磁带驱动器、普通磁盘、诸如基于⑶-ROM或DVD存储器的光盘、磁光(MO)存储器、闪存存储装置或任何其他类型的存储装置。本文所公开的示例可以将存储装置称作“磁盘驱动器”,但本文所公开的适应性实施例不限于任何特定类型的存储介质/装置。
[0029]存储系统108包括通过互连系统(或总线系统)124互连的一个或多个处理器112(也称为中央处理单元)、存储器114、网络适配器126和存储适配器128。处理器112可以是或可以包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑器件(PLD)等,或这些器件的组合。总线系统124可以包括例如系统总线、外围组件互连(PCI)总线、超传输或工业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)或电气和电子工程师协会(IEEE)标准1394总线(有时也被称为“火线”)。
[0030]存储系统108还包括存储操作系统118,其优选地实现诸如文件系统的高级别模块,以在存储装置130上将信息逻辑组织为数据容器的层级结构。
[0031]在示例性实施例中,存储器114包括可由处理器112和其它模块(例如,存储适配器128和网络适配器126)寻址的用于存储机器可执行的指令的存储位置。存储器的一部分可以被进一步组织为用于存储与本发明相关的数据结构的“高速缓存”116。
[0032]其中一部分通常驻留在存储器中并由处理元件执行的存储操作系统118,特别地通过调用由存储系统执行的存储操作来在功能上组织系统108。对于本领域技术人员来说显而易见的是,可以使用包括各种计算机可读介质的其他处理和存储器部件来存储和执行关于本文描述的发明技术的程序指令。
[0033]网络适配器126包括用于通过如局域网的连接系统106 (也被称为网络106)将存储系统108连接至一个或多个客户端系统102(示出为客户端102)所需的机械、电气和信令电路,该连接系统可以包括点到点连接或共享介质(诸如局域网)。作为示例,连接系统106可以实现为以太网或光纤通道(FC)网络。客户端102可以通过根据预先定义的协议(如传输控制协议/互联网协议(TCP/IP))交换离散帧或数据包来经由网络106与存储系统通信。[0034]客户端102可以配置成执行处理器可执行的应用程序104的通用计算机。此外,客户端102可以根据信息传送的客户端/服务器模型与存储系统108进行交互。S卩,通过在网络106上交换数据包110,客户端可以请求存储系统的服务,并且该存储系统可以返回由客户端所请求的服务的结果。在访问文件和目录形式的信息时,客户端可基于TCP/IP发出包括基于文件的访问协议(如通用互联网文件系统(CIFS)协议或网络文件系统(NFS)协议)的数据包。可替换地,在访问块形式的信息时,客户端可发出包括基于块的访问协议(如基于TCP封装的小型计算机系统接口(SCSI)协议(iSCSI)和基于光纤通道(FCP)封装的SCSI)的数据包。
[0035]存储适配器128与系统108上执行的存储操作系统118配合来访问由用户(或客户端)请求的信息。存储适配器包括通过I/o互连安排(如传统的高性能FC串行链路拓扑结构)耦接至存储装置的输入/输出(I/O)接口电路。
[0036]存储系统108将存储卷呈现给客户端以便读取和写入数据。本文所用的术语“存储卷”或“卷”指的是由物理存储抽象的逻辑数据组,其中将一个或多个物理大容量存储装置或者其部分组合成一个逻辑存储对象。然而,每个存储卷也可以表示一个存储装置中的存储空间、多个存储装置的存储空间的一些或全部的集合、RAID组,或存储空间的任何其它组合。
[0037]存储卷通常是物理存储装置130的综合,其共同定义了卷上的卷块编号(vbn)空间的整体逻辑排列。每个逻辑卷通常(但不一定)关联其自己的文件系统。一个逻辑卷/文件系统中的各存储装置通常被组织为一个或多个组,其中每个组可以作为独立(或廉价)磁盘冗余阵列(RAID)来进行操作。
[0038]为了方便访问存储装置130,在一个实施例中,存储操作系统118实现了任意位置写入文件系统。该文件系统在逻辑上将信息组织为命名为数据容器(如目录和文件)的层级结构。每个“磁盘上”的数据容器可以被实现为配置成存储信息(如数据)的块的集合,而目录可以实现为由特殊格式化的数据容器,该数据容器中存储了名称和到其他数据容器及目录的链接。存储装置130上的块可以导出为命名逻辑单元号(lun)。
[0039]在该说明性实施例中,存储操作系统优选是可从NetApp公司(Sunnyvale, California)获得的NetApp ? Data ONTAP的?操作系统,其实现了任意位置写入文件布局(WAFL?)文件系统。然而,可以设想,任何适当的存储操作系统都可被强化以按照本文所描述的发明原理使用。因此,这里使用的术语“WAFL”泛指任何适用于本公开的教导的存储操作系统。
[0040]虽然存储系统108被示为一个独立的系统,即基于非集群的系统,但在另一个实施例中,存储系统108可具有分布式架构,其可包括例如单独的N (“网络”)刀片和D (磁盘)刀片。简要地来说,所述N刀片用于与客户端102进行通信,而D刀片是用于与作为存储子系统的一部分的各存储装置130进行通信。N刀片和D刀片可以使用内部协议互相通信。
[0041]可选地,存储系统108可以具有集成的架构,其中,所述网络和数据组件都包含在单个箱体中。存储系统108还可以通过交换网耦接至其他具有自己的本地存储子系统的类似存储系统(未示出)。通过这种方式,所有的存储子系统可以形成任何存储服务器的任何客户端都能够访问单个的存储池。
[0042]图2示出了根据本发明一个实施例的存储操作系统118的一个通用示例。存储操作系统118管理如下面更详细地描述的多个数据容器。数据容器可以使用可变压缩组尺寸和非可变压缩组尺寸进行部分克隆,见下文更详细的说明。
[0043]在一个示例中,操作系统118可包括若干个模块或“层”。这些层包括一个文件系统管理器202,其跟踪存储在各存储装置中的数据的目录结构(层级结构)并管理读/写操作(即执行对各存储装置130的读/写操作)。
[0044]操作系统118还可以包括协议层204及相关联的网络访问层208,从而使存储系统108能够通过网络与其他系统(如客户端102)进行通信。协议层204可实现下文所述的各种更高级别的网络协议中的一个或多个,如超文本传输协议(HTTP)、TCP/IP等。
[0045]网络访问层208可以包括一个或多个驱动器,其实现一个或多个通过诸如以太网的网络进行通信的较低级别的协议。客户端102和大容量存储装置130之间的互连被示意性示出为一个路径,其示出了数据通过操作系统118的流动。
[0046]操作系统118还可以包括存储访问层206和相关联的存储驱动器层210,用于与存储装置(如130)进行通信。存储器访问层206可以实现更高级别的存储协议(如RAID),而存储驱动器层210可以实现较低级别的存储装置访问协议(例如SCSI)。
[0047]文件系统管理器302可以包括或者与已在上文中参照图1详细描述的系统100的各种组件接口。文件系统202包括或与虚拟化模块212接口,以允许通过用户界面(Π>214对发出访问存储系统108的命令的用户(系统管理员)进行访问。用户界面214以使得系统管理或用户能够访问不同的层和系统的方式在存储操作系统的进行布置。
[0048]应当注意的是,上述通过操作系统层中的软件“路径”也可以替代地以硬件或硬件和软件的组合来实现。也就是说,在本发明的一个替代实施例中,存储访问请求数据路径可以实现为现场可编程门阵列(FPGA)或ASIC中的逻辑电路。
[0049]在本文中使用术语“存储操作系统”一般指的是计算机可执行代码,用于在计算机上执行管理数据访问的存储功能,并且可以实现通用操作系统的数据访问语义分析。存储操作系统也可以实现为在通用操作系统(如UNIX⑧或Windows XP?)中运行应用程序的微内核,或实现为具有可配置的功能并被配置为如本文所述的存储应用的通用操作系统。
[0050]此外,本领域技术人员能够理解,本文描述的发明可以应用于任何类型的特殊用途(例如文件服务器,文件器(filer)或存储服务装置)或通用计算机,包括由被实现为存储系统或包括存储系统的独立的计算机或其一部分。此外,本公开的教导可以适用于各种存储系统架构,包括但不限于网络附属存储环境、存储区域网络以及直接附接至客户端或主机计算机的存储装置。术语“存储系统”因此应广义理解为除了被配置为执行存储功能以及与其它装置或系统相关联的子系统之外,还包括上述的配置。
[0051]例示的文件系统是基于消息的系统,其提供了用于访问存储在各存储装置130中的信息的逻辑卷管理能力。也就是说,除了提供文件系统语义分析,文件系统202提供通常与卷管理器相关联的功能。这些功能包括:(i)存储装置的集合,(?)存储装置的存储带宽的集合,以及(iii)可靠性保证,如镜像和/或对称配置(RAID)。
[0052]在一个实施例中,文件系统202示例性地实现了具有磁盘上格式表示法的基于块的WAFL文件系统,其使用例如4千字节(KB)的块并使用索引节点(“inode”)来标识数据容器和数据容器的属性(如创建时间、访问权限、大小和块的位置)。文件系统202使用的数据容器(元数据文件)来存储元数据,元数据描述了其文件系统的布局。这些元数据文件包括但不限于具有文件句柄的索引节点,以及包括用于从存储位置取出索引节点的索引节点号的标识符。
[0053]概括地说,任意位置写入文件系统的所有索引节点被组织成索引节点数据容器。文件系统(FS)的信息块指定文件系统中的信息的布局,并包括包含文件系统的所有其他索引节点的数据容器的索引节点。每个逻辑卷(文件系统)具有优选地被存储在例如RAID组内固定的位置处的FS信息块。根FS信息块的索引节点可以直接引用(指向)索引节点文件的块或引用索引节点文件的间接块,这些间接块引用索引节点文件的直接块。索引节点文件的每个直接块内具有嵌入的索引节点,其每一个可以引用间接块,这些间接块引用数据容器的数据块。
[0054]在操作上,来自客户端102的请求作为数据包110通过计算机网络1106被转发至存储系统108,并在网络适配器126处被接收到。(层208的)网络驱动器处理该数据包,并在适当情况下将其传送到网络协议和文件访问层,以便在转发至任意位置写入文件系统202之前执行附加的处理。这里,如果所请求的数据不是驻留在“内核”中(即,在高速缓冲存储器116中),则文件系统生成从存储装置130中加载(取出)其的操作。如果信息不在高速缓存中,则文件系统202使用索引节点号索引到索引节点数据容器,以访问适当的入口并取出逻辑vbn。该文件系统然后将包括逻辑vbn的消息结构传送到存储访问层206。逻辑vbn被映射至存储装置识别符和盘块号(盘,dbn),并被发送到存储驱动器210。存储驱动器210从指定的磁盘130访问dbn,并将所请求的数据块加载在高速缓存116中以由存储系统进行处理。在请求完成时,存储系统(和操作系统)通过网络106向客户端102返回应答。
[0055]在示例性实施例中,数据容器由适合于存储在存储装置130中的索引节点代表。索引节点300也可用于根据一个实施例生成的部分克隆,如在下文详细地说明的。图3提供了一个索引节点300的示例,其优选地包括元数据部分310和数据部分320。存储在每个索引节点300的元数据部分310中的信息描述了数据容器,并由此包括数据容器的类型(例如常规信息(regular)、目录、虚拟磁盘)312、数据容器的大小314、数据容器及其所有者(SP用户标识符(UID318)和组ID (GID320))的时间标记(例如,访问和/或修改)316。然而,取决于类型字段312中定义的索引节点的类型,每个索引节点的数据部分320的内容可能有不同的解释。例如,目录索引节点的数据部分320包含由文件系统202控制的元数据,而常规索引节点的数据部分包含文件系统数据。在后一种情况下,数据部分320包括与数据容器相关联的数据的表示。
[0056]具体而言,常规索引节点的数据部分320可以包括文件系统数据或指针,指针将4kB的数据块指向用于存储文件系统数据的存储装置130。每个指针优选的是逻辑vbn,以便在访问存储的数据时促进文件系统202的效率。给定索引节点的受限制的大小(例如128字节),则尺寸小于或等于64个字节的文件系统数据整体被表示在索引节点的数据部分内。然而,如果文件系统数据大于64字节但小于或等于64KB,那么该索引节点(例如第一级索引节点)的数据部分可以包括多个指针(例如16个指针),其中每一个指针引用存储装置130中的4K数据块。
[0057]此外,如果数据的大小大于64kB但小于或等于64兆字节(MB),则在索引节点(例如,第二级索引节点)的数据部分320中的每个指针引用一个间接块(例如第一级块),其可以包括多个指针,其中每一个指针引用存储装置130处的4kB数据块。对于尺寸大于64MB的文件系统数据,索引节点(例如第三级索引节点)的数据部分320中的每个指针一个双间接块(例如第二级块),其中可能包括多个指针(例如510个指针),每个指针引用间接(例如第一级)块。对于包含该510个指针的间接块,每一个指针引用存储装置的4kB数据块。在访问文件时,每个文件块可以从存储装置130加载到高速缓存116中。
[0058]当一个磁盘索引节点(或块)是从存储装置130加载到高速缓存116时,其相应的内核结构嵌入磁盘上的结构。例如,围绕索引节点300的虚线(Figure.3)表示磁盘上的索引节点结构的内核表示。该内核结构是内存的一个块,其存储了磁盘上的结构加上用于管理内存(而非磁盘上的)中的数据所需的附加信息。该附加信息可以包括例如“脏”位322。在按照例如写操作的指令对索引节点(或块)中的数据进行更新/修改之后,用脏位322将修改后的数据标记为“脏”,使该索引节点(块)可随后被“冲刷”(存储)。
[0059]图4A是可以有利地用于同时使用非可变和可变压缩组尺寸来生成数据容器的部分克隆的本发明的树形结构的示意框图,如在下文更详细描述的。该树形结构是加载到高速缓存116并由文件系统202维护的数据容器(如文件A400)的块的内部表示。根(顶级)索引节点402 (如嵌入索引节点)引用间接(例如I级的)块404。间接块(和索引节点)包括指针405,其最终引用用于存储文件A的实际数据的数据块406。也就是说,文件A400的数据被存储在这些数据块中,这些块的位置被存储在文件的间接块中。
[0060]每个I级间接块404可以包括指向各块(例如510个数据块)的指针。根据文件系统的“任意位置写入”属性,这些块可以位于各存储装置130的任何位置。
[0061]存储管理员/用户可能想“克隆”文件系统或其一部分。为了有效地利用存储空间,常使用单实例存储(SIS)克隆技术。在SIS克隆中,使用新的I级块来创建新的索引节点,但这些I级块指向原始数据容器的O级块。图4B提供了 SIS克隆的一个示例,其中文件400A是图4A的文件400的克隆。
[0062]类似于索引节点402的索引节点403是一个独立的结构,具有类似404的多个间接块407。类似于405的指针409指向图4A的相同的数据块406。因此,在克隆副本中,只创建了新的索引节点403和间接I级块407。O级数据块的原始数据保持不变。这种技术有效使用了存储空间,因为存储实际数据的数据块不被复制,即读出原始O级数据和写入复制的/新的O级数据,因此避免了不必要的存储装置输入/输出操作。
[0063]存储系统也可以在克隆时使用压缩以节省存储空间。由于大量的数据可被克隆,因此存储系统108通常使用非可变压缩组尺寸来压缩各块。例如,存储系统108可以将8个块压缩为一组,而不是单独压缩每个块。这是有效的,因为它节省了计算资源。
[0064]可变压缩组尺寸的使用在大多数情况下是可取的,但对于克隆数据容器/文件系统的各部分的部分SIS克隆可能不够优选。以下将参照图4C对部分SIS克隆进行描述。
[0065]图4C示出了具有行410所示的从O开始到24的文件偏移量的数据容器408。行412示出了 vbn空间中的块编号V0-V24,同时行414示出了 pbn空间中的物理存储空间块编号P0-P24。数据容器408中被部分克隆的部分示为416。
[0066]在克隆结构中,行418示出了从O开始到15的文件偏移量。行420示出了各新的I级块,其示为V4-V19。行420的各I级块420指向422的各pbn块。值得注意的是,行422和行414的块是相同的。[0067]如果存储系统108使用非可变压缩组尺寸(例如从偏移量“O”开始的8),则存储系统108首先要解压缩行418所示的各块的全部信息。存储系统然后可以使用压缩组尺寸8重新压缩各块,然后将压缩块复制到克隆部分416。
[0068]在局部SIS克隆中使用非可变压缩组尺寸的挑战如图4D所示,其中数据容器424是图4C所示的数据容器408的压缩版本。图4D中的行426示出了块编号0-24。图4C中的8个块0-7被压缩成3个块,在行428中示为Vcl、Vc2和Vc3。块Hl包括压缩块0_7的压缩信息。标注了 “T”的块包括填充信息。
[0069]行430包括pbn空间中的压缩块,其示为Pel、Pc2和Pc3,表示文件408的P1-P7被压缩成Pc1、Pc2和Pc3。行430中的Hl包括由文件系统202使用来解压缩存储信息的
压缩信息。
[0070]块8-15被压缩成4个块,示为Vc9-Vcl2。块8_15的文件头在行428中示为H。同样,数据容器408的块16-23使用Vcl7-Vcl9进行压缩。文件头用于存储压缩信息。
[0071]对于部分SIS克隆,根据用户的请求,只有行426的示为段432的块4_19被克隆。因为存储系统108从偏移量O开始压缩源数据容器424,因此必须解压缩所有受到克隆影响的块,即首先解压缩段432中的所有块,接下来以段426的块4作为起始偏移量再次压缩然后进行复制,进行部分SIS克隆。因此,使用非可变压缩组尺寸对于局部SIS克隆可能不是很理想。
[0072]在一个实施例中,将可变压缩组尺寸和非可变压缩组尺寸同时用于局部SIS克隆。部分组尺寸通常用于固定块位置之前或后面的块编号。例如,对于部分克隆段432,将可变压缩尺寸用于段434和438,而对段436的原始源数据容器保持非可变压缩组尺寸。
[0073]为了克隆段434中行426的标记为4、5、6和7的块,文件系统202首先解压缩这些块,然后克隆解压缩的各块。与块4、5、6和7类似,首先对标记为16、17、18和19的块解压缩,然后进行复制。
[0074]然而不对段436中标记为8-15的块解压缩,而只是从原始压缩的数据容器424进行复制。
[0075]在一个实施例中,块4、5、6和7以及块16、17、18和19可以在克隆的版本中以可
变块尺寸4进行压缩。根据上述示例,段434和438具有可变压缩组尺寸,而段436保持原始压缩组尺寸。这为想要在局部SIS克隆中使用压缩的用户节省了计算资源和空间。
[0076]图4E示出了根据一个实施例的使用可变和非可变压缩组尺寸的处理440的处理流程图。当存储操作系统118接收到部分地克隆数据容器的请求时,该处理在框S442处开始。该请求识别出数据容器并且可以经由用户界面214被接收。
[0077]在框S444中,文件系统202取回数据容器并且确定部分克隆的初始偏移量是否与压缩的源数据容器的起始偏移量相匹配。这意味着间接块符合用来压缩数据容器块的非可变压缩组尺寸。例如,参照图4D,如果请求是为了部分克隆行426的块0-15,则文件系统202仅将行428中的各块复制成克隆版本,这是因为部分克隆的初始偏移量与压缩块的偏移量相匹配。
[0078]如果部分克隆的请求不与非可变压缩组尺寸的初始偏移量相匹配,则在框S446处,文件系统202解压缩源数据容器块,并且还存储解压缩的块,或者使用不同于默认的非可变压缩组尺寸的压缩组尺寸(例如8)对解压缩的块进行压缩。参照图4D,如果部分克隆请求是针对段434开始的块,则首先读取段434的所有块,然后复制或使用块尺寸4进行压缩。段436中的块被简单复制,这是因为它们使用了默认的压缩组尺寸。以类似于段434的方式对段438中的块进行处理。
[0079]本文所公开的实施例具有优点,因为允许用户同时利用部分SIS克隆和压缩。
[0080]图5是示出了较高级别的处理系统的架构示例的高级别框图,其中可以实现上述针对图4E的处理的可执行指令。该处理系统500可以代表客户端系统102。请注意,与本发明没有密切关系的某些标准的和众所周知的组件未在图5中示出。
[0081]存储系统500包括耦接至总线系统505的一个或多个处理器502和存储器504。图4所示的总线系统505是代表任意一个或多个单独的物理总线和/或通过适当的桥接、适配器和/或控制器连接的点对点连接的抽象表示。因此总线系统505可以包括例如系统总线、外围组件互连(PCI)总线、超传输或工业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)或电气和电子工程师协会(IEEE)标准1394总线(有时也被称为“火线”)。
[0082]处理器502是处理系统500的中央处理单元(CPU),用于控制其总体操作。在某些实施例中,处理器502通过执行存储在内存504中的可编程指令506来实现控制。处理器502可以是,或可以包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑器件(PLD)等,或这些器件的组合。
[0083]存储器504表示任何形式的随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器等,或这些器件的组合。存储器504包括处理系统500的主存储器。实现了图4E的处理步骤的指令506可以驻留在内存504中并可(通过处理器502)从内存504执行。
[0084]一个或多个内部大容量存储装置510以及网络适配器512也通过总线系统505连接到处理器502。内部大容量存储装置510可以是或可以包括任何以非易失性方式存储大量数据的常规介质,例如一个或多个磁盘或光盘。网络适配器512为处理系统500提供了通过网络与远程装置进行通信的能力,并且可以是例如以太网适配器、光纤通道适配器等。该处理系统500还包括一个或多个耦接到总线系统505的输入/输出(I/O)装置508。该I/O装置508可以包括例如显示装置、键盘、鼠标等。
[0085]云计算:上述系统和技术在即将到来的云计算环境中非常有用。云计算意味着在计算资源及其底层技术架构(例如服务器、存储器、网络)之间提供抽象的计算能力,实现了对可配置计算资源共享池的便捷、按需的网络访问,该可配置计算资源能够以最小的管理工作或服务提供商交互来快速配备和释放。术语“云”指的是允许共享资源的互联网和云计算,例如类似公共事业的按需可得的软件和信息。
[0086]典型的云计算提供商在线传送能够通过其他网页服务或类似网页浏览器的软件来访问的常见的商业应用,而该软件和数据远程存储在服务器上。云计算架构使用分层方法来提供应用服务。第一层是由客户端计算机执行的应用层。在这个示例中,该应用允许客户端通过云访问存储器。
[0087]在应用层之后是云平台和云基础架构,其后是“服务器”层,该服务器层包括设计用于特定云服务的硬件和计算机软件。关于这些层的细节与本发明的实施例没有密切关系。以上所述的存储系统可以是用于提供存储服务的服务器层的一部分。
[0088]综上,提供了在部分SIS克隆中使用可变和非可变压缩组尺寸的方法和装置。请注意,在整个说明书中提及的“一个实施例”意味着结合该实施例而描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,应当强调并且应当理解,在本说明书各部分中两处或两处以上提及的“一个实施例”或“替代实施例”不一定指的是同一实施例。此外,本领域的普通技术人员能够认识到,所述特定的特征、结构或特性可以适当地组合在本发明的一个或多个实施例中。
[0089] 虽然针对当前认为的最优实施例对本发明进行了以上说明,但应当理解,本发明并不限于以上所述的内容。与此相反,本发明旨在覆盖落入所附权利要求的精神和范围内的各种修改和等同配置。
【权利要求】
1.一种用于克隆数据容器的机器实现方法,所述数据容器具有处在非可变压缩组尺寸之内的一些块以及不处在非可变压缩组尺寸内的一个块,所述方法包括: 确定使用非可变压缩组尺寸压缩的多个压缩块; 以非可变压缩组尺寸克隆所述多个压缩块; 解压缩数据容器的不处在非可变压缩组尺寸之内的多个块;和 存储所述多个压缩块和所述不处在非可变压缩组尺寸之内的多个块,来作为数据容器的部分克隆部分。
2.如权利要求1的方法,其中所述被解压缩的多个块在与克隆的多个压缩块一起存储之前被压缩。
3.如权利要求1的方法,其中数据容器由处理器可执行的存储操作系统以层级结构进行存储。
4.如权利要求3的方法,其中所述层级结构包括标识数据容器的第一数据结构,与第一数据结构相关联的第二数据结构,所述第二数据结构存储指向第三数据结构的地址指针,所述第三数据结构存储与存储装置的物理存储空间相关联的块编号。
5.如权利要求1的方法,其中所述非可变压缩组尺寸为至少八个块。
6.一种用于克隆数 据容器的机器实现方法,包括: 扫描源数据容器以生成源数据容器的一部分的克隆副本,其中源数据容器的所述一部分包括使用非可变压缩组尺寸压缩的多个块以及不处在非可变压缩组尺寸之内的至少一个块; 从源数据容器读数所述至少一个块;以及 使用所述至少一个块以及使用非可变压缩组尺寸压缩的多个块来生成源数据容器的所述一部分的克隆副本。
7.如权利要求6的方法,其中所述被解压缩的多个块在与克隆的多个压缩块一起存储之前被压缩。
8.如权利要求6的方法,其中数据容器由处理器可执行的存储操作系统以层级结构进行存储。
9.如权利要求8的方法,其中所述层级结构包括标识源数据容器的第一数据结构,与第一数据结构相关联的第二数据结构,所述第二数据结构存储指向第三数据结构的地址指针,所述第三数据结构存储与存储装置的物理存储空间相关联的块编号。
10.如权利要求6的方法,其中所述非可变压缩组尺寸为至少八个块。
11.一种系统,包括: 第一计算系统,其与存储系统接口,其具有执行指令以在存储装置中保持多个数据容器的硬件处理器;其中所述处理器扫描源数据容器,以生成数据容器的一部分的克隆副本,其中源数据容器的所述一部分包括使用非可变压缩组尺寸压缩的多个块以及不处在非可变压缩组尺寸之内的至少一个块;从源数据容器读取所述至少一个块;以及使用所述至少一个块以及使用非可变压缩组尺寸压缩的多个块来生成源数据容器的所述一部分的克隆副本。
12.如权利要求11的系统,其中所述被解压缩的多个块在与克隆的多个压缩块一起存储之前被压缩。
13.如权利要求11的系统,其中数据容器由处理器可执行的存储操作系统以层级结构进行存储。
14.如权利要求13的系统,其中所述层级结构包括标识源数据容器的第一数据结构,与第一数据结构相关联的第二数据结构,所述第二数据结构存储指向第三数据结构的地址指针,所述第三数据结构存储与存储装置的物理存储空间相关联的块编号。
15.如权利要求13的系统,其中所述非可变压缩组尺寸为至少八个块。
16.一种计算机程序产品,包括: 嵌入有计算机可读指令的计算机可用存储介质,所述计算机可读指令用于克隆数据容器,该数据容器具有处在非可变压缩组尺寸之内的一些块以及不处在非可变压缩组尺寸内的一个块,所述计算机可读指令包括: 用于确定使用用于克隆数据容器的一部分的非可变压缩组尺寸压缩的多个压缩块的指令; 用于以非可变压缩组尺寸克隆所述多个压缩块的指令; 用于解压缩数据容器的不处在非可变压缩组尺寸之内的多个块的指令;和 用于存储所述多个压缩块和所述不处在非可变压缩组尺寸之内的多个块,来作为数据容器的部分克隆部分的指令。
17.如权利要求16的计算机程序产品,其中所述被解压缩的多个块在与克隆的多个压缩块一起存储之前被压缩。
18.如权利要求16的计算机程序产品,其中数据容器由处理器可执行的存储操作系统以层级结构进行存储。
19.如权利要求18的计算机程序产品,其中所述层级结构包括标识数据容器的第一数据结构,与第一数据结构相关联的第二数据结构,所述第二数据结构存储指向第三数据结构的地址指针,所述第三数据结构存储与存储装置的物理存储空间相关联的块编号。
20.如权利要求16的计算机程序产品,其中所述非可变压缩组尺寸为至少八个块。
【文档编号】G06F17/00GK103842987SQ201280044922
【公开日】2014年6月4日 申请日期:2012年9月14日 优先权日:2011年9月14日
【发明者】桑迪普·亚达夫, 德亚内施沃·帕瓦尔, 阿南德·纳塔拉詹 申请人:网络存储技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1