基于策略的文件管理的制作方法

文档序号:6478772阅读:192来源:国知局
专利名称:基于策略的文件管理的制作方法
技术领域
本申请涉及存储数据的领域,尤其涉及可扩缩高容量系统中的数据存储 服务领 域。2.
背景技术
在2006年产生、捕获和复制的数字信息量已估计为161千兆兆字节或161百亿亿 字节,这是曾经写的所有书中的信息的约300万倍。预计在2006和2010年之间,数字世界 每年增加的信息将增加6倍以上,即从161千兆兆字节增加到988千兆兆字节。引起该大 量增长的信息类型为丰富的数字媒体和未结构化的商业内容。还有正在进行的从模拟到数 字格式的转换,即胶片转换为数字图像捕获、模拟话音转换为数字话音、及模拟电视转换为 数字电视。丰富的数字媒体和未结构化的商业内容具有不同于结构化数据类型(如数据库 记录)的独特特性和存储要求,为此许多今天的存储系统均进行了特别设计。许多传统存 储系统高度优化以对小的数据块传送高性能I/O。此外,这些系统设计成支持十亿字节和万 亿字节大小的信息存储。相比之下,丰富的数字媒体和未结构化的商业内容具有更大的容量要求(千万亿 字节对十亿/万亿字节大小的系统)、更少的可预测增长和访问模式、大的文件大小、亿万 又亿万的对象、高吞吐量要求、单一作者、多读者访问模式、及需要多平台可访问性。传统存 储系统已通过使用专门硬件平台实现所需性能和可靠度等级而部分满足这些需要。遗憾的 是,专门硬件的使用导致更高的客户价格及随着容量需求变大而可能不支持体积经济性, 容量需求变大是丰富的数字媒体和未结构化的商业内容的特征。部分成本问题已使用分层存储得以解决,其试图降低与将所有信息保持在单一高 成本存储层上相关联的资金和运行成本。然而,分层存储伴随一套复杂的决策周边技术、数 据耐久性、功能性甚至存储器厂家。分层存储解决方案可能引入非零运行成本和管理要求 的、无关的平台、技术、及软件名称,随着数据量增加,运行成本和管理需求将紧张。此外,分层存储可导致数据拷贝非相干性,这导致信息的多个不相交的副本跨存 储层存在。例如,处理数据备份和恢复的存储管理软件可能在每一存储层上产生多个信息 集副本(如快照、备份集等)。处理信息从一层到另一层的迁移的信息生命周期管理(ILM) 软件可能产生另外的且通常重叠的数据副本。复制软件可能在特定层内产生额外的信息集 副本以增加存取应用程序的性能。每一这些功能通常彼此独立运行。软件可能不能认识和 /或利用同一信息集的多个拷贝。此外,对于大规模未结构化的信息存储,当组件故障时,很难维护系统和管理环 境。例如,两千万亿字节的信息存储可由8000个2500亿字节的磁盘驱动器组成。在这种 规模的系统中磁盘故障应以不同的方式处理,使得无论一个或少部分磁盘驱动器在何时发 生故障,系统均能继续相当平稳地运行。因此,希望提供一种可解决与高成本专门硬件、存储分层和故障管理相关联的困难的存储系统。

发明内容
根据在此所述的系统,管理文件包括接收多个针对新文件的策略,其中根据预定条件可应用不同的策略,接收创建新文件的请求,根据预定条件选择针对该新文件的适当 策略,根据所述适当策略确定是否有足够的资源可用,及响应于依照适当策略资源足够而 获取文件对象以创建文件。策略可经用户管理接口进行接收。预定条件可包括创建文件的 客户机的身份。适当策略可包括关于文件镜像的信息。适当策略可指出镜像之间的最小地 理距离。确定是否有足够资源可用可包括咨询资源管理器。资源管理器可接收关于系统资 源的信息并保存其指示表。系统资源可包括数据存储区。进一步根据在此所述的系统,提供在计算机可读介质中的计算机软件管理文件。 该软件包括接收多个针对新文件的策略的可执行代码,其中根据预定条件可应用不同的策 略,接收创建新文件的请求的可执行代码,根据预定条件选择针对该新文件的适当策略的 可执行代码,根据所述适当策略确定是否有足够的资源可用的可执行代码,及响应于依照 适当策略资源足够而获取文件对象以创建文件的可执行代码。策略可经用户管理接口进行 接收。预定条件可包括创建文件的客户机的身份。适当策略可包括关于文件镜像的信息。 适当策略可指出镜像之间的最小地理距离。确定是否有足够资源可用的可执行代码可包括 咨询资源管理器的可执行代码。资源管理器可包括接收关于系统资源的信息并保存其指示 表的可执行代码。系统资源可包括数据存储区。进一步根据在此所述的系统,数据存储系统包括多个访问文件的客户机及包括多 个互连的服务器,服务器连接到客户机,服务器子集接收多个针对新文件的策略,其中根据 预定条件可应用不同的策略,服务器子集接收创建新文件的请求,服务器子集根据预定条 件选择针对该新文件的适当策略,服务器子集根据所述适当策略确定是否有足够的资源可 用,及服务器子集响应于依照适当策略资源足够而获取文件对象以创建文件。策略可经用 户管理接口进行接收。预定条件可包括创建文件的客户机的身份。适当策略可包括关于文 件镜像的信息。服务器包括被咨询以确定是否有足够资源可用的服务器子集。被咨询以确 定是否有足够资源可用的服务器子集可接收关于系统资源的信息并保存其指示表。系统资 源可包括数据存储区。进一步根据在此所述的系统,管理文件对象包括接收多个针对文件对象的策略, 其中根据预定条件可应用不同的策略,接收获取新文件对象的请求,根据预定条件选择针 对该新文件对象的适当策略,根据所述适当策略确定是否有足够的资源可用,及响应于依 照适当策略资源足够而获取文件对象。进一步根据在此所述的系统,数据存储系统包括多个访问文件对象的客户机及包 括多个互连的服务器,服务器连接到客户机,服务器子集接收多个针对新文件对象的策略, 其中根据预定条件可应用不同的策略,服务器子集接收获取新文件对象的请求,服务器子 集根据预定条件选择针对该新文件对象的适当策略,服务器子集根据所述适当策略确定是 否有足够的资源可用,及服务器子集响应于依照适当策略资源足够而获取文件对象。进一步根据在此所述的系统,管理多个文件包括提供具有表的至少一服务器,表 具有多个文件标识符,每一文件标识符包括指向包含布局存储对象的元数据文件对象的指针,布局存储对象指示对应文件的存储参数,及包括通过从至少一服务器获取信息而访问 特定文件以访问对应于该特定文件的布局存储对象从而确定文件的同步和异步镜像。每一 布局存储对象可提供为树,及该树的叶可将对应文件的逻辑地址映射到数据存储位置。树 的至少一内部节点可表明其至少一叶节点是其另一叶节点的镜像。响应于数据写和内部节 点表明其第一叶节点为其第二叶节点的异步镜像,可将数据写到第一叶节点并向至少一服 务器提供更新消息。管理多个文件还可包括,至少一服务器将信息放在对应于所述消息的 队列上并服务于该队列以将数据写到第二叶节点。响应于数据写和内部节点表明其第一叶 节点为其第二叶节点的同步镜像,可将数据写到第一叶节点和第二叶节点。响应于访问数 据不成功,可访问其镜像。布局存储对象可包括指向将对应文件的逻辑地址空间映射到对 应于物理数据存储的数据存储空间的数据文件对象的指针。每一数据文件对象可具有表明 数据文件对象是下述之一的状态当前、另一数据对象的过时镜像、不可改变、及无效。响应 于试图向不可改变的数据文件对象写,可分配新的存储空间及可将数据写到该新的存储空 间。响应于试图读无效的数据文件对象,可返回零值。进一步根据在此所述的系统,提供在计算机可读介质中的计算机软件管理多个文 件。该软件包括提供在至少一服务器中的、管理具有多个文件标识符的表的可执行代码,每 一文件标识符包括指向包含布局存储对象的元数据文件对象的指针,布局存储对象指示对 应文件的存储参数,及包括通过从至少一服务器获取信息而访问特定文件以访问对应于该 特定文件的布局存储对象从而确定文件的同步和异步镜像的可执行代码。每一布局存储对 象可提供为树,及该树的叶可将对应文件的逻辑地址映射到数据存储位置。树的至少一内 部节点可表明其至少一叶节点是其另一叶节点的镜像。响应于数据写和内部节点表明其第 一叶节点为其第二叶节点的异步镜像,可执行代码可使数据写到第一叶节点并向至少一服 务器提供更新消息。至少一服务器处的可执行代码可将信息放在对应于所述消息的队列上 并服务于该队列以将数据写到第二叶节点。响应于数据写和内部节点表明其第一叶节点为 其第二叶节点的同步镜像,可执行代码可使数据写到第一叶节点和第二叶节点。计算机软 件还可包括响应于访问数据不成功而访问其镜像的可执行代码。布局存储对象可包括指向 将对应文件的逻辑地址空间映射到对应于物理数据存储的数据存储空间的数据文件对象 的指针。每一数据文件对象可具有表明数据文件对象是下述之一的状态当前、另一数据对 象的过时镜像、不可改变、及无效。计算机软件还可包括响应于试图向不可改变的数据文件 对象写而分配新的存储空间及将数据写到该新的存储空间的可执行代码。计算机软件还可 包括响应于试图读无效的数据文件对象而返回零值的可执行代码。进一步根据在此所述的系统,管理多个文件包括提供具有多个文件标识符的至少 一服务器,每一文件标识符包括指向包含布局存储对象的元数据文件对象的指针,布局存 储对象指示对应文件的存储参数,及包括通过从至少一服务器获取信息而访问特定文件以 访问对应于该特定文件的布局存储对象从而确定怎样保存和检索文件的数据。进一步根据在此所述的系统,数据存储系统包括多个服务器,其中至少一服务器 具有含多个文件标识符的表,每一文件标识符包括指向包含布局存储对象的元数据文件对 象的指针,布局存储对象指示对应文件的存储参数,及包括多个通过从至少一服务器获取 信息而访问特定文件以访问对应于该特定文件的布局存储对象从而确定文件的同步和异 步镜像的客户机。
进一步根据在此所述的系统,数据存储系统包括多个服务器,其中至少一服务器 具有多个文件标识符,每一文件标识符包括指向包含布局存储对象的元数据文件对象的指 针,布局存储对象指示对应文件的存储参数,及包括多个通过从至少一服务器获取信息而 访问特定文件以访问对应于该特定文件的布局存储对象从而确定怎样保存和检索文件数 据的客户机。进一步根据在此所述的系统,在数据存储系统中管理文件对象包括提供多个元数 据服务器,每一元数据服务器具有仅针对存储系统中的文件对象子集的信息,针对每一元 数据服务器的每一子集少于该系统的文件对象总量;及包括提供至少一元数据定位服务 器,其中访问系统的特定文件对象的实体通过首先访问至少一元数据定位服务器而确定哪 一元数据服务器包含该特定文件对象的数据。针对文件对象子集的信息可包括具有文件标 识符和元数据定位信息的表。元数据定位信息可指向用于文件元数据对象的数据存储器。 所述表还可包括租用信息,指明对文件对象具有读许可的实体和对文件对象具有写许可的 实体。文件对象可被提供唯一的对象标识符。至少一元数据定位服务器可根据文件对象的 对象标识值确定适当的元数据服务器用于文件对象。至少部分元数据服务器可保存使对象 标识值子集与文件对象相关联的表。至少部分元数据服务器可被提供唯一的对象标识值子 集以分配给新的文件对象。进一步根据在此所述的系统,提供在计算机可读介质中的计算机软件在数据存储 系统中管理文件对象。该软件包括提供在多个元数据服务器上的、保存仅针对存储系统中 的文件对象子集的信息的可执行代码,针对每一元数据服务器的每一子集少于该系统的文 件对象总量;及包括提供在至少一元数据定位服务器上的、响应于提供给至少一元数据服 务器的请求提供哪一元数据服务器包含特定文件对象的数据的指示的可执行代码。针对文 件对象子集的信息可包括具有文件标识符和元数据定位信息的表。元数据定位信息可指向 用于文件元数据对象的数据存储器。所述表还可包括租用信息,指明对文件对象具有读许 可的实体和对文件对象具有写许可的实体。文件对象可被提供唯一的对象标识符。至少一 元数据定位服务器可包括根据文件对象的对象标识值确定用于文件对象的适当元数据服 务器的可执行代码。至少部分元数据服务器可保存使对象标识值子集与文件对象相关联的 表。至少部分元数据服务器可被提供唯一的对象标识值子集以分配给新的文件对象。进一步根据在此所述的系统,数据存储系统包括多个访问存储系统的文件对象的 客户机及多个连接到客户机并互连的服务器,所述服务器包括多个元数据服务器,每一元 数据服务器具有仅针对存储系统中的文件对象子集的信息,针对每一元数据服务器的每一 子集少于该系统的文件对象总量;所述服务器还包括至少一元数据定位服务器,其中访问 系统的特定文件对象的客户机通过首先访问至少一元数据定位服务器而确定哪一元数据 服务器包含该特定文件对象的数据。针对文件对象子集的信息可包括具有文件标识符和元 数据定位信息的表。元数据定位信息可指向用于文件元数据对象的数据存储器。文件对象 可被提供唯一的对象标识符。至少一元数据定位服务器可根据文件对象的对象标识值确定 适当的元数据服务器用于文件对象。至少部分元数据服务器可保存使对象标识值子集与文 件对象相关联的表。至少部分元数据服务器可被提供唯一的对象标识值子集以分配给新的 文件对象。进一步根据在此所述的系统,在数据存储系统中管理文件对象包括提供多个第一类型的服务器,每一第一类型的服务器具有仅针对存储系统中的文件对象子集的信息;及 包括提供至少一第二类型的服务器,通过首先访问至少一第二类型的服务器提供表明哪一 第一类型的服务器包含特定文件对象的数据的信息。进一步根据在此所述的系统,数据存储系统包括多个访问存储系统的文件对象的 客户机及包括多个连接到客户机并互连的服务器,所述服务器包括多个元数据服务器,每 一元数据服务器具有仅针对存储系统中的文件对象子集的信息,针对每一元数据服务器的 每一子集少于该系统的文件对象总量;所述服务器还包括至少一元数据定位服务器,其中 访问系统的特定文件对象的客户机通过首先访问至少一元数据定位服务器而确定哪一元 数据服务器包含该特定文件对象的数据。进一步根据在此所述的系统,追踪存储资源包括提供包含存储资源及其能力和 状态的表,响应于存储资源的状态的变化更新表,响应于存储资源的能力的变化更新表,及 响应于针对具有特定能力的存储资源的查询,在表中搜索具有特定能力的存储资源。追踪 存储资源还可包括响应于新资源添加到系统中而向表中添加元素。所述能力可包括RAID 分割、重复数据删除及绿色运行。状态可以是下述之一联机、脱机及满。存储资源可以是 磁盘驱动器。磁盘驱动器可由呈现针对磁盘驱动器的OSD接口的数据存储服务器管理。所 述表可由从其它服务器接收关于存储资源的信息的资源管理服务器保存。进一步根据在此所述的系统,提供在计算机可读存储介质中的计算机软件追踪存 储资源。该软件包括包含存储资源及其能力和状态的表,响应于存储资源的状态变化更 新表的可执行代码,响应于存储资源的能力变化更新表的可执行代码,及响应于针对具有 特定能力的存储资源的查询,在表中搜索具有特定能力的存储资源的可执行代码。该软件 还可包括响应于新资源添加到系统中而向表中添加元素的可执行代码。所述能力可包括 RAID分割、重复数据删除及绿色运行。状态可以是下述之一联机、脱机及满。存储资源可 以是磁盘驱动器。磁盘驱动器可由呈现针对磁盘驱动器的OSD接口的数据存储服务器管 理。所述表可由从其它服务器接收关于存储资源的信息的资源管理服务器保存。进一步根据在此所述的系统,管理存储系统的存储资源的资源管理器包括处理装 置和连接到处理装置的计算机可读存储器,计算机可读存储器具有提供在数据结构中并包 含存储资源及其能力和状态的表,计算机可读存储器还具有响应于存储资源的状态变化更 新表的可执行代码,响应于存储资源的能力变化更新表的可执行代码,及响应于针对具有 特定能力的存储资源的查询,在表中搜索具有特定能力的存储资源的可执行代码。计算机 可读存储器还可包括响应于新资源添加到系统中而向表中添加元素的可执行代码。所述 能力可包括RAID分割、重复数据删除及绿色运行。状态可以是下述之一联机、脱机及满。 存储资源可以是磁盘驱动器。磁盘驱动器可由呈现针对磁盘驱动器的OSD接口的数据存储 服务器管理。进一步根据在此所述的系统,数据存储系统包括多个客户机及多个连接到客户机 的服务器,其中服务器子集使用包含存储资源及其能力和状态的表管理存储资源,其中所 述子集响应于存储资源的状态的变化更新表,响应于存储资源的能力的变化更新表,及响 应于针对具有特定能力的存储资源的查询,在表中搜索具有特定能力的存储资源。所述服 务器子集可响应于新资源添加到系统中而向表中添加元素。存储资源可以是磁盘驱动器。进一步根据在此所述的系统,向数据存储系统的资源管理器提供信息包括响应于存储资源的能力变化向资源管理器提供信息,响应于存储资源的状态变化向资源管理器提供信息,及响应于添加新存储资源向资源管理器提供信息。存储资源可以是磁盘驱动器。进一步根据在此所述的系统,访问数据文件对象包括在至少一客户机上提供文件 系统接口,其中文件系统接口使在至少一客户机上运行的应用程序能进行文件系统调用以 访问数据文件对象,及在至少一客户机上提供环球网服务接口,其中环球网接口使应用程 序能在文件对象正通过文件系统接口进行访问的同时使用环球网访问文件对象。环球网服 务接口可以是SOAP接口和/或REST接口。访问数据文件对象还可包括在至少一客户机上 提供直接的文件对象接口,其中直接的文件对象接口使应用程序能在文件对象正使用环球 网服务接口和使用文件系统接口进行访问的同时直接访问文件对象。访问数据文件对象还 可包括提供将文件名翻译为文件对象标识符的文件名服务,其中文件名服务通过文件系统 接口和/或环球网服务接口进行访问。提供文件系统接口可包括在至少一客户机的内核 地址空间中提供虚拟文件系统。访问数据文件对象还可包括提供管理文件对象的布局管理 器。布局管理器可提供在至少一客户机的内核地址空间中。布局管理器提供在至少一客户 机的用户地址空间中。虚拟文件系统可使用内核存储地址空间和用户存储地址空间之间的 网桥访问布局管理器。进一步根据在此所述的系统,访问多个文件对象的客户机包括文件系统接口,其 使在至少一客户机上运行的应用程序能进行文件系统调用以访问数据文件对象;环球网服 务接口,其使应用程序能在文件对象正通过文件系统接口进行访问的同时使用环球网访问 文件对象;及连接到文件系统接口和环球网服务接口的通信接口,其在客户机和包含文件 对象的多个服务器之间交换文件对象数据。客户机还可包括直接的文件对象接口,其使应 用程序能在文件对象正使用环球网服务接口和使用文件系统接口进行访问的同时直接访 问文件对象。客户机还可包括将文件名翻译为文件对象标识符的文件名服务,其中文件名 服务通过文件系统接口和/或环球网服务接口进行访问。文件系统接口可包括在至少一客 户机的内核地址空间中的虚拟文件系统。客户机还可包括管理文件对象的布局管理器。布 局管理器可提供在至少一客户机的内核地址空间中。布局管理器可提供在至少一客户机的 用户地址空间中。虚拟文件系统可使用内核存储地址空间和用户存储地址空间之间的网桥 访问布局管理器。进一步根据在此所述的系统,提供在计算机可读存储介质中的计算机软件包括使 在至少一客户机上运行的应用程序能进行文件系统调用以访问数据文件对象的可执行代 码,及包括使应用程序能在文件对象正通过文件系统接口进行访问的同时使用环球网访问 文件对象的可执行代码。计算机软件还可包括使应用程序能在文件对象正使用环球网和使 用文件系统调用进行访问的同时直接访问文件对象的可执行代码。计算机软件还可包括将 文件名翻译为文件对象标识符的可执行代码。进一步根据在此所述的系统,系统同时使能使用文件系统接口和环球网服务接口 访问多个文件对象。该系统包括包含文件对象的多个服务器及连接到服务器的至少一客户 机。客户机包括文件系统接口,其使在至少一客户机上运行的应用程序能进行文件系统调 用以访问数据文件对象;环球网服务接口,其使应用程序能在文件对象正通过文件系统接 口进行访问的同时使用环球网访问文件对象;及连接到文件系统接口和环球网服务接口的 通信接口,其在客户机和包含文件对象的多个服务器之间交换文件对象数据。文件系统接口可包括客户机的内核地址空间中的虚拟文件系统。进一步根据在此所述的系统,管理数据文件的对象包括获得该文件的元数据对 象,确定元数据对象是否表明一部分数据文件包括同步镜像,及响应于向数据文件写新数 据,将新数据写到每一同步镜像。数据文件的数据对象可处于下述四种状态之一当前、失 效、空、及不可改变。响应于读操作及对应的数据对象处于失效状态,可对处于当前状态的 对应同步镜像读数据。


图1为根据在此所述的系统的实施例的服务器和客户机的图示。图2A和2B为根据在此所述的系统的实施例,客户机连接到服务器和其它网络的 图示。图3为根据在此所述的系统的实施例,具有服务器操作软件、客户机软件及其间 的多个接口的客户机的图示。图4为根据在此所述的系统的实施例,具有元数据文件对象和多个数据文件对象 的文件的图示。图5为根据在此所述的系统的实施例,文件的元数据文件对象的图示。图6为根据在此所述的系统的实施例,文件的布局存储对象树的例示。图7为根据在此所述的系统的实施例,文件的具有多个映射的布局存储对象树的 例示。图8为根据在此所述的系统的实施例,文件的具有多个映射和复制节点的布局存 储对象树的例示。图9为根据在此所述的系统的实施例,客户机获得文件的租用及操作文件的流程 图。图10为根据在此所述的系统的实施例,客户机从文件读数据的流程图。图11为根据在此所述的系统的实施例,客户机向文件写数据的流程图。图12为根据在此所述的系统的实施例,客户机在查找备选数据副本时所执行步 骤的流程图。图13为根据在此所述的系统的实施例,客户机向同步镜像进行写的流程图。图14为根据在此所述的系统的实施例,客户机将文件名转换为对象标识符的流 程图。图15为根据在此所述的系统的实施例,在用户存储地址空间中具有应用程序及 在内核存储地址空间中具有VFS、文件名服务、内核I/O驱动、布局管理器及通信接口的客 户机的图示。图16为根据在此所述的系统的实施例,客户机处的VFS的运行流程图。图17为根据在此所述的系统的实施例,在用户存储地址空间中具有应用程序、文 件名服务、用户级I/O驱动及布局管理器和在内核存储地址空间中具有通信接口的客户机 的图示。图18为根据在此所述的系统的实施例,在用户存储地址空间中具有应用程序、文 件表示层、用户级I/O驱动及布局管理器和在内核存储地址空间中具有VFS、通信接口和内核存储地址空间到用户存储地址空间的网桥的客户机的图示。图19为根据在此所述的系统的实施例,在用户存储地址空间中具有应用程序和 在内核存储地址空间中具有文件名服务、内核I/O驱动、布局管理器和通信接口的客户机 的图示。图20为根据在此所述的系统的实施例,在用户存储地址空间中具有应用程序、文 件名服务、用户级I/O驱动及布局管理器和在内核存储地址空间中具有通信接口的客户机 的图示。图21为根据在此所述的系统的实施例,在用户存储地址空间中具有应用程序、文 件名服务、用户级I/O驱动及布局管理器和在内核存储地址空间中具有通信接口和内核存 储地址空间到用户存储地址空间的网桥的客户机的图示。图22为根据在此所述的系统的实施例,在用户存储地址空间中具有应用程序和 在内核存储地址空间中具有环球网服务模块、内核I/O驱动、布局管理器、及通信接口的客 户机的图示。图23为根据在此所述的系统的实施例,在用户存储地址空间中具有应用程序、环 球网服务层、用户级I/O驱动、及布局管理器和在内核存储地址空间中具有通信接口的客 户机的图示。图24为根据在此所述的系统的实施例,在用户存储地址空间中具有应用程序、环 球网服务层、用户级I/O驱动、及布局管理器和在内核存储地址空间中具有通信接口和内 核存储地址空间到用户存储地址空间的网桥的客户机的图示。图25为根据在此所述的系统的实施例,在用户存储地址空间中具有多个应用程 序、环球网服务层、文件名服务、用户级I/O驱动、及布局管理器和在内核存储地址空间中 具有VFS、通信接口、和内核存储地址空间到用户存储地址空间的网桥的客户机的图示。图26为根据在此所述的系统的实施例,不同类型的服务器和用户管理接口的图
7J\ ο图27为根据在此所述的系统的实施例,在使用安全管理服务器获取使用策略管 理服务器的凭证时所执行的步骤的流程图。图28为根据在此所述的系统的实施例,资源管理器表的图示。图29为根据在此所述的系统的实施例,在处理资源信息以更新资源表时所执行 的步骤的流程图。图30为根据在此所述的系统的实施例,在查找具有所需能力的资源时所执行的 步骤的流程图。图31为根据在此所述的系统的实施例,元数据服务器服务于租用请求时所执行 的步骤的流程图。图32为根据在此所述的系统的实施例,监视和取消过期租用时所执行的步骤的 流程图。图33为根据在此所述的系统的实施例,连同租用取消处理执行的步骤的流程图。图34为根据在此所述的系统的实施例,示出为元数据服务器处理的文件保存的 数据的表。图35为根据在此所述的系统的实施例,元数据服务器处理的文件租用的链表。
图36为根据在此所述的系统的实施例,示出由元数据服务器保存的、使对象标识 符与数据存储位置相关联的数据的表。图37为根据在此所述的系统的实施例,元数据定位服务器处的、使对象标识符范 围与元数据服务器相关联的表。图38为根据在此所述的系统的实施例,在返回特定元数据服务器时由元数据定 位服务器执行的处理的流程图。图39为根据在此所述的系统的实施例,在删除文件时由元数据服务器执行的处 理的流程图。图40为根据在此所述的系统的实施例,在创建文件时由元数据服务器执行的处 理的流程图。图41为根据在此所述的系统的实施例,在响应于失败数据写操作时由元数据服 务器执行的处理的流程图。图42为根据在此所述的系统的实施例,在响应于失效镜像更新消息时由元数据 服务器执行的处理的流程图。图43为根据在此所述的系统的实施例,在将异步复制工作添加到队列中时由元 数据服务器执行的处理的流程图。图44为在服务于异步复制工作时由元数据服务器执行的处理的流程图。
具体实施例方式参考图1,该图示出了服务器102连接到多个客户机104-106。每一客户机104-106 表示从服务器102接收文件服务的一个或多个处理装置。客户机104-106中的每一客户机 可以也可不独立于客户机104-106中的其它客户机。客户机104-106中的一个或多个可以 是多处理/多用户系统,及可能具有多个独立用户。客户机104-106意于表示任何数量的 客户机。服务器102提供的文件服务可包括数据存储和检索及相关操作,如数据镜像、复 制等。服务器102可使用互连处理和/或存储装置提供的多个服务(和/或包括SAN组件 的互连文件服务器)进行实施。在这里的实施例中,每一客户机104-106可使用环球网连 接到服务器102,可能与本地TCP/IP连接协力。然而,一个或多个客户机104-106也可能使 用任何其它适当的通信机制和/或其组合连接到服务器102以提供在此所述的功能。参考图2A,客户机104被示为连接到服务器102和一个或多个其它网络。其它网 络可包括局域网(LAN)。因此,客户机104可以是服务器102和LAN之间的网关,一个或多 个其它装置(未示出)也可连接到该网关。通过从服务器102向一个或多个其它装置提供 数据,客户机104可用作连接到LAN的一个或多个其它装置的本地文件服务器。当然,一个 或多个其它客户机也可能同时用作到同一或不同的其它网络的网关。总的来说,对于这里 的讨论,除非另外指明,提及客户机104-106中的特定客户机时可理解为指连接到服务器 102的客户机104-106中的任何或所有客户机。参考图2B,该图示出了客户机104以不同于图2A中所示的结构连接到服务器102 和一个或多个其它网络(如LAN)。在图2B的结构中,路由器108连接在服务器102和客户 机104之间。路由器108可以是可由客户机104访问的任何传统路由器。在图2B的结构中,客户机104仅使用单一连接点连接到服务器102和其它网络。在图2B的结构中,客户 机104可用作本地文件服务器及服务器102和连接到其它网络的一个或多个其它装置(未 示出)之间的网关。当然,连接到服务器102和/或其它网络的任何客户机104-106可使 用任何其它适当的连接结构。参考图3,客户机104更详细地示为具有服务器操作软件122、客户机软件124、及 包括服务器操作软件122和客户机软件124之间的多个接口 126-128的接口层125。服务 器操作软件122有助于在客户机104和服务器102之间交换信息/数据以提供在此所述的 功能。服务器操作软件122在本说明书别处详细描述。客户机软件124表示可在客户机 104上运行的任何软件,包括应用软 件、操作系统软件、环球网服务器软件等,其不是服务器 操作软件122或接口层125的一部分。如本说明书别处详细所述,可能使客户机软件124 同时通过不同的接126-128与服务器102交互作用。在此所述的文件服务可通过服务器102使用一组文件对象实施,其中由客户机软 件访问的文件包括指向包含该文件的数据的一个或多个数据文件对象的元数据文件对象。 访问文件包括首先访问元数据文件对象以定位文件的对应数据文件对象。这将在本说明书 别处详细描述。然而,应注意,任何适当的文件对象机制均可用于在此所述的系统。参考图4,文件130被示作包括元数据文件对象132和多个数据文件对象。元数据 文件对象132包含指向每一数据文件对象134-136的信息。访问文件包括首先访问元数据 文件对象132,然后使用其中的信息定位相应数据文件对象134-136中的一个或多个适当 的数据文件对象。参考图5,元数据文件对象132被详细地示作包括对象属性部分142和布局存储对 象(LSO)树部分144。对象属性部分包含传统的文件类型属性如系主id、组id、访问控制列 表、上次修改时间、上次访问时间、上次变化时间、创建时间、文件大小、和链接计数。许多属 性自明。上次修改时间对应于数据对象134-136的数据上次进行修改的时间,而上次变化 时间对应于对象元数据上次进行改变的时间。链接计数指索引特定文件的其它对象(如指 向同一文件的别名)的数量。在这里的实施例中,当链接计数递减到零时,删除文件及其相 关对象。LSO树部分144包括具有一个或多个映射的数据结构,所述映射用于将文件的逻 辑空间映射到特定数据文件对象。LSO树部分144还可指明数据的任何镜像及这些镜像是 同步还是异步镜像。LSO树和镜像在本说明书别处详细描述。参考图6,简单的LSO树160被示作包括LSO根节点162和单一映射164。LSO根 节点162用于识别LSO树160并包括到连同对应于LSO树160的文件使用的一个或多个映 射的链接。映射164将文件内的逻辑位置映射到实际的数据存储位置。访问由LSO树160 表示的文件的逻辑存储空间的过程首先使用LSO根节点162查找映射164,然后使用映射 164将文件内的逻辑地址翻译为实际的数据存储位置。参考图7,LSO树170被示作包括LSO根节点172和多个映射174-176。每一映射 174-176可表示对应于LSO树170的文件内的不同逻辑偏移范围。例如,映射174可对应于 文件中的第一逻辑偏移范围。映射174可将第一范围中的逻辑位置映射到第一实际存储装 置。映射175可对应于文件中的不同于第一范围的第二逻辑偏移范围,该范围可被映射到 不同的实际存储装置或可被映射到与映射174 —样的实际存储装置。类似地,映射176可对应于文件中的不同于第一范围和第二范围的第三逻辑偏移范围,该范围可被映射到不同 的实际存储装置或可被映射到与映射174和/或映射175 —样的实际存储装置。参考图8,LSO树180被示作包括LSO根节点181和一对复制节点182a、182b,其 指明下面的数据将被镜像(复制)及指明镜像是同步还是异步镜像。同步和异步镜像在本 说明书别处详细描述。节点182a具有多个与其关联的子映射183-185,节点182b具有多个 与其关联的子映射186-188。复制节点182a、182b指明对应于映射183-185的数据是对应 于映射186-188的数据的镜像。在一些实施例中,节点182a、182b可使用单一节点189指 明复制而进行实施。访问具有LSO树180的文件的过程将遍历树180并确定数据被镜像。如本说明书 别处详细所述,根据镜像类型,访问LSO树180的过程将或向节点182a、182b的子映射写数 据或向执行异步镜像的另一进程/服务器(如服务器102)提供消息。镜像将在本说明书 别处详细描述。对于在此所述的系统,文件对象由客户机104-106之一通过首先从服务器102请 求并获得租用而进行访问。租用对应于所访问特定文件的文件对象及对应于访问类型。租 用可用于读、写和/或更多其它操作(如改变文件属 性)。在这里的实施例中,对于对应于 任何特定文件的对象,服务器102可一次仅向任何客户机104-106发出一个写租用,但可同 时发出多个读租用并可在发出写租用的同时发出读租用。然而,在一些实施例中,可能获得 对文件的指定逻辑范围的租用以仅对该范围进行操作。因此,例如,第一客户机可能获得向 文件的第一逻辑范围进行写的租用,而第二客户机可能独立获得向同一文件的第二且分开 的逻辑范围进行写的租用。针对不同逻辑范围的两个写租用可能在时间上重叠,但不违反 系统永不对同一数据发出重叠写租用的一般规则。从服务器102提供给客户机104-106的租用包括使客户机有权适当使用数据的安 全信息(安全权标)。安全权标可在一定时间量之后过期。在这里的实施例中,客户机通过 提供针对数据的适当安全权标及客户机用户/所有权信息而访问数据。因此,例如,希望访 问数据的用户应首先获得租用,然后将访问请求连同安全权标及识别访问数据的系主(客 户机)的信息提供给服务器102。之后,服务器102确定客户机所请求的访问是否许可。在 租用过期(安全权标过期)之后,用户再次请求租用。数据安全可使用传统的数据安全机 制进行实施。在获得访问文件的租用之后,客户机将对应的元数据包括LSO树高速缓存在客户 机的本地存储器内。之后,客户机可使用并操纵元数据的本地缓存版本及可使用元数据获 得对数据的使用。如本说明书别处详细所述,客户机不直接修改服务器102所保存的元数 据,而是将更新消息发送给服务器102以发出文件的元数据需要由服务器102进行修改的信号。参考图9,流程图200示出了客户机请求对文件的租用(与文件相关联的对象)以 在其上执行操作所执行的步骤。处理在第一步骤202开始,客户机请求对文件的租用。如本 说明书别处详细所述,请求租用的客户机包括指定访问类型(如读、写等)。在步骤202之 后是测试步骤204,确定请求是否已被授权。如果否,则控制从测试步骤204转到步骤206, 连同租用未被授权给客户机执行处理。在步骤206执行的特定处理例如可包括向请求使用 对应于租用的文件和/或等待时间量然后重试请求的客户机进程提供出错消息。应注意,对特定文件的租用在一时间不可用但随后在另一时间可能可用,因为,例如,在第一请求和 第二请求之间该租用由另一客户机释放。无论如何,任何适当的处理均可在步骤206执行。 在步骤206之后,处理结束。如果在测试步骤204确定在步骤202请求的租用已被授权,则控制从测试步骤204 转到步骤208,客户机使用其租用已授权的文件执行操作。在步骤208执行的操作包括读数 据和/或写数据。可在步骤208执行的不同类型处理在本说明书别处详细描述。在步骤208之后是测试步骤212,确定在步骤208执行的操作是否要求更新。在一 些情况下,客户机可能获得租用并执行不影响文件或基础文件对象的操作。例如,客户机可 能取得读文件的租用,及在步骤208执行的操作包括客户机读文件。在这种情况下,不需要 更新,因为文件及对应的文件对象(元数据、数据对象等)尚未变化。另一方面,如果客户 机获得写数据的租用,及在步骤208执行的操作包括将数据写到文件,则基础文件对象已 改变,需要向服务器102发送更新消息。如果在测试步骤212确定需要更新,则控制从测试 步骤212进行到步骤214,由客户机向服务器102发送更新消息。在步骤214之后,或如果不需要更新则在步骤212之后,控制进行到测试步骤216, 确定客户机关于该文件是否已完成。在一些情况下,客户机可能对文件执行少量操作,之后 在步骤216,客户机关于该文件完成。在其它情况下,客户机可能正执行一系列操作及可能 尚未完成所有操作。如果在测试步骤216确定关于该文件客户机尚未完成,则控制从测试步骤216进 行到测试步骤218,确定对该文件的租用是否已过期。应注意,租用可由服务器102提供给 客户机,特定到期时间和/或相关安全权标可能过期。此外,在某些情形下,服务器102可 能取消提供给客户机的租用。在任一情形下,租用不再有效。因此,如果在步骤218确定租 用已过期(和/或已被服务器102取消),则控制从测试步骤218转回到步骤202,再次请 求租用。否则,如果租用尚未过期,则控制从测试步骤218转回到步骤208执行另一迭代。如果在测试步骤216确定关于该文件客户机已完成,则控制从测试步骤216进行 到步骤222,客户机通过向服务器102发送指明客户机不再需要租用的消息而释放租用。一 旦客户机释放租用,其可用于另一客户机。在步骤222之后,处理结束。在这里的实施例中,数据文件对象可被指明为具有四种可能状态之一当前、失 效、不可改变或空。当前状态表明数据对象为最新及当前数据对象。失效状态表明数据无 效而是需要可能由一些其它进程进行更新。在一些情况下,失效状态仅可连同数据的镜像 副本使用(在本说明书别处详细描述)。数据可能失效,因为其是最近写的但尚未复制的其 它数据的镜像。不可改变的状态表明对应数据被写保护,可能与先前的复制(快照)操作 有关。空状态表明尚未对该数据分配实际的存储空间。参考图10,流程图240示出了客户机在获得对文件的读租用之后进行读操作所执 行的步骤。处理在第一测试步骤242开始,确定所读数据对象是否处于当前状态。如果否, 则控制从测试步骤242转到步骤244,确定所读数据对象是否处于不可改变状态。如果在步 骤244确定所读数据对象处于不可改变状态或如果在测试步骤242确定所读数据对象处于 当前状态,则控制转到步骤246,执行读操作。客户机通过将适当的数据文件对象标识符提 供给服务器102及提供适当的安全凭证读文件数据。因此,在步骤246执行的读操作包括 客户机向服务器102发送适当的请求并等待来自服务器102的结果。
在步骤246之后是测试步骤248,确定服务器102是否已返回表明数据文件对象不 可用的结果。在一些情况下,当前或不可改变的数据文件对象仍然可能变得不可用。例如, 保存数据文件对象的物理存储空间可能暂时断开连接和/或暂时忙于一些其它操作。如果 在测试步骤248确定数据文件对象可用,则控制从测试步骤248转到测试步骤252,确定读 操作是否成功。如果是,则控制从测试步骤252转到步骤254,读操作的结果被返回给使得 读操作进行的客户机的进程。结果可包括所读数据及状态指示符。在步骤254之后,处理 结束。如果在测试步骤252确定在步骤246进行的读操作不成功,则控制从测试步骤252 转到步骤256,执行出错处理。在步骤256进行的特定出错处理为随实施而变的处理,例如 可包括将出错报告给调用进程和/或可能重试读操作指定次数。在步骤256之后,处理结
束ο如果在测试步骤244确定所读数据对象不处于不可改变状态,则控制从测试步骤 244转到测试步骤258,确定数据对象是否处于失效状态。如果否,则根据测试步骤242、 244,258和排除过程,数据对象处于空状态。在这里的 实施例中,读处于空状态的数据对象 导致零值返回给调用进程。因此,如果在测试步骤258确定数据对象不处于失效状态,则控 制从测试步骤258转到步骤262,响应于读操作返回零值。在步骤262之后,处理结束。如果在测试步骤258确定数据文件对象处于失效状态,或如果在测试步骤248确 定数据文件对象不可用,则控制转到测试步骤264确定数据文件对象的备选版本是否可用 于读。如本说明书别处详细所述,由于镜像,可能同时存在同一数据文件对象的多个版本。 因此,如果所读数据文件对象处于失效状态或不可用,可能读数据文件对象的处于当前状 态的镜像副本。在步骤264执行的测试在本说明书别处详细描述。如果在测试步骤264确定数据文件对象的备选版本可用,则控制从测试步骤264 转到步骤266,选择数据文件对象的备选版本进行使用。在步骤266之后,控制转回到测试 步骤242以该备选数据文件对象进行另一迭代。如果在测试步骤264确定数据文件对象的备选版本不可用,则控制从测试步骤 264转到步骤268,客户机进程等待。在这里的实施例中,可能希望等待数据文件对象变成 当前状态和/或可用。在步骤268之后,控制转回到步骤242进行另一迭代。应注意,如果 没有备选数据文件对象可用,不是在步骤268等待,而是处理可从步骤264进行到步骤256 以执行出错处理。在其它实施例中,步骤268可能执行一定次数,如果数据文件对象仍不可 用或处于失效状态及没有备选数据文件对象,则在步骤256执行出错处理。参考图11,流程图280示出了客户机在获得对文件的写租用之后进行写操作所执 行的步骤。处理在第一测试步骤282开始,确定正对其进行写的数据文件对象是否处于不 可改变状态。如果是,则控制从步骤282转到步骤284,为数据文件对象分配新的实际存储 空间以避免盖写不可改变的数据。为数据对象分配新的存储空间可包括向服务器102提供 适当的请求。在步骤284之后,控制转回到步骤282以再次开始写操作的处理。如果在步骤282确定正对其进行写的数据文件对象不处于不可改变状态,则控制 从步骤282转到步骤286,确定正对其进行写的数据文件对象是否处于失效状态。如果否, 则控制从测试步骤286转到测试步骤288,确定正对其进行写的数据文件对象是否处于空 状态。如果是,则控制从步骤288转到步骤284,如上所述,分配新的物理存储空间。在步骤284之后,控制转回到步骤282以再次开始写操作的处理。如果在步骤288确定正对其进行写的数据文件对象不处于空状态,则控制从测试 步骤288转到步骤292,执行写操作。应注意,如果正对其进行写的数据文件对象不处于不 可改变状态、不处于失效状态及不处于空状态(因而处于当前状态),则达到步骤292。客 户机通过向服务器102提供适当的数据文件对象位置标识符及提供适当的安全凭证写文 件数据。因此,在步骤292执行的写操作包括客户机向服务器102发送适当的请求及等待 来自服务器的结果。在步骤292之后是测试步骤294,确定在步骤292执行的写操作是否成 功。如果 是,则控制从测试步骤294转到测试步骤296,确定是否有正对其进行写的数据文件对象的 同步镜像。例如,在步骤296执行的测试可包括确定文件LSO树中的数据文件对象的父节 点是否指明复制。如果否,则控制从测试步骤296转到步骤298,更新(消息)发送给服务 器102,指明写已被执行。在步骤298之后,处理结束。如果在测试步骤296确定有正对其进行写的数据文件对象的同步镜像,则控制从 测试步骤296转到步骤302,在步骤292写的数据也被写到同步镜像。在步骤302执行的处 理在本说明书别处详细描述。在步骤302之后,控制转到步骤298,如上所述,向服务器102 发送更新(消息)。在步骤298之后,处理结束。如果在测试步骤294确定在步骤292执行的写操作不成功,或者如果在测试步骤 286确定正对其进行写的数据文件对象处于失效状态,则控制转到步骤304,尝试对其进行 写的数据文件对象从LSO树的客户机本地副本删除。在流程图280所示的写操作结束时, 如果需要,客户机可将向数据对象进行写的困难通知给服务器102 (在步骤298),使得服务 器102可采取适当的行动。在步骤304之后是测试步骤306,确定数据的备选版本是否可用。如本说明书别处 详细所述,由于镜像,同一数据文件对象可能同时存在多个版本。因此,如果正对其进行写 操作的数据文件对象处于失效状态或不能对其进行写,则可能写到数据的镜像副本。在步 骤306进行的测试与在步骤264进行的测试类似并在本说明书别处详细描述。如果在测试 步骤306确定对应于数据文件对象的数据备选版本可用,则控制从测试步骤306转到步骤 308,选择备选版本以进行写。在步骤308之后,控制转回到测试步骤282以备选数据文件 对象进行另一迭代。如果在测试步骤306确定对应于数据文件对象的数据备选版本不可用,则控制从 测试步骤306转到步骤312执行出错处理。在步骤312执行的特定出错处理随实施而变并 可包括将出错报告给调用进程和/或可能在报告出错之前重试写操作指定次数。在步骤 312之后,控制转到步骤298,如上所述,向服务器102发送更新消息。在步骤298之后,处
理结束。参考图12,流程图320更详细地示出了图10的备选版本可用性测试步骤264和/ 或图11的备选版本可用性测试步骤306所执行的步骤。处理在第一测试步骤322开始,确 定文件是否具有任何镜像数据文件对象。在一些情况下,文件可能不使用镜像,在该情形下 将没有备选副本可用。因此,如果在测试步骤322确定文件不具有任何镜像数据文件对象, 则控制从测试步骤322转到步骤324,返回表明没有备选副本可用的值。在步骤324之后, 处理结束。
如果在测试步骤322确定镜像副本可用,则控制从测试步骤322转到步骤326,使 指针指向第一镜像数据文件对象。对于在此所述的处理,指针可用于对镜像数据文件对象 从头到尾进行迭代以查找可使用的数据文件对象。在步骤326之后是测试步骤328,确定指 针是否越过镜像数据文件对象的列表的末端(已对所有镜像数据文件对象进行迭代)。如 果是,则控制从测试步骤328进行到步骤324,如上所述,返回表明没有备选版本可用的值。
如果在测试步骤328确定指针未越过镜像数据文件对象的列表的末端,则控制从 测试步骤328转到测试步骤332,确定指针是否指向处于失效状态的数据文件对象。如果 是,则控制从测试步骤332转到步骤334,使指针指向将要检查的下一数据文件对象。在步 骤334之后,控制转回到步骤328,如上所述,进行另一迭代。如果在测试步骤332确定指针 没有指向处于失效状态的数据文件对象,则控制从测试步骤332转到步骤336,指针所指向 的数据文件对象返回为可由调用进程使用的备选数据文件对象。在步骤336之后,处理结 束ο参考图13,流程图350更详细地示出了图11的流程图280的步骤302所执行的 操作,其中已写的数据被复制到多个同步镜像(镜像数据文件对象)。处理在第一步骤352 开始,用于对镜像数据文件对象从头到尾进行迭代的指针设定为指向第一镜像数据文件对 象。在步骤352之后是测试步骤354,确定用于对镜像数据文件对象从头到尾进行迭代的指 针是否越过末端(即是否所有镜像数据文件对象均已被处理)。如果是,则处理结束。否 贝U,控制从测试步骤354转到测试步骤356,确定指针所指向的镜像数据文件对象的状态是 否表明镜像数据文件对象处于当前状态。如果否,则控制从测试步骤356进行到测试步骤 358,确定指针所指向的镜像数据文件对象的状态是否表明镜像数据文件对象处于失效状 态。如果是,则控制从测试步骤358进行到步骤362,从LSO树的客户机本地副本删除镜像 数据文件对象。在这里的实施例中,同步镜像数据文件对象不应处于失效状态,如果出现这 种情况,则其可表明出错情况。因此,在步骤362之后是步骤364,关于失效镜像的信息被发 送给服务器102,其响应于此进行恢复处理。应注意,如果镜像数据文件对象既不处于失效状态也不处于当前状态,则镜像数 据文件对象或处于空状态或处于不可改变状态。在任一情形下,需要为将要向其写数据的 数据文件对象分配新的空间。因此,如果在测试步骤358确定数据文件对象不处于失效状 态,则控制从测试步骤358转到步骤366,为镜像数据文件对象分配新空间。在步骤366之 后是步骤368,正跨同步镜像数据文件对象进行复制的数据被写到用于对镜像数据文件对 象从头到尾进行迭代的指针所指向的镜像数据文件对象。应注意,如果确定镜像数据文件 对象处于当前状态,也可从测试步骤356达到步骤368。在步骤368之后是步骤372,用于对 镜像数据文件对象从头到尾进行迭代的指针被使得指向下一镜像数据文件对象。应注意, 步骤372也可在步骤364之后达到。在步骤372之后,控制转回到测试步骤354进行另一 迭代。在此所述的系统可使用对象标识符访问文件对象。在这里的实施例中,保存在服 务器102当中的每一文件对象可被分配唯一的对象标识符,其识别每一文件对象并使每一 文件对象区别于系统中的其它文件对象。然而,许多应用程序使用文件命名结构和/或分 层目录访问文件及其中的数据。例如,文件名“C: \ABC\DEF\GHI.doc”表明称为“GHI.doc” 的文件保存在子目录“DEF”中,子目录“DEF”保存在位于根卷“C”上的另一目录“ABC”中。嵌套目录结构可通过将目录实施为保存在其它目录中的特殊文件而进行提供。在上面给出 的例子中,子目录“DEF”可实施为保存在目录“ABC”中的文件。在此所述的系统可通过将传统文件名翻译为文件对象标识符而向应用程序呈现 传统命名结构和目录层次。这样的翻译服务可由其它服务在文件操作时使用。在这里的实 施例中,每一目录可包括将文件名和子目录名与文件对象标识符相关联的表。该系统可一 次检查一个目录并遍历子目录,直到达到目标文件为止。参考图14,流程图380示出了提供文件名翻译服务(文件名服务)时所执行的步骤,该服务将传统分层文件名翻译为文件对象标识符。文件名服务可将传统分层文件名作 为输入进行接收并可返回对象标识符(或在一些情况下,出错)。处理在第一步骤382开 始,文件名服务接收文件名,如传统分层文件名。在步骤382之后是测试步骤384,确定文 件名的句法是否对。检查分层文件名的句法众所周知,例如包括检查只使用了适当的字符。 如果在测试步骤384确定句法不对,则控制从测试步骤384转到步骤386,出错指示符(出 错消息)返回给调用进程。在步骤386之后,处理结束。如果在测试步骤384确定所提供名称的句法对,则控制从测试步骤384转到步骤 388,读根目录。在这里的实施例中,所有文件名路径在用于服务器102中保存的所有文件 对象的单一共同根目录处开始。在其它实施例中,可以有多个根目录,其中特定根目录的说 明可通过任何适当的手段提供,如使用卷标识符、明确选择特定根目录等。在步骤388之后是测试步骤392,确定目标文件(或作为文件名路径的一部分的子 目录)是否在已读的目录中。如果否,则控制从测试步骤392转到步骤386,如上所述,返回 出错。在一些实施例中,源自步骤392的测试的未找到文件出错不同于源自步骤384的测 试的句法出错。如果确定目标文件或作为文件名路径的一部分的子目录在刚读的目录中,则控制 从测试步骤392转到测试步骤394,确定刚读的目录是否包含目标文件(与包含作为文件名 路径的一部分的子目录对照)。如果是,则控制从测试步骤394转到步骤396,将目标文件 对象的对象标识符返回给调用进程。在步骤396之后,处理结束。如果在测试步骤394确定刚读的目录包含作为文件名路径的一部分的子目录,则 控制从测试步骤394转到步骤398,读该子目录,使得该子目录变成受检查的目录。有效地, 步骤398的处理遍历子目录链以最终达到目标文件。在步骤398之后,控制转回到步骤392, 如上所述,进行下一迭代。参考图15,该图将客户机104示作包括用户存储地址空间和内核存储地址空间。 在这里的实施例中,用户存储地址空间为通常由用户应用程序及有关进程使用的存储空 间,而内核存储地址空间为通常仅可由系统进程访问的存储空间,系统进程如操作系统内 核和有关进程。如本说明书别处详细所述,可能使在此所述的系统的不同部分在用户存储 空间和/或内核存储空间中驻留和运行。此外,对于客户机104,可能具有多个不同的、访问 服务器处的文件对象的接口。在图15中,客户机104被示为包括用户存储地址空间中的应用程序及内核存储地 址空间中的虚拟文件系统(VFS)、文件名服务、内核I/O驱动、布局管理器和通信接口。VFS 为更具体文件系统之上的抽象层。VFS的目的是使客户机应用程序能以一致的方式访问不 同类型的具体文件系统。VFS使客户机104上运行的应用程序能访问服务器102上的文件对象,而应用程序无需理解基础文件系统的细节。VFS可通过将应用程序的文件系统调用翻 译为文件对象操控而以传统方式实施,反之亦然。例如,VFS可将文件系统调用如打开、读、 写、关闭等翻译为文件对象调用如创建对象、删除对象等。VFS可使用本说明书别处描述的文件名服务将文件名翻译为对象标识符。内核I/ 0驱动提供到低级对象级I/O操作的接口。内核I/O驱动可在Linux I/O驱动之后建模并 与之类似。布局管理器可对对应于文件的LSO树执行一些处理,如本说明书别处详细所述。 通信接口在客户机104和服务器102之间提供通信。通信接口可使用任何适当的通信机制 实施。例如,如果客户机104经因特网连接与服务器102通信,则通信接口可使用TCP/IP 以有助于服务器102和客户机104之间的通信。图15的应用程序可对应于图3的客户机软件124。图15的VFS可对应于图3的 接口 126-128之一。图15的文件名服务、内核I/O驱动、布局管理器和通信接口可对应于 图3的服务器操作软件122。图3和其它图的组成之间也可发现类似的关联。参考图16,流程图410示出了 VFS连同客户机104上运行的应用程序提供文件服 务所执行的步骤。处理在第一步骤412开始,应用程序请求的文件系统操作可被翻译为一 个或多个对象操作。例如,打开文件以进行读的文件操作可转换为包括获得对象租用以进 行读的对象操作,如本说明书别处所述。在步骤412之后是步骤414,VFS使用上面结合图 14所述的文件名服务将文件名翻译为对象标识符。之后的操作可使用在步骤414获得的对 象标识符进行。在步骤414之后是测试步骤416,驱动所请求的操作是否要求LSO树。如本说明书 别处所述,操作如读、写等使用对应于文件对象的LSO树。然而,一些可能的文件操作可能 不要求访问对应的LSO树。如果在测试步骤416确定需要LSO树,则控制从测试步骤416转 到步骤418,VFS访问LSO管理器以执行必要的操作。例如,对于读操作,LSO管理器可执行 如图10的流程图240中所示的处理。在步骤418之后,或者如果不需要LSO而在步骤416 之后,是步骤422,操作转到低级内核I/O驱动(如经一个或多个适当的API)。在执行所请 求的操作时,内核I/O驱动使用通信模块在客户机104和服务器102之间通信。在客户机 104上运行的应用程序已从服务器102请求数据和/或其它信息的情形下,数据和/或信息 可通过通信接口、内核I/O驱动等倒退传给VFS并最终传给应用程序。参考图17,客户机104被示为具有应用程序、文件名服务、用户级I/O驱动和布局 管理器,所有这些均提供在用户存储地址空间中。在图15中所示和上面所述的VFS的功能 可改为由链接到应用程序的库例程执行,因而是应用程序的一部分。这些例程将提供结合 图16所述的功能。因此,是应用程序使用文件名服务和对用户级I/O驱动(象内核I/O驱 动)及布局管理器进行调用。通信接口仍保留在内核存储地址空间中。应注意,对于图15的结构,修改通过修改系统进程(操作系统)实现,这由于几个 原因而不利。例如,如果客户机104为多用户计算系统,则修改操作系统可能包括重启动整 个系统因而中断所有用户。相反,图17的结构有利,因为其使能在应用程序/用户存储地 址空间中修改系统,使得客户机104的操作系统不需要进行修改。然而,图17的结构不使 用VFS,因而不能获得图15中的VFS提供的、应用程序与文件系统的有利分隔。参考图18,客户机104被示为在用户存储地址空间中具有应用程序,其通过内核 存储地址空间中的VFS访问文件对象,如同图15中所示那样。然而,文件名服务、I/O驱动和布局管理器均驻留在用户存储地址空间中,如同图17中所示的那样。VFS通过内核存储 地址空间和用户存储地址空间之间的网桥与用户存储地址空间中的组成部分通信,网桥如 FUSE(或类似的)接口。网桥使文件系统组成部分将提供在用户存储地址空间中而不是内 核存储地址空间中,同时仍将VFS保留在内核存储地址空间中。因此,图18所示的结构提 供使用VFS的优点,如图15的结构所示,及提供使文件系统组成部分在用户存储地址空间 中的优点,如图17的结构所示。在一些情况下,可能使客户机104的用户存储地址空间中的应用程序和/或其它 处理直接访问文件对象,而不是通过象VFS和/或由用户可链接库提供的等效功能的文件 服务层(如图17中所示的结构)。直接访问文件对象可包括调用创建对象、读对象、修改 对象、删除对象等的例程。在这种情况下,应用程序将需要知道怎样解释和/或操控对象数 据,这可能不总是合乎需要。例如,通过VFS访问文件对象的应用程序可能不需要考虑(甚 或了解)LS0树的结构,而直接访问对象的应用程序需要使用LSO树。另一方面,消除文件 服务层可为要不然不可用的优化提供机会。应注意,由于服务器102与客户机104-106交 换对象信息/操作,服务器102可能不需要或不能够在客户机104-106上使用文件系统接 口(如VFS的文件服务)的应用程序和非这样的应用程序之间区分。参考图19,客户机104被示为包括用户存储地址空间中的应用程序和内核存储地 址空间中的内核I/O驱动、布局管理器及文件名服务。图19中所示的结构与图15中所示 的类似,但未使用VFS。在图19中所示的结构中,应用 程序可直接访问文件名服务、内核I/ 0驱动及布局管理器。内核存储地址空间中的通信接口象其它结构中一样与服务器102通 信。图19中所示的直接访问使应用程序能操控文件对象(例如经适当的API),而VFS(或 类似)的访问使应用程序能通过对VFS的文件系统调用而间接访问文件对象。参考图20,客户机104被示为具有应用程序、用户级I/O驱动、布局管理器和文件 名服务,所有这些均提供在用户存储地址空间中。图20中所示的结构与图17中所示的类 似。然而,如前面提出的那样,图17的结构包括链接到应用程序因而成为其一部分的文件 服务库。相反,在图20的结构中,应用程序不链接到具有广泛文件服务的库内。而是,与图 19所示结构的应用程序类似,图20的结构中的应用程序使用最小文件服务,改为使用用户 级I/O驱动、布局管理器、及文件名服务(如果需要文件名翻译)直接使用和操作文件对 象。参考图21,客户机104被示为具有用户存储地址空间中的应用程序和内核存储 地址空间中的网桥。文件名服务、用户级I/O驱动和布局管理器提供在用户存储地址空间 中。然而,与图20的结构不同,应用程序不直接调用用户存储地址空间中的文件系统组成 部分。而是,应用程序通过网桥间接调用文件系统组成部分。同图18中所示的结构一样,图 21的结构有利地查找用户存储地址空间中的文件系统组成部分,同时在应用程序和文件系 统组成部分之间提供内核存储地址空间层。参考图22,客户机104被示为具有用户存储地址空间中的应用程序和内核存储地 址空间中的环球网服务模块。应用程序可以是环球网服务器应用程序或处理与环球网的通 信的任何应用程序。在这里的实施例中,应用程序使能与客户机104通信,其用作通过环球 网连接访问客户机104的其它计算设备(未示出)的环球网服务器。图22中所示的结构以与其它结构提供的文件服务和/或文件对象访问类似的方式提供环球网服务。然而,环球网服务经环球网数据协议如HTML接收请求/数据,及还按 与用于请求/数据的协议相同或不同的环球网数据协议提供响应/数据。环球网服务处理 的操作可包括对象级操作如创建对象、删除对象、读对象、修改对象、修改对象元数据等。还 可能经环球网服务提供更多的文件系统级操作,通过包括本说明书别处所述的文件服务的 至少部分功能,用环球网服务打开文件、从文件读数据等。环球网服务可向其它计算设备呈 现传统的众所周知的环球网服务协议如REST或SOAP,或可提供任何其它适当的协议。参考图23,客户机104被示为在用户存储地址空间中具有应用程序、环球网服务、用户级I/O驱动和布局管理器。应用程序可包括使能与客户机104通信的环球网连接,其 用作通过环球网连接访问客户机104的其它计算设备(未示出)的环球网服务器。图23 的结构与图17和图20的类似。图23所示的结构相比于图22中所示结构的优点为图23 中所示结构的变化不要求重配置内核存储地址空间进程。参考图24,客户机104被示为在用户存储地址空间中具有应用程序、环球网服务、 用户级I/O驱动和布局管理器。应用程序可包括使能与客户机104通信的环球网连接,其 用作通过环球网连接访问客户机104的其它计算设备(未示出)的环球网服务器。网桥提 供在内核存储地址空间中。图24的结构具有与图23中所示结构类似的优点,但还具有本 说明书别处描述的因提供网桥而提供的优点。参考图25,客户机104被示为在用户存储地址空间中具有多个应用程序,每一应 用程序可使用不同的接口访问服务器102的文件对象。图25中所示的每一应用程序意于表 示一个或多个应用程序。因此,APPl可表示使用环球网服务接口访问服务器102处的文件 对象的一个或多个应用程序。APPl应用程序可包括使能与客户机104通信的环球网连接, 其用作通过环球网连接访问客户机104的其它计算设备(未示出)的环球网服务器。APP2 可表示使用VFS访问服务器102处的文件对象的一个或多个应用程序,及APP3可表示直接 对服务器102处的文件对象进行操作的一个或多个应用程序。不同的接口可同时在客户机 104处运行。应注意,包括所示结构的结构的其它组合也是可能的,使得客户机104可同时向 其上的应用程序呈现不同的接口。例如,可能组合图15、19和22中所示的结构和/或组合 图17、20和23的结构。其它组合,包括只有两个所示结构的组合,也是可能的。如果1)发 出请求的客户机对文件对象无论进行哪一所请求的操作均具有适当的授权;及2)与任何 先前的请求没有冲突,则服务器102将文件对象提供给客户机104。例如,在任一次只有一 个客户机被允许向对象进行写的系统中,在客户机104-106中的另一客户机正修改对象的 同时,服务器102将不允许客户机104-106之一修改特定对象。参考图26,服务器102被更详细地示为包括一个或多个策略管理服务器402、一 个或多个安全管理服务器403、一个或多个审计服务器404、一个或多个元数据服务器405、 一个或多个资源管理服务器406、一个或多个数据存储服务器407、和一个或多个元数据定 位服务器408。服务器402-408中的每一个可实施为能够提供在此所述的功能的一个或多 个单式处理装置。对于在此的讨论,提及服务器时应理解为指一个或多个服务器。服务器 402-408可使用任何适当的数据通信机制如TCP/IP互连,及可使用任何适当的数据通信机 制如TCP/IP链接到客户机104-106 (未在图26中示出)。服务器102可包括有助于系统管理的用户管理接口 412。用户管理接口 412与策略管理服务器402、安全管理服务器403和审计服务器404交换数据以影响服务器102怎样 与客户机104-106和对应的用户交互作用。数据可通过用户管理接口 412以多种方式中的 任何方式提供,包括传统的交互计算机屏幕输入和数据文件输入(如具有用户管理命令的 文本文件)。数据可包括使用户类别和存储参数相关联的信息,如服务质量(QOS) ,RAID保 护水平、镜像的数量和地理位置等。例如,管理员可通过用户管理接口 412指定特定类的用 户(属于特定分组的用户)将数据文件对象保存在具有特定RAID水平保护的存储设备上。服务器102还包括链接到数据存储服务器407的物理存储器414。尽管物理存储器 414在图26中被示为单一制品,但可以有任何数量的、地理上分散的物理存储单元。此外, 可以有不同类型的、具有不同能力的物理存储单元。因此,物理存储器414 一般地表示由数 据存储服务器407管理的系统的物理数据存储器的一个或多个范例,如下面详细所述。数据修改,包括修改元数据文件对象和/或影响元数据文件对象的处理/创建的 策略,要求适当的安全凭证。因此,安全管理服务器403可限制/抑制某些管理员(用户) 针对多类用户修改和/或创建策略的能力。参考图27,流程图430示出了用户管理接口 412获得和使用用于访问策略管理服 务器402的安全凭证时所执行的步骤。处理在第一步骤432开始,用户管理接口 412向安 全管理服务器403发送请求以为将由用户管理接口 412执行的操作获得权标(或其它适当 的安全凭证)。在步骤432之后是测试步骤434,确定权标是否已授权(提供)。在一些情 况下,安全管理服务器403可能根本不发出安全权标。例如,如果管理员(用户)没有足够 的权力执行所需功能。如果安全权标未被授权,则控制从步骤434转到步骤436,执行与安全权标未被授 权有关的处理。在步骤436执行的操作可包括通过安全管理接口 412向管理员(用户)提 供表明管理员没有足够权力执行所需操作的消息。在步骤436之后,处理结束。如果在测试步骤434确定安全权标已由安全管理服务器403授权(提供),则控 制从测试步骤434转到步骤438,用户管理接口 412将安全权标及用户id信息提供给策略 管理服务器402。当然,表明所需操作/修改的信息也可在步骤438提供。在步骤438之 后是测试步骤442,确定策略管理服务器402是否已允许所请求的操作。应注意,在一些情 况下,即使安全管理服务器403已提供安全权标,策略管理服务器402也可能不允许特定操 作。例如,如果用户id和安全权标指示的用户不匹配和/或如果所请求的操作和安全权标 指示的操作不匹配。如果在测试步骤442确定所请求的操作未被允许,则控制从测试步骤442转到步 骤436,如上所述,执行处理以表明有安全问题。在步骤436执行的处理可包括向管理员(用 户)提供表明由于安全权力不足从而操作不能被执行的消息。当步骤436是从步骤442达 到时,所提供的消息可不同于当步骤436是从步骤434达到时提供的消息。如果在测试步骤442确定允许所请求的操作,则控制从测试步骤442转到步骤 444,执行操作。在步骤444执行操作可包括修改策略数据,如本说明书别处详细所述。在 步骤444之后,处理结束。因此,访问策略管理服务器402的管理员(用户)将首先向安全管理服务器403 提供标识信息,安全管理服务器返回安全权标(可能具有期满时间)。管理员将权标和标 识信息呈现给策略管理服务器402,其基于权标和标识信息决定授权或拒绝访问。应注意,图27的流程图430所示的安全机制可扩展到连同访问任何服务器402-408和/或其它数 据使用。例如,客户机104-106之一可通过在执行操作之前首先从安全管理服务器403请 求安全权标而获得/修改文件对象,前述操作包括关于文件对象的操作。因此,对于在此的 讨论,可以假定,访问文件对象、服务器等包括如图27中所示的适当安全程序。策略管理服务器402处理文件对象的放置和保护。管理员(用户)可通过用户管 理接口 412输入不同的策略模板,其可分配给不同的客户机104-106、不同的用户、不同类 的用户、或任何其它适当的分组。例如,策略模板可表明,对于特定组的用户,无论何时创建 新文件,均将创建地理上远离初始数据集至少一定距离的镜像。在这种情况下,当该组的第 一用户在纽约创建初始数据集时,可自动在洛杉矶创建镜像;同时当第二用户在洛杉矶创 建初始数据集时,可在纽约创建镜像。审计服务器404可用于提供系统审计能力。用户可通过用户管理接口 412与审计 服务器404通信。用户可指明将要审计(追踪)的信息的类型。资源管理服务器406追踪可用系统资源。在一些情况下,资源管 理服务器406可 在建立策略模板和/或分配策略模板时与策略管理服务器402交互作用。在一些情况下, 用户可能试图构建如果分配给一组则不可能实现的策略模板。例如,如果所有物理数据存 储器位于单一地理位置,则具有指明新文件应包括地理上远离初始数据集的镜像的策略模 板将不合适。资源管理服务器406从系统的其它组成部分接收信息以能够追踪哪些资源可用。 无论资源在何时增加到系统,该资源或另一组成部分将该信息报告给资源管理服务器406。 例如,如果新的物理存储器增加到系统,则新的物理存储器本身或对应的数据存储服务器 407向资源管理服务器406发送消息。类似地,如果资源变满(如物理磁盘满了)或被从 系统除去(计划的除去或非计划的资源故障),则信息提供给资源管理服务器406。在这里 的实施例中,系统资源可对应于物理存储器414和/或管理物理存储器414的数据服务器 407的部分。参考图28,资源表460被示为包括多个表项462-464,每一表项对应于特定的存储 资源。尽管只示出了三个表项,但表460可包含任何数量的表项。表460可使用任何适当 的技术实施,包括阵列、链表等。每一表项462-464包括识别对应于该表项的特定资源的资源字段。在这里的实 施例中,每一表项462-464可对应于特定数据存储服务器407和/或其部分。每一表项 462-464包括与相应资源的状态对应的状态字段。在这里的实施例中,状态字段可表明资源 联机(可用)或脱机(不可用)。状态字段还可表明已使用资源空间的百分比,及可能指明 任何性能降级。每一表项462-464还可包括能力字段,其指明对应资源的能力。在这里的实施例 中,当资源表示存储区时,能力字段可指明对应存储区的特定能力。特定能力可包括资源为 绿色(例如通过在不使用时使磁盘转速降低而低能使用)、能够重复数据删除(仅保留单一 数据副本,要不然重复)、能够各种RAID配置等。能力字段可指明任何适当的数据存储能 力。参考图29,流程图480示出了资源管理服务器406在维护关于系统资源的信息时 的操作。处理在第一步骤482开始,资源管理服务器406用关于资源的信息初始化。在步骤482执行的初始化处理可采取任何形式,包括加载固定的初始可用的资源表、使资源管理服 务器406轮询系统资源等。在步骤482之后是测试步骤484,资源管理服务器406等待将要提供的新信息。在 这里的实施例中,在初始化之后,资源管理服务器406等待从其它系统组成部分接收信息。 在其它实施例中,可能使资源管理服务器406定期轮询系统组成以看是否已发生变化。如 果在测试步骤484确定没有新信息可用,控制循环回到测试步骤484以继续轮询。一旦在测试步骤484确定新信息可用,则控制从测试步骤484转到测试步骤486, 确定新信息是否与增加到系统的新资源有关。如果是,则控制从测试步骤486转到步骤 488,向由资源管理服务器406管理的资源表添加新表项。在步骤488之后,控制转回到步 骤484以继续等待新信息。如果在测试步骤486确定所接收的资源信息与新资源无关(因而与现有资源的变 化有关),则控制从步骤486转到步骤492,查找资源表中的现有表项。在步骤492之后是 测试步骤494,确定是否正针对修改的资源改变能力。资源的能力可在许多不同的情形下改 变。例如,资源可能降级并失去能力,资源可能被修改/增强并获得能力,资源的本地管理 器可决定使某些能力可用/不可用等。如果在步骤494确定资源的能力已改变,则控制从测试步骤494转到步骤496,改 变所修改资源的能力字段。否则,控制从测试步骤494转到步骤498,改变所修改资源的状 态字段(如资源满、资源脱机、资源联机等)。在步骤496或498之后,控制转回到步骤484, 如上所述,进行另一迭代。应注意,资源管理服务器406可表示多个分开的计算设备,这些计算设备可遍布 系统分散。此外,每一分开的计算设备可保留其自己的资源表副本。用于实施资源管理服 务器406的分开的计算设备可以也可不共享资源信息及可以也可不接收相同的资源状态 消息。在信息共享和/或状态消息的接收不理想的情形下,每一计算设备可具有稍微不同 的资源表版本,及可能没有一个资源表版本能反映系统的所有资源的确切状态的完全准确 的描述。物理存储器414可使用相对便宜的现成大量制造的存储器硬件提供。在这里的实 施例中,至少部分物理存储器414可使用串行ATA磁盘驱动器实施,其可从多个制造商如 Seagate和Western Digital获得。如本说明书别处所述,物理存储器可以地理上分散。然 而,物理存储器的每一部分可由至少一数据存储服务器407管理/控制,其可使用物理存储 器的对应部分本地的传统计算设备实施。在这里的实施例中,数据存储服务器407可将OSD标准接口呈现给系统。因此,服 务器102和/或客户机104-106可通过数据存储服务器407使用OSD调用访问物理存储器 414,及可根据OSD协议接收信息/数据。此外,数据存储服务器407可处理物理存储器414 的不同部分的能力和状态的管理/记录。因此,例如,当物理存储器414的一部分由数据存 储服务器407的特定服务器管理时,该特定服务器可向资源管理服务器406发送指明新状 态的消息。参考图30,流程图510示出了资源管理服务器406在对查询具有特定能力的资源 进行服务时(即查找具有特定能力的资源)所执行的步骤。处理在第一步骤512开始,用 于对资源表的每一表项从头到尾进行迭代的指针被设定为指向第一表项。在步骤512之后是测试步骤514,确定指针指向是否越过表的末端(即所有表项均已被检查)。如果是,则 控制从测试步骤514转到步骤516,由资源管理服务器406返回表明对所请求的能力没有匹 配的结果。在步骤516之后,处理结束。如果在测试步骤514确定用于对表项从头到尾进行迭代的指针没有越过表的末 端,则控制从测试步骤514转到测试步骤518,确定指针当前所指示的表项是否匹配所请求 的能力。应注意,在步骤518的测试可包括检查资源的状态以确保资源联机及未满,否则不 可使用。如果在步骤518确定指针所指示的资源具有所请求的能力,则控制从测试步骤518 转到步骤522,资源管理服务器406返回指出匹配资源的指示符。在步骤522之后,处理结 束ο如果在步骤518确定指针所指示的资源不具有所请求的能力(或脱机、满等),则 控制从测试步骤518转到步骤524,递增指针。在步骤524之后,控制转回到步骤514,如上 所述,进行下一迭代。作为文件的元数据对象的一部分的LSO树由元数据服务器405创建、保持和操控。 元数据服务器205在操控文件对象时处理来自客户机104-106的更新(如在图9的流程图 200的步骤214、在图11的流程图280的步骤298等)。除了修改LSO树之外,元数据服务 器205还可处理可能需要连同更新执行的任何操作。元数据服务器205还处理针对文件对 象所获得的租用。参考图31,流程图550示出了元数据服务器205在服务于文件租用请求时所执行 的步骤。如本说明书别处所述,租用可由客户机104-106之一请求。然而,也可能由服务器 102的组成部分之一请求租用。甚至可能由元数据服务器405之一请求租用。元数据服务 器405之一可在文件维护(如修复镜像)时请求租用,如本说明书别处详细所述。在这里的 实施例中,租用由元数据服务器405保存在指明已获得租用的实体、租用类型(如读或写) 及可能指明期满时间的表中。此外,如本说明书别处所述,可能对文件中的逻辑地址范围执行租用操作,例如使 得可对文件的逻辑地址A-B执行一组租用操作,而对同一文件的逻辑地址C-D单独执行另 一组租用操作,其中A-B不与C-D重叠。在一次只发出一个写租用的系统中,还可能一个实 体获得对文件的A-B部分的写租用,而另一独立的实体同时获得对同一文件的C-D部分的 写租用。因此,对于在此的讨论,在适当情形下,提及文件时应理解为包括文件的非重叠部 分。处理在第一测试步骤552开始,确定所请求的租用是否可用。步骤552的测试确 定请求者是否具有适当的安全凭证、是否存在对应的数据文件等。同样,如本说明书别处详 细所述,在某些情形下,租用可被故意使得不可用。如果在测试步骤552确定租用不可用, 则控制从测试步骤552转到步骤554,将失败指示符返回给请求者。失败指示符可包括失败 的原因(如不正确的安全凭证、文件不存在等)。在步骤554之后,处理结束。如果在测试步骤552确定所请求的租用可用,则控制从步骤552转到测试步骤 556,确定租用请求是否用于将数据写到对应于租用的文件。在这里的实施例中,多个用户 (如客户机、服务器)可同时从同一文件读,但只有一个用户可向同一文件写。因此,如果 在测试步骤556确定用户不是请求写访问,则控制从测试步骤556转到步骤558,元数据服 务器405返回租用(即返回适当的、对应于授权租用的指示符/标识符)。在这里的实施例中,租用还可被提供预定的期满时间,在其之后租用不再有效。租用期满和租用取消将在 本说明书别处详细描述。此外,租用可连同仅允许所请求操作(如只读、读写等)的安全凭 证(可能由安全管理服务器403产生)一起提供。安全凭证也可在租用期满时过期,以加 强租用期满。在步骤558之后,处理结束。如果在测试步骤556确定用户是请求写租用,则控制从测试步骤558转到测试步 骤562,确定另一用户是否已经获得对同一文件的写租用。如本说明书别处所述,对一个文 件一次只授权一个写租用。如果在测试步骤562确定另一写租用已被授权,则控制从测试 步骤562转到步骤564,返回失败指示符。如同步骤562 —样,步骤564返回的失败指示符 可包括识别失败性质的信息。在步骤564之后,处理结束。如果在测试步骤562确定尚未 授权另一写租用,则控制从测试步骤562转到步骤566,元数据服务器405返回租用,可能连 同截止时间一起。在步骤566之后,处理结束。如本说明书别处所述,在一些情形下,可能希望发出具有期满日期的租用。在这里 的实施例中,特定元数据服务器405可负责特定文件及相应文件对象。负责的元数据服务 器405发出对文件及相应文件对象的租用并处理租用期满处理。租用信息可由负责的元数 据服务器405保存在适当的数据结构中(如表、链表等)。此外,可能使一个以上的元数据 服务器405负责特定文件或特定的一组文件,其中元数据服务器405之一为主服务器,其它 负责的元数据服务器为辅助服务器,其保存适当的信息但不提供服务,除非主服务器失效 。参考图32,流程图580示出了负责的元数据服务器405在监视租用期满时所执行 的步骤。处理在第一步骤582开始,对服务器所负责的所有租用(文件和租用组合)从头 到尾进行迭代的指针被使得执行第一租用。在步骤582之后是测试步骤584,确定租用是否 已期满。在步骤584执行的处理可使用任何适当的技术,包括将租用期满时间与当前时间 进行比较。如果在步骤584确定租用已期满,则控制从步骤584转到步骤586,取消租用。 步骤586的取消租用将在本说明书别处详细描述。在步骤586之后,或者如果租用尚未期满而在步骤584之后,是步骤588,递增对 服务器所负责的文件和租用从头到尾进行迭代的指针。在步骤588之后是测试步骤592, 确定指针是否越过末端(即所有文件和相应租用均已被处理)。如果是,则控制从步骤592 转回到步骤582,如上所述,将指针复位为指向第一租用并开始另一遍检查期满租用。如果 在步骤592确定指针未越过末端,则控制从测试步骤592转回到步骤584,如上所述,进行另 一迭代。在这里的实施例中,系统可提供关-开一致性,其中数据一致性在实体已释放写 访问之后提供。换言之,当没有实体对文件具有有效的写租用时对文件提供一致性。相反, 当实体具有有效的写租用时,可能不对读数据的任何实体保证数据的状态。在这里所述的 系统中,租用可在期满之后取消或可因其它原因取消。取消租用可提高正由其它实体访问 的数据的一致性。参考图33,流程图610示出了特定元数据服务器405取消租用时所执行的步骤。 处理开始于第一步骤612,向占用租用的实体(如客户机104-106之一)发送消息以向该实 体报警租用正被取消。如本说明书别处所述,任何适当的实体均可占用租用,包括客户机 104-106、其它服务器、甚或元数据服务器405之一。在一些实施例中,步骤612可包括确保 消息由实体接收(如等待确认),而在其它实施例中,简单地发送消息并假定消息由任何操作接受者接收。当然,在等待确认的系统中,可能有超时和/或尝试次数的限制。在步骤612之后是步骤614,调节适当的表以反映已取消的租用不再未完成。连同 租用使用的表和其它数据结构在本说明书别处详细描述。在步骤614之后是测试步骤616, 确定所取消的租用是否为写租用(允许写数据的租用)。如本说明书别处所述,系统可提供 关-开一致性,使得当写租用被释放时,数据读被使得一致。这可通过在写租用被取消时取 消所有读租用而使得容易。取消其读租用的实体可在取消之后重新获得读租用之前转储清 除它们的内部缓冲器。应注意,取消其写租用的实体也可响应于接收到取消通知通过将未 保存的数据(经数据存储服务器407)写到物理存储器414而转储清除缓冲器。因此,在一 些实施例中,接收写租用取消消息的实体可被提供一定量的时间,在该时间内将任何未保 存的数据写到物理存储器。为此,连同写租用提供的安全凭证可被设定为在写租用期满之 后的预定时间量才期满。如果在步骤616确定正被取消的租用不是写租用,则处理结束。否则,控制从测试 步骤616转到步骤618,用于对正取消其写租用的文件的所有未完成租用从头到尾进行迭 代的指针被使得指向第一未完成租用。在步骤618之后是测试步骤622,确定指针是否越过 末端(即所有未完成租用均已被取消)。如果是,则处理结束。否则,控制从测试步骤622 转到步骤624,取消租用。租用可通过调用流程图610所示的处理进行取消,因而可能递归。 在步骤624之后是步骤626,递增用于对具有未完成文件租用的实体从头到尾进行迭代的 指针。在步骤626之后,控制转回到步骤622进行另一迭代。参考图34,表630被示为包括用于追踪特定元数据服务器405所负责文件的多个 表项。当然,其它适当的数据结构也可用于代替表630,如链表、双向链表等。元数据服务器 405中的每一主服务器和元数据服务器405的任何相应辅助服务器可包含对应于特定元数 据服务器405所负责的具体文件集的数据。因此,例如,元数据服务器405中的第一主服务 器可包含针对第一主元数据服务器所负责的第一文件集的表版本,而元数据服务器405中 的第二主服务器可包含针对第二主元数据服务器所负责的第二(不同)文件集的完全不同 的表版本。表630的每一表项包括文件标识符字段(FID),其唯一地识别对应于表项的文件。 在这里的实施例中,FID字段可以是文件的元数据对象(例如,图4的示图130中的元数据 对象132)的对象id。应注意,如本说明书别处所述,文件的元数据对象可用于查找该文件 的所有其它数据对象。MD LOC字段可描述文件的元数据对象的数据存储位置。在这里的实施例中,MD LOC字段可包含用于保存文件的元数据对象的数据存储服务器407的标识符。MD LOC字段 还可包含可用于检索及将数据保存在数据存储服务器407之一处的唯一标识符(可能初始 由数据存储服务器407之一分配)。租用列表字段可包含关于对相应文件具有未完成有效租用的所有实体的信息。在 这里的实施例中,租用列表字段可包含指向对应于具有未完成租用的实体的链表的指针。 当然,可使用任何其它适当的数据结构(如阵列)。参考图35,示图640示出了可用于追踪对文件具有未完成有效租用的实体的链 表。链表的每一单元包含指向链表的下一单元的“下一”字段。链表末端处的单元包含零 值指示符。因此,链表可通过以租用列表指针所指向的单元为开始及随后指向由下一字段指向的单元而进行遍历(如,连同图32的流程图580中所示的处理一起)。类似地,传统的 链表操作可用于添加和去除单元。链表的每一单元还包含指明租用类型(如读或写)的类型字段及包括指明对应于 该单元的租用何时期满的EXP字段。每一单元还包含指明占用相应租用的实体(如客户机 104-106之一、另一服务器等)的ENT字段。链表的操控相当直接。当租用被授权时,单元的字段用对应于该租用的类型、截止 时间和实体填充,然后将该单元添加到链表。类似地,当租用被取消或返回时,从链表删除 对应的单元。当然,可使用其它数据结构代替链表。
参考图36,表650被示为包含使对象标识符(OID)与位置信息(LOC)相关联的多 个表项。在这里的实施例中,对象标识符为数值。每一元数据服务器405被提供唯一的对 象标识符范围进行使用/管理。在一些实施例中,对象标识符可重新使用,而在其它实施例 中对象标识符没有重新使用。当然,在对象标识符未重新使用的情形下,每一元数据服务器 405需要被提供足够的可使用对象标识符范围。LOC字段与表630的MD LOC字段类似。LOC字段描述对应对象的数据存储位置。 在这里的实施例中,LOC字段可包含用于包含(处理)对象的数据存储服务器407之一的标 识符,其作为可用于检索和保存该对象的数据的唯一标识符(可能由数据存储服务器407 之一分配)。因此,如果元数据服务器405之一具有针对特定对象的表项,实体可将对象标 识符传给元数据服务器405之一及作为回报而接收相应的LOC信息以使实体能直接访问适 当的数据存储服务器407。具有多个元数据服务器405使能分布式服务文件操作(因而具有很大的可扩缩 性)及提供故障切换/冗余能力。在一些情况下,对象可从元数据服务器405之一重新分 配给另一元数据服务器。然而,由于每一元数据服务器405仅包含文件子集(和相应文件 对象)的信息,可能需要提供在执行操作时查找适当元数据服务器405的机制。元数据位置服务器408对实体寻找适当元数据服务器405以对特定文件进行操作 提供位置服务。在这里的实施例中,每一元数据位置服务器408可接收具有对象标识符的 调用及可返回处理特定对象的具体元数据服务器405。此外,如本说明书别处详细所述,元 数据位置服务器408通过向调用实体(如客户机104-106之一)指明将用于新对象的具体 元数据服务器405而有助于新对象的创建。元数据服务器408可如同环球网上的域名服务 器一样运行,及每一客户机104-106 (及其它实体)可被提供主要和辅助元数据位置服务器 408进行咨询。参考图37,表670被示为包含由元数据位置服务器408之一使用的表项。每一表 项包括指明对象标识符的范围的OID范围字段及识别特定元数据服务器405或可能识别一 组元数据服务器405的MDS ID字段,在一组元数据服务器情形下一服务器为主服务器而其 余服务器为辅助服务器。实体可将特定对象标识符提供给元数据位置服务器408,之后其可 咨询表670并返回来自MDS ID字段的对应值。此外,元数据位置服务器408在创建新对象时可分配特定的元数据服务器405。分 配可基于任何适当的度量,包括随机分配、基于地理接近的分配、负荷均衡、和/或用户通 过用户管理接口 412进行的策略输入,如上所述。例如,策略可指明由特定客户机创建的新 对象提供在特定元数据服务器上。
参考图38,流程图680示出了元数据位置服务器408之一连同新文件对象的创建 分配特定元数据服务器的处理。处理开始于第一步骤682,咨询策略。如本说明书别处所 述,可能通过用户管理接口 412输入策略。策略可(直接或间接)指示哪些元数据服务器 405将用于哪些客户机104-106。应注意,其它策略也可能。例如,策略可指示哪些元数据 服务器405将在一天的不同时间使用(独立于客户机104-106)或基于负荷、用户等进行使 用。策略信息可保存在用户管理接口 412处并在步骤682时进行访问,或可在先前已传送 到元数据位置服务器408之一之后保存在该元数据位置服务器处。在步骤682之后是步骤 684,具体元数据位置服务器405的标识信息被返回给调用实体。在步骤684之后,处理结 束ο参考图39,流程图700示出了元数据服务器405之一在删除元数据服务器405之一所负责的文件时所执行的步骤。处理开始于第一步骤702,取消对文件的所有租用(如通 过对租用列表640从头到尾进行迭代并提供与图33的流程图610所示类似的取消处理)。 在步骤702之后是步骤704,租用被使得不可用于其它进程(例如,通过设置适当的标志,其 防止授权对文件的进一步租用)。在步骤704之后是步骤706,获得文件的元数据(例如通 过检索文件的元数据对象)。应注意,如本说明书别处所述,文件的元数据对象包含关于连 同文件使用的所有文件对象的位置的信息。在步骤706之后是步骤708,用于对连同文件使用的对象从头到尾进行迭代的指 针被使得指向第一对象。指针和随后的迭代处理使用在步骤706获得的信息确定文件的对 象。在步骤708之后是测试步骤712,确定用于对对象从头到尾进行迭代的指针是否越过 末端(即所有文件对象均已被处理)。如果是,则控制从测试步骤712转到步骤714,删除 (如设为零值)对应于文件的表项(及图34的表630中的表项)。在步骤714之后,处理 结束。如果在步骤712确定有更多的文件对象要处理,则控制从步骤712转到步骤716, 获得对象的LOC信息。LOC信息与如上所述的图36的表650中保存的信息类似。在一些情 况下,LOC信息将在执行处理的元数据服务器405之一的本地。在其它情形下,可能需要调 用元数据位置服务器408之一来获得对象的位置信息。在步骤716之后是步骤718,向适当 的数据存储服务器407 (即处理对象的数据存储服务器)发送消息以使对象删除。在这里的实施例中,不同的文件可能使用相同的对象(如重复数据删除、文件别 名使用等),在这种情况下,数据存储服务器407之一简单地递减针对对象的、表明其用户 数量的计数器。当计数器递减到零时,数据存储服务器可删除对应于对象的数据。应注意, 与文件相关联的对象可异步删除。在步骤718之后是步骤722,递增用于对文件对象从头到 尾进行迭代的指针。在步骤722之后,控制转回到步骤712,如上所述,进行另一迭代。参考图40,流程图740示出了元数据服务器405之一在创建新文件时所执行的步 骤。应注意,在执行图40中所示的处理之前,创建文件的实体(如客户机104-106之一) 可首先咨询元数据位置服务器408以确定将用于创建文件的适当元数据服务器405。处理开始于第一步骤742,咨询策略管理服务器402以获得新文件的策略信息(如 客户机X的新文件具有地理上至少位于距主数据集一定距离的镜像)。在步骤742之后是 步骤744,咨询资源管理服务器406以确定满足步骤742获得的策略指示的可用资源。在步 骤744之后是测试步骤746,确定是否可能满足策略指示给出的可用资源。例如,如果系统中的所有其余物理存储器在一个地理位置,则不可能满足具有地理上分开的镜像的策略。 如果在测试步骤746确定不可能实现策略,则控制从测试步骤746转到步骤748,执行备选 处理。任何适当的处理均可在步骤748执行,包括向调用实体返回出错指示符、创建具有下 一最佳可用资源的文件等。在步骤748之后,处理结束。如果在步骤746确定可能用可用资源实现策略,则控制从测试步骤746转到步骤 752,创建文件的元数据对象。创建元数据对象可包括填充元数据对象的数据字段并从适当 的数据存储服务器407获得存储器。在这里的实施例中,数据存储服务器407可以是池及 没有任何其它特殊要求,基于请求可在物理存储器414的适当部分提供存储空间。在步骤 752创建的元数据对象将与在此所述的类似。例如,参见图4-8及相应的描述。在步骤752 之后是步骤754,在表630中为新文件创建表项。在步骤754之后是步骤756,文件的元数 据对象的对象id被返回给调用实体。在步骤756之后,处理结束。如本说明书别处所述,当客户机或其它实体未成功尝试写操作时,消息(更新)由 客户机或其它实体发送给服务器102。类似地,消息(更新)也可连同查找与同步镜像副本 有关的失效镜像(参见图13的流程图350的步骤358)和/或向具有异步镜像的数据写而 发送给服务器102。参考图41,流程图760示出了元数据服务器405之一处理写操作 未成功的消息时 所执行的步骤。处理开始于第一步骤762,取消对文件的所有租用。在步骤762之后是步骤 764,对文件的租用被使得不可用。在步骤764之后是步骤766,分配新的存储空间以代替对 其进行写的操作未成功的旧存储空间。在步骤766之后是步骤768,调节文件的元数据对象 中的适当信息。在步骤768之后是步骤772,开始数据复制操作以用例如来自镜像之一的数 据重新填充新的数据存储空间。在正进行数据复制操作的同时,在步骤772,数据可被指示 为无效。当然,如果没有镜像或其它数据可用于重新填充新存储空间,则将不执行步骤772 的处理。在步骤772之后是步骤774,对文件的租用被使得可用。在步骤774之后,处理结 束ο参考图42,流程图780示出了元数据服务器405之一接收同步镜像无效的指示时 所执行的步骤。处理开始于第一测试步骤782,确定镜像当前是否处于用数据进行填充的进 程中(可能连同先前的有害写操作)。如果是,则数据填充操作被允许继续,及处理结束。 否则,控制从测试步骤782转到步骤784,执行如上所述的、与图41的流程图760中所示类 似的处理。在步骤784之后,处理结束。参考图43,流程图790示出了服务器102接收对应于异步副本的数据已被写因而 迫使更新异步副本的消息时所执行的步骤。处理开始于第一步骤792,向队列(例如,在受 影响的元数据服务器405处提供的工作队列)添加指明不需要复制异步数据的信息。如本 说明书别处详细所述,每一元数据服务器405处的进程服务于对应的队列。在步骤792之 后,处理结束。参考图44,流程图800示出了在服务于由图43的流程图790所示处理填充的对应 队列的每一元数据服务器405处的进程所执行的处理。处理开始于第一测试步骤802,确定 队列是否为空。如果是,则控制转回到测试步骤802以继续轮询队列。如果队列不为空,则 控制从测试步骤802转到步骤804,删除队列中的下一表项。在这里的实施例中,队列单元 可在先进先出的基础上进行处理。然而,还可能有选择地以任何顺序从队列删除单元。例如,与接收更高优先级的文件相关联的单元可在其它单元之前删除(例如在文件的转储清 除操作时)。作为另一例子,单元可根据(所需写操作的)大小或根据任何其它适当的条件 进行删除。在步骤804之后是步骤806,取消受影响文件的写租用。在步骤806之后是步骤808,获得写租用。在步骤808之后是步骤812,执行写操作以将异步数据写到镜像。在步骤 812之后是步骤814,释放写锁定。在步骤814之后,控制转回到步骤802继续轮询队列。在此所述的系统可与能够向客户机提供文件对象的任何服务器或任一组服务器 一起使用。文件对象的特定形式可变化,而不背离本发明的精神和范围。在一些情况下,只 要合适,可修改流程图的步骤的顺序。在此所述的系统可使用计算机可读存储介质中提供 的计算机程序产品/软件实施。在本发明已结合不同实施例进行公开的同时,其修改对本领域技术人员显而易 见。因此,本发明的精神和范围在所附权利要求中提出。
权利要求
访问数据文件对象的方法,包括在至少一客户机上提供文件系统接口,其中文件系统接口使在至少一客户机上运行的应用程序能使文件系统调用访问数据文件对象;及在至少一客户机上提供环球网服务接口,其中环球网服务接口使应用程序能在文件对象正通过文件系统接口进行访问的同时使用环球网访问文件对象。
2.根据权利要求1的方法,还包括在至少一客户机上提供直接文件对象接口,其中直接文件对象接口使应用程序能在文 件对象正使用环球网服务接口和使用文件系统接口进行访问的同时直接访问文件对象。
3.根据权利要求1的方法,还包括提供将文件名翻译为文件对象标识符的文件名服务,其中文件名服务至少由下述之一 访问文件系统接口和环球网服务接口。
4.根据权利要求1的方法,其中提供文件系统接口包括在至少一客户机的内核地址空 间中提供虚拟文件系统。
5.根据权利要求1的方法,还包括提供管理文件对象的布局管理器。
6.管理文件的方法,包括接收针对新文件的多个策略,其中根据预定条件可应用不同的策略;接收创建新文件的请求;根据预定条件为新文件选择适当的策略;根据所述适当的策略确定是否有足够的资源可用;及响应于根据所述适当的策略有足够的资源可用而获得文件对象以创建新文件。
7.根据权利要求6的方法,其中确定是否有足够的资源可用包括咨询资源管理器。
8.根据权利要求7的方法,其中所述资源管理器接收关于系统资源的信息并维护其表 指示。
9.根据权利要求8的方法,其中所述系统资源包括数据存储区。
10.根据权利要求6的方法,其中所述适当的策略包括关于文件镜像的信息。
全文摘要
本发明公开了管理数据文件对象的方法,包括接收针对新文件的多个策略,其中根据预定条件可应用不同的策略;接收创建新文件的请求;根据预定条件为新文件选择适当的策略;根据所述适当的策略确定是否有足够的资源可用;及获得文件对象以创建新文件。客户机文件系统接口使客户机上运行的应用程序使文件系统调用能访问数据文件对象,及还可在客户机上提供环球网服务接口,其中环球网服务接口使应用程序能在文件对象正通过文件系统接口进行访问的同时使用环球网服务访问文件对象。
文档编号G06F7/00GK101836184SQ200880113184
公开日2010年9月15日 申请日期2008年10月21日 优先权日2007年10月24日
发明者F·奥利韦拉, P·伊顿, R·安杰洛内, R·迪米特罗夫, S·弗里德拉 申请人:伊姆西公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1