CN115220651A - 与克隆对象相关的系统和方法 - Google Patents

与克隆对象相关的系统和方法 Download PDF

Info

Publication number
CN115220651A
CN115220651A CN202210349567.4A CN202210349567A CN115220651A CN 115220651 A CN115220651 A CN 115220651A CN 202210349567 A CN202210349567 A CN 202210349567A CN 115220651 A CN115220651 A CN 115220651A
Authority
CN
China
Prior art keywords
data
slice
snapshot
written
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.)
Pending
Application number
CN202210349567.4A
Other languages
English (en)
Inventor
阿比吉特·霍尔德
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN115220651A publication Critical patent/CN115220651A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Abstract

本发明公开了一种对象克隆方法,以及一种在多个快照中定位数据而搜索费用又不贵的高效方法。在本发明中,用户可以通过至少读取主要存在于超速缓存内存中的元数据来高效定位待读取快照。所述元数据可帮助用户定位磁盘上的实际用户数据。每次从文件或克隆创建新克隆时,都会从增量对象创建新快照。原始文件和克隆文件共享同一个影子对象,但这些文件有各自独立的增量对象。快照数组包括与文件或克隆相关联的所有快照的对象标识符。为了执行I/O操作,将新数据写入超速缓存内存或磁盘驱动器中,并在将所述新数据写入磁盘驱动器的情况下更新切片索引数组和颗粒位图。如果切片索引数组中的切片索引的最高有效位(most‑significant‑bit,MSB)和所述颗粒位图未设置,或者切片索引数组中的所述切片索引未设置为克隆ID,则从所述影子对象读取数据,否则从所述增量对象读取所述数据。

Description

与克隆对象相关的系统和方法
技术领域
本文中描述的本发明总体涉及数据存储系统中的克隆机制。具体地,本发明中所描述的实施例涉及一种与克隆数据存储系统中的克隆对象相关的系统和方法。
背景技术
克隆是单个数据集的可写、时间点、空间高效的副本。克隆共享相同的底层存储,直到原始数据集或克隆数据集被修改,并且只有修改的部分(块/切片)经过分流以占用单独的存储,其余部分继续共享相同的存储(写时复制)。因此,与单独存储副本相比,可以实现更好的空间利用率。此外,与物理副本相比,克隆的创建速度更快,因为与克隆相比,物理副本涉及在磁盘上写入更多数据。与数据去重相比,克隆速度快得多,占用的CPU也少得多。
在过去,克隆操作是在存储容器上进行的。对于存储区域网络(storage areanetwork,SAN)阵列,这些操作基于逻辑单元号(logical unit number,LUN),而对于网络连接存储(network-attached storage,NAS)阵列,这些操作基于卷。
非关系型数据库、对象存储等新时代应用会创建大量小文件。另一个实例是大数据和Hadoop等应用,这些应用会创建少量大文件。人工智能(artificial intelligence,AI)和机器学习(machine learning,ML)应用创建可变大小的不可变文件组合。最后,所有这些应用的组合会创建一个数据湖,该数据湖能够保存通过各种协议可互操作和可互访问的各种文件。
在所有这些实例中,通常一个大型存储容器提供空间管理原语,而大多数用户对一小部分数据进行操作。因此,在整个存储容器上应用快照和克隆原语会迅速浪费大量宝贵的存储空间。此外,复制还需要更多的时间、CPU和网络带宽。进一步地,传统的基于块的存储使用快照进行数据复制,其中,这种存储需要传输两个快照之间的差异(两个快照之间更改的块)来复制数据。因此,这种存储需要查找两个快照之间更改的块。
发明内容
本发明内容的目的是介绍与克隆键值存储(非关系数据库)中的对象相关的概念,并且在下面的详细介绍中进一步描述。本发明内容并不旨在确定所要求保护的主题的基本特征,也不旨在用于确定或限制所要求保护的主题的范围。
本发明的主要目的是提供一种克隆容器(例如,文件系统)中的单个对象的机制,从而大幅减少有价值的存储空间,并减少复制时间、CPU和网络带宽。
本发明的另一目的是针对与克隆链长度及其在所述克隆链中的相对位置无关的对象提高其克隆的I/O性能。
本发明的另一目的是为键值存储中的对象克隆提供一种快速、高效的方案,从而能够帮助用户通过以对象粒度拍摄快照,快速、轻松地对数据中心或云中的非结构化数据进行粒度保护。
本发明的另一目的是提供一种通过以对象级别拍摄快照来更快地创建对象克隆的方案,因此只需增加单个对象快照引用计数。
本发明的又一目的是更快地复制对象,与其它方法不同的是在计算两个快照之间的增量时无需查找更改的块。对象中的所有新写入都应转到单独的对象。
相应地,一方面,在一种实现方式中,本发明公开了一种存储系统。所述系统包括:
存储设备,所述存储设备用于存储第一对象,所述第一对象包括第二对象和第三对象,所述第二对象用于存储对所述第一对象执行第一克隆操作之后写入的数据,所述第三对象用于在对所述第一对象执行所述第一克隆操作之前存储所述第一对象的数据;
处理器,所述处理器用于:接收待写入数据;将所述待写入数据写入所述第二对象;更新所述第一对象的元数据,以指示所述待写入数据存储在所述第二对象中。
在一种实现方式中,所述第一对象的所述元数据包括快照数组,所述快照数组记录执行所述克隆操作之后生成的第一快照的第一快照信息。
在一种实现方式中,所述处理器还用于响应于第二克隆操作将存储在所述第二对象中的所述数据复制为第二快照,并将所述第二快照信息记录到所述快照数组中。
在一种实现方式中,所述第一对象的逻辑地址被划分为多个切片,所述第二对象包括与所述第一对象相同的切片,所述处理器还用于将存储所述第二对象的所述数据的切片的信息与所述第二快照信息之间的关系记录到所述第一对象的所述元数据中。
在一种实现方式中,所述第一对象的所述逻辑地址被划分为多个切片,所述第二对象包括与所述第一对象相同的切片,所述元数据存储所述多个切片的所述信息,将所述待写入数据写入所述第二对象时,所述处理器还用于:确定写入所述待写入数据的切片;将所述待写入数据写入所述确定的切片;修改所述元数据中所述确定的切片的所述信息,以指示所述切片被修改。
在一种实现方式中,所述多个切片中的每个切片被划分为多个颗粒,每个切片的所述信息对应于颗粒位图,以指示每个切片中修改的颗粒。
在一种实现方式中,所述处理器还用于接收读取请求,并根据所述第一对象的所述元数据从所述第二对象或所述第三对象读取数据。
在一种实现方式中,所述处理器还用于确定存储读取请求的待读取数据的切片,并确定根据每个切片的所述切片信息从所述第二对象或所述第三对象读取每个切片的所述数据。
在一种实现方式中,从所述第三对象读取第一切片的数据时,所述处理器用于根据所述元数据确定存储所述第一切片的所述数据的快照,并从所述确定的快照读取所述第一切片的所述数据。
另一方面,提供了一种由存储系统执行的数据处理方法。所述存储系统包括第一对象,所述第一对象包括第二对象和第三对象,所述第二对象用于存储对所述第一对象执行第一克隆操作之后写入的数据,所述第三对象用于在对所述第一对象执行所述第一克隆操作之前存储所述第一对象的数据;所述方法包括:接收待写入数据;将所述待写入数据写入所述第二对象;更新所述第一对象的元数据,以指示所述待写入数据存储在所述第二对象中。
在一种实现方式中,所述第一对象的所述元数据包括快照数组,所述快照数组记录执行所述克隆操作之后生成的第一快照的第一快照信息。
在一种实现方式中,所述方法还包括响应于第二克隆操作将存储在所述第二对象中的所述数据复制为第二快照,并将所述第二快照信息记录到所述快照数组中。
在一种实现方式中,所述第一对象的逻辑地址被划分为多个切片,所述第二对象包括与所述第一对象相同的切片,所述方法还包括将存储所述第二对象的所述数据的切片的信息与所述第二快照信息之间的关系记录到所述第一对象的所述元数据中。
在一种实现方式中,所述第一对象的所述逻辑地址被划分为多个切片,所述第二对象包括与所述第一对象相同的切片,所述元数据存储所述多个切片的所述信息,所述将所述待写入数据写入所述第二对象包括:确定写入所述待写入数据的切片;将所述待写入数据写入所述确定的切片;修改所述元数据中所述确定的切片的所述信息,以指示所述切片被修改。
在一种实现方式中,所述多个切片中的每个切片被划分为多个颗粒,每个切片的所述信息对应于颗粒位图,以指示每个切片中修改的颗粒。
在一种实现方式中,所述方法还包括接收读取请求,并根据所述第一对象的所述元数据从所述第二对象或所述第三对象读取数据。
在一种实现方式中,所述方法还包括确定存储读取请求的待读取数据的切片,并确定根据每个切片的所述切片信息从所述第二对象或所述第三对象读取每个切片的所述数据。
在一种实现方式中,从所述第三对象读取第一切片的数据时,所述方法还包括根据所述元数据确定存储所述第一切片的所述数据的快照,并从所述确定的快照读取所述第一切片的所述数据。
上述与第一实现方式相关的各种选项和优选实施例也适用于其它相关实现方式。
附图说明
该详细描述是参考附图进行描述的。在附图中附图标记最左边的数字表示该附图标记首次出现的附图。所有附图使用相同的数字来指代相同特征和组件。
图1示出了根据本发明的一种实现方式提供的存储系统的框图;
图2示出了根据本发明的一种实现方式提供的存储系统的对象的示意性结构;
图3示出了根据本发明的一种实现方式提供的从文件对象创建的克隆文件的表示;
图4示出了根据本发明的一种实现方式提供的克隆创建之后的写入I/O过程实现的表示;
图5示出了根据本发明的一种实现方式提供的用于执行写入I/O请求的表示流程图;
图6示出了根据本发明的一种实现方式提供的用于执行读取I/O请求的表示流程图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术解决方案进行清楚的描述。显然,所描述的实施例仅仅是本发明的一部分实施例而不是全部实施例。
本发明可以通过多种方式实现为过程、装置、系统、物质组成、计算机可读介质(例如计算机可读存储介质)或计算机网络,其中,程序指令通过光学或电子通信链路发送。在本说明书中,这些实现方式或者本发明可以采取的任何其它形式可以称为技术。通常,所公开过程的步骤的顺序可以在本发明的范围内进行更改。
下面提供本发明的一个或多个实施例的详细描述以及示出本发明的原理的附图。虽然本发明是结合这些实施例进行描述的,但本发明不限于任何实施例。本发明的范围仅由权利要求书限制,并且本发明包括许多替代方案、修改和等同物。以下描述中阐述了许多具体细节,以便透彻地理解本发明。提供这些细节是为了举例的目的,并且本发明可以在没有部分或者所有这些具体细节的情况下根据权利要求书进行实践。为清楚起见,没有详细描述有关本发明的技术领域中已知的技术资料,以免对本发明产生不必要的混淆。
以下详细描述中阐述了许多具体细节,以便透彻地理解本发明。但是,本领域的技术人员应理解,在没有这些特定细节的情况下,依然可以实践本公开。在其它情况下,没有详细描述公知的方法、过程、组件、模块、单元和/或电路,以免混淆本发明。
尽管本发明实施例不限于此,但使用处理、计算、确定、建立、分析、检查等术语进行的讨论,可以指计算机、计算平台、计算系统或其它电子计算设备的操作和/或过程,该操作和/或过程将数据(该数据表示为计算机寄存器和/或存储器内的物理(例如,电子)量)操纵和/或转换成其它数据,该其它数据类似地表示为计算机寄存器和/或存储器或可以存储指令以执行操作和/或过程的其它信息非暂时性存储介质内的物理量。尽管本发明实施例在这方面不受限制,但本文使用的术语“多个”可以包括“两个或更多个”。术语“多个”可以在整个说明书中用于描述两个或更多个组件、设备、元件、单元、参数等。除非明确说明,否则本文描述的方法实施例不限于特定的顺序。此外,所描述的方法实施例或其元素中的一些可以在同一时间点同时发生或执行。
如上所述,在整个存储容器上应用快照和克隆原语会迅速浪费大量宝贵的存储空间。此外,复制还需要更多的时间、CPU和网络带宽。进一步地,传统的基于块的存储使用快照进行数据复制,其中,这种存储需要传输两个快照之间的差异(两个快照之间更改的块)来复制数据。因此,这种存储需要查找两个快照之间更改的块。例如,如果在文件系统等基于对象的存储中操作克隆,由于文件系统中有很多对象,因此在文件系统中执行克隆操作时,应克隆文件系统中的所有对象。然而,实际上,只有少数对象被修改。
进一步地,由于对象由唯一标识符标识,且同一标识符用于构成将对象存储在键值存储(非关系数据库)中的键,因此,如果对象存储在键值存储中,克隆对象将面临巨大挑战。由于克隆对象和原始对象具有不同的标识符,因此具有不同的键,除非维护键之间的某种映射,否则在克隆对象和原始对象之间共享数据将变得困难。如果存在克隆(克隆链),问题就会更加复杂。此外,要确定数据是否共享以及在共享的情况下与哪个键相关联,则需要执行多个磁盘I/O,这会严重影响I/O性能,特别是在克隆链相当长的情况下。
因此,迫切需要一种对容器(如文件系统)的单个对象(如文件)进行克隆的方案,进一步确保提高对象克隆的I/O性能。
本发明公开了一种对象克隆方法,并通过提供元数据来记录在多个快照中定位数据而搜索费用又不贵的高效方法。在克隆系统中,数据通常可以存在于任一快照中;因此,要查找数据,可能需要读取所有快照直到找到数据。在本发明中,可以通过至少读取主要存在于超速缓存内存中的元数据来高效定位待读取快照。
参考图1,其示出了根据本发明的一实施例提供的存储系统100的结构图。存储系统100包括处理器101、存储器102和磁盘103。处理器101是存储系统100的控制中心,提供用于执行指令的排序和处理设施。由处理器101执行的指令可以存储在存储器102中。可选地,将存储在硬盘103中的程序代码(例如,内核、待调试程序)作为由处理器101执行的指令复制到存储器102中。硬盘103可以是只读的,如只读存储器(read-only memory,ROM),也可以是可读/可写的,如硬盘或闪存。存储器单元102可以是随机存取存储器(random accessmemory,RAM)。存储器102可以在物理上与处理器101集成或集成在处理器101内,也可以在一个或多个独立单元中构造。
在本发明实施例中,对象容器(如文件系统)包括多个对象(如文件)。为了保持数据的可靠性和安全性,需要对每个对象执行克隆。对每个对象执行克隆时,需要生成克隆文件来记录新写入数据。在一种实现方式中,参考图2,其示出了克隆文件的磁盘上表示。在图2中,示出了各种元数据对象与克隆文件的相互关系,特别是与文件逻辑分区(切片和颗粒)的相互关系。所述元数据可帮助用户定位磁盘上的实际用户数据。如图2所示,克隆文件包括增量对象、影子对象、快照数组、切片索引数组、切片、颗粒和颗粒位图。下面将逐一进行说明。
1.增量对象—在克隆创建之后,这些对象保存新写入。原始文件和克隆文件都包含独立的增量对象。在克隆创建之后在文件系统中写入新数据之前,不会创建增量对象。
2.影子对象—这些对象保存文件与其克隆之间共享的公共数据,也称为对象快照或文件快照。每次从文件或克隆创建新克隆时,都会从增量对象创建新快照,因此现有增量对象将成为影子对象,并在新写入时创建新增量对象。原始文件和克隆文件共享同一个影子对象,但它们有各自的增量对象。
3.快照数组—这是保存与文件或克隆相关联的所有影子对象的对象标识符的元数据。每个克隆文件都有各自的快照数组,其在创建时(从文件或克隆创建克隆时)继承自其父项。快照数组的插槽数与支持的最大克隆数相同。该数字可以是产品级的固定数字,也可以在系统初始化期间进行配置。
4.切片索引数组—这是保存给定切片的快照数组索引的元数据。该数组随着文件中的切片数增长。如果切片被部分修改,则将切片索引数组对应条目的最高有效位(most-significant-bit,MSB)设置为1。对于给定的文件偏移量,可以根据该偏移量计算切片编号;对于给定的切片编号,通过先查看切片索引数组,然后查看快照数组,获得所述偏移量的数据所在的文件快照的对象标识符。
5.切片—文件在逻辑上划分为固定大小的块,称为切片。
6.颗粒—每个切片在逻辑上进一步划分为较小的固定大小的块,称为颗粒。通常,切片为64MB块,颗粒为8KB块。
7.颗粒位图—对于部分更新的每个文件切片,其位图中每个位对应于该切片的颗粒,称为颗粒位图。如果颗粒包含快照中的数据(即在克隆创建之后颗粒从未修改过),则颗粒位图中的相应位设置为0,否则设置为1。
在一种实现方式中,参考图3,其示出了从原始文件创建克隆文件的方法的表示。
在任何克隆创建之前,原始文件包含文件对象,这里称为Obj1,用于保存数据,并且文件inode保存指向该文件对象的指针。每个文件在逻辑上划分为切片。在一个示例中,文件对象(Obj1)可以具有4个切片,其中包含一些数据块(D0、D1、D2和D3)。数据块可以是固定大小的块。
克隆创建之后,创建新的元数据对象。原始文件的文件inode保存指向该元数据对象,即克隆元数据对象的指针。新创建的克隆文件的inode还指向元数据对象,该元数据对象是原始文件具有的元数据对象的副本。在克隆元数据对象中,称为快照数组的数组保存所有文件快照的对象标识符(object identifier,Object ID)。创建克隆时,文件对象成为快照或影子对象。由于文件及其克隆具有相同的元数据对象,因此两者共享相同的快照。在本发明示例中,创建新对象时,原始文件对象(Obj1)成为快照或影子对象。在本文中称为Obj2的新对象称为增量对象,并且任何新更新都会转到增量对象,而影子对象是不可变的。
克隆文件与原始文件结构相同。克隆文件包括Obj1和Obj3。Obj3也称为增量对象,并且任何新更新都会转到增量对象,而Obj1是不可变的。
如图4所示,在执行克隆之后,所有写入都会转到增量对象。这样可以确保不会修改文件快照中的数据。将切片索引数组(索引图)中对应于修改的切片的条目更新为文件快照的数量,以指示数据存在于增量对象中。在本发明示例中,修改切片编号2,因此将切片索引数组中的条目1更改为1(因为只有1个快照)。
克隆元数据对象还包含另一个数组,即切片索引数组(索引图),该数组保存给定切片的快照数组的索引。切片索引数组包含的条目数与文件中的切片数相同,每个条目对应一个切片。在本发明示例中,由于文件具有4个切片,因此切片索引数据中的条目数为4;同时,由于只有一个快照,因此只有快照数组的索引0是有效的,由此切片索引数组中的唯一有效条目为0(直到有任何写入,因为在写入之后,索引的最高有效位(most-significant-bit,MSB)设置用于切片以指示部分更新)。
在一种实现方式中,如图2所示,通过将父项的对象标识符保留在其所有子元数据中,保持文件与其克隆之间的父子关系。因此,对于克隆链,存在关系层次结构,并且每个克隆在其从各自父项继承的元数据中维护其所有祖先的对象标识符。
在一种实现方式中,每当创建克隆时,原始对象生成新对象,并且该原始对象本身变得不可变。任何新更新(写入)都会转到新创建的对象,即增量对象中。不可变对象称为影子对象或对象快照,新创建的对象称为增量对象。原始文件及其克隆共享相同的公共祖先,该公共祖先仅为影子对象,并且它们都具有各自独立的增量对象,因此来自原始文件或克隆的任何新更新彼此独立,而公共数据从公共影子对象共享。
在该实现方式中,克隆层次结构中的每个文件维护其所有祖先的对象标识符数组,称为快照数组。每个文件在逻辑上划分为固定大小的块,称为切片,对于每个切片,维护一个索引(快照数组的索引),指示该切片的数据属于哪个快照。因此,只需查看此索引一次,即可快速定位数据。然而,切片是一个很大的块(例如,64MB),因此几乎每次更新都以较低规模进行,并且切片被部分更新。由于I/O较小,每个切片在逻辑上进一步划分为多个块(例如,8KB),称为颗粒。I/O以颗粒的粒度进行。
在部分更新切片的情况下,仅更新该切片索引的最高有效位(most-significant-bit,MSB),指示该切片部分更新,并且数据可以存在于由索引的最低有效位(least-significant-bit,LSB)指示的快照中或在增量对象中。但这最多需要两次读取才能定位数据。
因此,为了进一步提高性能并减少磁盘I/O,维护每个部分修改的切片的位图,其中该位图的每个位表示每个颗粒的数据。因此,如果设置了该位,则相应颗粒中的数据属于增量对象,否则属于快照。由于I/O的空间定位特性,位图和每个切片的索引可以保存在超速缓存中。
在对原型的实验中,由于克隆,读取和写入I/O性能没有显著下降,并且对于任意数量的克隆,该性能下降几乎是相同的。由于在写入I/O时需要额外写入切片索引和位图(仅当第一次弄脏切片或颗粒时),因此写入I/O性能下降。然而,在几乎所有克隆使用案例中均发现克隆中只修改了原始文件内容的20%-30%,因此整体I/O性能影响很小。此外,高速持久回写超速缓存可以进一步降低多次写入的影响。如果发现写入过程中的位图更新较为昂贵,可以通过调用在后台执行位图更新。这样做的影响在于,如果对在位图更新之前发生写入的那些颗粒进行任何读取,则需要等待读取。然而,这是非常不可能的,因为数据应该存在于超速缓存中,并且可以从超速缓存本身进行读取。由于每个切片的位图和索引保存在预读超速缓存的内存中,因此读取I/O延迟不会受到太大影响。
在另一种实现方式中,如果在永久性存储器单元中将不存在位图,则位图将仅在内存中维护,并且可以动态地构建。首先,默认设置位图中的所有位。这意味着用户将首先从增量对象读取数据,如果找不到数据,则用户将从快照读取并重置位图中的相应位,以便下次用户将直接从快照读取。
在本发明中,通过简单地修改切片索引,可以容易地回滚克隆中的更改。切片索引的MSB指示切片是否更新,并且其LSB继续指向原始快照,直到切片未拆分为止。因此,只需重置切片索引的MSB,就可以回滚更改。在回滚之后,必须删除增量对象。在DevTest环境中以及在病毒或恶意软件爆发时,克隆回滚非常有用。部分更新的切片通常会被拆分(在后台),以减少读取和更新颗粒位图的开销,这在I/O期间会产生额外的成本。为了实现回滚,需要在拆分过程中将切片索引保存在持久表中,并且在回滚过程中需要查询该表。
在本发明中,需要进行快照管理,这可通过保持每个快照的引用计数来实现。每次创建克隆时,支持该新创建的克隆的每个快照的引用计数都会增加。因此,要增加的快照的完整列表来自克隆元数据中维护的快照数组的引用计数。在克隆删除期间,所有关联快照的引用计数都会减少。如果快照的引用计数变为零,则可以删除特定快照。由于与许多极具竞争力的方案所实现的块级相比,引用计数管理是在对象级进行的,因此绝对不需要在I/O期间更新引用计数,由此不会影响I/O性能。此外,回滚也是可能的,因为即使快照的一部分未被任何克隆引用,也会被保留,直到任何克隆至少有一个对该部分的引用为止。否则,对于块级引用,这是不可能实现的。
在一种实现方式中,由于元数据的本质,本发明支持基于偏移量的对象条带化。一个对象可以分布在多个节点上,称为条带化。对对象进行条带化处理的最简单方法是通过其偏移量,以便可以根据偏移量轻松定位数据。然而,对于克隆对象,如果某个快照在一个节点中具有某些数据偏移量,而其它快照的相同数据偏移量在另一个节点中,这就成为基于偏移量的条带化问题。在本发明的方案中,情况并非如此。
在本发明中,用户可以在不影响任何I/O性能的情况下,通过复制快照数组并通过基于分布式存储系统中所有节点中的偏移量来拆分切片索引数组和颗粒位图,从而对对象和克隆进行条带化。
在一种实现方式中,本发明不需要多个模块之间的交互。仅需要主要在I/O路径上进行架构更改。除了附加更新切片索引、切片索引图和颗粒位图之外,写入路径基本相同。读取路径可能会有一定的复杂性。
在一种实现方式中,参考图5,其示出了写入IO过程流程图。
在步骤401中,处理器101接收写入IO请求。
写入IO请求中携带写入IO请求所访问对象的对象ID、用于存储待写入数据的缓存区、待写入数据的偏移量和长度。
在步骤402中,处理器101将写入IO请求存储到存储器102中并返回响应。
在步骤403中,当需要根据存储器102的刷新策略将写入IO请求刷新到硬盘103中时,处理器101根据对象ID获取对象的元数据。
在步骤404中,处理器101根据待写入数据的偏移量和长度确定用于写入待写入数据的切片。
在步骤405中,处理器101更新对象的元数据,以指示切片被更新。
如图2和图4所示,元数据包括快照数组,快照数组还记录切片索引数组。在确定切片之后,处理器101更新对应于切片的位,以指示切片中的数据被更新。
在一种实现方式中,切片进一步划分为颗粒。如图2所示,每个切片对应的颗粒图用于记录修改的颗粒。在确定切片之后,处理器101进一步确定切片是否被部分修改。如果切片被部分修改,则处理器101设置切片对应的位的MSB,并更新颗粒图中对应的位以指示修改的颗粒。如果切片未被部分修改,则处理器101更新颗粒图中的所有位。
在一种实现方式中,在第一次更新切片的情况下,处理器101更新切片索引图的最高有效位(most-significant-bit,MSB)。在第一次更新颗粒的情况下,更新颗粒位图。进一步地,如果存储器中的数据范围与颗粒边界不一致,则首先从硬盘读取颗粒,并将回写超速缓存内存中的数据与之合并,最后将更新后的颗粒刷新到硬盘103中。
在图5的步骤406中,处理器101将待写入数据写入硬盘103中的对象的增量对象中。
在一种实现方式中,参考图6,其示出了读取I/O过程流程图。
如图6所示,在步骤501中,处理器101接收读取IO请求。
读取IO请求携带读取IO请求所读取的待读取对象的对象ID以及待读取对象的偏移量和长度。
在步骤502中,处理器101判断读取IO请求读取的待读取数据是否在存储器102中。
在步骤503中,如果待读取对象在存储器102中命中,处理器101会返回待读取对象的数据。
在步骤504中,如果待读取对象未在存储器102中命中,处理器101会获取待读取对象包括的切片。
切片可以由待写入对象的偏移量和长度来确定。
在步骤505中,处理器101根据对象ID获取对象的元数据。
在步骤506中,处理器101根据元数据确定是否对每个切片进行修改。
如图2所示,切片索引数组指示每个切片是否被修改。如果切片对应的位为“1”,处理器确定该切片被修改。在一种实现方式中,如果切片被部分修改,该切片对应的MSB指示该切片被修改。
进一步地,在图6中,在步骤507中,对于每个切片,如果元数据指示该切片被修改,处理器101从对象的增量对象读取该切片的数据。在一种实现方式中,如果切片被部分修改,处理器进一步读取颗粒图,并从颗粒图指示的颗粒读取数据。
在步骤508中,如果元数据指示切片未被修改,处理器101确定影子对象中的快照标识符,并从快照标识符指示的快照读取切片的数据。
在步骤508中,处理器合并从所有切片读取的数据并返回读取的数据。
在本步骤中,在克隆文件中,所有写入都转到增量对象。这样可以确保不会修改文件快照中的数据。将切片索引数组(索引图)中对应于修改的切片的条目更新为文件快照的数量,以指示数据存在于增量对象中。在本发明示例中,修改切片编号2,因此将切片索引数组中的条目1更改为1(因为只有1个快照)。
与现有技术相比,本发明方案的最大优势在于:
1.支持对象粒度复制,其具有以下优势:
a.可以提供每个对象的SLO。
b.由于没有复杂的差异化计算,并且通过网络传输的数据较少,因此复制简单快速。
2.I/O性能不随克隆链长度变化。
3.在本发明中,不需要增加每个块的引用计数,因此克隆创建时间非常快。
根据本发明的优选实施例和示例性方面,提出了用于将一个或多个文件系统对象从源文件对象克隆到数据存储系统中的克隆对象的计算机程序产品、方法和数据存储系统。
根据优选实施例,可以提供一种包括计算机可读程序指令的计算机程序产品,当计算机可读程序指令在计算机上运行或加载到计算机中时,或者当由计算机的一个或多个处理器执行时,使得计算机执行用于将一个或多个文件对象克隆到数据存储系统中的克隆对象的方法。
本领域技术人员可以清楚地理解,为了描述的方便和简洁,上述系统、装置和单元的具体工作过程可以参考上述方法实施例中对应的过程,本文不再赘述。
虽然本发明提供了若干个实施例,但应当理解,在不脱离本发明的精神或范围的情况下,所公开的系统和方法可能通过其它多种具体形式体现。本发明的示例将被认为是说明性的而非限制性的,并不旨在受限于本文中所描述的详细内容。例如,各种元件或组件可以组合或集成在另一个系统中,或者一些特征可以省略或不实施。
此外,在不脱离本发明范围的情况下,各种实施例中描述和说明为独立或分离的技术、系统、子系统和方法可以与其它系统、模块、技术或方法组合或集成。展示或描述为彼此耦合或直接耦合或者互相通信的其它项也可以采用电方式、机械方式或其它方式经由某一接口、设备或中间组件间接地耦合或通信。本领域技术人员在不脱离本文所公开的精神和范围的情况下可以确定出其它变化、替换和更改的示例。
因此,本发明的保护范围不应限于以上描述,但应受以下权利要求限定,所述保护范围包括权利要求书中与专利主题等效的所有内容。说明书中进一步明确公开每一条权利要求,所述权利要求书则是本发明的具体实施例。本发明中对引用部分的讨论不应视为承认其为现有的技术,特别是公开日期晚于本申请优先权日期的任何引用。
最后,选择本说明书中使用的语言主要是出于可读性和指导性,而不是记述或限制发明主题。因此,本发明的范围不由该详细描述限制,而是由本申请提出的任何权利要求限制。因此,本发明实施例的公开内容旨在为说明性的,而不是为了限制本发明的范围,本发明的范围在权利要求中提出。

Claims (18)

1.一种存储系统,其特征在于,包括:
存储设备,所述存储设备用于存储第一对象,所述第一对象包括第二对象和第三对象,所述第二对象用于存储对所述第一对象执行第一克隆操作之后写入的数据,所述第三对象用于在对所述第一对象执行所述第一克隆操作之前存储所述第一对象的数据;
处理器,所述处理器用于:接收待写入数据;将所述待写入数据写入所述第二对象;更新所述第一对象的元数据,以指示所述待写入数据存储在所述第二对象中。
2.根据权利要求1所述的系统,其特征在于,所述第一对象的所述元数据包括快照数组,所述快照数组记录执行所述克隆操作之后生成的第一快照的第一快照信息。
3.根据权利要求2所述的系统,其特征在于,所述处理器还用于响应于第二克隆操作将存储在所述第二对象中的所述数据复制为第二快照,并将所述第二快照信息记录到所述快照数组中。
4.根据权利要求3所述的系统,其特征在于,所述第一对象的逻辑地址被划分为多个切片,所述第二对象包括与所述第一对象相同的切片,所述处理器还用于将存储所述第二对象的所述数据的切片的信息与所述第二快照信息之间的关系记录到所述第一对象的所述元数据中。
5.根据权利要求1至4中任一项所述的系统,其特征在于,所述第一对象的所述逻辑地址被划分为多个切片,所述第二对象包括与所述第一对象相同的切片,所述元数据存储所述多个切片的所述信息,将所述待写入数据写入所述第二对象时,所述处理器还用于:确定写入所述待写入数据的切片;将所述待写入数据写入所述确定的切片;修改所述元数据中所述确定的切片的所述信息,以指示所述切片被修改。
6.根据权利要求5所述的系统,其特征在于,所述多个切片中的每个切片被划分为多个颗粒,每个切片的所述信息对应于颗粒位图,以指示每个切片中修改的颗粒。
7.根据权利要求1所述的系统,其特征在于,所述处理器还用于接收读取请求,并根据所述第一对象的所述元数据从所述第二对象或所述第三对象读取数据。
8.根据权利要求5所述的系统,其特征在于,所述处理器还用于确定存储读取请求的待读取数据的切片,并确定根据每个切片的所述切片信息从所述第二对象或所述第三对象读取每个切片的所述数据。
9.根据权利要求8所述的系统,其特征在于,从所述第三对象读取第一切片的数据时,所述处理器用于根据所述元数据确定存储所述第一切片的所述数据的快照,并从所述确定的快照读取所述第一切片的所述数据。
10.一种由存储系统执行的数据处理方法,其特征在于,所述存储系统包括第一对象,所述第一对象包括第二对象和第三对象,所述第二对象用于存储对所述第一对象执行第一克隆操作之后写入的数据,所述第三对象用于在对所述第一对象执行所述第一克隆操作之前存储所述第一对象的数据;所述方法包括:
接收待写入数据;
将所述待写入数据写入所述第二对象;
更新所述第一对象的元数据,以指示所述待写入数据存储在所述第二对象中。
11.根据权利要求10所述的方法,其特征在于,所述第一对象的所述元数据包括快照数组,所述快照数组记录执行所述克隆操作之后生成的第一快照的第一快照信息。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:响应于第二克隆操作将所述第二对象中存储的所述数据复制为第二快照,
并将所述第二快照信息记录到所述快照数组中。
13.根据权利要求12所述的方法,其特征在于,所述第一对象的逻辑地址被划分为多个切片,所述第二对象包括与所述第一对象相同的切片,所述方法还包括将存储所述第二对象的所述数据的切片的信息与所述第二快照信息之间的关系记录到所述第一对象的所述元数据中。
14.根据权利要求10至13中任一项所述的方法,其特征在于,所述第一对象的所述逻辑地址被划分为多个切片,所述第二对象包括与所述第一对象相同的切片,所述元数据存储所述多个切片的所述信息,所述将所述待写入数据写入所述第二对象包括:
确定写入所述待写入数据的切片;
将所述待写入数据写入所述确定的切片;
修改所述元数据中所述确定的切片的所述信息,以指示所述切片被修改。
15.根据权利要求14所述的方法,其特征在于,所述多个切片中的每个切片被划分为多个颗粒,每个切片的所述信息对应于颗粒位图,以指示每个切片中修改的颗粒。
16.根据权利要求10所述的方法,其特征在于,所述方法还包括接收读取请求,并根据所述第一对象的所述元数据从所述第二对象或所述第三对象读取数据。
17.根据权利要求16所述的方法,其特征在于,所述方法还包括确定存储读取请求的待读取数据的切片,并确定根据每个切片的所述切片信息从所述第二对象或所述第三对象读取每个切片的所述数据。
18.根据权利要求14所述的方法,其特征在于,从所述第三对象读取第一切片的数据时,所述方法还包括根据所述元数据确定存储所述第一切片的所述数据的快照,并从所述确定的快照读取所述第一切片的所述数据。
CN202210349567.4A 2021-04-21 2022-04-02 与克隆对象相关的系统和方法 Pending CN115220651A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN202111018364 2021-04-21
IN202111018364 2021-04-21

Publications (1)

Publication Number Publication Date
CN115220651A true CN115220651A (zh) 2022-10-21

Family

ID=83606251

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210349567.4A Pending CN115220651A (zh) 2021-04-21 2022-04-02 与克隆对象相关的系统和方法

Country Status (1)

Country Link
CN (1) CN115220651A (zh)

Similar Documents

Publication Publication Date Title
US10747718B2 (en) Mapping structure for maintaining metadata for snapshots in a virtualized storage environment
US10289545B2 (en) Hybrid checkpointed memory
US10496626B2 (en) Deduplication in a highly-distributed shared topology with direct-memory-access capable interconnect
US10031672B2 (en) Snapshots and clones in a block-based data deduplication storage system
US9519666B2 (en) Snapshots and thin-provisioning in distributed storage over shared storage devices
US9342256B2 (en) Epoch based storage management for a storage device
Paulo et al. A survey and classification of storage deduplication systems
US10176190B2 (en) Data integrity and loss resistance in high performance and high capacity storage deduplication
US9519575B2 (en) Conditional iteration for a non-volatile device
US8954383B1 (en) Analyzing mapping objects of file systems
US8250035B1 (en) Methods and apparatus for creating a branch file in a file system
US10936412B1 (en) Method and system for accessing data stored in data cache with fault tolerance
US11003555B2 (en) Tracking and recovering a disk allocation state
US8015376B2 (en) Methods and systems for management of copies of a mapped storage volume
CN111324305B (zh) 一种分布式存储系统中数据写入/读取方法
CN113986826B (zh) 存储系统容量使用率估计
CN114631089A (zh) 用于直接映射的持久存储器数据库的持久存储器文件仓库
US10733105B1 (en) Method for pipelined read optimization to improve performance of reading data from data cache and storage units
JP7376488B2 (ja) スナップショットのコピーオンライトのデータ移動を回避するインフラストラクチャとしての重複除外
US11960442B2 (en) Storing a point in time coherently for a distributed storage system
US10565120B1 (en) Method for efficient write path cache load to improve storage efficiency
CN115220651A (zh) 与克隆对象相关的系统和方法
US11074003B2 (en) Storage system and restoration method
Zheng et al. HMVFS: A versioning file system on DRAM/NVM hybrid memory
US20230123478A1 (en) Two-level logical to physical mapping mechanism in a log-structured file system

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