基于对象的存储复制和恢复的制作方法

文档序号:16505215发布日期:2019-01-05 08:59阅读:191来源:国知局
基于对象的存储复制和恢复的制作方法

本公开总体上涉及存储系统领域,并且更具体地涉及文件系统存储到基于对象的存储的逻辑复制。



背景技术:

很多云存储解决方案利用基于对象的存储(obs)作为数据布局范例。与使用分层目录命名空间的文件系统相比,obs通常使用在给定逻辑容器(有时称为存储桶)内分配的平面命名空间。在云环境中,帐户可以与逻辑容器相关联,该逻辑容器基于逻辑容器的配置而包含可变大小的数据构造(即,对象),数据构造包含数据和元数据。

obs是一个可扩展的系统,其用于存储和管理数据对象,而无需使用分层命名模式,从而避免了在遍历组织级别以检索用户数据时解析指针的需要。obs系统将可变大小数据项作为具有唯一id密钥的对象集成或“摄取”到平面名称空间结构中。对象元数据可以与对象本身一起存储,而不是存储在单独的元数据结构中。可以使用经由网络服务接口(诸如基于表述性状态转移(rest)架构或简单对象访问协议(soap)的网络服务接口)实现的基于密钥的搜索来访问和检索对象。这允许应用使用“get”和“put”命令直接访问网络上的对象,而无需处理更复杂的文件系统和/或块访问命令。

归因于数据布局结构和命名模式的根本差异,在将文件系统数据复制到obs时保留存储效率机制(诸如重复数据删除)呈现了一些挑战。



技术实现要素:

公开了用于管理obs中的文件系统实体的技术。在一些实施例中,复制引擎接收文件系统实体流,该文件系统实体流包括索引节点文件中包含的索引节点,并且索引节点具有用于对文件系统实体进行索引的所分配的相应文件索引号。复制流还包括数据块。在一个实施例中,复制引擎将文件系统实体映射到obs对象,包括:使用索引节点数据生成将索引节点文件的fbn与文件索引号在逻辑上相关联的至少一个索引节点文件对象。作为映射的一部分,复制引擎还使用索引节点数据来生成至少一个间接对象,至少一个间接对象将经索引的文件系统实体的fbn与和所接收的数据块相对应的数据块号中的相应数据块号在逻辑上相关联。映射还包括:复制引擎生成至少一个数据对象,至少一个数据对象包含数据块,并且将数据块号与数据块在逻辑上相关联。

本“发明内容”是对本公开的简要概述,而不是全面的总结。该简要概述的目的是提供紧凑的解释作为本公开的预览。该简要概述没有包含整个公开内容或所有实施例,并且不应当用于限制权利要求范围。

附图说明

通过参考附图可以更好地理解本公开的实施例。

图1a是描绘根据实施例的保持文件系统重复数据删除效率的存储复制系统的框图;

图1b是示出根据实施例的图1a中描绘的存储复制系统中可以用于实现对obs对象的只读访问的部分的框图;

图2是示出根据实施例的用于处理包括时间点图像(pti)复制流的复制流的子系统和组件的框图;

图3是描绘根据实施例的在文件系统实体的复制期间执行的操作和功能的流程图;

图4是示出根据实施例的被执行以用于在文件系统块级访问与obs对象访问之间进行转换的操作和功能的流程图;以及

图5描绘了根据实施例的具有基于对象的复制和恢复装置的示例计算机系统。

具体实施方式

以下描述包括描述本公开的实施例的示例系统、方法、技术和程序流程。然而,应当理解,本公开可以在没有这些具体细节中的一些的情况下被实践。在其他情况下,没有详细示出公知的指令实例、协议、结构和技术,以免混淆描述。

文件系统包括用于组织文件系统实体(例如,目录、文件、索引节点等)、访问文件系统实体以及保持文件系统的命名空间的数据结构和方法/功能。当作为对象存储在基于对象的存储(obs)中时,文件系统实体被称为对象。因此,“索引节点对象”是对应于索引节点文件系统实体的对象,“索引节点文件对象”是对应于索引节点文件的对象,等等。

在分层文件系统中,如本文所述,文件系统结构由分层的数据结构集表示。数据结构通常至少包括:包含多个索引节点数据结构或索引节点的索引节点文件。索引节点文件包括文件块集,每个文件块被分配索引,该索引在本文中称为索引节点文件文件块号(fbn)。因此,可以为索引节点文件中的第一文件块分配索引节点文件fbn“0”,可以为索引节点文件中的第二文件块分配索引节点文件fbn“1”,等等。

索引节点文件中的每个文件块包括索引节点集,每个索引节点被分配索引,该索引在本文中称为索引节点号。由于索引节点文件fbn用于标识索引节点文件中的文件块,因此使用索引节点号来标识索引节点文件中的索引节点。用于标识文件块的fbn和索引节点还可以指示相应数据结构在父数据结构内的顺序位置,但这不是必需的。

索引节点是包括关于文件系统实体(例如,目录或文件)和块指针的元数据的数据结构。块指针被分配索引,该索引在本文中称为数据fbn,用于标识索引节点内的块指针。块指针将标识块指针的数据fbn映射到数据块号。数据块号是映射到物理块地址(例如,聚合块号和/或磁盘块号)的逻辑块地址(例如,卷块号)。物理块地址引用的物理块可以包括另一索引节点或实际文件数据。

如本文中使用的,“数据块号”指代可以由引用指针映射到物理地存储有文件数据内容的物理块地址(例如,数据块,诸如聚合块号和/或磁盘块号)的逻辑块地址(例如,卷块号)。附加地或备选地,“数据块号”可以指聚合块地址(例如,物理卷块号)或物理存储介质块号(例如,硬盘的块地址、固态驱动器等)。

公开了用于将以分层文件系统格式存储的数据复制到被配置为以obs格式存储数据的备份存储器的技术。在一个实施例中,利用基于对象的数据布局将数据从文件系统(例如,基于unix的文件系统)复制到obs(例如,云提供的obs)。基于对象的数据布局使得备份存储系统能够以基于对象的格式来存储备份数据,同时保留文件系统存储效率机制,诸如重复数据删除和/或压缩。

在一个实施例中,主(源)数据最初在综合基线复制周期中被复制,在该周期中文件系统数据被映射到多个类别的obs对象。这些类别可以包括:索引节点文件对象、间接对象和数据对象。在映射期间,选择性地解析文件系统数据结构,以映射到多个obs对象类别中的一个或多个。

在基线复制之后,要复制的文件系统实体流可以包括文件系统的时间点图像(pti),其记录特定点处的文件系统状态。例如,pti可以实施文件系统“快照”,文件系统“快照”诸如由利用基于索引节点的指针解析的一些文件系统来实现,以跟踪文件。这种快照类型的pti记录文件系统的状态,并且因此除了块指针信息之外,通常还包括文件系统的根节点的副本。在一个实施例中,obs容器可以接收从被周期性地发送到辅助obs系统的一系列pti复制流被映射的新对象。pti复制流包括:自前一次pti复制以来已经添加或修改的索引节点和对应的经索引的文件系统实体(例如,文件和目录)。文件系统实体可以包括:经重复数据删除的数据块(即,由两个或更多个块指针引用的数据块)。pti复制流可以包括由复制引擎打包成稀疏对象,并且使用rest/http应用程序接口(api)存储在obs中的差异(diff)流。稀疏对象可以表示为引用对象,引用对象可以用作索引以访问对应的数据对象,包括从经重复数据删除的数据块生成的数据对象。

复制引擎可以实现为:被配置为从主/源存储接收复制数据流的虚拟机(vm)。复制引擎可以包括:被配置为从构成复制数据流的文件系统实体中标识不同的数据和元数据文件系统构造的解析器。在一个实施例中,解析器标识复制数据流内的索引节点数据结构(索引节点)。在索引节点内,解析器还可以标识属性元数据和引用数据,引用数据是将数据fbn与数据块号(dbn)相关联的指针的形式。解析器还可以标识数据内容,数据内容是复制流内的数据块的形式。对象生成器接收经解析的复制流数据,并且从中生成obs对象,包括属性级对象、引用级对象和数据内容对象。

图1是描绘根据实施例的保持文件系统重复数据删除效率的存储备份系统的框图。所描绘的存储备份系统包括主存储系统,主存储系统包括具有文件系统存储115的存储服务器105。文件系统客户端102经由网络连接通信地耦合到存储服务器105。文件系统客户端102包括已经加载文件系统图像104的存储器。文件系统图像104包括可以由诸如等unix类型的操作系统实现的分层文件系统的数据结构,本文中称为文件系统实体。具体地,文件系统图像104包括顶级/根目录root,其包含较低级目录dir1和dir2。在所描绘的实施例中,dir2不包含文件,并且dir1包含文件file1和file2。除了每个文件系统实体之外,括号内示出的是被分配给文件系统的相应索引节点并且对应于相应文件系统实体的索引节点号。文件系统可以使用索引节点号来标识索引节点数据的位置(例如,通过使用将索引节点号映射到索引节点文件fbn的数据结构)。以这种方式,索引节点号本质上是:在基于索引节点的文件系统中,用于以使得能够将文件系统实体元数据和文件系统实体数据内容解除引用的方式来对文件系统实体进行索引的索引号。

文件系统存储115包含存储服务器操作系统(未示出)用于存储和管理数据的元数据、块指针引用信息和数据内容。即,文件系统存储115包括索引节点文件120,索引节点文件120包括用于记录文件系统内的文件和目录的元数据和引用信息的索引节点。文件系统存储115还包括具有数据块号2000、2100、2200、1000、1100、1200、1300和1400的对应数据块。元数据和引用信息记录在多个索引节点中,诸如作为数据结构被包含在索引节点文件120的文件块116、118、121、122和124内的索引节点i_64、i_100、i_120、i_140和i_160。每个索引节点可以在可能具有固定长度(例如,4kb)的存储块内消耗指定量的存储空间(例如,192字节)。例如,假定块大小为4kb,每个索引节点消耗192个字节,则每个块中可以包含总共21个索引节点。在这样的配置中,用于索引节点i_64、i_100、i_120、i_140和i_160的索引节点文件块号(fbn)分别是3、4、5、6和7。每个索引节点包含它所表示的文件系统实体的元数据和引用(例如,块指针)。

如上所述,文件块116、118、121、122和124中的每个被分配索引节点文件fbn。在所描绘的示例中,文件块116、118、121、122和124分别被分配索引节点文件fbn“3”、“4”、“5”、“6”和“7”。每个索引节点名称中描述的数字引用指定索引节点的文件索引号(索引节点号)。例如,i_64的索引节点号为64,i_120的索引节点号为120,并且其余的索引节点也类似。如在典型的基于索引节点的文件系统中已知的,索引节点号是用于唯一地对文件系统内的底层文件和目录进行索引的唯一文件索引号。

虽然基于索引节点的文件系统的实现可能经常针对大文件使用多个引用级别(例如,使用双间接指针),但是为了便于说明而在图1中仅描绘了单个级别。此外,虽然很多基于索引节点的文件系统可以实现存储虚拟化,其中虚拟卷块被映射到物理卷块(例如,在聚合内),但是这样的虚拟到物理卷映射对于本文中描述的原理并不是必不可少的,并且因此没有描绘。

索引节点中包含的元数据可以包括文件/目录属性,诸如类型(文件或目录)、大小、创建时间、修改时间和访问控制信息等。作为元数据的一部分或除了元数据之外,用于目录和文件的索引节点还包括:指向包含相应目录/文件数据内容的数据块的块指针形式的引用信息。枚举的块指针(诸如块指针111)被包含在每个索引节点的指定部分内,并且包括从经索引的文件系统实体的数据fbn到dbn的映射。例如,索引节点i_64包括从根目录的数据fbn0到dbn2000的指针111。类似地,索引节点i_100和i_120分别包括从它们各自的数据fbn0到dbn2100和2200的指针113和117。

目录数据块的内容包括:从父目录到目录索引节点号的映射,以及从任何子文件系统实体(目录和文件)的名称到它们各自的索引节点号的映射。例如,dbn2000中包含的根目录的内容被描绘为:包括从根目录名“.”到索引节点号64、从dir1到索引节点号100以及从dir2到索引节点号120的映射。类似地,dbn2100中包含的dir1的内容被描绘为:包括其自己的名称到索引节点号映射,以及从其父目录名称到索引节点号64、从file1到索引节点号140以及从file2到索引节点号160的映射。文件数据块的内容(诸如被分配了dbn1000、1100、1200、1300和1400的数据块)包含文件数据内容。如图1所示,文件索引节点i_140和i_160各自包括指向多个dbn的指针,其中索引节点i_140指向dbn1000、1100、1200和1300,并且索引节点i_160指向dbn1400和1200。以这种方式,如果确定dbn1200的数据内容与另一数据块的数据内容相同,则file1(经由索引节点i_140)和file2(经由索引节点i_160)通过包括指向相同dbn1200的相应指针125和129(诸如可能在重复数据删除的情况下发生的)来共享dbn1200。

所描绘的主存储系统还包括复制引擎110,用于处理从文件系统存储115接收的文件系统实体,诸如在到图1中描绘为obs130的辅助存储系统的数据备份期间。复制引擎110的处理以保持可以经由诸如重复数据删除和/或压缩等技术获取的存储效率的方式来向obs映射提供文件系统。复制引擎110包括解析器(未示出),解析器处理从存储服务器105接收的复制流,以标识要用于生成对应obs对象的各种类型的文件系统构造。在一个实施例中,复制引擎110标识可以被包括在复制流中的索引节点i_64、i_100、i_120、i_140和i_160中的一个或多个。响应于检测到索引节点,诸如可能在基线文件系统复制期间发生的,复制引擎110生成一个或多个对应的obs对象。在所描绘的实施例中,复制引擎110生成包含由对应的索引节点包含的文件/目录属性元数据信息的一组索引节点文件对象132。索引节点文件对象132还记录索引节点文件120的文件块的索引节点文件fbn,并且将索引节点文件fbn与对应的索引节点号在逻辑上相关联。

索引节点文件对象132包括索引节点引用对象138和索引节点数据对象140。如图1所示,索引节点引用对象138包括可以用作obs130内的对象的访问密钥的对象id,ifile.ref。索引节点引用对象138还包括:多个连续索引条目3、4、5、6和7的形式的数据内容,多个连续索引条目3、4、5、6和7分别对应于分别包含索引节点i_64、i_100、i_120、i_140和i_160的文件块116、118、121、122和124的索引节点文件fbn。条目3、4、5、6和7使用数字序列0、1、2、3和4来索引。索引节点数据对象140包括可以用作obs130内的对象的访问密钥的对象idifile.dat。索引节点数据对象140还包括:图1中表示为attr_64、attr_100、attr_120、attr_140和attr_160的多个连续索引条目形式的数据内容。虽然未在所描绘的实施例中明确示出,但是每个ifile.dat条目包含由索引节点i_64、i_100、i_120、i_140或i_160表示的相应底层文件系统实体(例如,文件或目录)的索引节点号和属性元数据。与ifile.ref条目类似,条目attr_64、attr_100、attr_120、attr_140和attr_160使用数字序列0、1、2、3和4来索引。索引节点引用对象138和索引节点数据对象140的索引的对应关系提供:ifile.ref内的索引节点文件fbn与ifile.dat内的索引节点号和元数据之间的逻辑关联。

除了检测索引节点元数据并且将其映射到obs对象之外,复制引擎110还可以检测或以其他方式标识每个索引节点中包含的块指针引用。例如,复制引擎110可以标识从根目录的fbn(由索引节点i_64表示)到dbn2000的指针。类似地,复制引擎110标识分别从dir1和dir2的fbn(由索引节点i_100和i_120表示)到dbn2100和2200的指针。复制引擎110还标识从文件file1的fbn到dbn1000、1100、1200和1300以及从file2的fbn到dbn1400和1200的引用指针。

在已经标识了复制流中接收的索引节点内的引用指针之后,复制引擎110生成一组一个或多个间接对象134,每个间接对象134将由索引节点表示的文件系统实体的fbn与和在复制流中接收的数据块向对应的dbn中的相应dbn在逻辑上相关联。具体地,该组间接对象134包括间接对象142、144、146、148和150,它们分别包括对应于索引节点的索引节点号、并且用作obs130内的对象的访问密钥的对象idi_64、i_100、i_120、i_140和i_160。除了具有对应于索引节点号的对象id之外,每个间接对象还包括一个或多个数据条目,每个数据条目将经索引的文件系统实体的fbn与相应的dbn在逻辑上相关联。例如,间接对象144包括对象idi_100,对象idi_100对应于索引节点号100,并且还包括被实施为从dir1的fbn0到dbn2100的指针的单个数据条目。间接对象148包括对应于索引节点号140的对象idi_140,并且还包括将file1的数据fbn0、1、2和3与dbn1000、1100、1200和1300分别在逻辑上相关联的数据条目(指针)。

在基线复制期间,复制引擎110还检测文件系统实体的数据内容,诸如dir1、dir2、file1和file2的内容,并且生成一组一个或多个相应的数据对象136。数据对象136包含在复制流中接收的数据块,并且还记录数据块号并且将其与数据块在逻辑上相关联。在所描绘的实施例中,数据对象136包括数据引用对象152和数据内容对象154。数据引用对象152包括可以用作obs130内的对象的访问密钥的对象iddwo.ref。数据引用对象152还包括多个连续索引条目1000、1100、1200、1300、1400、2000、2100和2200形式的数据内容,多个连续索引条目1000、1100、1200、1300、1400、2000、2100和2200分别对应于在复制流中接收的数据块的dbn。如图所示,使用数字序列0-7对条目进行单独索引。数据内容对象154包括可以用作obs130内的对象的访问密钥的对象iddwo.dat。数据内容对象154还包括图1中表示为dat_1000、dat_1100、dat_1200、dat_1300、dat_1400、dat_2000、dat_2100和dat_2200的多个连续索引条目的形式的数据内容。虽然没有明确描述,但是dwo.dat条目各自包含相应底层文件系统实体中包含的数据块的文件内容数据。类似于dwo.ref条目,dwo.dat条目使用数字序列0-7来索引。数据引用对象152和数据内容对象154的索引的对应关系提供文件系统实体的dbn与相应数据块之间的逻辑关联。

在上述方式中,复制引擎110实现文件系统存储115内的文件系统结构到obs130内的obs格式的逻辑复制。部分地通过在间接对象134中保留主(源)fbn到dbn的映射,来保留诸如重复数据删除等存储效率机制。

图1b是示出根据一个实施例的图1a中描绘的存储复制系统中可以用于实现对obs130内的obs对象的只读访问的部分的框图。如图1a所示,存储服务器105被配置为与obs桥160通信,obs桥160可以被包含在复制引擎110内,或者作为具有单独的逻辑和物理连接的逻辑上不同的实体。obs桥160使用编码软件、固件和/或硬件的任何组合来配置,以诸如通过代码映射或其他方式将文件系统读取命令转换成等效的obs命令(例如,get命令)。假定所描绘的obs130包括参考图1a描述的obs数据布局,由obs桥160执行的映射包括解析操作数(例如,文件路径名)以及操作(例如,read)。作为其映射功能的一部分,obs桥160可以生成依赖于路径名的一系列obs命令,这些obs命令以能够从源侧客户端进行有效块级访问的方式遍历索引节点文件对象、间接对象和数据对象。

例如,服务器105可以向obs桥160发出请求从obs130读取file1的fbn2和3的read命令。obs桥160解析该请求,将file1标识为目标,并且作为响应,使用ifile.ref密钥来访问索引节点文件引用对象138,并且定位包含表示根目录的索引节点64的索引节点文件fbn3。obs桥160确定了fbn3条目的索引位置0,使用ifile.dat密钥来访问索引节点文件数据对象140。通过使用所确定的fbn3的索引位置(索引0),obs桥160在数据对象140内定位和读取对应的索引节点元数据条目attr_64。obs桥160根据元数据确定索引节点号“64”,并且应用密钥名称i_64,以标识和访问间接对象142。obs桥160读取将dbn2000标识为包含目录内容的块指针信息。接下来,obs桥160使用dwo.ref密钥来访问数据引用对象152,并且确定其中的dbn2000的索引位置。在已经确定了dbn2000在dwo.ref内的位置“5”处被索引之后,obs桥使用dwo.dat密钥来访问数据内容对象154,并且应用dbn2000的索引位置“5”来定位在图1b中表示根目录的数据内容的dat_2000。如图所示,dat_2000包括将根目录名称与索引节点号64相关联的条目,以及分别将dir1和dir2与索引节点号100和120相关联的条目。obs桥160使用路径名信息来选择dir1条目并且标识对应的索引节点号100。

在已经遍历了所有三个obs级别以解析包含file1的目录dir1的索引节点号100之后,obs桥160返回到索引节点文件引用对象138,以标识其中包含索引节点100的索引节点文件fbn4。索引节点文件fbn的确定可以基于索引节点号与索引节点文件fbn之间的预先指定的映射,诸如基于索引节点文件内的每文件块的21个索引节点的上述分配。obs桥160使用索引节点文件fbn4的索引位置“1”,来在索引节点文件数据对象140内定位和读取对应的索引节点元数据内容条目attr_100。然后,obs桥160将索引节点号100用作用于访问和读取间接对象144的块指针内容的对象密钥。块指针2100由obs桥160标识和使用,以在数据引用对象152内定位索引位置“6”,obs桥160使用该索引位置“6”来在数据内容对象154内定位和读取dir1数据内容dat_2100。如图所示,数据内容包括将目录和父目录与索引节点号64和100相关联的条目,以及分别将文件名file1和file2与索引节点号140和160相关联的条目。obs桥160使用路径名信息来选择file1条目,并且将140标识为要搜索的索引节点号。

然后,obs桥160使用索引节点号140来确定对应的索引节点文件fbn6,索引节点文件fbn6然后在索引节点文件引用对象138内被定位,以确定用于在索引节点文件数据140内定位元数据条目attr_140的索引位置“3”。然后,obs桥160读取间接对象148的内容,并且使用指定fbn1和2的原始read命令信息,以基于块指针来标识数据内容对象154内的对应dbn条目dat_1100和dat_1200。

图2是示出根据实施例的用于处理包括时间点图像(pti)复制流的复制流的子系统和组件的框图。图2所示的系统包括提供对文件系统存储卷204的共享网络访问的文件服务器202。存储卷204可以包括参考图1描绘和描述的基于索引节点的结构方面中的一些或全部,并且包括表示活动文件系统卷的基线ptivol-apti_1。存储卷204还包括形成先前pti(例如,快照)vol-apti_0的索引节点和块指针结构。如本文中使用的,pti本质上是文件系统的时间点副本和/或文件系统的状态的时间点副本。pti可以周期性地和/或基于系统事件或状况来生成,以提供一定水平的数据保护和恢复能力。

vol-apti_0pti包括索引节点和文件系统实体,文件系统实体由图2中描绘的索引节点索引和以其他方式表示为以根目录“/”开头的分层指针树。类似于图1中的文件系统存储115的结构,由vol-apti_0pti实施的文件系统树结构包括:包含在根目录内的一对目录dir1和dir2,并且还包括:包含在dir1内的一对文件file1和file2。在图2中仅明确地描绘了用于文件类型的文件系统实体的数据块。如图所示,file1的vol-apti_0pti包括分别从fbn0、1、2和3到dbn1000、1100、1200和1300的指针。file2的vol-apti_0pti包括分别从fbn0和1到dbn1200和1400的指针。

从生成vol-apti_0pti的时间点到当前基线图像vol-apti_1,已经以若干方式修改了文件系统存储卷204。这些改变包括:对file1的fbn1的修改(例如,由write操作产生),该修改导致对应的索引节点块指针被修改为指向新dbn1500处的新数据。对于file1没有进行从vol-apti_0pti到vol-apti_1pti(即,活动图像)的其他改变,具有dbn1000、1200和1300的未修改数据块在vol-apti_0pti中用虚线描绘,以表达在vol-apti_0pti本身内不存在实际数据内容。对文件系统的改变还包括:对file2的fbn0的修改,使得file2fbn0的数据内容与指向file1索引节点内的dbn1300的file1的fbn3的数据内容相匹配。响应于检测到数据块修改,块级重复数据删除周期已经将用于file2fbn0的块指针修改为指向dbn1300。file2的fbn1也已经被修改,以便file2fbn1索引节点指针已经改变为:指向修改后的数据块驻留在dbn1600的位置。对索引节点中表示file1和file2的块指针的前述修改导致对dir1的元数据的相应修改。除了对file1和file2的修改之外,还在dir1中添加了新的文件系统实体file3,如针对vol-apti_1pti的表示性文件树结构所示。file3实体由包括从fbn0到dbn1700的块指针的新分配的索引节点(未示出)表示。

如参考图1所描绘和描述的,诸如文件服务器202等存储服务器可以执行复制周期,在该复制周期中文件系统存储卷204被复制,作为obs中的备份图像。用于文件系统到obs复制的对象由复制引擎215使用数据布局来生成,该数据布局保留在文件系统中可用并且具有块级存储的存储管理操作(例如,存储快照和重复数据删除)。辅助(或备份)存储系统在经由网络220通信地连接到文件服务器202的云系统230中实施。在示例说明中,文件系统客户端可以将数据从文件系统存储卷204复制到云系统230内的对象存储容器234和236。云系统230包括很多设备和程序实例(“模块”),但是图2中仅描绘了几个设备和程序实例,以避免使附图过度复杂。

所描绘的云系统230包括提供对对象容器234和236的访问并且管理对象容器234和236的obs服务器232。对象容器234具有分配的容器名称pti_0,并且对应于vol-apti_0pti是活动文件系统图像时(即,在记录vol-apti_0pti的点)的vol-a的pti。容器名称可以被包括在httpurl中,以定位和访问容器内的对象。对象容器234还包括:以与图1中描述的用于将文件系统数据到obs对象的基线复制的方式相同或相似的方式生成的多个对象。为了说明简单起见,图2以简化的单盒形式描绘了容器234内的对象。即,对象容器234包括:分别在结构和细节上对应于图1中描绘的索引节点引用对象138和索引节点数据对象140的i.ref对象和i.dat对象。从i.ref到i.dat的所示指针表示:i.ref中的索引节点文件fbn条目与i.dat中的索引节点号和元数据属性条目之间的索引对应关系。对象容器234还包括图2中表示为单盒indir的间接对象。生成间接对象,诸如在基线复制周期期间以与图1中描绘和描述的用于生成间接对象134的相同或相似的方式。从i.dat对象到indir对象的所描绘的指针表示:i.dat对象索引节点号数据与indir对象的对象id之间的逻辑关联,indir对象的对象id与索引节点号相同或以其他方式直接对应于索引节点号。对象容器234还包括分别在结构和细节上对应于图1中描绘的数据引用对象152和数据内容对象154的d.ref对象和d.dat对象。从indir对象到d.ref的所描绘的指针表示:被包括在间接对象的块指针条目中的dbn与作为d.ref内的顺序的索引数据条目而列出的dbn之间的逻辑关联。从d.ref到d.dat的所示指针表示:d.ref中的dbn条目与d.dat中的数据块条目之间的索引对应关系。

在指定的复制周期或响应于基于事件的触发器(诸如客户端复制请求),文件服务器202发起vol-a内的数据的增量复制,该数据已经从对象容器234被生成并记录的点被修改,以包括在vol-apti_1pti中反映的上述修改。在实施例中,文件服务器202传送复制请求,复制请求包括或随后跟着包括文件系统实体流205的复制流。如图所示,文件系统实体的复制流205包括索引节点,以及经索引的文件系统实体,诸如文件和目录。具体地,文件系统实体205包括:已经写入具有dbn1500和1600的新位置的、针对file1和file2的修改后的数据块。复制流还包括:dbn1700处包含新file3的数据内容的新数据块。文件系统实体205还包括文件索引节点i_140和i_160。结合图2参考图1,归因于各个索引节点块指针的更新,索引节点i_140(表示file1)和索引节点i_160(表示file2)被包括在复制流中。归因于dir1元数据的更改,目录索引节点i_100被包括在复制流中,并且表示新file3的目录索引节点i_130也被包括。

文件服务器202与复制引擎215通信,以经由obs服务器232执行文件系统到存储在云系统230内的obs对象的完整(基线)或增量(pti之间的差异)复制。在所描绘的实施例中,复制引擎215包括:复制缓冲器206、解析器208、对象映射器210和协议接口库212。复制缓冲器206最初接收和处理由文件服务器202生成的复制流。具体地,复制缓冲器206可以被配置为:顺序地对所接收的数据块、索引节点以及可能的其他文件系统实体进行排序,用于由解析器208和对象映射器210进行最佳处理。解析器208使用编码软件、固件和/或硬件的任何组合来配置,以选择性地标识和解释给定复制流中的每个文件系统实体205,并且将所得到的所标识的实体和子实体信息提供给对象映射器210。例如,解析器208可以被配置为将数据块1500、1600和1700标识为数据块,并且读取相应的dbn。解析器208还可以被配置为读取相应的数据块内容并且将其与每个dbn相关联。对于所接收的索引节点,解析器208可以被配置为:标识索引节点i_140、i_160、i_100和i_130并且读取相应的元数据内容以及块指针。对象映射器210使用编码软件、固件和/或硬件的任何组合来配置,以将文件系统实体的经解析的部分映射成诸如在对象容器236内的对象,以进行vol-apti_0pti与vol-apti_1pti之间的差异的增量复制。

对象容器236在图2中描绘为包括由复制引擎215从复制流实体205生成的对象。增量复制对象中包括:索引节点引用对象238和索引节点数据对象240。索引节点引用对象238包括对象idifile.ref和一组索引条目,每个索引条目包括:其中包含相应索引节点的索引节点文件fbn。例如,索引节点引用对象238中的第三条目(索引为“2”)包括fbn“6”,fbn“6”是其中包含对应索引节点i_140的索引节点文件fbn。索引节点数据对象240包括对象idifile.dat和一组索引条目,每个索引条目包括针对由索引节点表示的文件系统实体中的相应文件系统实体的元数据。例如,索引节点数据对象240中的第二条目(索引为“1”)包括:针对在vol-apti_1pti中添加的由新索引节点i_130表示的file3的属性元数据(即,除了块指针之外的元数据)。

对象容器236还包括由复制引擎215使用来自目录索引节点100的经解析的信息来映射/生成的间接对象242。如图所示,间接对象242的内容包括:从dir1的fbn0到对应于dir1fbn0的数据块的新位置(dbn2104)的指针。间接对象244、246和248由复制引擎215分别使用来自文件索引节点130、140和160的解析信息来映射/生成。归因于新文件file3的添加,间接对象244本身是对用于pti_0的对象容器234中包括的一组间接对象的补充。间接对象246和248包括来自容器234内的对应间接对象的突出显示的修改。即,间接对象246包括从fbn1到dbn1500的新的块指针,并且对于间接对象248,从fbn0和1到dbn1200和1400的前一指针已经被替换为指向dbn1300和1600的指针。

为了解决在dbn1500、1600和1700中反映的对数据块的改变,对象容器236还包括数据引用对象250和数据内容对象252。如图所示,数据引用对象250的条目与数据内容对象252的条目之间的索引相互一致,并且基于在复制流中接收的数据块。

图3是示出根据实施例的在存储复制期间执行的操作和功能的流程图。如图所示,该过程在框302处开始,其中复制引擎接收指示发起从主文件系统源存储到obs辅助系统的复制周期的信号。接下来,在框304处,复制引擎从要复制到obs的文件系统生成数据项流。例如,数据流可以包括:文件系统的时间点图像(pti)(有时称为快照)内包括的数据结构和其他文件系统实体。在一个实施例中,文件系统实体包括:已经经历重复数据删除的一个或多个数据块以及指定对应的经重复数据删除的数据块指针的一个或多个索引节点。如图所示,该过程在框306处继续,其中解析器解析复制数据的数据流,以标识索引节点元数据、索引节点引用指针和数据块。

在框308,复制引擎生成一个或多个索引节点文件对象,一个或多个索引节点文件对象单独地或共同地将索引节点文件的fbn与在复制流中接收的索引节点的索引节点号相关联。接下来,复制引擎生成一个或多个间接对象(框310),一个或多个间接对象各自将经索引的文件系统实体(文件或目录)的fbn与在复制流中接收的数据块的相应dbn在逻辑上相关联。在一个实施例中,为每个间接对象分配对应于单个索引节点号的对象访问密钥名称。除了索引节点文件对象和间接对象之外,复制引擎还生成第三对象类别。即,复制引擎生成:包含在复制流中接收的数据块并且还将数据块号与数据块在逻辑上相关联的一个或多个数据对象(框312)。

在框308、310和312处的对象生成期间或之后,复制引擎还在框314处生成每快照的元数据目录。例如,解析器可以进一步处理复制数据流,以将文件系统实体标识和指定为“索引节点号”、“父节点号”、“文件类型”、“pti”、“绝对路径”和“操作”。作为响应,诸如图2中描绘的对象映射器可以生成具有每快照条目的元数据目录,并且其中每快照条目中的每个包括用于“索引节点号”、“父节点号”、“文件类型”、“pti”、“绝对路径”和“操作”的字段。生成的元数据目录可以在从辅助系统恢复数据期间使用。例如,目录中的信息可以使得能够更有效地查询文件系统目录及其针对特定快照的内容。该目录还可以跨不同的路径名和不同的快照来查询文件名。

图4是示出根据实施例的被执行用于在文件系统块级访问与obs对象访问之间进行转换的操作和功能的流程图。该过程开始于框402,其中obs桥接收文件系统访问请求,文件系统访问请求诸如可以从托管被复制到obs(如参考图1-3所述)的文件系统存储的文件服务器而被传送。在一个实施例中,obs桥被配置为:将文件系统读取请求映射到能够有效地访问块级数据的对应obs请求。在框404处,obs桥从请求路径名中包括的文件系统根目录开始解析请求,以标识文件系统实体。在已经解析了路径名之后,obs桥以根目录实体开始,并且确定将用于在索引节点文件对象中定位属性元数据的对应索引节点文件fbn(框406)。在框408处,obs桥访问索引节点文件引用对象,以确定索引节点文件fbn的索引位置。接下来在框410处,obs桥访问索引节点文件数据对象,并且使用所确定的索引位置来定位针对对应文件系统实体的元数据内容条目。

在已经读取了元数据内容之后,obs桥基于与文件系统实体的索引节点号相匹配的所标识的间接对象的对象id(密钥)来标识间接对象之一(框412)。在框414处,obs桥使用路径名和/或其中指定的fbn来选择性地读取所标识的间接对象,以标识包含文件系统实体的数据内容的dbn。接下来,obs桥访问数据引用对象,并且使用所标识的dbn来确定所标识的dbn在条目的索引列表内的相应索引位置(框416)。然后,obs桥使用索引位置信息来在数据内容对象内定位文件或目录内容条目(框418)。该过程然后遍历路径名,直到检索到所请求的数据(例如,文件的一个或多个文件块),如从框420并且控制返回到框406的周期所示。

变型

提供流程图是为了帮助理解说明,而不是用于限制权利要求的范围。流程图描绘了可以在权利要求的范围内变化的示例操作。可以执行附加的操作;可以执行更少的操作;操作可以并行执行;并且操作可以以不同的顺序执行。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以由程序代码实现。程序代码可以提供给通用计算机、专用计算机或其他可编程机器或设备的处理器。

如应当理解的,本公开的各方面可以被实施为系统、方法或存储在一个或多个机器可读介质中的程序代码/指令。因此,各方面可以采取硬件、软件(包括固件、常驻软件、微代码等)、或软件和硬件方面的组合的形式,这些在本文中通常可以被称为“电路”、“模块”或“系统”。在示例图示中作为单个模块/单元而被提供的功能可以根据平台(操作系统和/或硬件)、应用生态系统、接口、程序员偏好、编程语言、管理员偏好等中的任意一个来被不同地组织

可以使用一个或多个机器可读介质的任何组合。机器可读介质可以是机器可读信号介质或机器可读存储介质。机器可读存储介质可以是,例如但不限于,采用电子、磁、光、电磁、红外或半导体技术中的任何一种或组合来存储程序代码的系统、装置或设备。机器可读存储介质的更具体的示例(非详尽列表)包括以下多项:便携式计算机软盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、便携式光盘只读存储器(cd-rom)、光存储设备、磁存储设备、或上述的任何合适的组合。在本文的上下文中,机器可读存储介质可以是可以包含或存储由或结合指令执行系统、装置或设备使用的程序的任何有形介质。机器可读存储介质不是机器可读信号介质。

机器可读信号介质可以包括其中具化有机器可读程序代码的传播数据信号,例如在基带中或作为载波的部分。这种传播信号可以采取各种形式中的任何形式,包括但不限于电磁、光学或其任何合适的组合。机器可读信号介质可以是非机器可读存储介质并且可以传达、传播或传送程序用于由或结合指令执行系统、装置或设备使用的任何机器可读介质。

可以使用任何适当的介质来传输在机器可读介质上具化的程序代码,适当的介质包括但不限于:无线、有线、光纤电缆、rf等、或前述的任何合适的组合。

用于执行本公开的各方面操作的计算机程序代码可以用一种或多种编程语言的任何组合来编写,一种或多种语言包括面向对象的编程语言,诸如编程语言、c++等;动态编程语言,诸如python;脚本语言,诸如perl编程语言或powershell脚本语言;和传统的程序性编程语言,诸如“c”编程语言或类似的编程语言。程序代码可以完全在独立的机器上执行、可以以分布式的方式跨多台机器执行、并且可以在一台机器上执行,同时在另一台机器上提供结果和/或接受输入。

程序代码/指令还可以存储在可以指导机器以特定方式运行的机器可读介质中,使得存储在机器可读介质中的指令产生:包括实现在流程图和/或框图块中指定的功能/动作的指令的制品。

图5描绘了根据实施例的具有基于对象的复制和恢复装置的示例计算机系统。计算机系统包括处理器单元501(可能包括多个处理器、多个核、多个节点、和/或实现多线程等)。计算机系统包括存储器507。存储器507可以是系统存储器(例如,高速缓存、sram、dram、零电容器ram、双晶体管ram、edram、edoram、ddrram、eeprom、nram、rram、sonos、pram等中的一个或多个)或以上已经描述的机器可读介质的可能实施方式中的一个或多个。计算机系统还包括总线503(例如,pci、isa、pci-express、总线、总线、nubus等)和网络接口505(例如,光纤通道接口、以太网接口、互联网小型计算机系统接口、sonet接口、无线接口等)。该系统还包括复制引擎511。复制引擎511处理复制和恢复请求、事务和数据,以便为源存储系统和/或一个或多个存储客户端提供服务。先前描述的功能中的任何一个可以部分地(或完全地)以硬件和/或在处理器单元501上实现。例如,功能可以用专用集成电路实现,在处理器单元501中实现的逻辑中实现,在外围设备或卡等上的协处理器中实现,等等。另外,实现可以包括更少的组件或图5中未示出的附加组件(例如,视频卡、音频卡、附加网络接口、外围设备等)。处理器单元501和网络接口505耦合到总线503。尽管示出为耦合到总线503,但是存储器507可以耦合到处理器单元501。

虽然参考各种实现和开发描述了本公开的各方面,但是应当理解,这些方面是说明性的,并且权利要求的范围不限于它们。通常,用于如本文所述将文件系统存储复制到基于对象的存储中的技术可以利用与任何硬件系统或多个硬件系统相一致的设施来实现。可以进行很多变化、修改、添加和改进。

可以为本文中描述的组件、操作或结构提供多个实例作为单个实例。最后,各种组件、操作和数据存储器之间的边界在某种程度上是任意的,并且在特定说明性配置的上下文中示出了特定操作。其他功能分配被设想,并且可以落入本公开的范围内。通常,在示例配置中示出为单独组件的结构和功能可以被实现为组合结构或组件。类似地,示出为单个组件的结构和功能可以实现为单独的组件。这些和其他变化、修改、添加和改进可以落入本公开的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1