首页> 中国专利> 用于文件系统虚拟化的方法和设备、用于文件系统虚拟化的数据存储系统、以及用于数据存储系统的文件服务器

用于文件系统虚拟化的方法和设备、用于文件系统虚拟化的数据存储系统、以及用于数据存储系统的文件服务器

摘要

本发明涉及一种提供允许间接访问数据存储系统中的第二文件系统的虚拟化文件系统的方法和设备,数据存储系统包括多个客户端计算机(100)、以及用于管理所述第二文件系统并且允许客户端访问所述第二文件系统的第二文件系统管理单元(410),所述方法包括:在所述多个客户端计算机(100)与所述第二文件系统管理单元(410)之间互连第一文件系统管理单元(310);在由所述第一文件系统管理单元(310)管理的第一文件系统中创建第一目录(/root);将所述第二文件系统的第一目录(/root)与所述第一文件系统的所述第一目录(/root)建立关联;基于在所述第一文件系统管理单元(310)从所述客户端计算机(100)接收到的客户端请求以及基于所述第一文件系统的所述第一目录与所述第二文件系统的所述第一目录之间的关联,允许通过第一文件系统管理单元对所述第二文件系统的按需虚拟化;以及允许客户端通过所述第一文件系统间接访问所述第二文件系统。

著录项

  • 公开/公告号CN105593804A

    专利类型发明专利

  • 公开/公告日2016-05-18

    原文格式PDF

  • 申请/专利权人 日立数据系统工程英国有限公司;

    申请/专利号CN201380078027.6

  • 申请日2013-07-02

  • 分类号G06F3/06(20060101);G06F17/30(20060101);

  • 代理机构11256 北京市金杜律师事务所;

  • 代理人陈伟

  • 地址 英国伯克郡

  • 入库时间 2023-12-18 15:12:16

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-06-11

    专利权的转移 IPC(主分类):G06F3/06 登记生效日:20190523 变更前: 变更后: 申请日:20130702

    专利申请权、专利权的转移

  • 2019-02-22

    授权

    授权

  • 2016-06-15

    实质审查的生效 IPC(主分类):G06F3/06 申请日:20130702

    实质审查的生效

  • 2016-05-18

    公开

    公开

说明书

技术领域

本发明涉及一种用于文件系统虚拟化的方法、设备和数据存储系统、以及用于这 种数据存储系统的文件服务器。

背景技术

在现有技术中,已知,例如如下结合图1A描述的数据存储系统,其中经由通信网络 将多个客户端计算机与一个或多个文件服务器系统连接,该一个或多个文件服务器系统管 理客户端计算机对一个或多个文件系统的I/O访问。

在某些时候,可能期望用新文件服务器来更换一个或多个(传统)文件服务器,以 便提升整个数据存储系统的性能,这是因为例如较新的文件服务器可以配置为管理更多的 文件系统或更大的文件系统(包括允许更大的数据存储空间和/或更大量的文件系统对 象)、允许更有效的输入/输出(I/O)性能、允许使用更大的存储单元或包含更有效的存储装 置技术的存储单元。但是,可能期望保持包括文件系统结构(例如现有文件树结构)和其用 户数据(文件内容)的现有文件系统,同时原则上期望使用户能够无中断地或者至少具有尽 可能短的一个中断来访问现有文件系统。在US7,457,822Bl中描述了基于硬件文件系统的 设备和方法的示例,其通过引用合并于此。

发明内容

如下更详细描述的,本发明的实施例可以涉及一种数据存储系统及其部件,其中 (新的)第一文件系统管理单元在多个客户端计算机与(传统)第二文件系统管理单元之间 互连,其中(传统)第二文件系统管理单元管理通过客户端计算机可访问的一个或多个文件 系统。

在互连(新的)第一个文件系统管理单元之后,通过(新的)第一个文件系统管理单 元可以实现通过客户端计算机到(传统)第二文件系统管理单元的一个或多个文件系统的 I/O访问。在被称为虚拟化的第一阶段中,可以由(新的)第一文件系统管理单元的一个或多 个虚拟化文件系统来表示(传统)第二文件系统管理单元的一个或多个文件系统,其中在虚 拟化阶段逐渐地建立虚拟化系统。在被称为迁移的第二阶段中(其可以与虚拟化阶段重 叠),(传统)第二文件系统管理单元的一个或多个文件系统的用户数据可以被迁移至(新 的)第一文件系统管理单元。

根据本发明,本发明的一个目的是提供一种用于建立和提供允许间接访问第二文 件系统和允许客户端访问第二文件系统的虚拟化文件系统的方法、设备、数据存储系统和 文件服务器。

根据一些实施例,可以提供一种提供允许间接访问数据存储系统中的第二文件系 统的虚拟化文件系统的设备,所述数据存储系统包括多个客户端计算机、用于管理所述第 二文件系统并且允许客户端访问所述第二文件系统的第二文件系统管理单元、以及在所述 多个客户端计算机与所述第二文件系统管理单元之间互连的第一文件系统管理单元。

在一些实施例中,所述设备可以包括以如下方式配置的所述第一文件系统管理单 元:在由所述第一文件系统管理单元管理的第一文件系统中创建第一目录;将所述第二文 件系统的第一目录与所述第一文件系统的所述第一目录建立关联;基于在所述第一文件系 统管理单元从所述客户端计算机接收到的客户端请求以及基于所述第一文件系统的所述 第一目录与所述第二文件系统的所述第一目录之间的所述关联,允许通过所述第一文件系 统管理单元对所述第二文件系统的按需虚拟化;以及/或者允许客户端通过所述第一文件 系统间接访问所述第二文件系统。这具有以下优点:在互连所述第一文件系统管理单元之 后,基本上能够立即允许客户端通过所述第一文件系统管理单元间接访问所述第二文件系 统。

在一些实施例中,为了执行按需虚拟化,所述第一文件系统管理单元可以配置为: 在关于所述第二文件系统的所述第一目录的第二路径位置,从客户端计算机接收针对所述 第二文件系统的第二目录的访问请求;若接收到针对所述第二文件系统的所述第二目录的 所述访问请求,则在关于所述第一文件系统的所述第一目录的所述第二路径位置,在所述 第一文件系统中创建第二目录;以及/或者将所述第二文件系统的所述第二目录的元数据 存储在所述第一文件系统中作为所述第一文件系统的所述第二目录的元数据。

在一些实施例中,所述第一文件系统管理单元可以配置为:当所述访问请求是用 于修改所述第二文件系统的所述第二目录的请求时,根据所接收到的访问请求来修改所述 第一文件系统的所述第二目录,向所述第二文件系统管理单元发送所述访问请求以便于根 据所述第二文件系统管理单元所接收到的访问请求来修改所述第二文件系统的所述第二 文件;以及/或者当所述访问请求是用于读取所述第二文件系统的所述第二目录的属性的 请求时,基于所述第一文件系统的所述第二目录的元数据来返回所请求的所述第二文件系 统的所述第二目录的属性。

在一些实施例中,为了执行按需虚拟化,所述第一文件系统管理单元可以配置为: 在关于所述第二文件系统的所述第一目录的第一路径位置,从客户端计算机接收针对所述 第二文件系统的第一文件的访问请求;若接收到针对所述第二文件系统的所述第一文件的 所述访问请求,则在关于所述第一文件系统的所述第一目录的所述第一路径位置,在所述 第一文件系统中创建第一外部链接对象;以及/或者将所述第二文件系统的所述第一文件 的元数据存储在所述第一文件系统中作为所述第一文件系统的所述第一文件连同所述第 一外部链接对象的元数据。

在一些实施例中,所述外部链接对象可以是所述第一文件系统的文件系统对象, 表示在所述第一文件系统中的所述第二文件系统的所述第一文件并且允许访问所述第二 文件系统的所述第一文件,所述第一外部链接对象包括链接数据,所述链接数据至少表示 在所述第二文件系统中的所述第一文件的唯一对象ID和关于所述第二文件系统的所述第 一目录的所述第一路径位置。

在一些实施例中,所述第一文件系统管理单元可以配置为:当所述访问请求是用 于修改所述第二文件系统的所述第一文件的请求时,基于所述第一外部链接对象的所述链 接数据向所述第二文件系统管理单元发送所述访问请求,以便于根据所述第二文件系统管 理单元所接收到的访问请求来修改所述第二文件系统的所述第一文件;以及/或者当所述 访问请求是用于读取所述第二文件系统的所述第一文件的属性的请求时,基于所述第一外 部链接对象的元数据来返回所请求的所述第二文件系统的所述第一文件的属性。

在一些实施例中,所述第一文件系统管理单元可以配置为:不依赖于在所述第一 文件系统管理单元从所述客户端计算机接收到的客户端请求,而是基于由所述第一文件系 统管理单元管理的虚拟化管理信息且基于所述第一文件系统的所述第一目录与所述第二 文件系统的所述第一目录之间的所述关联,允许通过所述第一文件系统管理单元对所述第 二文件系统的自动虚拟化,所述虚拟化管理信息至少表示存在于所述第二文件系统中的所 述第一目录。

在一些实施例中,为了执行自动虚拟化,所述第一文件系统管理单元可以配置为 为了执行自动虚拟化,所述第一文件系统管理单元配置为:向所述第二文件系统管理单元 发送针对在所述虚拟化管理信所表示的所述第二文件系统的目标目录的目录信息请求,以 便于请求表示存在于所述第二文件系统的所述目标目录中的子对象的信息;响应所述目录 信息请求,从所述第二文件系统管理单元接收表示存在于所述第二文件系统的所述目标目 录中的子对象的信息;以及/或者基于所接收到的表示存在于所述第二文件系统的所述目 标目录中的子对象的信息,来更新所述虚拟化管理信息。

在一些实施例中,为了执行自动虚拟化,所述第一文件系统管理单元可以配置为: 针对在所述虚拟化管理信息中表示的存在于所述第二文件系统的所述目标目录中的每个 子对象,在与关于所述第二文件系统的所述第一目录的所述相关的子对象的所述路径位置 相对应的关于所述第一文件系统的所述第一目录的路径位置,在所述第一文件系统中创建 相关文件系统。

在一些实施例中,针对所述第二文件系统的多个目标目录,通过所述第一文件系 统管理单元自动反复发送所述目录信息请求,以及/或者针对在所述虚拟化管理信息中表 示的存在于所述第二文件系统的所述目标目录中的每个子对象,可以通过所述第一文件系 统管理单元针对所述多个目标目录中的每个在所述第一文件系统中反复创建相关的文件 系统对象。

在一些实施例中,可以通过所述第一文件系统管理单元并行执行针对所述第二文 件系统的多个目标目录反复发送所述目录信息请求,和针对所述多个目标目录的子目录的 每个在所述第一文件系统中反复创建所述相关的文件系统对象。

在一些实施例中,可以基于所述第一文件系统管理单元的缓冲单元的存储占有 率,通过所述第一文件系统管理单元控制针对所述第二文件系统的多个目标目录反复发送 所述目录信息请求的每单位时间执行速率。

在一些实施例中,可以基于所述第一文件系统管理单元与第二文件系统管理单元 之间的通信信道的可用率,通过所述第一文件系统管理单元控制针对所述第二文件系统的 多个目标目录反复发送所述目录信息请求的每单位时间执行速率。

在一些实施例中,当相关的子对象是所述第二文件系统的第三目录时,所创建的 文件系统对象可以是所述第一文件系统的第三目录。

在一些实施例中,为了执行自动虚拟化,所述第一文件系统管理单元还可以配置 为:在所创建的所述第一文件系统的第三目录中创建自参考链接,基于在所述第二文件系 统中相关的第三目录的子目录的个数,针对所创建的所述第一文件系统的第三目录计算假 链接数,以及/或者将所计算出的假链接数存储在所创建的所述第一文件系统的第三目录 的元数据中。

在一些实施例中,所述第一文件系统管理单元可以配置为:当自动创建与所述第 二文件系统的所述第三目录的子目录相关联的所述第一文件系统的所述第三目录中的子 目录时,减小在与所述第二文件系统中的所述第三目录相关联的所述第一文件系统的所述 第三目录的所述元数据中存储的所述假链接数。

在一些实施例中,所述第一文件系统管理单元还可以配置为:从所述客户端计算 机之一接收用于读取所述第二文件系统的所述第三目录的链接数的请求;通过将所述第一 文件系统的所述第三目录的所述假链接数和所述第一文件系统的所述第三目录的真实链 接数相加,来计算所述第二文件系统的所述第三目录的所述链接数;以及/或者响应于所述 请求,将所计算出的链接数发送至所述客户端计算机。

在一些实施例中,当相应的子对象是所述第二文件系统的第二文件时,所创建的 文件系统对象可以是第二外部链接对象,所述第二外部链接对象表示所述第一文件系统中 的所述第二文件系统的所述第二文件并且允许访问所述第二文件系统的所述第二文件,所 述第二外部链接对象包括链接数据,所述链接数据至少表示在所述第二文件系统中的所述 第二文件的唯一对象ID和关于所述第二文件系统的所述第一目录的所述第二文件的路径 位置。

在一些实施例中,所述第一文件系统管理单元还可以配置为将所述虚拟化管理信 息划分为多个数据块,并且针对每个数据块反复生成所述虚拟化管理信息的每个所述数据 块的备份副本。

在一些实施例中,所述多个数据库的第一数据块可以包括与所述第二文件系统的 第四目录相关联的管理数据,以及一个或多个第二数据块可以包括与所述第二文件系统的 所述第四目录的子目录相关联的管理数据,其中,所述第一文件系统管理单元还可以配置 为在生成所述第一数据块的备份副本之前生成一个或多个第二数据块的每个的备份副本。

根据另一方面的一些实施例,可以提供一种提供允许间接访问数据存储系统中的 第二文件系统的虚拟化文件系统的方法,所述数据存储系统包括多个客户端计算机、以及 用于管理所述第二文件系统并且允许客户端访问所述第二文件系统的第二文件系统管理 单元。

所述方法可以包括:在所述多个客户端计算机与所述第二文件系统管理单元之间 互连第一文件系统管理单元;在由所述第一文件系统管理单元管理的第一文件系统中创建 第一目录;将所述第二文件系统的第一目录与所述第一文件系统的所述第一目录相关联; 基于在所述第一文件系统管理单元处从所述客户端计算机接收到的客户端请求以及基于 所述第一文件系统的所述第一目录与所述第二文件系统的所述第一目录之间的所述关联, 允许通过第一文件系统管理单元对所述第二文件系统的按需虚拟化;以及/和允许客户端 通过所述第一文件系统间接访问所述第二文件系统。

在一些实施例中,按需虚拟化可以包括:在第一文件系统管理单元,在关于所述第 二文件系统的所述第一目录的第二路径位置,接收针对所述第二文件系统的第二目录的访 问请求;若接收到针对所述第二文件系统的所述第二目录的所述访问请求,则在关于所述 第一文件系统的所述第一目录的所述第二路径位置,在所述第一文件系统中创建第二目 录;以及/或者将所述第二文件系统的所述第二目录的元数据存储在所述第一文件系统中 作为所述第一文件系统的所述第二目录的元数据。

在一些实施例中,当所述访问请求是用于修改所述第二文件系统的所述第二目录 的请求时,所述方法还可以包括:根据所接收到的访问请求来修改所述第一文件系统的所 述第二目录,向所述第二文件系统管理单元发送所述访问请求,以及根据所接收到的访问 请求来修改所述第二文件系统的所述第二文件。

在一些实施例中,当所述访问请求是用于读取所述第二文件系统的所述第二目录 的属性的请求时,所述方法还可以包括:基于所述第一文件系统的所述第二目录的元数据 来返回所请求的所述第二文件系统的所述第二目录的属性。

在一些实施例中,按需虚拟化可以包括:在第一文件系统管理单元,在关于所述第 二文件系统的所述第一目录的第一路径位置,接收针对所述第二文件系统的第一文件的访 问请求;若接收到针对所述第二文件系统的所述第一文件的所述访问请求,则在关于所述 第一文件系统的所述第一目录的所述第一路径位置,在所述第一文件系统中创建第一外部 链接对象;以及/或者将所述第二文件系统的所述第一文件的元数据存储在所述第一文件 系统中作为所述第一文件系统的所述第一文件连同所述第一外部链接对象的元数据。

所述外部链接对象可以是所述第一文件系统的文件系统对象,表示在所述第一文 件系统中的所述第二文件系统的所述第一文件并且允许访问所述第二文件系统的所述第 一文件,所述第一外部链接对象优选包括链接数据,所述链接数据至少表示在所述第二文 件系统中的所述第一文件的唯一对象ID和关于所述第二文件系统的所述第一目录的所述 第一路径位置。

在一些实施例中,当所述访问请求是用于修改所述第二文件系统的所述第一文件 的请求时,所述方法还可以包括:基于所述第一外部链接对象的所述链接数据向所述第二 文件系统管理单元发送所述访问请求,并且根据所接收到的访问请求来修改所述第二文件 系统的所述第一文件。

在一些实施例中,当所述访问请求是用于读取所述第二文件系统的所述第一文件 的属性的请求时,所述方法还可以包括:基于所述第一外部链接对象的元数据来返回所请 求的所述第二文件系统的所述第一文件的属性。

在一些实施例中,所述方法还可以包括:不依赖于在所述第一文件系统管理单元 从所述客户端计算机接收到的客户端请求,以及/或者基于由所述第一文件系统管理单元 管理的虚拟化管理信息且基于所述第一文件系统的所述第一目录与所述第二文件系统的 所述第一目录之间的所述关联,允许通过所述第一文件系统管理单元对所述第二文件系统 的自动虚拟化,所述虚拟化管理信息优选至少表示存在于所述第二文件系统中的所述第一 目录。

在一些实施例中,自动虚拟化可以包括:从所述第一文件系统管理单元向所述第 二文件系统管理单元发送针对在所述虚拟化管理信所表示的所述第二文件系统的目标目 录的目录信息请求,以便于请求表示存在于所述第二文件系统的所述目标目录中的子对象 的信息;响应于所述目录信息请求,在所述第一文件系统管理单元从所述第二文件系统管 理单元接收表示存在于所述第二文件系统的所述目标目录中的子对象的信息;以及/或者 基于所接收到的表示存在于所述第二文件系统的所述目标目录中的子对象的信息,来更新 所述虚拟化管理信息。

在一些实施例中,自动虚拟化还可以包括:针对在所述虚拟化管理信息中表示的 存在于所述第二文件系统的所述目标目录中的每个子对象,在与关于所述第二文件系统的 所述第一目录的所述相关的子对象的所述路径位置相对应的关于所述第一文件系统的所 述第一目录的路径位置,在所述第一文件系统中创建相关文件系统。

在一些实施例中,针对所述第二文件系统的多个目标目录,自动反复发送所述目 录信息请求,以及/或者针对在所述虚拟化管理信息中表示的存在于所述第二文件系统的 所述目标目录中的每个子对象,针对所述多个目标目录中的每个在所述第一文件系统中反 复创建相关的文件系统对象。

在一些实施例中,可以并行执行针对所述第二文件系统的多个目标目录反复发送 所述目录信息请求,和针对所述多个目标目录的子目录的每个在所述第一文件系统中反复 创建所述相关的文件系统对象。

在一些实施例中,可以基于所述第一文件系统管理单元的缓冲单元的存储占有 率,控制针对所述第二文件系统的多个目标目录反复发送所述目录信息请求的每单位时间 执行速率。

在一些实施例中,可以基于所述第一文件系统管理单元与第二文件系统管理单元 之间通信信道的可用率,控制针对所述第二文件系统的多个目标目录反复发送所述目录信 息请求的每单位时间执行速率。

在一些实施例中,当相关的子对象是所述第二文件系统的第三目录时,所创建的 文件系统对象可以是所述第一文件系统的第三目录。

在一些实施例中,自动虚拟化还可以包括:在所创建的所述第一文件系统的第三 目录中创建自参考链接,基于在所述第二文件系统中相关的第三目录的子目录的个数,针 对所创建的所述第一文件系统的第三目录计算假链接数,以及/或者将所计算出的假链接 数存储在所创建的所述第一文件系统的第三目录的元数据中。

在一些实施例中,所述方法还可以包括:当自动创建与所述第二文件系统的所述 第三目录的子目录相关联的所述第一文件系统的所述第三目录中的子目录时,减小在与所 述第二文件系统中的所述第三目录相关联的所述第一文件系统的所述第三目录的所述元 数据中存储的所述假链接数。

在一些实施例中,所述方法还可以包括:在所述第一文件系统管理单元从所述客 户端计算机之一接收用于读取所述第二文件系统的所述第三目录的链接数的请求;在所述 第一文件系统管理单元通过将所述第一文件系统的所述第三目录的所述假链接数和所述 第一文件系统的所述第三目录的真实链接数相加,来计算所述第二文件系统的所述第三目 录的所述链接数;以及/或者响应于所述请求,将所计算的链接数发送到所述客户端计算 机。

在一些实施例中,当相应的子对象是所述第二文件系统的第二文件时,所创建的 文件系统对象可以是第二外部链接对象,所述第二外部链接对象优选表示所述第一文件系 统中的所述第二文件系统的所述第二文件并且允许访问所述第二文件系统的所述第二文 件,所述第二外部链接对象优选包括链接数据,所述链接数据至少表示在所述第二文件系 统中的所述第二文件的唯一对象ID和关于所述第二文件系统的所述第一目录的所述第二 文件的路径位置。

在一些实施例中,所述方法还可以包括:将所述虚拟化管理信息划分为多个数据 块,并且针对每个数据块反复生成所述虚拟化管理信息的每个所述数据块的备份副本。

在一些实施例中,所述多个数据库的第一数据块包括与所述第二文件系统的第四 目录相关联的管理数据,以及一个或多个第二数据块包括与所述第二文件系统的所述第四 目录的子目录相关联的管理数据,其中所述方法优选还包括在生成所述第一数据块的备份 副本之前生成一个或多个第二数据块的每个的备份副本。

根据另一方面,可以提供一种提供允许间接访问数据存储系统中的第二文件系统 的虚拟化文件系统的设备,所述数据存储系统包括多个客户端计算机、用于管理所述第二 文件系统并且允许客户端访问所述第二文件系统的第二文件系统管理单元、以及在所述多 个客户端计算机与所述第二文件系统管理单元之间互连的第一文件系统管理单元。

所述设备可以包括以如下方式配置的所述第一文件系统管理单元:在由所述第一 文件系统管理单元管理的第一文件系统中创建第一目录;将所述第二文件系统的第一目录 与所述第一文件系统的所述第一目录建立关联;基于在所述第一文件系统管理单元从所述 客户端计算机接收到的客户端请求以及基于所述第一文件系统的所述第一目录与所述第 二文件系统的所述第一目录之间的所述关联,允许通过所述第一文件系统管理单元对所述 第二文件系统的按需虚拟化;以及/或者允许客户端通过所述第一文件系统间接访问所述 第二文件系统。

在一些实施例中,所述设备的所述第一文件系统管理单元还可以配置为执行关于 如上说明的一些实施例的一个或多个方面的步骤。

根据另一个方面,可以提供一种提供允许间接访问数据存储系统中第二文件系统 的虚拟化文件系统的数据存储系统,所述数据存储系统包括多个客户端计算机、用于管理 所述第二文件系统并且允许对所述第二文件系统的客户端访问的第二文件系统管理单元、 以及在所述多个客户端计算机与所述第二文件系统管理单元之间互连的第一文件系统管 理单元,所述第一文件系统管理单元优选配置为:在由所述第一文件系统管理单元管理的 第一文件系统中创建第一目录;将所述第二文件系统的第一目录与所述第一文件系统的所 述第一目录建立关联;基于在所述第一文件系统管理单元从所述客户端计算机接收到的客 户端请求以及基于所述第一文件系统的所述第一目录与所述第二文件系统的所述第一目 录之间的所述关联,允许通过所述第一文件系统管理单元对所述第二文件系统的按需虚拟 化;以及/或者允许客户端通过所述第一文件系统间接访问所述第二文件系统。

在一些实施例中,所述数据存储系统的所述第一文件系统管理单元还可以配置为 执行关于如上说明的一些实施例的一个或多个方面的步骤。

根据另一个方面,可以提供一种文件系统服务器,其用于根据如上所述的数据存 储系统中,优选包括关于如上所述的一些实施例的第一文件系统管理单元。

根据另一个方面,可以提供一种包括计算机程序代码工具的计算机程序产品,其 配置为使数据存储系统中文件系统管理单元的处理单元执行关于如上说明的一些实施例 的一个或多个方面的步骤。

附图说明

图1A示出数据存储系统的例子。

图1B示出互连有附加存储设备的图1A的数据存储系统的例子。

图1C示出数据存储系统的另一个例子。

图1D示出数据存储系统的另一个例子。

图2示例性地示出文件系统管理单元的结构的示意图。

图3示例性地示出虚拟化/迁移单元的示意功能图。

图4示出文件系统树结构的例子。

图5A示出基于图4的树结构的虚拟化文件系统树结构的例子。

图5B和图5C示出基于图4的树结构的其它虚拟化文件系统树结构的例子。

图6示出用于虚拟化初始化的方法的示例性流程图。

图7示出用于自动后台虚拟化的信息交换的图示。

图8示出在虚拟化过程中的第一时间点的虚拟化管理信息表的例子。

图9示出部分被虚拟化的文件系统树结构的例子。

图10示出在虚拟化过程中的第二时间点的虚拟化管理信息表的例子。

图11示出用于自动后台虚拟化的信息交换的另一个图示。

图12示出在虚拟化过程中的第三时间点的虚拟化管理信息表的例子。

图13示出部分被虚拟化的文件系统树结构的例子。

图14示出自动后台虚拟化管理的示例性流程图。

图15示出自动后台虚拟化的示例性流程图。

图16示出自动后台虚拟化的另一个示例性流程图。

图17A示出用于虚拟化文件的外部链接对象的数据结构的示例性示意图。

图17B示出用于虚拟化目录的元数据的数据结构的示例性示意图。

图18示出用于按需虚拟化的信息交换的图示。

图19示出在基于图18的按需虚拟化之后的部分被虚拟化的文件系统树结构的例 子。

图20示出虚拟化过程中允许用户文件访问的方法的示例性流程图。

图21示出虚拟化过程中允许属性访问的方法的示例性流程图。

图22A示出虚拟化过程中允许用户目录访问的方法的示例性流程图。

图22B示出虚拟化过程中允许用户目录访问的方法的示例性流程图。

图23示出用于虚拟化管理表备份的方法的示例性流程图。

图24示出在图4的文件系统树的虚拟化完成时的虚拟化管理信息表的例子。

图25A示出用于向虚拟化文件的写访问的信息交换的图示。

图25B示出用于向虚拟化文件的读访问的信息交换的图示。

图25C示出用于向虚拟化文件或目录的属性访问的信息交换的图示。

图25D示出用于删除虚拟化文件的信息交换的图示。

图25E示出用于文件创建的信息交换的图示。

图25F示出用于改变属性的信息交换的图示。

图25G示出用于目录创建的信息交换的图示。

图25H示出用于目录重命名的信息交换的图示。

具体实施方式

在下文中,参照附图来详细描述本发明的优选方面和实施例。利用相似的附图标 记来表示不同附图和实施例中的相同或相似特征。应该理解的是,以下关于各种优选方面 和优选实施方面的详细描述不用来限制本发明的范围。

图1A示出数据存储系统的例子,该数据存储系统包括经由通信网络200与第二存 储设备400连接的多个客户端计算机100(客户端)。第二存储设备400包括:文件系统管理单 元410,其用于管理一个或多个文件系统;存储单元420,用于存储由该存储单元420管理的 一个或多个文件系统的用户数据和用户数据的元数据;和备份存储单元430,其用于根据备 份请求或自动地例如定期地执行对存储在存储单元420中的数据进行的备份。第二存储设 备400可以被实现为单个计算装置或者可以被实现为彼此连接的多个装置的系统。例如,文 件系统管理单元410可以被实现为与网络附属存储(NAS)的例如存储单元420、430的一个或 多个存储装置连接的一个或多个文件系统服务器计算机的系统。

通信网络200(以及以下详述的通信网络500、600和800)可以被实现为有线通信网 络(例如WAN、LAN、本地光纤信道网络、基于因特网的网络、以及以太网通信网络等)或无线 通信网络(例如WLAN)或其任意组合。下层通信协议可以是光纤信道协议或者例如基于NFS 的协议或基于SMB/CIFS的协议的基于文件的协议。

客户端100配置为经由通信网络200来访问由第二个存储设备400的文件系统管理 单元410管理的一个或多个文件系统的用户数据。具体地,用户能够根据用户个人或用户组 个人访问策略(例如,用户访问权限、用户组访问权限、文件系统许可等),通过经由网络200 与第二存储设备400连接的每个客户端100将数据写入文件系统、从文件系统读取数据、在 文件系统中创建文件和目录、设置或读取文件系统对象例如文件和目录的属性、修改文件 系统的数据、删除文件系统的对象以及移动文件系统对象。

在某些时候,为了改善整个数据存储的性能而可能期望利用另一个较新的文件系 统管理存储设备来更换第二存储设备400,这是因为例如较新的文件系统管理存储设备可 以配置为管理更多的文件系统或更大的文件系统(包括允许更大的数据存储空间和/或更 大量的文件系统对象)、允许更有效的输入/输出(I/O)性能、允许使用更大的存储单元或允 许使用包含更有效存储装置技术的存储单元。但是,可能期望保持包括其文件系统结构(例 如现有文件树结构)和用户数据(文件内容)的现有文件系统,同时原则上期望使用户能够 无中断地或者至少具有尽可能短的一个中断来访问现有文件系统。

根据本发明的一些优选方面,基本思想是,如图1B示例性地所示,应被用来取代较 旧的传统第二存储设备400来管理现有文件系统的较新的第一存储设备300互连在访问客 户端100与传统第二存储装置设备400之间,仅利用一个短暂的服务中断。

图1B示出根据本发明的优选方面的图1A的数据存储系统的例子,其中在通信网络 200与第二存储设备400之间互连附加的第一存储设备300。第一存储设备300包括:文件系 统管理单元310,其用于管理一个或多个文件系统;存储单元320,其用于存储由文件系统管 理单元310管理的一个或多个文件系统的用户数据和用户数据的元数据;和备份存储单元 330,其用于根据备份请求或自动地例如定期地执行对存储在存储单元320中的数据进行的 备份。第一存储设备300可以被实现为单个计算装置或者可以被实现为彼此连接的多个装 置的系统。例如,文件系统管理单元310可以被实现为与网络附属存储(NAS)的例如存储单 元320、存储单元330的一个或多个存储装置连接的一个或多个文件系统服务器计算机的系 统。

在通信网络200与第二存储设备400之间互连第一存储设备300仅需要文件系统服 务的一个短中断,在此中断期间内,客户端100被断开并且短期内不能访问现有文件系统, 即客户端100不能读用户数据、写用户数据、创建新的文件系统对象(例如,文件和目录)或 访问文件系统对象属性。

在通信网络200与第二存储设备400之间互连了第一存储设备300之后,客户端100 保持与第二存储系统400断开,并且因此不能直接访问由第二文件存储设备400管理的文件 系统,而只能通过第一存储设备300间接地访问由第二文件存储设备400管理的文件系统。 根据优选方面,期望所有的用户访问仅被接入到第一存储设备300并且不存在与第二存储 设备400的直接连接。

首先,在互连第一存储设备300之后,用户经由客户端100要访问的一个或多个文 件系统仍然保存在第二存储设备400(包括文件的用户数据和用于组织文件的目录、以及文 件系统对象的元数据)中,并且第一存储设备300并没有保存有现有文件系统的任何数据。

为了能够在第一存储设备300上本地处理对文件系统的所有用户访问请求并且断 开第二存储设备400,所有的文件系统数据(包括用户数据和文件系统元数据)可能最终需 要从第二存储设备400迁移至第一存储设备300。然而,就包含大量目录和文件的大文件系 统而言,这种数据迁移可能花费很长时间,并且若在数据迁移期间,直到所有的文件系统数 据(包括用户数据和文件系统元数据)均存在于第一存储设备300中才能够进行用户访问, 则这将不利地导致不被期望的客户端100在长时间内对文件系统的不可访问性。

为了将不被期望的对文件系统的不可访问时间最小化,在第一存储系统300配置 为,在互连第一存储设备300之后立即允许对第二存储设备400所管理的文件系统的间接用 户访问。

然后,在互连第一存储设备300之后的、以下被称为“虚拟化”的第一阶段,第一存 储设备300执行文件系统的文件系统树的虚拟化,其中将存在于第二存储系统400的文件系 统的文件系统树虚拟地创建于第一存储设备300,而实际上没有迁移存储在第二存储设备 的存储单元420中的用户数据。

在以下被称为“迁移”的第二阶段中,将包括文件的实际数据内容等的实际用户数 据从第二存储设备400转移至第一存储设备300。

当完成虚拟化阶段和迁移阶段时,第一存储设备300能够在本地处理现有文件系 统,并且之后第二存储设备400能够完全断开,由于在虚拟化阶段和迁移阶段中对文件系统 的不间断地进行用户访问,所以在此期间内现有文件系统很可能被改变。

然而,在虚拟化阶段和迁移阶段过程中,第二存储设备400需要保持可被第一存储 设备300访问。

下面,针对一些优选方面来更详细地描述虚拟化阶段和迁移阶段为不同的阶段, 其中直到完成虚拟化阶段为止才开始数据迁移,但应该理解的是,本发明不限于这种配置, 并且由于当文件系统的其它部分仍在进行虚拟化时,能够对文件系统的已被虚拟化部分的 文件的文件数据内容执行迁移,所以这些阶段也能够在时间上重叠。

当示例性地考虑虚拟化阶段和迁移阶段作为随后执行的不同操作阶段时,在虚拟 化阶段,由于第一文件系统管理单元310针对存在于第二存储设备400的文件系统中的每个 文件来创建由存储单元320存储的外部链接对象,所以第一文件系统管理单元310将建立由 第二文件系统管理单元410管理的文件系统的虚拟化文件树结构,因此,没有用户数据(即 文件的内容)存在于第一存储系统300(例如,存储在存储单元320中)。

外部链接对象是由第一文件系统管理单元310管理的文件系统的文件系统对象, 只要文件的实际用户数据(即,文件内容本身)没有被迁移至第一存储设备300的存储单元 320,每个外部链接对象就能够访问由第二文件系统管理单元410管理的文件系统的对应文 件。

以下,详细描述通过存在于第一存储设备300的外部链接对象来对存在于第二存 储设备400上的文件系统的文件进行的用户访问。

可以以多种方式实现以下图1B至图1D的所有配置中的第一存储设备300和第二存 储设备400的连接,例如,以与以上说明的通信网络200相类似的方式,并且尤其期望提供具 有多个光纤信道的光纤信道连接,其中允许在不同的多个光纤信道中并行通信。此外,期望 使用基于文件的通信协议,例如基于FTP的协议、基于NFS的协议(例如,NFSv3或NFSv4)或基 于SMB/CIFS的协议等。

图1C示出数据存储系统的另一个例子,其中在通信网络200与另一个通信网络500 之间互连附加的第一存储设备300,通信网络500与多个第二存储设备400连接。也就是说, 与图1B所示的数据存储系统的不同之处在于,第一存储设备300能够被用来与之前存在的 多个传统存储设备400交换,其中之前存在的多个传统存储设备400中的每个管理由客户端 100访问的一个或多个文件系统。第一存储设备300配置为执行由多个传统存储设备400管 理的文件系统的虚拟化和迁移。

当完成虚拟化阶段和迁移阶段时,第一存储设备300能够在本地处理现有文件系 统,并且之后第二存储设备400中的一个或多个或全部能够完全断开,由于在虚拟化阶段和 迁移阶段中对文件系统的不间断地进行用户访问,所以在此期间内现有文件系统很可能被 改变。然而,在虚拟化阶段和迁移阶段过程中,第二存储设备400需要保持可被第一存储设 备300访问。

在图1C的例子中,显然,在一些情况下,更有助于仅通过第一存储设备300执行文 件系统的虚拟化而不执行任何后续的迁移阶段。例如,在由传统存储设备400管理的所有文 件系统的虚拟化完成之后,尽管文件系统的实际用户数据(文件内容)仍然仅存储在传统存 储设备400的存储单元中,但客户端100能够通过将由第一存储设备300管理的被虚拟化的 文件系统作为单个访问点,来访问多个传统存储设备400的所有文件系统。

图1D示出数据存储系统的另一个例子。同样地,客户端100经由通信网络200与第 一存储设备300连接,并且第一存储设备300经由另一个通信网络500与第二(传统)存储设 备400连接。另外,第一存储设备300经由又一个通信网络800与远程存储设备900连接,而第 二存储设备400经由再一个通信网络600与另一个远程存储设备700连接。

这种配置还允许远程数据复制,其中存储在第一存储设备300的存储单元320的用 户数据可以经由通信网络800被远程复制到第一远程存储设备900的存储单元,并且存储在 第二存储设备400的存储单元420的用户数据可以经由通信网络600被远程复制到第二远程 存储设备700的存储单元。当然,能够同步或异步地执行经由网络800和网络600的数据的远 程复制。

原则上,对于大量的传统数据存储系统,存在一种配置,其具有:在第一站点的第 二存储设备400;和用于对由第二个存储设备400管理的文件系统的用户数据同步或异步地 进行远程复制的远程存储设备700。在以如上结合图1B说明的那样互连了第一存储设备300 之后,第一存储设备300对由第二存储设备400管理的文件系统执行虚拟化,但直到迁移阶 段开始为止,不会实际地迁移用户数据。

根据示例性实施例,在不进行迁移的虚拟化阶段中,通过客户端100对文件系统的 所有用户访问都被传递到第二存储设备400,该用户访问包括所有数据修改用户请求,例如 写访问、属性改变用户访问、新文件和目录的创建、重命名操作等,并且第二存储系统400将 继续管理文件系统的当前(规范)版本。在这种实施例中,只要通过客户端100对文件系统的 所有数据修改用户访问被传递到第二存储设备400,就没有必要执行从第一存储设备300到 远程存储设备900的数据复制,这是因为文件系统的规范数据版本被完全保存在第二存储 设备400中且被同步或异步地复制到存储设备900,并且能够在之后连接远程存储设备900。

然而,在一些其它实施例中,在虚拟化过程中(或在虚拟化之后)已经开始迁移,并 且对于已经被完全迁移且被完全保存在第一存储设备300中的文件系统对象、和/或对于仅 在由第一存储设备300管理的文件系统中执行的新文件和/或新目录的创建,修改用户访问 不再被传递至第二存储设备400,即,当文件系统可能开始变得不同时,至少对于已经被完 全迁移且完全被保存在第一存储设备300中的文件系统对象和/或对于新创建的文件和/或 新创建的目录,期望进行向远程存储设备900的附加数据复制。

类似地,在所有的上述配置中,当文件系统的规范版本仍被完全保存在第二存储 设备400中并且执行从第二存储设备400的存储单元420向备份存储单元430的规范版本的 备份时,为了备份数据,只要通过客户端100对文件系统的所有数据修改用户访问被传递到 第二存储设备400,就没有必要执行从第一存储设备300的存储单元320向备份存储单元330 的数据备份。

然而,在一些其它实施例中,在虚拟化过程中(或在虚拟化之后)已经开始迁移,并 且对于已经被完全迁移且被完全保存在第一存储设备300中的文件系统对象、和/或对于仅 在由第一存储设备300管理的文件系统中执行的新文件和/或新目录的创建,修改用户访问 不再被传递至第二存储设备400,即,当文件系统可能开始变得不同时,至少对于已经被完 全迁移且完全被保存在第一存储设备300中的文件系统对象和/或对于新创建的文件和/或 新创建的目录,期望进行向远程存储单元330的附加数据备份。

图2示例性地示出文件系统管理单元310的结构的示意图。文件系统管理单元310 包括主机接口单元311和存储接口单元312,其中主机接口单元311包括用于经由网络200与 多个主机装置(例如,客户端计算机100)连接的多个主机接口311a至311g,存储接口单元 312包括用于与存储单元320和330的多个存储装置连接的多个存储接口312a至312g。另外, 文件系统管理单元310包括处理单元313、存储器单元314和存储装置315,其中处理单元313 包括一个或多个中央处理单元,存储器单元314用于暂时地存储包括管理数据在内的用于 处理的数据,存储装置315用于存储应用数据和管理数据。

图3示例性地示出文件系统管理单元310的虚拟化/迁移单元340的示意功能图,该 文件系统管理单元310可以由硬件、软件或其组合来实现。

虚拟化/迁移单元340包括虚拟化管理信息表341和虚拟化管理信息备份单元342, 其中虚拟化管理信息表341用于管理(存储在存储器单元314和/或存储装置315中的)虚拟 化管理数据和迁移管理数据,虚拟化管理信息备份单元342用于执行虚拟化管理数据和迁 移管理数据的备份(备份到存储装置315和/或存储单元320和/或330中)。

为了通信的目的,虚拟化/迁移单元340包括通信单元348,通信单元348具有客户 端通信单元348A和文件系统通信单元348B,其中客户端通信单元348A用于接收来自客户端 100的访问请求并且响应客户端100的访问请求,文件系统通信单元348B用于向第二存储设 备400的文件系统管理单元410发出访问请求并且接收来自第二存储装置400的文件系统管 理单元410的响应。

为了执行虚拟化和迁移,虚拟化/迁移单元340包括抓取单元343,该抓取 (crawling)单元343用于自动地抓取(观察)由第二个存储设备400的文件系统管理单元410 管理的文件系统的文件树结构,并且用于创建虚拟化作业来对在由第二存储设备400的文 件系统管理单元410管理的文件系统中获得的文件系统对象的虚拟化进行指示。

虚拟化/迁移单元340还包括虚拟化单元344和迁移单元345,其中虚拟化单元344 用于执行虚拟化作业来将由抓取单元343获得的文件系统对象虚拟化,并且用于创建迁移 作业来对被虚拟化的文件系统对象的迁移进行指示,迁移单元345用于执行迁移作业来迁 移通过虚拟化单元344虚拟化的文件系统对象。

虚拟化/迁移单元340还包括多个作业队列346A、346B和346C,用于之后存储用于 文件系统抓取、文件系统对象虚拟化以及文件系统对象迁移的作业。

例如,第一作业队列346A可以保存目录信息作业,第二作业队列346B可以保存虚 拟化作业并且第三作业队列346C可以保存迁移作业。也就是说,向基于在作业队列346A中 保存的作业的文件系统抓取(抓取单元343)、基于在作业队列346B中保存的作业的文件系 统对象虚拟化(虚拟化单元344)、以及基于在作业队列346C中保存的作业的文件系统对象 迁移(迁移单元345)提供了不同的单元,所以可以以多线程和/或并行方式来执行虚拟化和 迁移。

由于抓取单元343可以配置为并行执行取自作业队列346A的多个抓取作业(即,如 下进一步讨论的目录信息作业),虚拟化单元344可以配置为并行执行取自作业队列346B的 多个虚拟化作业,并且迁移单元345可以配置为并行执行取自作业队列346C的多个迁移作 业,所以上述单元可以是多线程的。

然而,本发明并不限于使用如上所述的三个队列,可以为目录信息作业、虚拟化作 业和迁移作业中的每个提供多个作业队列、或者少于三个队列,例如,提供一个队列用于所 有的目录信息作业、虚拟化作业和迁移作业提供一个队列。在仅用一个队列的后者的情形 下,抓取单元343、虚拟化单元344和迁移单元345可以被实现为单个多线程单元,该多线程 单元配置为执行取自单个作业队列的多个作业,并且将所有新创建的作业(包括目录信息 作业、虚拟化作业和迁移作业)添加至同一队列。

“目录信息作业”是与抓取单元343获取的由第二存储设备400的文件系统管理单 元410管理的文件系统的某个目录相关联的作业,“目录信息作业”指示抓取单元343观察由 第二存储设备400的文件系统管理单元410管理的文件系统的某个目录中的文件系统对象 (包括子目录和文件)。

“虚拟化作业”是与抓取单元343获取的由第二存储设备400的文件系统管理单元 410管理的文件系统的某个文件系统对象(例如,文件或目录)相关联的作业,“虚拟化作业” 指示虚拟化单元344将第一存储设备300的某个文件系统对象虚拟化。

基本上,对由抓取单元343获取的目录进行的虚拟化意味着在第一文件系统管理 单元310管理的文件系统中创建对应目录(具有相同的名称),而对由抓取单元343获取的文 件或类似对象(例如,硬链接文件)的虚拟化意味着在第一文件系统管理单元310管理的文 件系统的目录中创建被称为外部链接对象(以下缩写为XLO)的虚拟对象,上述目录与由具 有对应文件的第二文件系统管理单元410管理的文件系统的目录对应。

“外部链接对象”是在由与文件或类似对象(例如,硬链接文件)相关联的第一文件 系统管理单元310管理的文件系统中存在的对象。“外部链接对象”不存储对应文件的任何 实际用户数据,但包括到第二文件系统管理单元410管理的文件系统中的对应文件的外部 参照,使得由第一文件系统管理单元310管理的文件系统的“外部链接对象”表示在第一文 件系统管理单元310管理的文件系统中的由第二文件系统管理单元410管理的文件系统的 对应文件,并且允许访问该对应文件。

“外部链接对象”可以至少包括关于第二文件系统管理单元410管理的文件系统中 的对应文件所使用的远程对象ID的信息、以及关于第二文件系统管理单元410管理的文件 系统中的文件的远程路径的信息。

“迁移作业”是与被虚拟化单元344虚拟化的第二存储设备400的文件系统管理单 元410管理的文件系统的某个文件或类似对象(例如,硬链接文件)相关联的作业,“迁移作 业”指示迁移单元345将某个文件或类似对象迁移至第一存储设备300。即,通过执行指示迁 移单元345来迁移某个文件的“迁移作业”,将作为文件内容的真实用户数据转移至第一存 储设备300以存储在存储单元320中。

在当作业队列被作业占用时创建作业的情形下,当作业队346A至346C中的一个或 多个被占用时,提供缓冲单元347来暂时存储目录信息作业、虚拟化作业和迁移作业。当由 缓冲单元347保存作业时,一旦另一个作业被执行且从作业队列中移除,就将保存在缓冲单 元347中的作业添加至各个作业队列。

在以下更具体的描述和示例的说明中,针对用语“虚拟化”、“迁移”、“外部链接对 象”、“目录信息作业”、“虚拟作业”和“迁移作业”的更示例性详细内容将变得显而易见。

图4示出由图1A和图1B的第二文件系统管理单元410示例性地管理的文件系统的 文件系统树结构的例子。具体地,示例性地假设在开始将第一存储设备300中的文件系统虚 拟化以便于由第一文件系统管理单元310管理之前,在断开第二存储设备400且互连第一存 储设备300的时间,由图1A的第二文件系统管理单元410管理且存储在图1A的存储单元420 上的文件系统具有图4的结构。

图4的示例性文件系统具有最高层目录/root(根)和多个子目录。具体地,除了文 件“filel”和“file2”以外,子目录/dirl和/dir2也存在于/root目录中。也就是说,/root目 录表示子目录/dirl和/dir2的父目录。目录/dirl具有子目录/dirll和/dirl2并且目录/ dir2具有一个子目录/dir21和文件“file3”。在目录/dirll的子目录/dirlll中存在文件 “file9”和“filel0”。另外,文件“file4”存储在目录/dirll中,而文件“file5”和“file6”存 在于目录/dirl2中。最后,目录/dir21具有文件“file7”和“file8”。

一旦例如如图1B、图1C或图1D所示在客户端100与第二存储设备400之间互连第一 存储设备300,若初始虚拟化路径被创建则开始将由图1A的第二文件系统管理单元410管理 且存储在图1A的存储单元420上的文件系统虚拟化,其中该虚拟化路径将由第一存储设备 300的第一文件系统管理单元310管理的文件系统中的一个新创建的目录与待虚拟化和/或 待迁移的由第二存储设备400的第二文件系统管理单元410管理的一部分文件系统的最高 阶目录建立关联。

例如,在第一存储设备300上不存在先前文件系统的情况下,在由第一存储设备 300的第一文件系统管理单元310管理的文件系统中能够创建新的最高阶目录/root,并且 通过新建立的虚拟化路径将该新的最高阶目录/root与由第二存储设备400的第二文件系 统管理单元410管理的文件系统的最高阶目录/root建立关联,其结果为,将具有比/root目 录更低阶的所有文件系统对象的树结构虚拟化。

图5A示出基于图4的树结构的被虚拟化的文件系统树结构的示例,其中根据第一 虚拟化路径<存储设备300>:/root-><存储设备400>:/root,将由第一文件系统管理单元 310管理的文件系统的最高阶目录/root与由第二文件系统管理单元410管理的文件系统的 最高阶目录/root建立关联。

在根据第一虚拟路径完成由第二文件系统管理单元410的文件系统的虚拟化之 后,第一文件系统管理单元410管理具有根据图5A的树结构的文件系统,其中在由第一文件 系统管理单元310管理的文件系统中也创建有由第二文件系统管理单元410管理的文件系 统的每个目录/dirl、/dir2、/dirll、/dirl2、/dir21和/dirlll,具有目录/dirl和/dir2被 创建为最高阶目录/dirl的子目录且目录/dirll和/dirl2被创建为目录/dirl的子目录等 的相同的树结构。

然而,对于文件(以及例如硬链接文件的类似对象),在虚拟化之后,由第一存储设 备300中的第一文件系统管理单元310管理的文件系统将不会具有实际文件,而是具有分别 与由第二存储设备300中的第二文件系统管理单元410管理的文件系统的每个文件对应的 外部链接对象XLO。

因此,在完成虚拟化之后,取代由第二存储设备400中的第二文件系统管理单元 410所管理的文件系统的各个文件filel、file2、file3、file4、file5、file6、file7、file8、 file9和filel0,而是外部链接对象XLOl、XLO2、XLO3、XLO4、XLO5、XLO6、XLO7、XLO8、XLO8和 XLO10将存在于第一存储设备300中的第一文件系统管理单元310管理的文件系统中。应该 注意到,第一文件系统中的外部连接对象将作为文件呈现给客户端,即,客户端将无法看到 第一文件系统中的外部链接对象,但是将会看到实际的文件名称,例如,“filel”、“file2”、 “file3”、“file4”、“file5”、“file6”、“file7”、“file8”、“file9”和“filel0”。各个外部链 接对象中的每个将存在于由第一存储设备300中的第一文件系统管理单元310管理的文件 系统的目录中,其对应于由具有相应文件的第二存储设备400中的第二文件系统管理单元 400所管理的文件系统的相应目录。

例如,虽然filel0存在于由第二存储设备400中的第二文件系统管理单元410管理 的文件系统中的远程路径/root/dirl/dirll/dirlll/filel0中,但对应的外部链接对象 XLO10存在于第一存储设备300的第一文件系统管理单元310中的对应本地路径/root/ dirl/dirll/dirlll/XLOl0中,XLO10表示filel0并且当用户试图通过访问请求访问在第一 文件存储设备300中的文件系统中的file10时允许向filel0的外部访问。也就是,优选地, 本地路径名称与远程路径相同,并且从客户端的视角来看,呈现给客户端的被虚拟化的第 一文件系统难以与第二文件系统区分。

图5B根据另一个可能的虚拟化路径示出基于图4的树结构的另一个被虚拟化的文 件系统树结构的例子。例如,在当前用户仅访问存在于/dirl下的文件和目录而不再访问 filel、file2和存在于目录/dir2下的所有对象的情况下,可以设置另一个虚拟化路径,例 如<存储设备300>:/root-><存储设备400>:/root/dirl,其结果为,在图5A的虚拟化树结构 中,在虚拟化之后只能访问目录/dirl下的对象。

图5C示出根据虚拟化路径<存储设备300>:/root-><存储设备400>:/root/dir2的 对应的被虚拟化的树结构的例子。另外,若/dirl和/dir2的内容应被组织在由文件系统管 理单元300管理的单独文件系统中,则根据图5B和图5C能够将图4的一个单个文件系统划分 为两个单独的文件系统。

在上述示例中,通过在第一文件系统中同样地重建第二文件系统来虚拟化第二文 件系统,即,第二文件系统的每个目录创建在第一文件系统中的类似路径下,并且将第二文 件系统的每个文件与第一文件系统中类似路径下的相应外部链接对象建立关联。然而,在 一些实施例中,可以提供附加实施的机制,以确保在第一文件系统中将与第二文件系统中 的与用户数据相关的目录和文件虚拟化,而在第一文件系统中不将第二文件系统的其它文 件系统对象虚拟化,例如临时目录、快照目录或与文件系统对象相关的用户数据表现不同 的其它文件系统对象。例如,在这种实施例中,在第一文件系统中可以不创建例如临时目录 或快照目录的第二文件系统的目录。

图6示出用于虚拟化初始化的方法的示例性流程图。该方法包括:步骤S1,阻止客 户端100对第二存储设备300的所有用户/客户端访问(在类似于例如图1A的情形下);和步 骤S2,在第二存储设备400与客户端100之间互连第一存储设备300。

此外,用于虚拟化初始化的方法还包括:步骤S3,在由第一文件系统管理单元310 管理的文件系统中创建最高阶目录;和步骤S4,创建(设置)虚拟化路径,该虚拟化路径将步 骤S3中创建的最高阶目录与待虚拟化的由第二文件系统管理单元410管理的一部分文件系 统的最高阶目录建立关联(例如,如图5A至图5C所示的最高阶目录或较低阶目录之一)。

此外,用于虚拟化初始化的方法还包括步骤S5,为了在步骤S3中设置的最高阶目 录而创建目录信息作业。该方法还包括:步骤S6,允许自动后台虚拟化;和另一步骤S7,在直 接允许客户端访问第一存储设备300的步骤S8之前,根据按需虚拟化允许用户访问。应注意 的是,在步骤2之前执行步骤S1、在步骤S3之后执行步骤S4和S5、在步骤S4之后执行步骤S6 和步骤S7、以及在步骤S7之后执行步骤S8的条件下,步骤S1至步骤S7的顺序能够以多种不 同的方式互换。

最重要的是,只要互连第一存储设备(步骤S2)、设置虚拟化路径(步骤S4)以及允 许按需虚拟化(步骤S7),就能够立即允许对文件系统的用户访问(步骤S8)。具体地,当用户 试图访问文件系统中还未被虚拟化的文件系统对象时,通过被允许的按需虚拟化来将相应 文件系统对象(如下更详细地示例性描述)虚拟化,以便于允许经由被虚拟化的文件系统对 象来访问文件系统对象,当用户试图访问已被虚拟化的文件系统对象时,通过相应的被虚 拟化的文件系统对象来访问相应文件系统对象。

因此,在不管自动后台虚拟化(如下更详细地示例性描述)是否已经开始且不管自 动后台虚拟化的状态而已经创建了虚拟化路径且允许按需虚拟化的条件下,在互连第一存 储设备300之后能够立即允许对文件系统的用户访问。也就是说,在用于客户端100与第二 存储设备400之间互连第一存储设备300的单个中断之后,最好能够很快地再次允许客户端 100对文件系统的访问。

在以下描述中,将更详细地描述自动后台虚拟化(在以上步骤S6中所允许的虚拟 化)的示例性方面。自动地执行自动后台虚拟化,并且使得在第一存储设备400上将由第二 存储设备400的第二文件系统管理单元410管理的文件系统的完整文件树结构完全地虚拟 化(即,将以如上图5A至图5C所描述的虚拟化方式完全重建)。

首先,将结合对图4的文件树自动进行的后台虚拟化来描述自动后台虚拟化的原 理示例性方面。能够通过以上图3的抓取单元343和虚拟化单元344来执行自动后台虚拟化。 首先,抓取单元343将执行在上述步骤S5中创建的目录信息作业。具体地,当执行步骤S5时, 根据在步骤S4中设置的虚拟化路径,使得作业队列346A包含由文件系统管理单元310管理 的文件系统中最高阶目录的目录信息作业(例如在图4和图5A的以上示例中的两个相应的/ root目录)。

图7示出在第一文件系统服务器与第二文件系统服务器(具体为第一文件系统管 理单元310和第二文件系统管理单元410)之间的信息交换,用于自动后台虚拟化。

当由抓取单元343执行/root目录的目录信息作业时,第一文件系统管理单元310 向第二文件系统管理单元410发出与图4的文件系统的/root目录(由所设置的虚拟化路径 指示的由第二文件系统管理单元410管理的文件系统的最高阶目录,即,对于图5B和图5C的 虚拟化路径,第一发出的目录信息请求分别直达/dirl和/dir2)相关的/root目录信息的请 求(“请求/root目录”)。

响应/root目录信息的请求,第二文件系统管理单元410通过提供包括关于子目 录/dirl和/dir2以及文件“filel”和“file2”的信息在内的/root目录信息来做出响应。具 体地,响应表明至少目录/dirl和/dir2以及文件“filel”和“file2”存在于由第二文件系统 管理单元410管理的文件系统的/root目录中。

当在第一文件系统管理单元310接收到表明目录/dirl和/dir2以及文件“filel” 和“file2”存在于由第二文件系统管理单元410管理的文件系统的/root目录中的响应时, 抓取单元343更新虚拟化管理信息表341,来登记已经发现目录/dirl和/dir2以及文件 “filel”和“file2”存在于由第二文件系统管理单元410管理的文件系统的/root目录中,并 且需要虚拟化单元344来虚拟化这些目录/dirl和/dir2以及文件“filel”和“file2”。

图8示出在接收到图7的响应之后,在虚拟化过程中的第一时间点的虚拟化管理信 息表的例子。

示例性地,虚拟化管理信息表包括关于已由抓取单元343获取的每个文件系统对 象的各种信息,具体包括客户端100和第二文件系统管理单元410所使用的文件系统对象的 名称、所使用的对象类型(例如,指示文件系统对象是目录还是文件)、对象ID、文件系统对 象的虚拟化状态以及文件系统对象的对象状态。

除了上述之外,虚拟化管理信息表可以存储其它信息,例如相应的文件系统对象 的父目录、相应的文件系统对象的远程路径位置、相应的文件系统对象的一个或多个属性 等。

作为“对象ID”,虚拟化管理信息表优选存储唯一地识别由第二管理文件系统管理 单元410管理的文件系统中的相应文件系统对象的对象ID。这种对象ID可以由以下ID的信 息表示或者包括以下ID的信息,例如文件句柄、索引节点编号、服务器标识符、装置编号等, 并且这种对象ID不依赖于名称和远程路径位置而唯一地识别相应的文件系统对象。因为需 要不依赖名称和路径位置而唯一地识别任何对象(例如,在文件被重命名和/或从一个特定 路径位置移动到另一个路径位置的情形下,对象ID保持不变,而其名称和/或路径位置可能 变化),所以这种对象ID通常存在于由已知文件系统服务器所管理的文件系统中。

在“虚拟化状态”栏中可示出所获取的文件系统对象的虚拟化的当前状态,新获取 的文件系统对象被标记为“需要虚拟化”,以便于表示该文件系统对象需要被虚拟化,即需 要为所获取的目录创建对应的目录,以及需要为所获取的文件创建对应的外部链接对象。

当相应的文件系统对象被虚拟化时,即当已经为所获取的目录创建了对应的目录 并且已经为所获取的文件创建了对应的外部链接对象时,虚拟化管理信息表中的虚拟化状 态被更新为“已被虚拟化”。

在图8中,在以上图6的步骤S3中已经创建了/root目录,并且其虚拟化状态已经被 标记为“已被虚拟化”。另一方面,刚获取了所有其它文件系统对象即目录/dirl和/dir2以 及文件“filel”和“file2”,并且没有对应的已被虚拟的文件对象还存在于由第一文件系统 管理单元310管理的文件系统中,使得对象具有“需要迁移”的虚拟化状态。

在“对象状态”栏中可示出所获取的文件系统对象的当前状态,新获取的文件被标 记为“需要迁移”,这表示没有与相应的文件对应的用户数据(文件内容)存在于第一存储设 备300的存储单元320、330中,并且需要将文件迁移至第一存储设备300(在允许迁移之后), 新发现的目录被标记为“未完成”,这表示并非直接位于相应的目录下的所有文件系统对象 均已被虚拟化。应该注意的是,已获取了存在于基于图4的树结构的/root目录中的所有文 件系统对象(/dirl、/dir2、filel和file2),但是因为这些对象还没有被虚拟化,所以/root 目录仍然被标记为具有“未完成”的对象状态。

当在由第一文件系统管理单元310管理的文件系统的/root目录中创建了目录/ dirl和/dir2并且在由第一文件系统管理单元310管理的文件系统的/root目录中创建了外 部链接对象XLOl和XLO2时,/root目录能够被更新为具有“完成”(见下文)的对象状态。

应该注意的是,除了在接收到图7的响应之后更新如上所述的虚拟化管理信息表 以外,第一文件系统管理单元310的抓取单元343针对能够添加至待虚拟化单元344执行的 虚拟化作业队列346B的每个新获取的文件系统对象,自动地创建虚拟化作业(例如用于/ dirl的虚拟化作业、用于/dir2的虚拟化作业、用于filel的虚拟化作业以及用于file2的虚 拟化作业),并且针对能够添加至待抓取单元343执行的抓取作业队列346A的每个新获取的 子目录,自动地创建目录信息作业(例如,用于/dirl的目录信息作业以及用于/dir2的目录 信息作业)。

因此,由于能够由虚拟化单元344来执行现有虚拟化作业,同时能够由抓取单元 343并行执行其它目录信息作业来获取新的文件系统对象且针对这些新获取的对象创建新 的虚拟化作业和/或目录信息作业,所以能够以高效率的方式并行执行对已获取的文件系 统对象的虚拟化和获取新的文件系统对象。

图9示出部分被虚拟化的文件系统树结构的例子。具体地,当通过执行由抓取单元 343创建的所有四个虚拟化作业,在由第一文件系统管理单元310管理的文件系统的/root 目录中创建了目录/dirl和/dir2并且在由第一文件系统管理单元310管理的文件系统的/ root目录中创建了外部链接对象XLOl和XLO2时,由第一文件系统管理单元310管理的文件 系统的树结构将如图9所示。因为根据图9可知,直接存在于作为父目录的/root目录下的每 个文件系统对象/dirl、/dir2、filel和file2已被虚拟化,所以/root目录的对象状态能够 被更新为“完成”,如图10所示。

在以上示例中,存在于作为父目录的/root目录下的文件系统对象的数量是相当 少的,并且,原则上,必须假设有大量的文件系统对象可以存在于某个父目录下,例如,在一 些文件系统中,数百万的文件和子目录可以存在于某个父目录下。在用于接收目录信息的 典型文件系统通信协议、标准请求(例如,在基于NFS文件系统通信协议中的READDIR或 READDIRPLUS)中,在响应中返回的条目数被限制为最大数目,以使得在发出单个目录信息 请求之后并非获知所有的条目。在这种情况下,抓取单元343可以向文件系统的相同父目录 反复地发出目录信息请求,直到返回其所有的文件系统对象(包括文件和子目录的子条目) 为止。

优选地,在上述段落说明的这种情况下,在发出与相同父目录相关的下一个目录 信息请求之前,在每次响应之后,抓取单元343还可以更新虚拟化管理信息表,和/或在发出 与相同父目录相关的下一个目录信息请求之前,在每次响应之后,抓取单元343可以针对每 个至今为止已获取的子目录创建目录信息作业和/或针对至今为止在相应的父目录中获取 的所有文件系统对象创建虚拟化作业。

此外,为了在抓取过程的不期望的中断之后能够在正确的抓取开始位置重新开始 抓取单元343的目录抓取,当接收到每个响应时,抓取单元343优选还更新相应的父目录的 对象状态,以便于将表示条目位置的信息添加至所读取的相应的父目录(其可以对应于最 后一个响应所提供的位置指示数据项目,例如位置指示缓存(cookie))。

图11示出在第一文件系统管理单元310与第二文件系统管理单元410之间的信息 交换,用于自动后台虚拟化。具体地,如上所述,假设当接收到图7的响应并且当更新如图8 所示的虚拟化管理信息表时,抓取单元343已针对每个子目录/dirl和/dir2创建了相应目 录信息作业。接着,当返回至目录信息作业队列346A中的下一个作业时,抓取单元343能够 得到目录/dirl的目录信息作业,然后发出针对关于/dirl目录的目录信息的请求。

具体地,当通过抓取单元343针对/dirl目录执行目录信息作业时,第一文件系统 管理单元310发出针对与由第二文件系统管理单元410管理的图4的文件系统的/dirl目录 相关的/dirl目录信息请求(“请求/dirl信息”)。响应针对/dirl目录信息的请求,第二文件 系统管理单元410通过提供/dirl目录信息(包括关于子目录/dirll和/dirl2的信息)来做 出响应。这个响应可以表示至少目录/dirll和/dirl2存在于由第二文件系统管理单元410 管理的文件系统的/dirl目录中。

当在第一文件系统管理单元310接收到表明目录/dirl和/dir2存在于由第二文件 系统管理单元410管理的文件系统的/dirl目录中的响应时,抓取单元343更新虚拟化管理 信息表341来登记已经发现目录/dirl和/dir2存在于由第二文件系统管理单元410管理的 文件系统的/dirl目录中,并且需要虚拟化单元344来虚拟化这些目录/dirl和/dir2,请参 见如图12所示的已对应地更新了的虚拟化管理信息表。

如图12所示,将并非所有子条目都已被发现和被虚拟化的所有目录标记为具有 “未完成”的对象状态,并且将所有的未被虚拟化的文件系统对象称为具有“需要虚拟化”的 虚拟化状态。因此,在虚拟化过程的中断的情况下,能够在方便的开始点可靠且有效地开始 文件系统虚拟化,并且不需要完全重置,即使在作业队列中的所有或至少一些现有作业可 能丢失这种最坏的情形下,在不被期望的中断之后,通过针对在虚拟化管理信息表341中被 指示为“需要虚拟化”的每个文件系统对象来创建虚拟化作业并且针对在虚拟化管理信息 表341中被指示为“未完成”的每个目录来创建目录信息作业,使得虚拟化程序易于继续进 行。

如图12示例性地所示,虚拟化管理信息表341能够存储在具有预定数目的文件系 统对象条目的块341a和341b(也能被称为区块)中。在图12的示例中,在每个块341a和341b 中只有5个条目行,但是应该注意的是,这仅是为了便于说明,实际在实施时每块的条目数 可以大得多。

然而,在块(区块)中存储虚拟化管理信息具有如下优点,即单独的方块能够被方 便地从存储器314(其可以存储虚拟化管理信息表341的数据内容,用于抓取单元343、虚拟 化单元344和迁移器件345的不间断的虚拟化过程和更新的目的)写入存储装置315,以用于 虚拟化管理信息备份单元342备份的目的。

具体地,虚拟化管理信息备份单元342仅需要暂时阻止当前待被备份复制到存储 单元315的一个块,而虚拟化管理信息表341的所有其它块均被抓取单元343、虚拟化单元 344和迁移器件345读访问和写访问,因此,能够更有效地执行备份而不显著地影响抓取单 元343、虚拟化单元344和迁移器件345不间断的抓取和虚拟化或迁移过程。

如下将更详细地描述关于备份过程的优选方面,用于在备份块341a和341b中备份 虚拟化管理信息表341。

除了上述之外,当接收到图11的响应时,抓取单元343将为待添加至队列346A的每 个目录/dirll和/dirl2创建目录信息作业并且为待添加至队列346B的每个目录/dirll和/ dirl2创建虚拟化作业。当虚拟化单元344执行用于目录/dirll和/dirl2的虚拟化作业时, 在与由第二文件系统管理单元410管理的系统文件中的各自的远程路径相对应的类似本地 路径下,目录/dirll和/dirl2直接存在于由第一文件系统管理单元310管理的文件系统中 的相应父目录/dirl下。

图13示出各自部分被虚拟化的文件系统树结构的示例,其中已创建了父目录/ dirl的子目录/dirll和/dirl2l来用于虚拟化。

完整的和可靠的自动后台虚拟化通过根据包括如下处理的上述方面而处于继续 的状态,从而可以有效且可靠地实现,如下处理包括:直到在第一文件系统管理单元310管 理的文件系统中真正完全重建了由第二文件系统管理单元410管理的文件系统的完整树结 构为止,并行循环执行由抓取单元343执行目录信息作业、由抓取单元343更新虚拟化管理 信息表341、由抓取单元343创建新的目录信息作业和虚拟化作业、以及由虚拟化单元344执 行虚拟化作业等。

也就是说,当在第一文件系统管理单元310管理的文件系统中存针对在第二文件 系统管理单元410管理的文件系统的每个目录的对应的目录时,并且当在第一文件系统管 理单元310管理的文件系统中存在针对第二文件系统管理单元410管理的文件系统的每个 文件(或类似对象,例如硬链接文件)的对应的外部链接对象时,在由第一文件系统管理单 元310管理的文件系统中真正完全重建了由第二文件系统管理单元410管理的文件系统的 完整树结构。

参照图4所示的文件树结构的具体示例进行了如上描述,但将结合以下流程图给 出虚拟化过程的更一般方面。

图14示出可以由抓取单元343执行的自动后台虚拟化管理的示例性流程图。

图14的自动后台虚拟化管理方法包括确认作业队列中的下一个作业的步骤 S1001。具体地,在如图3示例性示出地提供多个作业队列的情形下,抓取单元343可以在作 业队列346A中搜索下一个目录信息作业。在下一个步骤S1002中,抓取单元343可以针对存 在于由第二文件系统管理单元410管理的文件系统中的某个之前被发现的目录,观察新的 目录信息作业(或者在例如在虚拟化阶段开始时未发现子目录的情形下,抓取单元343至少 观察在以上图6的步骤S5中创建的目录信息作业)。

在步骤S1003中,抓取单元343针对在步骤S1002中得到的目录信息作业的目标目 录来确认虚拟化管理信息表341。具体地,当目标目录已存在于虚拟化管理信息表341中时, 抓取单元343确认虚拟化管理信息表341中目标目录的对象状态,以确认目标目录是被指示 为完成还是未完成。

如果目标目录存在于虚拟化管理信息表341中并且已被指示为完成(即所有的子 条目都已经被虚拟化),即当步骤S1004返回否时,抓取单元343在步骤S1005中针对下一个 作业确认作业队列。

另一方面,如果目标目录尚未完成(或者尚未存于虚拟管理信息表341中),即当步 骤S1004返回是时,抓取单元343在下一个步骤S1006中请求目标目录的目录信息,即,向第 二存储设备400的第二文件系统管理单元410发出关于目标目录的一个或多个目录信息请 求。

在步骤S1007中,接收来自第二存储设备400的第二文件系统管理单元410的对应 的一个或多个响应,该响应提供指示目标目录的全部或至少一些子条目的目录信息。

在下一个步骤S1008中,抓取单元343更新虚拟化管理信息表341,并且将接收到的 目标目录的目录信息写入虚拟化管理信息表341。具体地,针对在步骤S1007中接收到的信 息中包含的每个子条目(例如,表示文件存在于目标目录的条目或者表示子目录存在于目 标目录的条目),以上述的根据文件系统对象的类型来表示对象状态和虚拟化状态的方式 向虚拟化管理信息表341添加对应的条目,即每个文件系统的虚拟化状态为“需要虚拟化”、 以及已被发现的子目录的对象状态为“完成”、或者已被发现的文件或例如硬链接文件的类 似对象指示的对象状态为“需要迁移”。

此外,抓取单元343在步骤S1009中针对每个新被发现的子对象创建相应的虚拟化 作业,并且还在步骤S1010中针对每个新发现的子目录创建相应的目录信息作业,并且将新 创建的作业添加至相应作业队列或相应的多个作业队列。

如果在步骤S1007中观察到最后的子对象即观察到目标目录的所有子对象(步骤 S1011返回是),则抓取单元343继续作业队列中的下一个作业(步骤S1005),否则重复循环 步骤S1006至S1010,直到观察到目标目录的所有子对象。当步骤S1011返回否时,替代步骤 S1006至S1010的循环,抓取单元343还可以仅针对相同的目标目录创建新的目录信息作业, 然后继续执行步骤S1005,允许执行作业的进一步并行化。

如上所述,若抓取单元343之前已经接收到各目标目录的一些子条目的目录信息, 例如关于相同目标目录的之前作业的目录信息,或者在步骤S1011返回否(例如,根据所使 用的文件系统通信协议对返回的子条目的数目的限制)之后重复循环步骤S1006至S1010, 则抓取单元343还可以在步骤S1008中在请求虚拟化管理信息表341中重复更新用于请求目 标目录的目录信息的起始位置(例如,基于在步骤S1007的响应中所指示的位置或者通过使 用例如缓存),允许通过使用步骤S1006的请求中的起始位置来请求下一个尚未被发现的子 条目的目录信息。

由于在步骤S1010中创建了新的目录信息作业,连续执行自动后台虚拟化,直到所 有的目录信息作业被执行并且不存在其它目录信息作业,表明已经观察到文件系统的所有 目录并且已经发现所有的子条目(文件和其它子目录),使得针对每个已被发现的文件系统 对象存在(或已经被执行)如步骤S1009中所创建的相应的虚拟化作业。

与上述过程并行地,如下进一步说明的那样,虚拟化单元344自动执行由抓取单元 343所创建的虚拟化作业。然而,针对非常大的目录,抓取单元343在步骤S1006至S1010的循 环中创建非常多的虚拟化作业,特别是针对所有的各个子对象重复执行步骤S1009。因此, 期望抓取单元343的抓取速度是可变的,并能够根据条件自动(和/或手动地)降低。

例如,当检测到一旦一个或多个作业队列被占据,则用于暂时存储作业的数据缓 冲单元347自身被占据(例如,当保存在数据缓冲单元347中的作业数目超过阈值时,当数据 缓冲单元347中的可用存储空间下降到低于阈值时,或者当可用缓冲存储空间与缓冲容量 的比值超过阈值时等等)时,抓取单元343的处理速度会下降,直到数据缓冲单元347变得被 占用较少(例如,当保存在数据缓冲单元347中的作业数目下降至低于另一个阈值时,当数 据缓冲单元347中的可用存储空间超过另一个阈值时,或者当可用缓冲存储空间与缓冲容 量的比值下降至低于另一个阈值时等等)为止抓取单元343甚至可以被停止。

此外,当通过具有多个并行光纤信道的光纤信道连接来实现存储设备300与存储 设备400之间的通信时,期望基于可用的光纤信道来控制抓取单元343的处理速度,这是因 为增大可用的光纤信道能增大抓取单元343的处理速度并且减小可用的光纤信道能减小抓 取单元343的处理速度(由于实际用户访问和按需虚拟化而允许更有效的通信连接,并且允 许与虚拟化作业和/或迁移作业相关的更有效的通信连接)。另外,为了允许高效的用户访 问,在光纤信道可用率下降至低于阈值的情形下可以暂停抓取单元343的处理,以避免由于 有限的光纤信道可用率造成用户访问通信的延迟。

图15示出由虚拟化单元344执行的自动后台虚拟化的示例性流程图。在第一个步 骤S1101中,虚拟化单元344确认作业队列中的下一个作业,并且在步骤S1102中得到某个文 件系统对象的虚拟化作业。如果相应的虚拟作业的目标文件系统对象是目录(步骤S1103返 回目录),则该方法继续执行步骤S1104,如果相应的虚拟作业的目标文件系统对象是文件 (步骤S1103返回文件),则该方法继续执行步骤S1112。

针对由待虚拟化的第二文件系统管理单元410管理的文件系统的目录,虚拟化单 元344在父目录内的本地路径位置中在第一文件系统管理单元310管理的文件系统中创建 新的目录,其中该父目录对应于在第二文件系统管理单元410管理的文件系统内待虚拟化 的目录的相应的父目录。

新创建的目录具有与待虚拟化的目录相同的名称,以便于向客户端100呈现相同 的文件树结构。在虚拟化阶段不创建虚拟目录而是创建真实目录具有以下优点,即能够在 具有相同路径树结构的第一存储设备300的文件系统中而不是在待虚拟化的第二存储设备 400的文件系统中创建目录对应目录,并且第一存储设备300中的文件系统的所有外部链接 对象能够存储在正确的目录树结构中,使得在虚拟化之后两个文件系统将具有相同的树结 构。另外,创建目录允许附加存储与已被创建的目录相关的目录元数据和文件元数据。

当在步骤S1104中创建目录时(或者预先在步骤S1006和S1007中创建),将待虚拟 化的目录的所有目录属性从第二存储设备400转移至第一存储设备300,并且与新创建的目 录相关联地存储在由第一文件系统管理单元310管理的文件系统中。这具有以下优点,即能 够由第一文件系统管理单元在本地处理针对各目录的属性的用户请求,而无需与第二存储 设备400通信。

根据本发明的一些方面,期望能够在虚拟化之后甚至在虚拟化过程中,在本地返 回询问各目录的链接数的用户请求。原则上,典型的文件系统中任意目录的真实底层链接 数被计算为N+2,其中,N是特定目录的子目录的总数。其原因是,特定目录的父目录当然包 括到特定目录的链接并且特定目录本身包括表示到特定目录的自参考链接的子条目(有时 被称为单点链接或/.),并且特定目录的每个子目录包括到各自的父目录的链接(有时称为 双点链接或/..)。

然而,在虚拟化阶段,当在第一文件系统管理单元310管理的第一文件系统中创建 特定目录时,抓取单元343可能不会完全发现在第二文件系统管理单元410管理的文件系统 中的对应的子目录,或者,若发现了也可能尚未被虚拟化,使得无对应的子目录或至少不是 所有对应的子目录均存在于第一文件系统管理单元310管理的文件系统中。

为了能够在第一存储设备300本地可靠地、高效地和正确地处理关于被虚拟化目 录的链接数的属性请求,当在步骤S1104中在虚拟化过程中创建目录时,该方法继续执行如 下步骤(以任何可能的顺序):在各目录中创建自参考链接的可选步骤S1105,计算假链接数 的S1106,写入目录元数据的S1107,创建父目录链接的S1108,以及将父目录的元数据中的 假链接数减1的S1109。

因此,当在步骤S1104中在各父目录中创建特定目录时,通过目录创建自动创建到 特定目录的链接来取代到父目录的链接,并且在步骤S1105中创建自参考链接(例如,单点 链接或/.),得到真实链接数2(因为尚未创建具有父目录链接/..的子目录),而由第二文件 系统管理单元410管理的文件系统中对应的目录的底层实际链接数是N+2,N是特定目录的 子目录数。

因此,在步骤S1106中,基于例如通过从第二文件系统管理单元410请求特定目录 的真实链接数并且减去2而得到的第二文件系统管理单元410管理的文件系统中特定目录 的子目录数N,来计算假链接数,在步骤S1007中将其写入目录元数据。然后,当用户请求特 定目录的链接数时,第一文件系统管理单元310仅通过添加由第一文件系统管理单元310管 理的文件系统上观察到的真实链接数和存储在目录元数据中的假链接数并且返回真实链 接数和假链接数的和,就能够在本地有效地处理该请求,而无需请求与第二存储设备400的 通信。

对于上述过程,每当子目录因自身虚拟化的目的而被创建时,都需要更新存储在 已被虚拟化的目录的元数据中的假链接数。即,在图15的方法中,目录的虚拟化还包括在特 定目录中创建父目录链接的步骤S1108(即,双点链路或/..)以及将存储在父目录的元数据 中的假链接数减1的S1109。

例如,在以上图9中,在已被虚拟化的文件系统树结构中已经创建了目录/dir,并 且其真实链接数是2(用于/dirl中的自参引链接和/root目录中的/dirl链接),但需要被返 回给用户询问目录/dirl的链接数的实际链接数是4,因为图4的目录/dir额外具有两个链 接,即,来自每个子目录/dirll和/dirl2的一个附加父目录/..。因此,在图9中,目录/dirl 的假链接数被计算为2。若因执行目录/dirll的虚拟化作业而创建创建目录/dirll和其中 的父目录链接/..,则真实链接数是3,因此,假链接数被减小一个,为1。真实链接数和假链 接数之和仍为4,并且返回图4中目录/dirl的正确的真实链接数。

若特定目录的所有子目录都已被虚拟化,则特定目录的假链接数变为0,并且若不 存在其它虚拟化作业的目录或者被指示为具有对象状态为“完成”的目录的假链接数仍然 大于零,则这种情形表明并非所有的子目录都被发现,能够再次针对特定目录创建目录信 息作业,以便于确保已被虚拟化目录的完整性。

反之,通过下述也能够检测目录是否是完整的,即,确认步骤S1104中创建的特定 目录的父目录的假链接数是否变为0,若步骤S1110返回是,则父目录被示为“未完成”,更新 虚拟化管理信息表341,即将父目录的对象状态更新为“完成”。此后(或在步骤S1110返回否 之后立即),在步骤S1114中将特定目录的虚拟化状态更新为“已被虚拟化”,并使虚拟化单 元344针对下一个作业确认作业队列(步骤S1115,对应于步骤S1101)。

另一方面,当步骤S1103返回“文件”时,当S1102中待根据虚拟化作业来虚拟化的 对象是某个文件时,在于文件的远程路径对应的本地路径位置中,即,在与存在该文件的由 第二文件系统管理单元410管理的文件系统的目录对应的已被虚拟化目录中,虚拟化单元 344创建被称为XLO的相应的外部链接对象来表示该文件,并且允许对由第二文件系统管理 单元410管理的文件系统的某个文件的访问。

另一方面,代替如上所述的图14的步骤S1112和步骤S1113,为了文件虚拟化而优 选实施如下参照图16示例性地描述的更详细的方法,以便于能够更有效地处理硬链接文件 (也被称为硬链接)。应该注意的是,“硬链接”指与相同的实际用户数据相关联的一组文件。

也就是说,虽然从用户的观点来看,多组硬链接的每个硬链接具有独立文件,硬链 接可能具有不同的名称和/或不同的路径位置,但是到相同的实际用户的每个硬链接点都 存储在存储单元410上。并且,若要修改用户数据,例如将数据写入一个硬链接文件,则针对 所有硬链接修改底层数据,并且若一个或多个硬链接要被重命名和/或移动到不同的路径 位置,则其它硬链接不会识别硬链接的这种移动或重命名(这与所谓的软链接不同)。

当抓取单元343发现表示指向相同文件数据内容的一组硬链接的一个硬链接的文 件时,抓取单元343仍然无法易于发现该组硬链接的其它硬链接,但是抓取单元343或虚拟 化单元344能够通过读取已被发现的硬链接的元数据中文件属性的链接数来确定硬链接的 总数。与关于目录的链接数的情形类似,期望当仅虚拟化了链接数中的一个时,第一文件系 统管理单元310就能够返回硬链接的链接数,并且期望有效地处理硬链接的虚拟化。

图16示出自动后台迁移的另一个示例性流程图,用于更有效和可靠地处理硬链接 文件(硬链接)。步骤S1101、S1102、S1112、S1113、S1114和S1115与如上所述的图15中具有相 同附图标记的步骤类似。

在步骤S1120中,若得到某个文件的虚拟化作业,则确定该文件的链接数N(例如, 通过请求第二文件系统管理单元410的相应文件的链接数信息,或者通过在图14的步骤 S1007中接收针对响应的表示文件链接数的元数据),并且确认链接数是否大于1(步骤 S1121)。当步骤S1121返回否时,则该方法继续执行类似于图15的文件虚拟化(即步骤 S1112、S1113、S1114和S1115/S1101)。

然而,当待虚拟化的特定文件的链接数N大于1(即当存在至少一个其它硬链接)即 步骤S1121返回是时,确定该文件的对象ID(步骤S1122),并且为了确认与该硬链接/文件的 对象ID相关的子目录是否存在,而确认之前在由第一文件系统管理单元310管理的文件系 统中已经创建了的隐含索引目录(步骤S1123)。

如下将变得显而易见,存在与隐含索引目录中硬链接/文件的对象ID相关联的子 目录则表明抓取单元343之前已经发现了相同组硬链接的其它硬链接(具有相同的对象ID 但是不同的名称和/或远程路径位置)。另一方面,若隐含索引目录中不存在这种相关子目 录,则这表示之前没有发现相同组硬链接的其它硬链接。

因此,若在隐含索引目录中不存在相关的子目录,表明之前没有发现相同组硬链 接的其它硬链接,则在步骤S1125中在隐含索引目录中创建与已发现的硬链接(即,特定文 件的)的对象ID相关联的索引子目录,在步骤S1126中,在所创建的相关索引子目录内,创建 N-1个硬链接,并且在步骤S1112中将在与待虚拟化的文件/硬链接对应的远程路径位置的 本地路径位置中创建的外部链接对象创建为在步骤S1126中创建的硬链接组的另一个硬链 接。因此,在步骤S1112中创建的外部链接对象的实际链接数是N-1+1=N,符合待虚拟化的 文件/硬链接的底层实际链接数N。

另一方面,若在步骤S1124中确定为在隐含索引目录中存在与待虚拟化的文件/硬 链接的对象ID相关的索引子目录(步骤S1124返回是),则在步骤S1127中移除存在于相关索 引子目录中的硬链接中的一个,并且在步骤S1112中在与待虚拟化的文件/硬链接对应的远 程路径位置的本地路径位置中创建对应的硬链接的外部链接对象,将硬链接的外部链接对 象创建为相关的索引子目录的硬链接组的另一个硬链接。

通过步骤S1127和S1112,使得在第一存储设备300的文件系统中,底层真实的总链 接数保持不变,即,不管是否发现了所有其它硬链接,第二存储系统400中的对应硬链接组 的硬链接数均为N。

代替分别地执行步骤S1127和S1112,通过仅提供与存储在相关索引子目录中的一 个硬链接相关的重命名操作的一个单一步骤,可以更有效地实现类似效果(重命名操作包 括改变一个硬链接的名称和/或根据步骤S1102的作业将硬链接从索引子目录移动到待虚 拟化的本地目标路径位置)。

最后,若在步骤S1127之后或者在如上说明的重命名操作之后,在索引子目录中没 有其它硬链接(步骤S1128返回否),则在步骤S1129中可以移除(例如,删除)相关的索引子 目录。

图17A示出文件(或硬链接文件)的外部链接对象1100的示例性示意数据结构。外 部链接对象1100示例性地包括具有关于与由第二文件系统管理单元410管理的外部文件系 统有关的文件的元数据的第一信息部分1110,该第一信息部分1110包括在外部文件系统中 使用的名称、外部文件系统中文件的远程路径位置、外部文件系统中使用的远程对象ID、外 部文件系统中使用的远程索引节点编号、外部远程系统的远程文件系统ID(例如,在第二文 件系统管理单元410处理多个文件系统的情况下)、以及表示存储有文件数据内容的存储单 元420的装置的远程装置ID。

当用户尝试通过参考了外部文件系统中使用的名称和远程路径位置和/或远程对 象ID的访问请求来访问文件时,通过参照名称和远程路径位置和/或远程对象ID,外部链接 对象允许访问外部文件系统中的文件。

外部链接对象1100示例性地还包括具有关于由第一文件系统管理单元310管理的 内部(本地)文件系统的文件的元数据的第二信息部分1120,该第二信息部分1120包括在本 地文件系统中使用的名称、内部文件系统中外部文件对象的本地路径位置、内部文件系统 中使用的本地对象ID、内部文件系统中使用的本地索引节点编号、内部文件系统的本地文 件系统ID(例如,在第一文件系统管理单元310处理多个文件系统的情况下)、以及表示存储 有文件数据内容或为了后续的数据迁移而分配有数据块的存储单元320的装置的本地装置 ID。

此外,第二信息部分1120可以表明与存储在存储单元420中的文件内容数据的尺 寸对应的对象存储长度(即当文件的对象存储长度与外部文件系统中文件的长度对应时, 这意味着实际文件内容的全部数据已被全部迁移)。在开始迁移之前,因为没有转移实际的 文件内容数据,所以在虚拟化过程中对象存储长度仍是零。

外部链接对象1100示例性地还包括具有关于文件属性的元数据的第三信息部分 1130,该第三信息部分1130包括当前时间戳(表示最后修改访问文件的时间)、文件的链接 数、文件的长度(在外部文件系统中)、以及其它文件属性。因为文件属性与外部链接对象一 起存储在第三信息部分1130中,所以若创建了外部链接对象,即若将文件虚拟化,则第一文 件系统管理单元310就能够在本地方便且有效地处理用户经由客户端100发送的属性请求。

图17B示出已被虚拟化的目录的元数据的示例性的示意数据结构1200。目录元数 据1200示例性地包括具有关于外部文件系统的目录的元数据的第一信息部分1210,该第一 信息部分1210包括在外部文件系统中使用的名称、外部文件系统中目录的远程路径位置、 外部文件系统中使用的远程对象ID、外部文件系统中使用的远程索引节点编号、外部远程 系统的远程文件系统ID(例如,在第二文件系统管理单元410处理多个文件系统的情况下)、 以及表示存储有目录的存储单元420的装置的远程装置ID。

目录元数据1200示例性地还包括具有关于由第一文件系统管理单元310管理的内 部(本地)文件系统的目录的元数据的第二信息部分1120,该第二信息部分1120包括在本地 文件系统中使用的名称、内部文件系统中目录的本地路径位置、内部文件系统中使用的本 地对象ID、内部文件系统中使用的本地索引节点编号、内部文件系统的本地文件系统ID(例 如,在第一文件系统管理单元310处理多个文件系统的情况下)、以及表示存储有目录的存 储单元320的装置的本地装置ID。

目录元数据1200示例性地还包括具有关于目录属性的元数据的第三信息部分 1230,该第三信息部分1230包括当前时间戳(表示最后修改访问目录的时间)、目录的真实 链接数、目录的假链接数、以及目录属性。因为目录属性与目录元数据一起存储在第三信息 部分1130中,所以若创建了目录和其元数据,即若将目录虚拟化,则第一文件系统管理单元 310就能够在本地方便且有效地处理用户经由客户端100发送的属性请求。

关于自动后台虚拟化进行了上述说明,但本发明的其它优选方面能够涉及如下说 明的自动按需虚拟化,其可通过从客户端100接收针对某个文件系统对象的访问请求来触 发。

图18示出在第一文件系统管理单元310与第二文件系统管理单元320之间交换信 息的描述,用于按需虚拟化。例如,当在根据图13的虚拟化情形下,从客户端100接收到针对 file8的请求时,file8和对应的被虚拟化的外部链接对象XLO8都不存在于目录/dir21中并 且/dir21也不存在。因此,当接收到对file8的访问请求时,尚未通过自动后台虚拟化将该 file8虚拟化,第一文件系统管理单元310将阻止客户端100访问file8,并且发出用于查找 用户所指示的远程路径的请求(例如,/root/dir2/dir21/file8)。

因为之前在自动后台虚拟化过程中已经发现和虚拟化了/dir2,所以第一文件系 统管理单元310将随后向第二个文件系统管理单元410发出请求以便于查找(例如,在基于 NFS文件系统通信协议中的LOOKUP请求)目标文件“file8”的远程路径中的所有剩余未知文 件系统对象,即它将发出关于/dir2中的目录/dir21和/dir21中的file8的查找请求并且等 待各个响应。然后,若根据来自第二文件系统管理单元410的响应而确认存在/dir21和 file8,则第一文件系统管理单元310执行用户触发的/dir21和file8的/按需虚拟化,即,在 之前被虚拟化的/dir2中本地创建/dir21并且在新创建的/dir21中本地创建外部链接对象 XLO8。此后,在将/dir2和/dir21中所有其它剩余的文件系统对象虚拟化之前,通过新创建 的外部链接对象XLO8立即允许用户对file8的访问。

图19示出在根据图18的按需虚拟化之后,部分被虚拟化的文件系统树结构的例 子。因此,目录/dir21和外部文件系统对象XLO8存在于由第一文件系统管理单元310本地管 理的文件系统中。

图20示出用于在虚拟化过程中允许访问用户文件的方法的示例性流程图(若目标 文件还没有被虚拟化,则包括按需虚拟化)。

当在步骤S2001中经由客户端100从用户接收到针对文件系统中特定目标文件的 访问请求时,第一文件系统管理单元310确认虚拟化管理信息表341,以确认目标文件是否 已经被虚拟化(步骤S2002)。如果步骤S2002返回是,则通过对应于目标文件的外部链接对 象来立即允许用户对文件系统中目标文件的访问(步骤S2008)。

另一方面,若目标文件还没有被虚拟化(步骤S2002返回否),则第一文件系统管理 单元310将在由步骤S2001中接收到的访问请求所指示的目标文件的远程路径中查找目标 文件。若第二文件系统管理单元410未确认到存在目标文件(或者远程路径的任何目录)(例 如,当用户提供了不正确的远程路径时),步骤S2004返回否,则向发送该访问请求的客户端 100返回I/O错误。

若响应步骤S2003的查找请求,第二文件系统管理单元410确认出存在目标文件 (步骤S2004返回是),则在步骤S2006中第一文件系统管理单元310将针对远程路径的每个 未虚拟化对象(即,针对远程路径中的所有未虚拟化目录和目标文件)创建虚拟化作业。在 其它优选方面中,第一文件系统管理单元310可以针对远程路径的每个未被虚拟化目录额 外创建目录信息作业。并且上述作业可以以点对点(ad-hoc)的方式添加至用于如上所述的 自动后台虚拟化的相同作业队列中。

一旦将远程路径的所有之前未被虚拟化的对象(包括目标文件)虚拟化(步骤 S2007返回是),则通过对应于目标文件的外部链接对象来允许对文件系统中目标文件的用 户访问(步骤S2008)。

图21示出用于在虚拟化过程中允许访问属性的方法的示例性流程图(若目标对象 还没有被虚拟化,则包括按需虚拟化)。

当在步骤S2101中经由客户端100从用户接收到针对文件系统中特定文件系统的 属性信息请求时,第一文件系统管理单元310确认虚拟化管理信息表341,以确认目标对象 是否已经被虚拟化(步骤S2102)。若步骤S2102返回是,则基于存储在外部链接对象中的属 性信息或目录元数据来本地处理请求且返回所请求的属性信息(步骤S2108)。

另一方面,若目标对象还没有被虚拟化(步骤S2102返回否),则第一文件系统管理 单元310将在由步骤S2101中接收到的属性信息请求所指示的目标对象的远程路径中查找 目标对象。如果第二文件系统管理单元410未确认出存在目标对象(或者远程路径的任何目 录)(例如,当用户提供了不正确的远程路径时),步骤S2104返回否,则向发送该请求的客户 端100返回错误。

若响应步骤S2103的查找请求,第二文件系统管理单元410确认出存在目标对象 (步骤S2104返回是),则在步骤S2106中第一文件系统管理单元310针对远程路径的每个未 虚拟化对象创建虚拟化作业。在其它优选方面中,第一文件系统管理单元310可以针对远程 路径的每个未虚拟化对象额外创建目录信息作业。并且上述作业可以以点对点的方式添加 至用于如上所述的自动后台虚拟化的相同作业队列中。

一旦将远程路径的所有之前未被虚拟化的对象(包括目标文件)虚拟化(步骤 S2107返回是),则基于存储在外部链接对象中的属性信息或目录元数据来本地处理请求且 返回所请求的属性信息(步骤S2108)。

图22A示出用于在虚拟化过程中允许访问用户目录的方法的示例性流程图(如果 目标目录还没有被虚拟化,则包括按需虚拟化)。

当在步骤S2201中经由客户端100从用户接收到针对文件系统中特定目标目录的 访问请求时,第一文件系统管理单元310确认虚拟化管理信息表341,以确认目标目录是否 已经被虚拟化(步骤S2202)。若步骤S2202返回是,则该方法根据这个示例性方面(在下面描 述)而继续执行步骤S2229。

另一方面,若目标文件还没有被虚拟化(步骤S2202返回否),则第一文件系统管理 单元310将在由步骤S2201中接收到的访问请求所指示的目标目录的远程路径中查找目标 目录。若第二文件系统管理单元410未确认出存在目标目录(或者远程路径的任何目录)(例 如,当用户提供了不正确的远程路径时)并且步骤S2204返回否,则向发送该访问请求的客 户端100返回I/O错误。

若响应步骤S2203的查找请求,第二文件系统管理单元410确认出存在目标目录 (步骤S2204返回是),则在步骤S2206中第一文件系统管理单元310将针对远程路径的每个 未虚拟化对象(即,针对远程路径中的所有未虚拟化目录)创建虚拟化作业。根据该示例性 方面,该方法继续执行针对目标目录的每个子对象额外创建虚拟化作业的步骤S2207(包括 目标目录的所有子目录和包含在目标目录中的所有文件)。

在其它优选方面中,第一文件系统管理单元310可以针对远程路径的每个未虚拟 化目录额外创建目录信息作业和/或针对目标目录的每个子目录额外创建目录信息作业。 并且上述作业可以以点对点的方式添加至用于如上所述的自动后台虚拟化的相同作业队 列中。

一旦将远程路径的所有之前未被虚拟化的对象(包括目标目录)虚拟化(步骤 S2208返回是),并且目标目录的所有子目录均已被虚拟化(步骤S2209返回是),则该方法执 行步骤S2210来将目标目录的对象状态更新为“完成”。之后,在步骤S2211中允许客户端对 目标目录的访问。

然而,若步骤S2209返回否(例如,当尚未执行完在步骤S2207中创建的所有作业 时,或者在该方法从步骤S2202跳到S2209的情形下),为谨慎起见,该方法等待或者甚至返 回至步骤S2207。另一方面,当步骤S2202返回是时,因为之前在步骤S2209中已经创建了虚 拟化作业,或者根据自动后台迁移的步骤S1009已经将目标目录虚拟化,所以若步骤S2209 返回否,则该方法只是等待。

以上所述,虽然在允许用户访问目标目录之前期望已将目标目录的所有子目录虚 拟化(因为能够方便地在本地处理来自用户的所有查找和目录信息请求),但是对于具有大 量子条目的目标目录,这种方法可能会导致不期望的延迟。

为了避免具有大量子条目的目标目录的这种不利延迟,可以提供另一个可替代的 方法,其中在允许用户访问目标目录之前,没有必要虚拟化目标目录的子目录。

因此,图22B示出用于在虚拟化过程中允许用户目录访问的方法的可替代示例性 流程图。步骤S2201、S2202、S2203、S2204、S2205、S2206、S2207、S2208和S2211与图22A中所 述的相同,然而,将步骤S2209和S2210省略。

因此,即使对于具有大量子条目(例如,数百万个条目)的目标目录,由于当虚拟化 目标目录时就立即虚拟化大量的子条目,所以能够允许用户对目标目录的访问而无不期望 的延迟。由于步骤S2207,仍然进行子条目的后台迁移。

对于从用户发出的目录信息请求,需要确定该请求是否能够在本地处理或者需要 被传递到第二存储设备300。例如,当所用的文件系统通信协议将响应于目录信息请求而返 回的子条目数的最大数限制为M,从而响应于目录信息请求,通常返回M个子条目的列表,并 且该请求不表明任何开始位置时,需要通过第一M个子条目的列表来响应该请求,并且若已 经将至少第一M条子对象虚拟化,则能够在本地处理。

若已经虚拟化了目标目录的比M少的子对象,则必须将该请求传递给第二文件系 统管理单元410,并且将第二文件系统管理单元410的响应返回到请求客户端100。类似地, 当目录信息请求表明开始位置时(例如,指示被返回的条目列表应该开始于第P条子条目), 若已经虚拟化至少第一M+P条子对象,则能够在本地处理该请求,否则该请求需要被传递。

图23示出用于虚拟化管理表备份的方法的示例性流程图。如上所述,虚拟化管理 信息表341存储在预定尺寸(即具有固定数目的条目行)的块(区块)341a至341d中。

在虚拟化(和/或迁移)处理过程中,虚拟化管理信息表341保存在存储器314中,但 是虚拟化管理信息备份单元342配置为反复地甚至定期地执行创建虚拟化管理信息表341 的备份副本并且将所创建的备份副本复制到存储装置315。

然而,由于多个线程的多线程抓取单元343、虚拟化单元344和迁移单元345会经常 访问虚拟化管理信息表341以进行更新,并且对于具有数百万到数十亿(数千万)文件系统 对象的文件系统,虚拟化管理信息表341的总条目数是非常大的,所以当不作为整体而是以 块341a到341d的单元来备份复制虚拟化管理信息表341时,能够更有效地执行备份,其中当 对当前正在备份的某一个块的访问被阻止时,抓取单元343、虚拟化单元344和迁移单元345 仍能够有效地读-写-访问所有其它块。

根据图23的备份处理,在步骤S2301中允许进行虚拟化管理信息表备份,并且在步 骤S2302中对下一个(或第一个)虚拟化管理信息表区块进行由虚拟管理信息备份单元342 执行的备份处理。

在步骤S2302中,确认虚拟化管理信息表区块是否包含被指示为具有对象状态为 “完整”的任何目录。若不存在这种目录(例如,在块中的所有条目与文件或例如硬链接的类 似文件对象有关联的情形下,或者在块中指示的所有目录具有“未完成”的对象状态的情形 下),步骤S2303返回否,则备份方法立即继续进行步骤S2308,即创建当前虚拟化管理信息 块的备份副本,并且将副本存储到存储装置315(和/或远程备份存储装置)。然后,该方法在 步骤S2302中继续处理下一个块。

另一方面,若步骤S2303返回是,则确认是否存在相应块的之前的备份版本,若存 在,则针对当前块中被指示为“完成”的每个目录确认之前的备份版本,以确认在该特定块 的之前的备份版本中该相同的目录之前是否被指示为“未完成”(步骤S2305)。若步骤S2305 返回否,也就是说,如果当前块中被指示为完成的所有目录在该特定块的之前的备份版本 中已经被指示为完成,则该方法继续执行步骤S2308,来创建当前虚拟化管理信息块的备份 副本并将该副本存储到存储装置315(和/或远程备份存储装置)。然后,该方法在步骤S2302 中继续处理下一个块。

然而,若步骤S2305返回是,即在特定块的之前的备份版本中被指示为“未完成”的 至少一个目录此时在特定块的当前版本中被指示为“完成”,则由虚拟化管理信息备份单元 342执行的备份处理首先在步骤S2306中确定包含与在步骤S2305中确定的目录(或多个目 录)的子目录有关的至少一个条目的虚拟化管理信息表341的所有其它表区块,在步骤 S2308中执行当前表方块的备份之前,在步骤S2307中执行已确定的所有其它表区块的备 份。

因此,即使在发生虚拟化中断和在存储器314中的包括虚拟化管理信息表341的数 据和作业队列346A至346C中的数据在内的数据丢失的情况下,也能够易于重新开始虚拟化 (和迁移),而无需重新开始完整的虚拟化,即能够根据备份副本来重新存储虚拟化管理信 息表341,并且能够针对被指示为“需要虚拟化”的所有对象创建相应虚拟化作业以及能够 针对具有“未完成”的对象状态的每个目录创建相应的目录信息作业。

然而,若使用包含刚刚完成的目录的信息在内的块来备份而没有执行对具有关于 子目录的信息的块的初步备份,则包含在子目录中的对象可能丢失。具体地,当目录被指示 为完成时,意味着所有的子对象均已经被虚拟化,并且所有的子目录确实已经存在(在文件 系统中以及在虚拟化管理表中),然而,当作业队列中的数据丢失导致针对一个或多个这些 子目录的目录信息请求丢失并且在它们被添加至表区块之后还没有备份它们的表区块的 情形时,自动后台虚拟化可能永远不会将这些字目录的子条目虚拟化。

另一方面,通过不在执行关于包含至少一个字目录条目在内的每个其它表区块的 备份之前执行对已完成目录的表区块的备份,即使在虚拟化中断以及作业队列和虚拟化信 息表中数据丢失的最坏情形下,也能够容易地避免这种不期望的情形。

图24示出当图4的文件系统树的虚拟化完成时的虚拟化管理信息表341的例子。表 格被示例性地划分成四个数据块341a至341d,并且包含图4的文件系统树结构的每个文件 系统对象的一个条目。在图24的表341中所指示的每个文件对象具有“已被虚拟化”的虚拟 化状态,表示根据图5A的结构由第二文件系统管理单元410管理的文件系统的每个文件存 在相应的外部链接对象,并且每个文件对象具有“需要迁移”的对象状态,表示实际文件内 容数据都尚未从第二存储设备400的存储单元420迁移至第一存储设备300的存储单元320。

图24的表341中所指示的每个目录对象具有“已被虚拟化”的虚拟化状态,表示根 据图4A和图5A的树结构由第二文件系统管理单元410管理的文件系统的每个目录存在相同 名称的相应目录,并且每个目录对象具有“完成”的对象状态,表示其所有的子对象也都已 经被虚拟化。

在迁移的第二阶段中,抓取单元343可以重走整个虚拟管理信息表341,以便于针 对待添加至作业队列346C的被指示为“需要迁移”的每个文件对象均创建相应的迁移作业, 使得迁移单元345能够连续地执行一个或多个迁移(例如,作为多线程迁移单元345并行执 行)并且将实际文件内容数据迁移至第一存储设备300的存储单元320。

可替代地,当然能够在完成虚拟化阶段之前开始迁移阶段。然后,抓取单元343或 者虚拟化单元344可以在虚拟化过程中创建迁移作业,例如,与如上讨论的步骤S1007、 S1008、S1009、S1010、S1112、S1113、S1114中之一一起执行或在上述步骤之后执行。

如上结合图6所述,在互连第二存储设备400(步骤S2)且允许根据图20至图22B来 执行的按需虚拟化(步骤S7)之后,几乎立即通过第一存储设备300(步骤S8)间接允许用户 对由第二存储设备400处理的文件系统的访问。然后,如下结合图25A至图25H所讨论的可以 允许对被虚拟化对象的用户访问。

图25A示出在客户端100、第一文件系统管理单元310与第二文件系统管理单元410 之间的信息交换,用于向被虚拟化的文件的写访问。当在第一文件系统管理单元310接收到 目标文件(例如,图4的file8)的写请求时,该写请求通过从第一文件系统管理单元310向第 二文件系统管理单元410发出用于该目标文件的对应的写请求,而经由对应的外部链接对 象(例如,图5A的XLO8)被传递。

一旦在第一文件系统管理单元310接收到来自第二文件系统管理单元410的写确 认,则更新对应的外部链接对象的元数据(例如,通过更新文件的长度、时间戳或由写操作 所改变的其它文件属性),然后向客户端100确认写入。

图25B示出在客户端100、第一文件系统管理单元310与第二文件系统管理单元410 之间的信息交换,用于向被虚拟化的文件的读访问。当在第一文件系统管理单元310接收到 目标文件(例如,图4的file8)的读请求时,该读请求通过从第一文件系统管理单元310向第 二文件系统管理单元410发出用于该目标文件的对应的读请求,而经由对应的外部链接对 象(例如,图5A的XLO8)被传递。

一旦在第一文件系统管理单元310接收到来自第二文件系统管理单元410的读响 应(包括所读取的数据),则响应读请求,将接收到的读数据转移至客户端100。

图25C示出在客户端100、第一文件系统管理单元310与第二文件系统管理单元410 之间的信息交换,用于向被虚拟化的文件或目录的属性访问。当在第一文件系统管理单元 310接收到目标文件(例如,图4的file8)的读属性请求时,在本地从对应的外部链接对象 (例如,图5A的XLO8)读取对应属性,并且响应客户端的读属性请求,将所请求的属性有效且 方便地返回至客户端100,而没有与第二文件系统管理单元410进行通信的任何延迟。

就目录而言,通过从目录元数据读取对应属性,在第一文件系统管理单元310类似 地在本地处理读属性请求,并且响应客户端的读属性请求,将读属性有效且方便地返回至 客户端100,而没有与第二文件系统管理单元410进行通信的任何延迟。

在询问关于目录的链接数的情形下,第一文件系统管理单元310不返回由第一文 件系统管理单元310管理的文件系统的对应的目录的实际链接数,而是通过返回上述的真 实链接数和假链接数的总和来由返回第二文件系统管理单元410管理的文件系统的对应目 录的实际链接数。

图25D示出在客户端100、第一文件系统管理单元310与第二文件系统管理单元410 之间的信息交换,用于删除被虚拟化的文件。当在第一文件系统管理单元310接收到目标文 件(例如,图4的file8)的删除请求时,该删除请求通过从第一文件系统管理单元310向第二 文件系统管理单元410发出用于该目标文件的对应的删除请求,而经由对应的外部链接对 象(例如,图5A的XLO8)被传递。

一旦由第二文件系统管理单元410删除目标文件(例如,file8)并且在第一文件系 统管理单元310接收到来自第二文件系统管理单元410的删除确认时,将对应的外部链接对 象(例如,XLO8)删除并且将虚拟化管理信息表341中的对应条目移除,以便于避免针对已删 除的文件创建迁移作业,然后向客户端100确认目标文件的删除。

图25E示出在客户端100、第一文件系统管理单元310与第二文件系统管理单元410 之间的信息交换,用于文件创建。当在第一文件系统管理单元310接收到用于在目标路径位 置中创建新文件的文件创建请求时,在对应于目标路径位置的本地路径中创建对应的新外 部链接对象,并且该文件创建请求通过从第一文件系统管理单元310向第二文件系统管理 单元410发出用于目标路径位置中的目标文件的对应文件创建请求被传递。

当在对应于目标路径位置的远程路径中创建了新文件并且在第一文件系统管理 单元310接收到来自第二文件系统管理单元410的文件创建确认时(在更新对应外部链接对 象的元数据之后潜在地),向客户端100确认目标文件的文件创建。

图25F示出在客户端100、第一文件系统管理单元310与第二文件系统管理单元410 之间的信息交换,用于改变属性。当在第一文件系统管理单元310接收到目标文件(例如,图 4的file8)的改变属性请求时,首先执行该改变属性请求,这是因为根据改变属性请求来改 变对应的外部链接对象(例如,图5A的XLO8)中的属性,并且该改变属性请求通过从第一文 件系统管理单元310向第二文件系统管理单元410发出用于该目标文件的对应的改变属性 请求,而经由对应外部链接对象(例如,XLO8)被传递。

一旦由第二文件系统管理单元410改变了目标文件的属性,并且在第一文件系统 管理单元310接收到来自第二文件系统管理单元410的属性改变确认,则向客户端100确认 属性改变。类似地,当在第一文件系统管理单元310接收到用于目标目录的改变属性请求 时,根据该请求来更新被虚拟化目录的目录元数据以用于改变属性,然后该改变属性请求 被转移至第二文件系统管理单元410。

图25G示出在客户端100、第一文件系统管理单元310与第二文件系统管理单元410 之间的信息交换,用于目录创建。当在第一文件系统管理单元310接收到用于在目标路径位 置中创建新空目录的目录创建请求时,在对应于目标路径位置的本地路径中创建对应的新 空目录和其目录元数据,新目录被指示为完成,并且该目录创建请求通过从第一文件系统 管理单元310向第二文件系统管理单元410发出用于目标路径位置中的目标目录对应的目 录创建请求来传递。

一旦在对应于目标路径位置的由第二文件系统管理单元410管理的文件系统的远 程路径中创建了新空目录并且在第一文件系统管理单元310接收到来自第二文件系统管理 单元410的目录创建确认时(并且可能在更新对应目录元数据的元数据之后),向客户端100 确认目标文件的目录创建。

图25H示出在客户端100、第一文件系统管理单元310与第二文件系统管理单元410 之间的信息交换,用于目录重命名。当在第一文件系统管理单元310接收到用于重命名现有 目录的目录重命名请求(改变目录的名称和/或路径位置)时,根据第一文件系统管理单元 310管理的文件系统中的目录重命名请求来重命名对应目录,并且该目录重命名请求通过 从第一文件系统管理单元310向第二文件系统管理单元410发出的用于目标目录的对应的 目录重命名请求来传递。

一旦根据第二文件系统管理单元410管理的文件系统中的目录重命名请求来重命 名目标目录并且在第一文件系统管理单元310接收到来自第二文件系统管理单元410的重 命名确认时,向客户端100确认目标文件的目录重命名。

上述实施例的结构的特征、组件和具体细节能够被置换或组合以形成优化相应的 应用的其它实施例。为了本说明书简明起见,只要这些修改对于本领域技术人员而言是显 而易见地,就认为上述修改由上述说明书隐含地公开而无需明确地指定每个可能的组合。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号