《在部分克隆中使用压缩的方法及系统.pdf》由会员分享,可在线阅读,更多相关《在部分克隆中使用压缩的方法及系统.pdf(21页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103842987 A (43)申请公布日 2014.06.04 CN 103842987 A (21)申请号 201280044922.1 (22)申请日 2012.09.14 13/232,216 2011.09.14 US G06F 17/00(2006.01) (71)申请人 网络存储技术公司 地址 美国加利福尼亚州 (72)发明人 桑迪普亚达夫 德亚内施沃帕瓦尔 阿南德纳塔拉詹 (74)专利代理机构 北京天昊联合知识产权代理 有限公司 11112 代理人 陈源 顾丽波 (54) 发明名称 在部分克隆中使用压缩的方法及系统 (57) 摘要 提供了一种带压缩地对。
2、数据容器进行部分复 制的方法和系统。存储操作系统确定源数据容器 的要被克隆的部分是否包括使用非可变压缩组尺 寸压缩的多个压缩块。操作系统以非可变压缩组 尺寸克隆多个压缩块, 并且对数据容器的不处在 非可变压缩组尺寸之内的多个块进行解压缩。所 述多个压缩块和所述不处在非可变压缩组尺寸之 内的多个块随后被存储为源数据容器的部分克隆 副本。 (30)优先权数据 (85)PCT国际申请进入国家阶段日 2014.03.14 (86)PCT国际申请的申请数据 PCT/US2012/055372 2012.09.14 (87)PCT国际申请的公布数据 WO2013/040329 EN 2013.03.21 。
3、(51)Int.Cl. 权利要求书 2 页 说明书 10 页 附图 8 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书10页 附图8页 (10)申请公布号 CN 103842987 A CN 103842987 A 1/2 页 2 1. 一种用于克隆数据容器的机器实现方法, 所述数据容器具有处在非可变压缩组尺寸 之内的一些块以及不处在非可变压缩组尺寸内的一个块, 所述方法包括 : 确定使用非可变压缩组尺寸压缩的多个压缩块 ; 以非可变压缩组尺寸克隆所述多个压缩块 ; 解压缩数据容器的不处在非可变压缩组尺寸之内的多个块 ; 和 存储所述多个压缩块和所述不处。
4、在非可变压缩组尺寸之内的多个块, 来作为数据容器 的部分克隆部分。 2. 如权利要求 1 的方法, 其中所述被解压缩的多个块在与克隆的多个压缩块一起存储 之前被压缩。 3. 如权利要求 1 的方法, 其中数据容器由处理器可执行的存储操作系统以层级结构进 行存储。 4. 如权利要求 3 的方法, 其中所述层级结构包括标识数据容器的第一数据结构, 与第 一数据结构相关联的第二数据结构, 所述第二数据结构存储指向第三数据结构的地址指 针, 所述第三数据结构存储与存储装置的物理存储空间相关联的块编号。 5. 如权利要求 1 的方法, 其中所述非可变压缩组尺寸为至少八个块。 6. 一种用于克隆数据容器的。
5、机器实现方法, 包括 : 扫描源数据容器以生成源数据容器的一部分的克隆副本, 其中源数据容器的所述一部 分包括使用非可变压缩组尺寸压缩的多个块以及不处在非可变压缩组尺寸之内的至少一 个块 ; 从源数据容器读数所述至少一个块 ; 以及 使用所述至少一个块以及使用非可变压缩组尺寸压缩的多个块来生成源数据容器的 所述一部分的克隆副本。 7. 如权利要求 6 的方法, 其中所述被解压缩的多个块在与克隆的多个压缩块一起存储 之前被压缩。 8. 如权利要求 6 的方法, 其中数据容器由处理器可执行的存储操作系统以层级结构进 行存储。 9. 如权利要求 8 的方法, 其中所述层级结构包括标识源数据容器的第一。
6、数据结构, 与 第一数据结构相关联的第二数据结构, 所述第二数据结构存储指向第三数据结构的地址指 针, 所述第三数据结构存储与存储装置的物理存储空间相关联的块编号。 10. 如权利要求 6 的方法, 其中所述非可变压缩组尺寸为至少八个块。 11. 一种系统, 包括 : 第一计算系统, 其与存储系统接口, 其具有执行指令以在存储装置中保持多个数据容 器的硬件处理器 ; 其中所述处理器扫描源数据容器, 以生成数据容器的一部分的克隆副本, 其中源数据容器的所述一部分包括使用非可变压缩组尺寸压缩的多个块以及不处在非可 变压缩组尺寸之内的至少一个块 ; 从源数据容器读取所述至少一个块 ; 以及使用所述至。
7、少 一个块以及使用非可变压缩组尺寸压缩的多个块来生成源数据容器的所述一部分的克隆 副本。 12. 如权利要求 11 的系统, 其中所述被解压缩的多个块在与克隆的多个压缩块一起存 储之前被压缩。 权 利 要 求 书 CN 103842987 A 2 2/2 页 3 13. 如权利要求 11 的系统, 其中数据容器由处理器可执行的存储操作系统以层级结构 进行存储。 14. 如权利要求 13 的系统, 其中所述层级结构包括标识源数据容器的第一数据结构, 与第一数据结构相关联的第二数据结构, 所述第二数据结构存储指向第三数据结构的地址 指针, 所述第三数据结构存储与存储装置的物理存储空间相关联的块编号。
8、。 15. 如权利要求 13 的系统, 其中所述非可变压缩组尺寸为至少八个块。 16. 一种计算机程序产品, 包括 : 嵌入有计算机可读指令的计算机可用存储介质, 所述计算机可读指令用于克隆数据容 器, 该数据容器具有处在非可变压缩组尺寸之内的一些块以及不处在非可变压缩组尺寸内 的一个块, 所述计算机可读指令包括 : 用于确定使用用于克隆数据容器的一部分的非可变压缩组尺寸压缩的多个压缩块的 指令 ; 用于以非可变压缩组尺寸克隆所述多个压缩块的指令 ; 用于解压缩数据容器的不处在非可变压缩组尺寸之内的多个块的指令 ; 和 用于存储所述多个压缩块和所述不处在非可变压缩组尺寸之内的多个块, 来作为数。
9、据 容器的部分克隆部分的指令。 17. 如权利要求 16 的计算机程序产品, 其中所述被解压缩的多个块在与克隆的多个压 缩块一起存储之前被压缩。 18. 如权利要求 16 的计算机程序产品, 其中数据容器由处理器可执行的存储操作系统 以层级结构进行存储。 19. 如权利要求 18 的计算机程序产品, 其中所述层级结构包括标识数据容器的第一数 据结构, 与第一数据结构相关联的第二数据结构, 所述第二数据结构存储指向第三数据结 构的地址指针, 所述第三数据结构存储与存储装置的物理存储空间相关联的块编号。 20. 如权利要求 16 的计算机程序产品, 其中所述非可变压缩组尺寸为至少八个块。 权 利 。
10、要 求 书 CN 103842987 A 3 1/10 页 4 在部分克隆中使用压缩的方法及系统 技术领域 0001 本发明涉及存储系统。 背景技术 0002 存储系统通常包括可输入信息并且可以按需从中获得信息的一个或多个存储装 置。存储系统通常包括存储操作系统, 其特别是通过调用支持系统实现的存储业务的存储 操作对系统进行功能性的组织。存储系统可以按照各种存储架构来实现, 这些存储架构包 括但不限于网络附属存储环境、 存储区域网络以及直接附接到用户或主计算机的存储装 置。信息存储优选地被实现为物理磁盘的一个或多个存储 “卷” , 这些 “卷” 限定了存储空间 的总体逻辑布置。 0003 存储。
11、系统通常以存储阵列存储信息, 然后可将其复制和存档以用于灾难恢复或任 何其他用途。复制处理通常被称为 “备份” 操作。 0004 存储系统通常使用非可变压缩尺寸来对存储在所述存储装置的信息进行压缩。 这 种方法在克隆完整的数据容器时是高效的。如果数据容器被部分克隆, 则非可变压缩组尺 寸可能不够高效, 这是因为人们必须解压缩该数据容器的被克隆部分中的所有数据块, 并 使用非可变压缩组尺寸来压缩数据容器的该部分。 于是需要不断的努力以改善带有压缩的 部分克隆技术。 发明内容 0005 在一个实施例中, 提供了一种带压缩地对数据容器进行部分复制的方法和系统。 存储操作系统确定源数据容器的要被克隆的。
12、部分是否包括使用非可变压缩组尺寸压缩的 多个压缩块。操作系统以非可变压缩组尺寸复制多个压缩块, 并且对数据容器的不处在非 可变压缩组尺寸之内的多个块进行解压缩。 所述多个压缩块和所述不处在非可变压缩组尺 寸之内的多个块随后被存储为源数据容器的部分克隆副本。 0006 在另一个实施例中, 提供了用于克隆数据容器的机器实现的方法, 该数据容器具 有处在非可变压缩组尺寸之内的一些块以及不处在非可变压缩组尺寸内的一个块。 该方法 包括确定使用非可变压缩组尺寸压缩的多个压缩块 ; 以非可变压缩组尺寸克隆所述多个压 缩块 ; 解压缩数据容器的不处在非可变压缩组尺寸之内的多个块 ; 和存储所述多个压缩块 和。
13、所述不处在非可变压缩组尺寸之内的多个块, 来作为数据容器的部分克隆部分。 0007 在又一实施例中, 提供了用于克隆数据容器的机器实现方法。该方法包括扫描源 数据容器以生成源数据容器的一部分的克隆副本。 源数据容器的该部分包括使用非可变压 缩组尺寸压缩的多个块以及不处在非可变压缩组尺寸之内的至少一个块。 0008 该方法进一步包括从源数据容器读数所述至少一个块, 以及使用所述至少一个块 以及使用非可变压缩组尺寸压缩的多个块来生成源数据容器的该部分的克隆副本。 0009 在另一个实施例中提供了一种系统。该系统包括与存储系统接口的第一计算系 统, 其具有执行指令以在存储装置中保持多个数据容器的硬件。
14、处理器。处理器扫描源数据 说 明 书 CN 103842987 A 4 2/10 页 5 容器, 以生成数据容器的一部分的克隆副本, 其中源数据容器的该部分包括使用非可变压 缩组尺寸压缩的多个块以及不处在非可变压缩组尺寸之内的至少一个块 ; 从源数据容器读 取所述至少一个块 ; 以及使用所述至少一个块以及使用非可变压缩组尺寸压缩的多个块来 生成源数据容器的该部分的克隆副本。 0010 在又一实施例中提供一种计算机程序产品。 该计算机程序产品包括其中嵌入有计 算机可读指令的计算机可用存储介质, 所述计算机可读指令用于克隆数据容器, 该数据容 器具有处在非可变压缩组尺寸之内的一些块以及不处在非可变。
15、压缩组尺寸内的一个块。 所 述计算机可读指令包括 : 用于确定使用用于克隆数据容器的一部分的非可变压缩组尺寸压 缩的多个压缩块的指令 ; 用于以非可变压缩组尺寸克隆所述多个压缩块的指令 ; 用于解压 缩数据容器的不处在非可变压缩组尺寸之内的多个块的指令 ; 和用于存储多个压缩块和不 处在非可变压缩组尺寸之内的多个块, 来作为数据容器的部分克隆部分的指令。 0011 本文所公开的实施例具有优点, 因为允许用户同时利用部分 SIS 克隆和压缩。 0012 提供此简要概述以提供对本发明特性的快速理解。 对本发明的完整理解可以通过 参照结合附图对本发明各个实施例的详细说明来获得。 附图说明 0013 。
16、下面将参照各种实施例的附图对前述特征和其它特征进行说明。在附图中, 相同 的部件具有相同的附图标记。图示的实施例旨在说明本发明, 但不限制本发明。附图中 : 0014 图 1 示出了使用本文所公开的实施例的系统的框图。 0015 图 2 示出了根据一个实施例所使用的存储操作系统的示例。 0016 图 3 示出了存储数据容器的元数据的示例。 0017 图 4A 示出了根据一个实施例的数据容器的树形结构。 0018 图 4B 示出了克隆图 4A 的数据容器的示例。 0019 图 4C 示出了一个源数据容器和该源数据容器的部分克隆的示例。 0020 图 4D 示出了压缩的数据容器。 0021 图 4。
17、E 示出了根据一个实施例的处理流程图。 0022 图 5 示出了根据一个实施方式使用的处理系统的框图。 具体实施方式 0023 作为初步说明, 本文中所使用的术语 “组件” 、“模块” 、“系统” 等用来表示与计算机 相关的实体, 可以是执行可编程指令的通用处理器、 硬件、 固件以及它们的组合。 例如, 组件 可以是 (但不限于) 在处理器上运行的进程、 处理器、 对象、 可执行文件、 执行的线程、 程序和 / 或计算机。 0024 作为示例, 在服务器运行的应用程序以及该服务器都可以是组件。一个或多个组 件可以驻留在进程和 / 或执行的线程内, 而且组件可以位于一台计算机内和 / 或分布在两。
18、 个或更多计算机之间。另外, 这些组件也可以由其上存储有各种数据结构的各种计算机可 读介质执行。这些组件也可以例如根据具有一个或多个数据包 (例如, 来自在本地系统、 分 布式系统中和 / 或通过诸如互联网的网络上通过信号与其它系统交互的组件的数据) 的信 号而通过本地和 / 或远程进程进行通信。 说 明 书 CN 103842987 A 5 3/10 页 6 0025 根据要求保护主题的计算机可执行组件可以被存储在计算机可读介质上, 所述计 算机可读介质包括但不限于 ASIC(专用集成电路) 、 CD(光盘) 、 DVD(数字视频盘) 、 ROM(只 读存储器) 、 软盘、 硬盘、 EEPR。
19、OM(电可擦除可编程只读存储器) 、 存储棒、 闪速存储装置或任 何其它非易失性存储装置, 或任何其它存储装置。 0026 在一个实施例中, 提供了用于带压缩地部分复制数据容器的方法和系统。存储操 作系统确定源数据容器的要被克隆的部分是否包括使用非可变压缩组尺寸压缩的多个压 缩块。操作系统以非可变压缩组尺寸复制该多个压缩块, 并且对数据容器的不处在非可变 压缩组尺寸之内的多个块进行解压缩。 所述多个压缩块和所述不处在非可变压缩组尺寸之 内的多个块随后被存储为源数据容器的部分克隆副本。 0027 图 1 是包括可以有利地应用本发明的存储系统 108 的操作环境 100(也称为系统 100) 的示。
20、意框图。系统 100 用于存储一个或多个数据容器, 例如目录、 文件、 结构化和非结 构化数据。数据容器然后可以使用可变和非可变压缩尺寸进行部分克隆, 见下文的详细描 述。 0028 存储系统 108 可以是提供与存储装置 (例如存储子系统 132 的存储装置 130) 中的 信息组织相关的存储服务的一个或多个计算系统。存储装置 130 可以是适用于存储数据的 例如磁带驱动器、 普通磁盘、 诸如基于 CD-ROM 或 DVD 存储器的光盘、 磁光 (MO) 存储器、 闪存 存储装置或任何其他类型的存储装置。本文所公开的示例可以将存储装置称作 “磁盘驱动 器” , 但本文所公开的适应性实施例不限。
21、于任何特定类型的存储介质 / 装置。 0029 存储系统 108 包括通过互连系统 (或总线系统) 124 互连的一个或多个处理器 112 (也称为中央处理单元) 、 存储器 114、 网络适配器 126 和存储适配器 128。处理器 112 可以 是或可以包括一个或多个可编程通用或专用微处理器、 数字信号处理器 (DSP) 、 可编程控制 器、 专用集成电路 (ASIC) 、 可编程逻辑器件 (PLD) 等, 或这些器件的组合。总线系统 124 可 以包括例如系统总线、 外围组件互连 (PCI) 总线、 超传输或工业标准架构 (ISA) 总线、 小型 计算机系统接口 (SCSI) 总线、 通。
22、用串行总线 (USB) 或电气和电子工程师协会 (IEEE) 标准 1394 总线 (有时也被称为 “火线” ) 。 0030 存储系统 108 还包括存储操作系统 118, 其优选地实现诸如文件系统的高级别模 块, 以在存储装置 130 上将信息逻辑组织为数据容器的层级结构。 0031 在示例性实施例中, 存储器 114 包括可由处理器 112 和其它模块 (例如, 存储适配 器 128 和网络适配器 126) 寻址的用于存储机器可执行的指令的存储位置。存储器的一部 分可以被进一步组织为用于存储与本发明相关的数据结构的 “高速缓存” 116。 0032 其中一部分通常驻留在存储器中并由处理元。
23、件执行的存储操作系统 118, 特别地 通过调用由存储系统执行的存储操作来在功能上组织系统 108。对于本领域技术人员来说 显而易见的是, 可以使用包括各种计算机可读介质的其他处理和存储器部件来存储和执行 关于本文描述的发明技术的程序指令。 0033 网络适配器 126 包括用于通过如局域网的连接系统 106(也被称为网络 106) 将存 储系统 108 连接至一个或多个客户端系统 102 (示出为客户端 102) 所需的机械、 电气和信令 电路, 该连接系统可以包括点到点连接或共享介质 (诸如局域网) 。作为示例, 连接系统 106 可以实现为以太网或光纤通道 (FC) 网络。客户端 102。
24、 可以通过根据预先定义的协议 (如传 输控制协议/互联网协议 (TCP/IP) ) 交换离散帧或数据包来经由网络106与存储系统通信。 说 明 书 CN 103842987 A 6 4/10 页 7 0034 客户端 102 可以配置成执行处理器可执行的应用程序 104 的通用计算机。此外, 客户端 102 可以根据信息传送的客户端 / 服务器模型与存储系统 108 进行交互。即, 通过 在网络 106 上交换数据包 110, 客户端可以请求存储系统的服务, 并且该存储系统可以返回 由客户端所请求的服务的结果。在访问文件和目录形式的信息时, 客户端可基于 TCP/IP 发 出包括基于文件的访问。
25、协议 (如通用互联网文件系统 (CIFS) 协议或网络文件系统 (NFS) 协 议) 的数据包。可替换地, 在访问块形式的信息时, 客户端可发出包括基于块的访问协议 (如 基于 TCP 封装的小型计算机系统接口 (SCSI) 协议 (iSCSI) 和基于光纤通道 (FCP) 封装的 SCSI) 的数据包。 0035 存储适配器 128 与系统 108 上执行的存储操作系统 118 配合来访问由用户 (或客 户端) 请求的信息。存储适配器包括通过 I/O 互连安排 (如传统的高性能 FC 串行链路拓扑 结构) 耦接至存储装置的输入 / 输出 (I/O) 接口电路。 0036 存储系统 108 将。
26、存储卷呈现给客户端以便读取和写入数据。本文所用的术语 “存 储卷” 或 “卷” 指的是由物理存储抽象的逻辑数据组, 其中将一个或多个物理大容量存储装 置或者其部分组合成一个逻辑存储对象。然而, 每个存储卷也可以表示一个存储装置中的 存储空间、 多个存储装置的存储空间的一些或全部的集合、 RAID 组, 或存储空间的任何其它 组合。 0037 存储卷通常是物理存储装置 130 的综合, 其共同定义了卷上的卷块编号 (vbn) 空 间的整体逻辑排列。每个逻辑卷通常 (但不一定) 关联其自己的文件系统。一个逻辑卷 / 文 件系统中的各存储装置通常被组织为一个或多个组, 其中每个组可以作为独立 (或廉。
27、价) 磁 盘冗余阵列 (RAID) 来进行操作。 0038 为了方便访问存储装置 130, 在一个实施例中, 存储操作系统 118 实现了任意位置 写入文件系统。该文件系统在逻辑上将信息组织为命名为数据容器 (如目录和文件) 的层级 结构。每个 “磁盘上” 的数据容器可以被实现为配置成存储信息 (如数据) 的块的集合, 而目 录可以实现为由特殊格式化的数据容器, 该数据容器中存储了名称和到其他数据容器及目 录的链接。存储装置 130 上的块可以导出为命名逻辑单元号 (lun) 。 0039 在 该 说 明 性 实 施 例 中,存 储 操 作 系 统 优 选 是 可 从 NetApp 公 司 (。
28、Sunnyvale,California) 获得的Data ONTAP 的 TM 操作系统, 其实现了任意位 置写入文件布局 (WAFLTM) 文件系统。然而, 可以设想, 任何适当的存储操作系统都可被强化 以按照本文所描述的发明原理使用。因此, 这里使用的术语 “WAFL” 泛指任何适用于本公开 的教导的存储操作系统。 0040 虽然存储系统 108 被示为一个独立的系统, 即基于非集群的系统, 但在另一个实 施例中, 存储系统 108 可具有分布式架构, 其可包括例如单独的 N ( “网络” ) 刀片和 D (磁盘) 刀片。简要地来说, 所述 N 刀片用于与客户端 102 进行通信, 而 。
29、D 刀片是用于与作为存储子 系统的一部分的各存储装置 130 进行通信。N 刀片和 D 刀片可以使用内部协议互相通信。 0041 可选地, 存储系统 108 可以具有集成的架构, 其中, 所述网络和数据组件都包含在 单个箱体中。存储系统 108 还可以通过交换网耦接至其他具有自己的本地存储子系统的类 似存储系统 (未示出) 。通过这种方式, 所有的存储子系统可以形成任何存储服务器的任何 客户端都能够访问单个的存储池。 0042 图 2 示出了根据本发明一个实施例的存储操作系统 118 的一个通用示例。存储操 说 明 书 CN 103842987 A 7 5/10 页 8 作系统 118 管理如。
30、下面更详细地描述的多个数据容器。数据容器可以使用可变压缩组尺寸 和非可变压缩组尺寸进行部分克隆, 见下文更详细的说明。 0043 在一个示例中, 操作系统 118 可包括若干个模块或 “层” 。这些层包括一个文件系 统管理器 202, 其跟踪存储在各存储装置中的数据的目录结构 (层级结构) 并管理读 / 写操 作 (即执行对各存储装置 130 的读 / 写操作) 。 0044 操作系统118还可以包括协议层204及相关联的网络访问层208, 从而使存储系统 108 能够通过网络与其他系统 (如客户端 102) 进行通信。协议层 204 可实现下文所述的各 种更高级别的网络协议中的一个或多个, 。
31、如超文本传输协议 (HTTP) 、 TCP/IP 等。 0045 网络访问层 208 可以包括一个或多个驱动器, 其实现一个或多个通过诸如以太网 的网络进行通信的较低级别的协议。客户端 102 和大容量存储装置 130 之间的互连被示意 性示出为一个路径, 其示出了数据通过操作系统 118 的流动。 0046 操作系统118还可以包括存储访问层206和相关联的存储驱动器层210, 用于与存 储装置 (如 130) 进行通信。存储器访问层 206 可以实现更高级别的存储协议 (如 RAID) , 而 存储驱动器层 210 可以实现较低级别的存储装置访问协议 (例如 SCSI) 。 0047 文件。
32、系统管理器 302 可以包括或者与已在上文中参照图 1 详细描述的系统 100 的 各种组件接口。文件系统 202 包括或与虚拟化模块 212 接口, 以允许通过用户界面 (UI) 214 对发出访问存储系统 108 的命令的用户 (系统管理员) 进行访问。用户界面 214 以使得系统 管理或用户能够访问不同的层和系统的方式在存储操作系统的进行布置。 0048 应当注意的是, 上述通过操作系统层中的软件 “路径” 也可以替代地以硬件或硬件 和软件的组合来实现。 也就是说, 在本发明的一个替代实施例中, 存储访问请求数据路径可 以实现为现场可编程门阵列 (FPGA) 或 ASIC 中的逻辑电路。。
33、 0049 在本文中使用术语 “存储操作系统” 一般指的是计算机可执行代码, 用于在计算机 上执行管理数据访问的存储功能, 并且可以实现通用操作系统的数据访问语义分析。存储 操作系统也可以实现为在通用操作系统 (如或 Windows) 中运行应用程序的微 内核, 或实现为具有可配置的功能并被配置为如本文所述的存储应用的通用操作系统。 0050 此外, 本领域技术人员能够理解, 本文描述的发明可以应用于任何类型的特殊用 途 (例如文件服务器, 文件器 (filer) 或存储服务装置) 或通用计算机, 包括由被实现为存储 系统或包括存储系统的独立的计算机或其一部分。此外, 本公开的教导可以适用于各。
34、种存 储系统架构, 包括但不限于网络附属存储环境、 存储区域网络以及直接附接至客户端或主 机计算机的存储装置。术语 “存储系统” 因此应广义理解为除了被配置为执行存储功能以 及与其它装置或系统相关联的子系统之外, 还包括上述的配置。 0051 例示的文件系统是基于消息的系统, 其提供了用于访问存储在各存储装置 130 中 的信息的逻辑卷管理能力。也就是说, 除了提供文件系统语义分析, 文件系统 202 提供通常 与卷管理器相关联的功能。这些功能包括 :(i) 存储装置的集合,() 存储装置的存储带宽 的集合, 以及 (iii) 可靠性保证, 如镜像和 / 或对称配置 (RAID) 。 0052。
35、 在一个实施例中, 文件系统 202 示例性地实现了具有磁盘上格式表示法的基于块 的 WAFL 文件系统, 其使用例如 4 千字节 (KB) 的块并使用索引节点 ( “inode” ) 来标识数据容 器和数据容器的属性 (如创建时间、 访问权限、 大小和块的位置) 。文件系统 202 使用的数据 容器 (元数据文件) 来存储元数据, 元数据描述了其文件系统的布局。这些元数据文件包括 说 明 书 CN 103842987 A 8 6/10 页 9 但不限于具有文件句柄的索引节点, 以及包括用于从存储位置取出索引节点的索引节点号 的标识符。 0053 概括地说, 任意位置写入文件系统的所有索引节点。
36、被组织成索引节点数据容器。 文件系统 (FS) 的信息块指定文件系统中的信息的布局, 并包括包含文件系统的所有其他索 引节点的数据容器的索引节点。每个逻辑卷 (文件系统) 具有优选地被存储在例如 RAID 组 内固定的位置处的 FS 信息块。根 FS 信息块的索引节点可以直接引用 (指向) 索引节点文件 的块或引用索引节点文件的间接块, 这些间接块引用索引节点文件的直接块。索引节点文 件的每个直接块内具有嵌入的索引节点, 其每一个可以引用间接块, 这些间接块引用数据 容器的数据块。 0054 在操作上, 来自客户端 102 的请求作为数据包 110 通过计算机网络 1106 被转发 至存储系统。
37、 108, 并在网络适配器 126 处被接收到。 (层 208 的) 网络驱动器处理该数据包, 并在适当情况下将其传送到网络协议和文件访问层, 以便在转发至任意位置写入文件系统 202 之前执行附加的处理。这里, 如果所请求的数据不是驻留在 “内核” 中 (即, 在高速缓冲 存储器 116 中) , 则文件系统生成从存储装置 130 中加载 (取出) 其的操作。如果信息不在高 速缓存中, 则文件系统 202 使用索引节点号索引到索引节点数据容器, 以访问适当的入口 并取出逻辑 vbn。该文件系统然后将包括逻辑 vbn 的消息结构传送到存储访问层 206。逻 辑 vbn 被映射至存储装置识别符和。
38、盘块号 (盘, dbn) , 并被发送到存储驱动器 210。存储驱 动器210从指定的磁盘130访问dbn, 并将所请求的数据块加载在高速缓存116中以由存储 系统进行处理。在请求完成时, 存储系统 (和操作系统) 通过网络 106 向客户端 102 返回应 答。 0055 在示例性实施例中, 数据容器由适合于存储在存储装置 130 中的索引节点代表。 索引节点 300 也可用于根据一个实施例生成的部分克隆, 如在下文详细地说明的。图 3 提 供了一个索引节点300的示例, 其优选地包括元数据部分310和数据部分320。 存储在每个 索引节点300的元数据部分310中的信息描述了数据容器, 并。
39、由此包括数据容器的类型 (例 如常规信息 (regular) 、 目录、 虚拟磁盘) 312、 数据容器的大小314、 数据容器及其所有者 (即 用户标识符 (UID318) 和组 ID(GID320) ) 的时间标记 (例如, 访问和 / 或修改) 316。然而, 取决于类型字段 312 中定义的索引节点的类型, 每个索引节点的数据部分 320 的内容可能 有不同的解释。例如, 目录索引节点的数据部分 320 包含由文件系统 202 控制的元数据, 而 常规索引节点的数据部分包含文件系统数据。在后一种情况下, 数据部分 320 包括与数据 容器相关联的数据的表示。 0056 具体而言, 常规。
40、索引节点的数据部分 320 可以包括文件系统数据或指针, 指针将 4kB 的数据块指向用于存储文件系统数据的存储装置 130。每个指针优选的是逻辑 vbn, 以 便在访问存储的数据时促进文件系统202的效率。 给定索引节点的受限制的大小 (例如128 字节) , 则尺寸小于或等于64个字节的文件系统数据整体被表示在索引节点的数据部分内。 然而, 如果文件系统数据大于 64 字节但小于或等于 64KB, 那么该索引节点 (例如第一级索 引节点) 的数据部分可以包括多个指针 (例如16个指针) , 其中每一个指针引用存储装置130 中的 4K 数据块。 0057 此外, 如果数据的大小大于 64k。
41、B 但小于或等于 64 兆字节 (MB) , 则在索引节点 (例 如, 第二级索引节点) 的数据部分 320 中的每个指针引用一个间接块 (例如第一级块) , 其可 说 明 书 CN 103842987 A 9 7/10 页 10 以包括多个指针, 其中每一个指针引用存储装置 130 处的 4kB 数据块。对于尺寸大于 64MB 的文件系统数据, 索引节点 (例如第三级索引节点) 的数据部分 320 中的每个指针一个双间 接块 (例如第二级块) , 其中可能包括多个指针 (例如 510 个指针) , 每个指针引用间接 (例如 第一级) 块。对于包含该 510 个指针的间接块, 每一个指针引用存。
42、储装置的 4kB 数据块。在 访问文件时, 每个文件块可以从存储装置 130 加载到高速缓存 116 中。 0058 当一个磁盘索引节点 (或块) 是从存储装置 130 加载到高速缓存 116 时, 其相应的 内核结构嵌入磁盘上的结构。例如, 围绕索引节点 300 的虚线 (Figure.3) 表示磁盘上的索 引节点结构的内核表示。该内核结构是内存的一个块, 其存储了磁盘上的结构加上用于管 理内存 (而非磁盘上的) 中的数据所需的附加信息。该附加信息可以包括例如 “脏” 位 322。 在按照例如写操作的指令对索引节点 (或块) 中的数据进行更新 / 修改之后, 用脏位 322 将 修改后的数据。
43、标记为 “脏” , 使该索引节点 (块) 可随后被 “冲刷” (存储) 。 0059 图 4A 是可以有利地用于同时使用非可变和可变压缩组尺寸来生成数据容器的部 分克隆的本发明的树形结构的示意框图, 如在下文更详细描述的。该树形结构是加载到高 速缓存 116 并由文件系统 202 维护的数据容器 (如文件 A400) 的块的内部表示。根 (顶级) 索引节点 402(如嵌入索引节点) 引用间接 (例如 1 级的) 块 404。间接块 (和索引节点) 包 括指针 405, 其最终引用用于存储文件 A 的实际数据的数据块 406。也就是说, 文件 A400 的 数据被存储在这些数据块中, 这些块的位。
44、置被存储在文件的间接块中。 0060 每个 1 级间接块 404 可以包括指向各块 (例如 510 个数据块) 的指针。根据文件系 统的 “任意位置写入” 属性, 这些块可以位于各存储装置 130 的任何位置。 0061 存储管理员 / 用户可能想 “克隆” 文件系统或其一部分。为了有效地利用存储空 间, 常使用单实例存储 (SIS) 克隆技术。在 SIS 克隆中, 使用新的 1 级块来创建新的索引节 点, 但这些 1 级块指向原始数据容器的 0 级块。图 4B 提供了 SIS 克隆的一个示例, 其中文 件 400A 是图 4A 的文件 400 的克隆。 0062 类似于索引节点 402 的索。
45、引节点 403 是一个独立的结构, 具有类似 404 的多个间 接块 407。类似于 405 的指针 409 指向图 4A 的相同的数据块 406。因此, 在克隆副本中, 只 创建了新的索引节点 403 和间接 1 级块 407。0 级数据块的原始数据保持不变。这种技术 有效使用了存储空间, 因为存储实际数据的数据块不被复制, 即读出原始 0 级数据和写入 复制的 / 新的 0 级数据, 因此避免了不必要的存储装置输入 / 输出操作。 0063 存储系统也可以在克隆时使用压缩以节省存储空间。由于大量的数据可被克隆, 因此存储系统 108 通常使用非可变压缩组尺寸来压缩各块。例如, 存储系统 1。
46、08 可以将 8 个块压缩为一组, 而不是单独压缩每个块。这是有效的, 因为它节省了计算资源。 0064 可变压缩组尺寸的使用在大多数情况下是可取的, 但对于克隆数据容器 / 文件系 统的各部分的部分 SIS 克隆可能不够优选。以下将参照图 4C 对部分 SIS 克隆进行描述。 0065 图 4C 示出了具有行 410 所示的从 0 开始到 24 的文件偏移量的数据容器 408。行 412 示出了 vbn 空间中的块编号 V0-V24, 同时行 414 示出了 pbn 空间中的物理存储空间块 编号 P0-P24。数据容器 408 中被部分克隆的部分示为 416。 0066 在克隆结构中, 行 。
47、418 示出了从 0 开始到 15 的文件偏移量。行 420 示出了各新的 1 级块, 其示为 V4-V19。行 420 的各 1 级块 420 指向 422 的各 pbn 块。值得注意的是, 行 422 和行 414 的块是相同的。 说 明 书 CN 103842987 A 10 8/10 页 11 0067 如果存储系统 108 使用非可变压缩组尺寸 (例如从偏移量 “0” 开始的 8) , 则存储系 统 108 首先要解压缩行 418 所示的各块的全部信息。存储系统然后可以使用压缩组尺寸 8 重新压缩各块, 然后将压缩块复制到克隆部分 416。 0068 在局部 SIS 克隆中使用非可变。
48、压缩组尺寸的挑战如图 4D 所示, 其中数据容器 424 是图 4C 所示的数据容器 408 的压缩版本。图 4D 中的行 426 示出了块编号 0-24。图 4C 中 的 8 个块 0-7 被压缩成 3 个块, 在行 428 中示为 Vc1、 Vc2 和 Vc3。块 H1 包括压缩块 0-7 的 压缩信息。标注了 “T” 的块包括填充信息。 0069 行 430 包括 pbn 空间中的压缩块, 其示为 Pc1、 Pc2 和 Pc3, 表示文件 408 的 P1-P7 被压缩成 Pc1、 Pc2 和 Pc3。行 430 中的 H1 包括由文件系统 202 使用来解压缩存储信息的 压缩信息。 0。
49、070 块 8-15 被压缩成 4 个块, 示为 Vc9-Vc12。块 8-15 的文件头在行 428 中示为 H。同 样, 数据容器 408 的块 16-23 使用 Vcl7-Vcl9 进行压缩。文件头用于存储压缩信息。 0071 对于部分 SIS 克隆, 根据用户的请求, 只有行 426 的示为段 432 的块 4-19 被克隆。 因为存储系统108从偏移量0开始压缩源数据容器424, 因此必须解压缩所有受到克隆影响 的块, 即首先解压缩段 432 中的所有块, 接下来以段 426 的块 4 作为起始偏移量再次压缩然 后进行复制, 进行部分 SIS 克隆。因此, 使用非可变压缩组尺寸对于局部 SIS 克隆可能不是 很理想。 0072 在一个实施例中, 将可变压缩组尺寸和非可变压缩组尺寸同时用于局部 SIS 克 隆。部分组尺寸通常用于固定块位置之前或后面的块编号。例如, 对于部分克隆段 432, 将 可变压缩尺寸用于段 434 和 438, 而对段 436 的原始源数据容器保持非可变压缩组。