用于高速缓存网络文件系统的系统和方法

文档序号:6567941阅读:458来源:国知局
专利名称:用于高速缓存网络文件系统的系统和方法
技术领域
本发明涉及高速緩存系统,并且更特别地涉及高速緩存文件管理 器响应于计算机网络上多协议客户端发送的数据访问请求而服务的 数据的存储虚拟化。
背景技术
通常,带有远程位置的机构可能需要复制关键数据,诸如工程应 用和程序库到不同的位置。为了使这些关键数据在那些远程位置让 用户可得到,而不引起网络延迟,所述机构可消耗大量资源(诸如 在文件服务器上执行的文件系统)来管理复杂的复制基础结构和过 程。数据复制是已知的技术,其使得可以对通常只读的数据集进行 分布式在线访问。传统的数据复制可严重依赖于文件系统镜像法, 以创建在分布式服务器上数据集的整体只读副本。由文件系统镜像法生成的镜像通常需要大量的管理开销。例如, 管理员必须确定需要复制什么数据,以及为每个镜像管理物理资源 (文件系统、文件服务器等)。随着数据集的增长,这类数据复制 变得越来越不实用。此外,复制的基础结构可能需要远程位置处存 在服务器,以存储复制的数据,因而阻止了机构将它们的服务器基 础结构合并到中心位置。因此,存在这样的需要,即消除该高代价 的复制基础结构和过程,而不损失立刻访问关键数据的好处。数据复制镜像法的一个替换方式是代理高速緩存。通常,代理高 速緩存系统用于按照需要来透明地复制数据集。典型的代理高速緩 存系统包括耦合到后端存储系统或具有远程存储器的"原始服务 器"的前端存储系统或具有本地存储器的"代理设备",即"高速緩 存,,。当高速緩存不能满足客户端请求时,将该请求传递给原始服 务器。服务器的响应转而传递回做出请求的客户端并且所有关联的 数据高速緩存在本地存储器中。这类事务称为"高速緩存未中"。 通常,高速緩存未中导致数据,例如文件系统数据,"填充"到高 速緩存中。当需要满足客户请求的数据在高速緩存中可得到时,代理设备可构造且发送响应,而不用与其关联的服务器通信。这种事 务称为"高速緩存命中"。使用高速緩存未中事务,代理设备允许 客户端修改设备上文件系统的状态。与一般的复制相比,这使得可 以进行自动复制,而不约束客户端进行只读访问。传统代理高速緩存解决方案使得可以分布数据,例如文件,到远 程位置,而不需要持续地让内行进行管理。这种代理高速緩存解决方案的一个例子在美国专利申请序列号(P01-1509 )中描述,标题 为Apparatus and Method for a Proxy Cache, 申请人:为E. Ackaouy 且转让给Network Appliance, Inc., Sunnyvale, California, 具 有高速緩存的代理存储系统或装置连接到服务器存储系统。文件系 统管理代理装置提供的文件集合;客户端使用文件系统协议访问这 些文件,例如网络文件系统(NFS )和/或公共因特网文件系统(CIFS ) 协议。在响应中,代理装置使用基于文件句柄的文件索引散列方法 提供文件。概括地叙述,代理装置"倾听"客户端发出的NFS/CIFS数据访问代i装置在转到其文;系统以进行高速緩存确定之前将^户端请求转换为唯一的高速緩存名称。在文件句柄上执行的散列函数产生高 速緩存名称,文件系统使用该名称以获得高速緩存的文件或者寻找 存储标识符以确定文件是否驻留在高速緩存中。如果文件驻留在高 速緩存中,则确定客户端请求的所有数据是否都驻留在高速緩存 中。如果不是,装置传递请求到服务器。当服务器用请求的数据或 应答响应时,装置将服务器响应传递到客户端。代理装置还用服务 器的响应"填充"其高速緩存以确保可由装置服务后续的客户端请 求。本发明部分针对改进的高速緩冲系统,其使得能够由客户端多协 议访问该系统提供的数据。此外,本发明部分针对改进的高速緩冲 系统,其使得能够由客户端有效地访问该系统使用文件系统数据结 构和名称提供的数据。而且,本发明部分针对改进的高速緩冲系统,据的虚拟存储化。在上下文中,存储虚拟化表示将存储的透明视图 呈现给这样的客户端,该客户端涉及通常在网络上协同来自多存储系统的存储资源。 发明内容本发明涉及一种具有否合到原始服务器的多协议高速緩冲存储 系统(文件管理器)的网络高速緩冲系统,以响应于计算机网络上 多协议客户端发出的数据访问请求而提供由该文件管理器服务的数 据的存储虚拟化。多协议高速緩存文件管理器包括文件系统,该文 件系统配置为管理稀疏的巻,以由此提供使得能够由多协议客户端 访问数据的高速緩存功能。为此,高速緩存文件管理器还包括多协 议引擎,该引擎配置为将多协议客户端数据访问请求变换为由高速 緩存文件管理器和原始服务器都可执行的通用文件系统原始操作。在说明性实施例中,由高速緩存文件管理器的"本地高速緩存" 部分地提供了高速緩存功能,所述"本地高速緩存"包括高速緩存 巻,该高速緩存巻包括一个或多个耦合到所述高速緩存文件管理器 的磁盘。根据本发明的第一方面,高速緩存巻说明性地实现为适于 服务客户端从一个或多个例如文件的存储对象请求的数据的稀疏 巻,所述存储对象具有从所述高速緩存巻遗失(即没有本地存储在 其磁盘上)的至少一个块(即缺少块)。缺少块的遗失数据存储在 原始服务器上且以对客户端透明的方式使用远程获取操作被说明性 地获取("填充")。有利地,本发明利用多协议高速緩存文件管理器的存储空间,使 得能够让客户端对网络高速緩存系统服务的数据快且有效地访问。 不像之前的高速緩存系统需要显式的文件的句柄到对象的存储转 换,新的多协议高速緩存文件管理器使得客户端能够通过使用文件 系统且特别地使用由文件系统组织的存储对象(文件)的实际名称 来有效地访问由网络高速緩存系统提供的数据。而且,高速緩存文 件管理器的文件系统与稀疏的巻协同,以对多协议客户端透明的方 式提供对所服务数据的存储空间虚拟化。


通过结合附图参考下面的描述,可以更好地理解本发明的上述和 进一步的优点,附图中相同的附图标记表示同样或功能类似的元件图1是根据本发明的实施例的示例网络环境的示意性框图;图2是根据本发明的实施例的示例存储操作系统的示意性框图;图3是根据本发明的实施例的示例信息节点(inode )的示意性框图;图4是根据本发明的实施例的示例緩冲树的示意性框图; 图5是可有利地用于本发明的文件緩冲树的说明性实施例的示意 性框图;图6是根据本发明的实施例的示例聚集的示意性框图; 图7是根据本发明的实施例的示例磁盘上布局的示意性框图; 图8是根据本发明的实施例的示例fsinfo块的示意性框图; 图9是根据本发明的实施例示出处理数据修改访问请求的过程步 骤的流程图;图10是根据本发明的实施例示出处理非数据修改访问请求的过 程步骤的流程图;图ll是根据本发明的实施例示出实现高速緩存相干性策略的过 程步骤的流程图;和图12是根据本发明的实施例示出实现高速緩存弹出策略的过程 步骤的流程图。
具体实施方式
A.网络环境图1是网络高速緩存系统环境100的示意性框图,包括前端存储系 统,该前端存储系统配置为提供用于服务源自后端存储系统的信息 (数据)的高速緩存功能。为此,前端存储系统是说明性地实现为 高速緩存文件管理器120的计算机,高速緩存文件管理器120提供涉 及在存储设备,例如磁盘阵列160的磁盘130上组织信息的存储服 务。高速緩存文件管理器120包括处理器122、存储器124、 一个或多 个网络适配器126a、 b和通过系统总线125互连的存储适配器128。高 速緩存文件管理器120还包括存储操作系统200,该存储操作系统200 优选地实现了高级模块,例如文件系统,以便逻辑地将信息组织为 磁盘上命名的文件、目录和虚拟磁盘(下文称为特定文件或"块")存储对象。在说明性实施例中,存储器124包括可由处理器和适配器寻址的 存储单元以用于存储软件程序代码。存储器的一部分可进一步组织 为用于存储与本发明关联的数据结构的緩冲存储器170。处理器和适 配器可转而包括配置为执行软件代码和操纵数据结构的处理元件和 /或逻辑电路。通常部分驻留在存储器中且由处理元件执行的存储操 作系统200,尤其通过调用文件管理器120执行的存储操作来在功能 上组织所述文件管理器。对本领域技术人员明显的是,其它处理和 存储器装置,包括各种计算机可读介质,可用于存储和执行关于这 里描述的发明技术的程序指令。网络适配器126a、 b(下文通常称为"网络适配器126")包括需 要在计算机网络140上将高速緩存文件管理器连接到客户端和后端 存储系统的机械、电子和信令电路,所述计算机网络140可包括点到 点连接或共享介质,例如局域网(LAN)或广域网(WAN)。说明性 地,计算机网络140可实现为以太网或光纤(FC)网络。客户端IIO 可通过根据预定义协议,例如传输控制协议/网际协议(TCP/IP)交 换离散帧或数据包来在网络140上与文件管理器120通信。客户端110可以是配置为执行应用112的通用计算机。而且,客户 端110可根据信息递送的客户端/服务器模型与高速緩存文件管理器 120交互。即是,通过在网络140上交换包,客户端可请求高速緩存 文件管理器的服务,且文件管理器返回客户端所请求服务的结果。 当以文件和目录形式访问信息时,客户端可发送包,该包包括在 TCP/IP上的基于文件的访问协议,例如公共因特网文件系统(CIFS) 协议或网络文件系统(NFS)协议。可替换地,当以块的形式访问信 息时,客户端可发送包,该包包括基于块的访问协议,例如在TCP上 封装的小型计算机系统接口 ( SCSI )协议(iSCSI )和在光纤通道 (FCP)上封装的SCSI。存储适配器128与在文件管理器120上执行的存储操作系统200协 同以访问用户(或客户端)请求的信息。所述信息可存储在任何类 型的可写存储设备媒体的被附着阵列上,所述可写存储设备媒体诸 如是录像磁带、光学介质、DVD、磁带、磁泡存储器、电子随机存取 存储器、微电子机构和任何其它适于存储信息,包括数据和奇偶信息的类似媒体。然而,如这里所说明性地描述的,所述信息优选地存储在阵列160的磁盘130上,例如HDD和/或DASD。存储适配器包括 在I/0互连布置,例如传统高性能FC串行链路拓朴上耦合到磁盘的输 入/输出(I/O)接口电路。在阵列160上的信息存储优选地实现为一个或多个存储"巻,,, 该巻包括物理存储磁盘130的集合,所述物理存储磁盘130协同以定 义一个或多个巻上的巻块号(vbn)空间的整体逻辑布置。尽管不是 必须的,通常每个逻辑巻与其自己的文件系统相关联。通常,逻辑 巻/文件系统中的磁盘组织为一个或多个组,其中每个组可作为独立 磁盘冗余阵列(RAID)来操作。大多数RAID实现,例如RAID-4级实 现,通过在RAID组中跨越给定数目的物理磁盘冗余写入数据带区且 对于带区的数据适当地存储奇偶信息来增强数据存储的可靠性/完 整性。RAID实现的一个说明性例子是RAID-4级实现,尽管应当理解, 可根据这里描述的发明原理使用RAID实现的其它类型和级别。在一个说明性实施例中,高速緩存文件管理器120的高速緩存功 能部分地由"本地高速緩存"提供。关于这点,本地高速緩存表示 高速緩冲存储器的层次结构,包括(i )高级处理器高速緩存123, (ii)中级緩沖存储器170,和(iii)包括耦合到文件管理器的一 个或多个磁盘130的低级"第三,,高速緩存巻150。根据这里进一步 描述的本发明的一个方面,高速緩存巻150说明性地实现为适于服务 客户端110从一个或多个例如文件的存储对象请求的数据的稀疏 巻,所述存储对象具有从所述高速緩存巻150遗失(即没有本地存储 在其磁盘上)的至少一个块(即缺少块)。缺少块的遗失数据存储明:地取得r:'填充"、)'。、、、后端存储系统是说明性地实现为原始服务器180的计算机,像高 速緩存文件管理器120—样,其提供涉及在组织为原始巻185的磁盘 上组织信息的存储服务。原始服务器180在网络140上与高速緩存文 件管理器120操作地互连,且通常包括类似于文件管理器120的硬 件。然而,可替换地,原始服务器180可执行修改的存储操作系统, 该存储操作系统使存储系统适用于原始服务器。在这里进一步描述 的可替换实施例中,在网络高速緩存系统环境100中可有多个耦合到原始服务器180的高速緩存文件管理器120。 B.存储操作系统为了便于访问磁盘130,存储操作系统200实现随处可写的文件系 统,该文件系统与虚拟化模块协同以管理高速緩存(稀疏)巻150并 且"虚拟化"由磁盘130提供的存储空间。文件系统逻辑地将信息组 织为磁盘上的命名的目录和文件的层次结构。每个》兹盘上文件可实 现为磁盘块的集合,所述磁盘块配置为存储信息,例如数据,而目 录可实现为特定格式的文件,其中存储了名称和到其它文件和目录 的链接。虚拟化模块允许文件系统进一步逻辑地将信息组织为作为 命名逻辑单元号(lun)输出的磁盘上块的层次结构。在说明性实施例中,存储操作系统优选地是可从Network Appliance, Inc., Sunnyvale, Cal if ornia得到的NetApp Data ONTAPTM操作系统,其实现了随处可写文件布局(WAFLTM)文件系统。 然而,明显可预期的是,根据这里描述的发明原理,可增强任何适 当的存储操作系统以便于使用。同样地,这里使用的术语"WAFL" 应当被用来广义地指任何另外适用于本发明的教导的文件系统。图2是可有利地用于本发明的存储操作系统200的示意性框图。存 储操作系统包括一 系列软件层,该软件层组织为形成完整的网络协 议栈,或更一般地,形成使用块和文件访问协议为多协议客户端提 供数据通路以访问存储在高速緩存文件管理器上的信息的多协议引 擎。协议栈包括网络驱动器(例如千兆以太网驱动器)的媒体访问 层210,该媒体访问层210对接到网络协议层,例如IP层212和它的支 持传输机制、TCP层214和用户数据报协议(UDP)层216。文件系统 协议层提供多协议文件访问,并且为此,包括对直接存储文件系统 (DAFS)协议218、 NFS协议220、 CIFS协议222和超文本传输协议 (HTTP)协议224的支持。如DAFS协议218所需要的,VI层226实现了 VI体系结构以提供直接访问传输(DAT)能力,例如RDMA。iSCSI驱动器层228提供了在TCP/IP网络协议层上的块协议访 问,而FC驱动器层230从/向高速緩存文件管理器接收/发送块访问请 求/响应。当访问文件管理器上的块时,FC和iSCSI驱动器提供对块 的FC专用和iSCSI专用的访问控制,并且因此管理lun到iSCSI或FCP 的输出,或可替换地到iSCSI和FCP两者的输出。此外,存储操作系统包括实现为RAID系统240的存储模块和实现磁盘访问协议,例如 SCSI协议的磁盘驱动器系统250,所述存储模块根据I/0操作来管理 向/从巻/磁盘存储/获取信息。存储操作系统200还包括网络应用远程巻(NRV)协议层295,该 协议层295与文件系统280对接。通常,NRV协议用于远程获取没有本 地存储在磁盘上的数据块。然而,如这里描述的,NRV协议可进一步 用于高速緩存文件管理器到原始服务器的通信,以根据本发明的原 理获取稀疏高速緩存巻中的缺少块。应当注意,在可替换实施例中, 传统文件/块级别协议,例如NFS协议或其它专有块获取协议可用于 代替本发明教导中的NRV协议。如这里进一步描述的,存储操作系统200的需求生成器296用于系 统地获取没有本地存储在磁盘,即高速緩存文件管理器120的高速緩 存巻150上的数据块,而泵模块298可用于调整从原始服务器180请求 的那些和其它数据块的获取。而且,根据本发明,截取器294实现了 高速緩存弹出策略以便在本地高速緩存(例如高速緩存巻150)变满 时回收存储空间,并且远程更新引擎(RUE292 )用于将任何修改高 速緩存巻150的文件系统操作转发到原始服务器180。尽管这里示出 和描述为单独的软件模块,可替换地,需求生成器296、泵298、截 取器294和RUE292可集成在操作系统200的单一模块内。而且,应当注意这些模块可以实现为硬件、软件、固件或其任意组合。桥接磁盘软件层和多协议引擎层的是文件系统280实现的虚拟化 系统,该虚拟化系统与说明性地实现为例如vdisk模块290和SCSI目 标模块270的虚拟化模块交互。vdisk模块290在文件系统280上层, 能够由例如用户接口 (UI) 275的管理接口访问,以响应用户(例如 系统管理员)向文件管理器发送命令。UI275以使得管理员或用户能 够访问不同层和系统的方式布置于存储操作系统之上。SCSI目标模 块270布置于FC和iSCSI驱动器228、 230和文件系统280之间,以提供 在块(lun)空间和文件系统空间之间的虚拟化系统的变换层,其中 lun表示为块。说明性地,文件系统是基于消息的系统,该系统提供逻辑巻管理 能力,用于访问存储在存储设备,例如磁盘上的信息。即是,除了 提供文件系统语义,文件系统280还提供通常与巻管理器关联的功能。这些功能包括(i )磁盘聚集,(ii )磁盘的存储带宽的聚集, 和(iii)可靠性保证,例如镜像法和/或奇偶性(RAID)。说明性 地,文件系统280实现了具有磁盘上格式表示的WAFL文件系统(下文 一般称为"随处可写文件系统"),所述格式表示是基于块的,使 用例如4千字节(KB)块且使用索引节点("信息节点,,)以标识文 件和文件属性(诸如创建时间、访问许可、大小和块位置)。文件 系统使用文件存储元数据,该元数据描述文件系统的布局;这些元 数据文件尤其包括信息节点文件。文件句柄,即包括信息节点号的 标识符,用于从磁盘获取信息节点。概括地叙述,随处可写文件系统的所有信息节点组织为信息节点 文件。文件系统(fs)信息块说明了文件系统中信息的布局且包括 文件的信息节点,所述文件包括文件系统的所有其它信息节点。每 个逻辑巻(文件系统)具有优选地存储在例如RAID组内的固定位置 的fsinfo块。根fsinfo块的信息节点可直接引用(指向)信息节点 文件的块,或可间接引用信息节点文件的块,该信息节点文件的块 转而引用信息节点文件的直接块。在信息节点文件的每个直接块内 是嵌入的信息节点,每个嵌入的信息节点可引用间接块,该间接块 转而引用文件的数据块。可操作地,来自客户端110的请求作为计算机网络140上的包转发 且到达高速緩存文件管理器120上,其中在网络适配器126处接收 包。(层210或层230的)网络驱动器处理所述包,并且如果适当, 将其传递到网络协议和文件访问层,以在转发到随处可写文件系统 280之前做另外的处理。如这里进一步描述的,如果请求修改了存储 在高速緩存巻150上的数据,高速緩存文件管理器120经由NRV写入请 求将所述请求传送到原始服务器180。然而,如果请求不修改巻150 上的数据,直接将请求传递到文件系统280中,该文件系统280尝试 服务所述请求。如果数据未驻留在本地高速緩存上(导致"高速緩 存未中"),高速緩存文件管理器将NRV读取请求发送到原始服务器 180,以获取遗失数据。在从服务器180接收响应后,高速緩存文件 管理器将获取的数据存储在其本地高速緩存中,用所请求的数据构 造回复且将该回复返回到客户端IIO。然而,如果所请求的数据驻留在本地高速緩存中,高速緩存文件管理器(文件系统280 )服务该请求。为此,如果所请求的数据未驻 留"在核心"即在緩沖存储器170中,文件系统生成操作以从磁盘130 装载(获取)所请求的数据。说明性地,该操作可实现为文件系统 280的Load-Block()函数284。如果信息不在高速緩冲器170中,文件 系统280使用信息节点号在信息节点文件中检索,以访问适当的条目 且获取逻辑vbn。文件系统接着将包括逻辑vbn的消息结构传递到 RAID系统240;逻辑vbn将映射到》兹盘标识符和磁盘块号(磁盘,dbn ) 且发送到磁盘驱动器系统250的适当驱动器(例如SCSI)。磁盘驱动 器从特定磁盘130访问dbn且将所请求的数据块装载到緩冲存储器 170中以便由文件管理器处理。在完成了请求后,文件管理器(和操 作系统)在网络140上将回复返回到客户端110。通常,文件系统280提供Load-Block ()函数284以从磁盘获取一个 或多个块。可响应于读取请求或指向例如文件的示例提前读取算法 获取这些块。如这里进一步描述的,如果文件的緩冲树内的任何所 请求的块包含专用ABSENT值(由此表示缺少块),则Load-Block() 函数284启动获取操作以使用说明性NRV协议295从适当的后备存储 器(例如原始服务器180)获取缺少块。 一旦获取了块(包括任何数 据块),Load-Block()函数284返回所请求的数据。在上面提到的美 国专利申请中进一步描述了 NRV协议,标题为Architecture for Supporting of Sparse Volumes, 申请人:为Jason Lango等。然而, 应当注意,任何其它适合的可从远程后备存储器获取数据的基于文 件或块的协议,例如包括NFS协议,可有利地用于本发明。说明性地, 文件系统还包括首次访问文件时获取信息节点和文件结构的 Load-Inode()函数288。应当进一步注意,可替换地,上述需要为在高速緩存文件管理器 接收的客户端请求执行数据存储访问的通过存储操作系统层的软件路径可用硬件实现。即在本发明的可替换实施例中,存储访问请求 数据路径可实现为逻辑电路,该逻辑电路用现场可编程门阵列 (FPGA)或专用集成电路(ASIC)实现。这类硬件实现增加了文件 管理器120响应于客户端110发送的请求而提供的存储服务的性能。 而且,在本发明的另一可替换实施例中,适配器126、 128的处理元 件可配置为各自地卸载来自处理器122的一些或所有包处理和存储访问操作,以由此增加文件管理器提供的存储服务的性能。明显可 预期的是,这里描述的各种处理、体系结构和过程可用硬件、固件 或软件实现。如这里使用的,术语"存储操作系统" 一般指可操作执行存储系 统中存储功能的计算机可执行代码,所述存储功能例如管理数据访 问和在高速緩存文件管理器的情况下,可实现文件系统语义。在这个意义上,ONTAP软件是这种存储操作系统的一个例子,该软件实现 为微内核且包括WAFL层,以实现WAFL文件系统语义并管理数据访 问。存储操作系统还可实现为在通用操作系统,例如UNIX⑧或Windows NT⑧上运行的应用程序,或实现为具有可配置功能性的通用操作系 统,该通用操作系统被配置用于这里描述的存储应用。此外,本领域技术人员将理解的是,这里描述的发明系统和方法 可应用于任何类型的专用(例如文件服务器、文件管理器或多协议 存储装置)或通用计算机,包括实现为或包括存储系统的独立计算 机或其一部分。可有利地用于本发明的多协议存储装置的一个例子 在美国专利申请序列号10/215, 917中描述,标题为Multi-protocol Storage Appliance that Provides Integrated Support for File and Block Access Protocols,于2002年8月8曰提出。而且,本发 明的教导可适用于多种存储系统体系结构,包括但不限于附加到网 络的存储环境、存储区域网络和直接附加到客户端或主机的磁盘部 件。因此,术语"存储系统,,应当广义地包括这种布置以及配置为 执行存储功能且与其它设备或系统相关联的任何子系统。C.文件系统组织在说明性的实施例中,文件在随处可写文件系统中表示为适于在 磁盘130上存储的信息节点数据结构。图3是信息节点300的示意性框 图,其优选地包括元数据段310和数据段350。存储在每个信息节点 300的元数据段310中的信息描述了文件,并且如所示的,包括文件 类型(例如普通、目录、虚拟磁盘)312、文件大小314、文件的时 间戳(例如访问和/或f资改时间)316和文件的所有权,即用户标识 符(UID 318)和组ID (GID 320 )。然而,每个信息节点的数据段 350的内容可根据类型字段312内定义的文件(信息节点)类型而不 同地解释。例如,目录信息节点的数据段350包含文件系统控制的元数据,而普通信息节点的数据段包含文件系统数据。在后一种情况中,数据段350包括与文件相关联的数据的表示。特定地,普通磁盘上信息节点的数据段350可包括文件系统数据 或指针,后者引用磁盘上用于存储文件系统数据的4KB的数据块。优 选地,每个指针是逻辑vbn,以在访问磁盘上的数据时提高文件系统 和RAID系统240之间的效率。给定信息节点的有限大小(例如128字 节),大小小于或等于64字节的文件系统数据全部表示在该信息节 点的数据段内。然而,如果文件系统数据大于64字节,但小于或等 于64kB,则信息节点(例如第一级信息节点)的数据段包括达16个 指针,每个指针引用磁盘上的4kB的数据块。而且,如果数据的大小大于64kB但小于或等于64兆字节(MB), 则信息节点(例如第二级信息节点)的数据段350中的每个指针引用 间接块(例如第一级块),该间接块包含达1024个指针,每个指针 引用磁盘上4kB的数据块。对于具有超过64MB大小的文件系统数据, 信息节点(例如第三级信息节点)的数据段350中的每个指针引用双 重间接块(例如第二级块),该双重间接块包括达1024个指针,每 个指针引用一个间接(例如第一级)块。转而,间接块包含1024个 指针,每个指针引用磁盘上的4kB的数据块。当访问文件时,文件的 每个块可从磁盘130装载到緩冲存储器170中。当磁盘上信息节点(或块)从磁盘130装载到緩冲存储器170中 时,该磁盘上信息节点(或块)在核心中的对应结构嵌入了磁盘上 的结构。例如,环绕信息节点300 (图3)的虚线指出磁盘上信息节 点结构在核心中的表示。核心中的数据结构是存储器块,该存储器 块存储了磁盘上数据结构以及需要用来管理存储器中的数据的附加 信息(但不在磁盘上)。附加信息可例如包括修改标志位360。在信 息节点(或块)中的数据如所指示的例如由写操作更新/修改后,使 用修改标志位460将修改的数据标记为脏,使得信息节点(块)可随 后"刷新"(存储)到磁盘。WAFL文件系统的核心中和磁盘上格式 的结构,包括信息节点和信息节点文件,在之前合并的美国专利号 5, 819, 292中开和描述,标题为Method for Maintaining Consistent States of a File System and for Creating User— Accessible Read—Only Copies of a File System, 申请人:为DavidHitz等,于1998年10月6日提交。图4是可有利地用于本发明的文件緩冲树的实施例的示意性框 图。緩冲树是装载到緩冲存储器170中的文件(例如,文件400 )的 块的内部表示并且由随处可写文件系统280维护。根(顶级)信息节 点402,例如嵌入的信息节点,引用间接(例如级别l)块404。注意, 取决于文件大小,可存在附加级别的间接块(例如级别2,级别3)。 间接块(和信息节点)包含最终引用用于存储文件的实际数据的数 据块406的指针405。即是,文件400的数据包含在数据块中,且这些 块的位置存储在文件的间接块中。每个级别1间接块404可包含指向 多达到1024个数据块的指针。根据文件系统的"随处可写',特性, 这些块可位于》兹盘130上的任何位置。提供了文件系统布局,该文件系统布局将下层物理巻分配到存储 系统,例如高速緩存文件管理器120的一个或多个虚拟巻(vvol )中。 这种文件系统布局的一个例子在美国专利申请序列号10/836, 817中 描述,标题为Extension of Write Anywhere File System Layout, 申请人:为John K. Edwards等,且转让给Network. Appl iance, Inc。 下层物理巻是包括高速緩存文件管理器的一个或多个磁盘组,例如 RAID组的聚集。聚集具有其自己的物理巻块号(pvbn)空间并且在 该pvbn空间内维持元数据,例如块分配结构。每个vvol具有其自己 的虚拟巻块号(vvbn)空间并且在该vvbn空间内维持元数据,例如 块分配结构。每个vvol是与容器文件相关联的文件系统;容器文件 是聚集中的文件,该聚集包含vvol使用的所有块。而且,每个vvol 包括数据块和间接块,该间接块包含指向其它间接块或数据块的块 指针。在一个实施例中,pvbn用作为存储在vvol中的文件(例如文件 400 )的緩冲树内的块指针。该"混合"vvol实施例涉及在双亲间接 块(例如信息节点或间接块)中只插入pvbn。在逻辑巻的读取路径 上,"逻辑"巻(vol)信息块具有一个或多个指针,该指针引用一 个或多个fsinfo块,每个fsinfo块转而指向信息节点文件及其对应 的信息节点緩冲树。通常,vvol上的读取路径是一样的,跟随用于 找到块的适当位置的pvbn (而不是vvbn);在该上下文中,vvol的 读取路径(及对应的读取性能)基本上类似于物理巻。从pvbn到磁盘,dbn的转换发生在存储操作系统200的文件系统/RAID系统的边 界。在一个说明性双vbn混合("灵活")vvol实施例中,pvbn及其 对应的vvbn插入到文件的緩冲树的双亲间接块中。即是,pvbn和vvbn 作为每个块的一对指针存储在大多数緩冲树结构中,该緩冲树结构 具有指向其它块,例如级别1(L1)间接块、信息节点文件级别O(LO) 块的指针。图5是可有利地用于本发明的文件500的緩冲树的说明性 实施例的示意性框图。根(顶级)信息节点502,例如嵌入的信息节 点,引用间接(例如级别l)块504。注意,取决于文件的大小可存 在附加级别的间接块(例如级别2、级别3)。间接块(和信息节点) 包含最终引用用于存储文件的实际数据的数据块506的pvbn/vvbn指 针对结构508。pvbn引用聚集的》兹盘上的位置,而vvbn引用vvol的文件内的位 置。使用pvbn作为间接块504中的块指针508,提供了在读取路径中 的效率,而使用vvbn块指针提供了访问所请求的元数据的效率。即 是,当释放文件的块时,文件中的双亲间接块包含容易得到的vvbn 块指4十,这避免了与访问属主映射(owner map)以执4亍pvbn到vvbn 转换相关联的延迟;而且,在读取路径上,pvbn是可得到的。如所提到的,每个信息节点在其数据段中具有64个字节,取决于 信息节点文件的大小(例如大于64字节的数据),该64个字节可用 作为指向其它块的块指针。对于传统和混合巻,该64个字节实现为 16个块指针,即16个(16) 4字节的块指针。对于说明性的双vbn灵 活巻,信息节点的64个字节实现为8 (8)对4字节的块指针,其中每 一对是vvbn/pvbn对。此外,传统或混合巻的每个间接块可包含达 1024个(pvbn)指针;然而,双vbn灵活巻的每个间接块具有达510 对(pvbn/vvbn )指针。而且, 一个或多个指针508可包含特定ABSENT值以表示该一个或 多个指针引用的一个或多个对象(例如间接块或数据块)没有本地 存储(例如在高速緩存巻150上),并且因此该对象必须从原始服务 器180的原始巻185获取(取回)。在说明性实施例中,文件系统280 的Load-Block()函数284解释了每个指针的内容并且,如果所请求的 块是ABSENT,则启动使用例如NRV协议将对数据的适当请求(例如远程获取操作)传输到原始服务器180。应当注意,高速緩存巻150说明性地实现为灵活vvo1,而原始巻 185可以是灵活vvol或传统巻,主要是因为使用逻辑文件协议 (NRV)。如所提到的,传统巻和灵活vvol区别在于它们的间接块格 式;然而,在网络高速緩沖系统的情况中,间接块格式的不同是不 相关的。换句话说,因为在高速緩存巻和原始巻之间没有物理关系, 原始巻的类型是不相关的。图6是可有利地用于本发明的聚集600的一个实施例的示意性框 图。Lun(块)602、目录604、 qtree606和文件608可包含在vvo1610 内,例如双vbn灵活vvol,该vvol转而包含在聚集600内。说明性地, 聚集600在RAID系统的上层,RAID系统由至少一个RAID plex650表示 (取决于是否镜像了存储配置),其中每个plex650包括至少一个 RAID组660。每个RAID组进一步包括多个磁盘630,例如一个或多个 数据(D)磁盘和至少一个(P)奇偶磁盘。聚集600类似于常规存储系统的物理巻,而vvol类似于该物理巻 内的文件。即是,聚集600可包括一个或多个文件,其中每个文件包 含vvol610且其中vvol所消耗的存储空间的总和在物理上小于(或等 于)整个物理巻的大小。聚集使用定义了由物理巻的磁盘提供的块 的存储空间的物理pvbn空间,而(在文件内的)每个嵌入的vvol使 用逻辑vvbn空间以将那些块例如组织为文件。每个vvbn空间是对应 于文件内位置的独立的号的集合,所述位置接着变换成磁盘上的 dbn。因为vvol610也是逻辑巻,因此它在其vvbn空间中具有自己的 块分配结构(例如活动、空间和摘要映射)。容器文件是聚集中包含vvol使用的所有块的文件。容器文件是支 持vvol的(对于聚集的)内部特征;说明性地,每个vvol有一个容 器文件。类似于文件通道中的纯逻辑巻,容器文件是聚集中的隐藏 文件(用户不可访问),该文件含有vvol使用的每个块。聚集包括 说明性的隐藏元数据根目录,该根目录包含vvol的子目录WAFL/fsid/文件系统文件,存储标签文件具体地,对于聚集中的每个vvol,物理文件系统(WAFL)目录包 括子目录,子目录的名称是vvol的文件系统标识符(fsid)。每个 fsid子目录(vvol )包含至少两个文件,文件系统文件和存储标签文件。说明性地,存储标签文件是包含类似于存储在常规raid标签 中的元数据的4kB文件。换句话说,存储标签文件是raid标签的模 拟,并且如所述的,包含关于vvol的状态的信息,诸如vvol的名称、 通用唯一标识符(uuid)和vvol的fsid、其是否联机、被创建或被二 破坏等。图7是聚集700的磁盘上表示的示意性框图。存储操作系统200, 例如RAID系统240,用包括用于聚集的"物理"volinfo块702的pvbnl 和2来装配pvbn的物理巻以创建聚集700。 vol inf o块702包含指向 fsinfo块704的指针,每个fsinfo块704可表示聚集的一个快照。每 个fsinfo块704包括指向节点信息文件706的块指针,所述节点信息 文件706包含多个文件的信息节点,包括属主映射710、活动映射 712、摘要映射714和空间映射716,以及其它特定元数据文件。信息 节点文件706进一步包括根目录720和"隐藏"元数据根目录730,后 者包括具有相关于vvol的文件的命名空间,其中用户不能"看见" 文件。隐藏元数据根目录包括WAFL/fsid/目录结构,该目录结构包 含文件系统文件740和存储标签文件790。注意,聚集中的根目录720 是空的;相关于聚集的所有文件组织在隐藏元数据根目录730内。如果vvol是稀疏巻,对于每个vvol,隐藏元数据根目录730还包 括稀疏配置元文件("稀疏配置文件"732 )。稀疏配置文件732因 此与稀疏巻关联并且为此(尤其)标识原始服务器180的主机名和原 始巻185。在稀疏巻的安装过程中,获取稀疏配置文件732且将其转 换为核心中的格式。要注意的是,稀疏配置文件还包括指明稀疏巻 是否是高速緩存巻150的标识符。这些标识符允许高速緩存文件管理新;如这里进^^"描述;:网络高速緩i系统环境100的高速緩存文 件管理器说明性地执行远程更新。除了实现为具有组织为容器映射的等级l的块的容器文件,文件 系统文件740包括块指针,该块指针引用实现为vvol750的不同文件 系统。聚集700在专门保留的信息节点号处维护这些vvo1750。每个 vvol750还在其vvol空间内具有专门保留的信息节点号,该信息节点 号尤其用于块分配位图结构。如所记录的,块分配位图结构,例如 活动映射762、摘要映射764和空间映射766,位于每个vvol中。具体地,每个vvol750具有和聚集一样的信息节点文件结构/内 容,不同的只是没有属主映射且在隐藏元数据根目录780中没有 WAFL/fsid/文件系统文件,存储标签文件目录结构。为此,每个 vvol750具有指向一个或多个fsinfo块800的volinfo块752,每个 fsinfo块800可与vvol的活动文件系统一起表示一个快照。每个 fsinfo块转而指向一个信息节点文件760,如所提到的,该信息节点 文件760除了上面所述的不同点外,和聚集有相同的信息节点结构/ 内容。每个vvol750具有其自己的信息节点文件760和具有对应的信 息节点号的不同的信息节点空间,以及其自己的根(fsid)目录770 和可从其它vvol单独输出的文件的子目录。包含在聚集的隐藏元数据根目录730内的存储标签文件790是功 能类似于常规raid标签的小文件。raid标签包括关于存储系统的物 理信息,例如巻名称;该信息装载到存储标签文件790中。说明性地, 存储标签文件790包括相关联的vvol750的名称792、 vvol的联才几/脱 机状态794、及相关联的vvol的其它身份和状态信息796 (是否其处 在创建或破坏的过程中)。D.稀發u的巻如所记录的,高速緩存巻150说明性地实现为稀疏的巻,并且由 此术语"高速緩存巻150"和"稀疏巻150"在下文中可互换使用。由 巻(vvol)的》兹盘上结构的特定标记来标识稀疏巻150,以表示包括 具有缺少块的文件。图8是磁盘上结构的示意性框图,其说明性地为 示例fsinfo块800。 fsinfo块800包括持久一致性点^象(PCPI )指针 805的集合、稀疏巻标志字段810、信息节点文件的信息节点815和在 替换的实施例中的附加字段820。 PCPI指针805是指向与文件系统关 联的PCPI (快照)的双vbn (vvbn/pvbn)成对指针。稀疏巻标志字 段810标识由fsinfo块描述的vvol是否为稀疏的。在说明性的实施例 中,在字段810中插入标志以标识巻是稀疏的。稀疏巻标志字段810 可进一步实现为用于标识与fsinfo块关联的vvol的类型的类型字 段。信息节点文件的信息节点815包括包含根级指针的信息节点,该 根级指针指向与fsinfo块关联的文件系统的信息节点文件760 (图 7)。用专门的ABSENT值将文件的适当块指针做标记(标志)以指明,稀疏巻150内的某些块,包括数据和/或间接块没有物理地位于提供 巻的高速緩存文件管理器上。专门的ABSENT值进一步告知文件系 统,数据将从可替换源,即原始服务器180获得。响应于数据访问请 求,文件系统280的Load—Block()函数284检测文件的适当块指针是 否标记为ABSENT,并且如果是,将远程NRV获取(例如读取)操作信 息从高速緩存文件管理器传输到原始服务器以获取所请求的数据。 说明性地,获取操作请求在原始巻185上存储的文件的一个或多个文 件块号(fbn)。应当注意,虽然根据单个原始巻来撰写本发明书, 本发明的原理可用于以下环境其中由多个原始巻支持单个稀疏 巻,每个原始巻可支持稀疏巻的全部或其子集。如所述的,本教导 不应当限于单个原始巻。原始服务器180从其存储设备获取所请求的数据并且将所请求的 数据返回到高速緩存文件管理器120,该高速緩存文件管理器120处 理数据访问请求并且将返回的数据存储在其存储器124中。随后,文 件系统280在写分配过程中将存储在其存储器中的数据"刷新"(写 入)到本地磁盘。这可以响应于数据被标记为"脏,,或向文件系统 表示数据必须被写分配的其它符号。根据过程的说明性的随处可写 策略,文件系统280将指针值(不是ABSENT值)分配到文件的间接块, 以由此标识本地存储在高速緩存巻150内的数据位置。因此,不再需 要远程获取操作来访问数据。应当注意,在网络140上高速緩存文件管理器120和原始服务器 180之间传输的所有NRV消息涉及相对于物理磁盘地址的逻辑文件地 址。由此,不需要相对于原始服务器存储来制定高速緩存文件管理 器存储的大小。当将所请求的数据提供到高速緩存文件管理器时, 该数据被写分配并且依从适当的vvbn (和/或pvbn)块编号。换句话 说,高速緩存巻150的写分配完全不同于原始巻185上的写分配。可有利地用于本发明的写分配过程的一个例子在美国专利申请 序歹'J号10/836, 090中描述,才示题为Extension of Write Anywhere File Layout Write Allocation, 申请人:为John K. Edwards, 该申 请因此被合并以作为参考。概括地叙述,当写分配vvol内的块时, 块分配在灵活vvol和聚集上并行地进行,并且写分配器282 (图2) 在聚集中选择实际的pvbn且在vvol中选择vvbn。写分配器调整聚集的块分配位图结构,例如活动映射和空间映射,以记录选择的pvbn, 并且调整vvol的类似结构,以记录所选择的vvbn。 vvol的vvid ( vvol 标识符)和vvbn在由所选择的pvbn定义的条目处被插入到聚集的属 主映射710中。所选择的pvbn还被插入到目标vvol的容器映射(未示 出)中。最后,用指向所分配块的一个或多个块指针来更新所分配 块的间接块或信息节点文件双亲。更新操作的内容依赖于vvo 1实施 例。对于双vbn混合vvol实施例,pvbn和vvbn都插入到间接块或作为 块指针的信息节点中。E.网络高速緩存系统操作本发明涉及网络高速緩存系统100,其具有连接到原始服务器180 的多协议高速緩存文件管理器120,以响应于计算机网络140上多协 议客户端110发出的数据访问请求而提供由文件管理器服务的数据 的存储虚拟化。多协议高速緩存文件管理器120包括配置为管理稀疏 巻的文件系统280,该文件系统280 "虚拟化"数据的存储空间,以 由此提供高速緩存功能而使得多协议客户端可以访问数据。为此, 高速緩存文件管理器还包括存储操作系统200的多协议引擎,该引擎配置为将多协议客户端数据访问请求变换成由高速緩存文件管理器 和原始服务器180都可执行的通用文件系统原始操作。程900的步骤的流程图。如这里使用的,数据修改访问请求涉及修改 高速緩存文件管理器120的高速緩存巻150的任何操作。这种修改操 作的例子包括创建(文件)、设置属性和写入操作。过程900开始于 步骤902且进行到步骤904,其中在高速緩存文件管理器120处接收客 户端写入请求。在步骤906,多协议引擎的适当协议层将写入请求转 换为通用文件系统写入消息以传送到文件系统280。在步骤908,文件系统确定文件系统写入消息是否指向于高速緩 存巻150,即配置为支持远程更新操作的稀疏巻。说明性地,文件系 统通过检查fsinfo块800和稀疏配置文件732来做出该确定。如所提 到的,fsinfo块800具有稀疏巻标志810,如果声明了该稀疏巻标志 810,则标识巻为稀疏巻。此外,稀疏配置文件732包含在应用类型 中标识稀疏巻150的标识符,即标识稀疏巻150是否支持数据修改访 问请求的远程更新。如果写入消息不指向高速緩存巻,文件系统将文件系统写入消息传递到文件的常规写入处理器,以作为原始写入操作请求进行处理(步骤910)并且该过程在步骤922结束。然而,如果写入消息指向高速緩存巻150,在步骤912文件系统将 写入消息转发到RUE292。在步骤914, RUE292将通用文件系统写入消 息转换为远程更新请求,并且在步骤916,将更新请求发送到泵模块 298。在说明性的实施例中,泵模块的泵工作者线程接收请求,接着 为该请求在其它请求中安排优先次序。在步骤918,将远程更新请求 变换为NRV写入消息,并且在步骤920,在网络140上将NRV写入消息 发送到原始服务器180,以由服务器上的文件系统执行。接着过程在 步骤922结束。图1 O是根据本发明的实施例的示出用于处理非数据修改访问请 求的过程1000的步骤的流程图。如这里使用的,非数据修改访问请 求涉及不修改高速緩存文件管理器120的高速緩存巻150的任何操 作。非修改操作的一个例子是读取操作。过程1000在步骤1002开始, 并且进行到步骤1004,其中在高速緩存文件管理器120接收客户端读 取请求。在步骤1006,多协议引擎的适当协议层将读取请求转换为 通用文件系统读取消息,以传送到文件系统280,在步骤1008,该文 件系统280将消息传递到文件系统的常规读取处理器,以作为原始读取操作请求来处理。在步骤1010,确定所请求的数据是否驻留在高速緩存文件管理器 的本地高速緩存上。说明性地,文件系统通过使用例如 Load-Block() 284函数装载一个或多个块且检查每个块的块指针以 确定该块指针是否标记为ABSENT来做出所述确定。如果块不是缺少 的,即所请求的数据驻留在本地高速緩存上,在步骤1012文件系统 280服务读取消息/请求(如前所述)并且过程在步骤1032结束。然而,如果块是缺少的,即所请求的数据未驻留在本地高速緩存 上,在步骤1014文件系统将读取消息转换为发送到泵模块298的获取 请求。泵模块的泵工作者线程接收请求,接着为该请求在其它请求 中安排优先次序。在步骤1016,泵线程维持用于存储获取请求的占 位符,直到接收了响应。在步骤1018,泵线程和NRV模块295协同以 将获取请求变换为NRV读取消息,并且在步骤1020,在网络140上将 NRV读取消息发送到原始服务器180以由服务器执行。在步骤1022,原始服务器用获取的数据响应于高速緩存文件管理 器(泵线程),并且在步骤1024,泵线程和文件系统的填充处理器 协同以通过例如使用获取的数据执行填充操作来服务在泵模块维持 着占位符的挂起的读取/获取请求。在步骤1026,文件系统用所请求 的数据构造回复,并且在步骤1028,将该回复返回到客户端。随后 在步骤1030,在文件系统执行写分配以将获取的数据存储在高速緩 存文件管理器的一个或多个本地存储设备上并且过程在步骤1032结 束。F.高速緩存一致性在本发明的通常网络高速緩存系统实施例中,多个客户端110可 耦合到多个高速緩存文件管理器120的每一个,并且客户端和文件管 理器都可耦合到原始服务器180。因此可能的是,在该通常系统实施 例中,原始巻185可由客户端和/或高速緩存文件管理器120修改。所 以,需要高速緩存一致性策略以确保由客户端直接从原始服务器180 或经由高速緩存文件管理器120访问的数据总是一致的。根据本发 明,用在网络高速緩存系统100中的高速緩存一致性策略规定了将高 速緩存文件管理器120配置为与原始服务器180相符合,以便在将数 据递送到客户端110之前确定该数据是否发生了变化。响应于指向例如文件的特别存储对象的客户端数据访问请求,例 如读取请求,高速緩存文件管理器120的文件系统280将按需获取 (FOD)的请求发送到原始服务器180,以请求文件属性,诸如修改 时间、链接数目、创建时间等的最近副本。任何属性中的变化指明 自从文件最后一次高速緩存在文件管理器中后,该文件被修改过。 由此,高速緩存文件管理器触发了在其本地高速緩存上存储的当前 文件的弹出。高速緩存文件管理器接着使用NRV读取消息生成适当的 获取操作,以从原始服务器获取所请求的数据。图ll是根据本发明的实施例的示出实现高速緩存一致性策略的 过程1100的步骤的流程图。过程1100在步骤1102开始并且进行到步 骤1104,其中在高速緩存文件管理器接收客户端数据访问请求,例 如读取请求。在步骤1106,将请求转换为文件系统读取消息,以传 送到文件系统280,在步骤1108,文件系统280将消息传递到文件系 统的常规读取处理器,以作为原始读取操作请求处理。在步骤1110,读取处理器例如使用Load-Inode () 288函数获取在读取请求/消息中 涉及的文件的信息节点。在步骤1112,文件系统还将读取消息作为FOD请求传递到泵模 块,以从原始服务器获取信息节点的属性。在步骤1114,泵线程维 持用于存储FOD请求的占位符,直到接收了响应。在步骤1116,泵模 块和NRV模块协同以将FOD请求变换为NRV读取消息,并且在步骤 1118,在网络140上将NRV读取消息发送到原始服务器180,以由服务 器执行。在步骤1120,原始服务器用属性响应高速緩存文件管理器 (泵线程),并且在步骤1122,泵线程和文件系统的填充处理器协 同以通过例如使用响应执行填充操作来服务在泵模块维持着占位符 的挂起读取/FOD请求。应当注意,不具有数据(即零长度读取或"验证")的填充操作 仅携带属性;因此,在步骤1124,填充处理器确定(从原始服务器 接收的)所请求文件的属性和当前存储在高速緩存文件管理器上的 该文件的属性是否不同。对于后者,例如通过检查存储在文件的信 息节点300中的访问和/或修改时间戳316来确定存储在高速緩存文 件管理器上的文件的属性状态。注意,NRV读取消息的特性是在NRV 响应中返回的任何数据还包括文件的最近属性。零长度读取(验证) 因此等效于不获取任何数据而取回文件的最近属性。如果在属性中没有区别(属性没有变化),填充处理器触发了信 息节点(文件)属性已经被验证(1126)的确认。因此在高速緩存 文件管理器120和原始服务器180之间的NRV交互实质上是"没有操 作",这在系统中引入了额外的延迟(至少在最简单的高速緩存一 致性策略中)。在步骤1128,文件系统搜索本地高速緩存以确定客 户端请求的数据是否存在于高速緩存文件管理器上。如果是,在步 骤1130文件系统服务读取请求/消息(如前所述)并且过程在步骤 1136结束。然而,如果所请求的数据(或其部分)未驻留在本地高速緩存上 (即数据遗失),在步骤1132文件系统将读取消息转换为获取请求, 该获取请求最终被发送到原始服务器180以获得缺少的数据(如前所 述)。注意,来自原始服务器的响应包括遗失数据和文件的最后属 性。还要注意,如果在属性中存在不同(如在步骤1124确定的),过程继续到步骤1132。在步骤1134,确定是否那些属性发生了变化 (即在高速緩存文件管理器上初次验证和获取了遗失数据的时间之 间属性是否发生了变化)。如果是,过程返回到步骤1132。否则, 过程继续到步骤1130。要注意,在确定客户端请求的数据是否存在于高速緩存文件管理 器120上之前验证所述数据。这是因为,如果数据存在于高速緩存文 件管理器上,即使在验证和服务数据之间在原始服务器180上发生对 该数据的更新,也不向客户端发出。在该后一种情况下,那些操作 被认为是"覆盖操作",并且通过将读取请求作为首次发生来对待 而将那些操作串行化。还要注意,考虑网络高速緩存系统部署,其 中多个客户端访问多个高速緩存文件管理器和/或原始服务器,则属 性可以变化。在说明性的实施例中,在网络高速緩存系统部署上没有显式的锁 定。然而,网络高速緩存系统依赖的语义是,与写入操作覆盖的读 取操作(即在验证之前不发生写入)可在写入之前返回读取。换句 话说,验证响应指明对于文件没有属性发生变化并且该文件数据可 从高速緩存文件管理器的高速緩存巻150提供(如果可能)。当随后 服务来自高速緩存巻的该数据时,高速緩存文件管理器120像读取操 作发生在写入操作之前一样地来操作。清楚地,在高速緩存命中的情况下,网络高速緩存系统100保持 语义。在部分高速緩存未中的情况下,网络高速緩存系统100通过有 效地从擦除(scratch)开始来保持语义。对于后者,假设客户端发 送32kB的读取请求并且高速緩存文件管理器仅遗失了该请求的4kB 的块(遗失数据不在高速緩存巻上)。该情况的正常响应是,为高 速緩存文件管理器发送4kB的NRV读取消息,以填充该遗失数据,并 伴有隐式的验证(因为每个读取返回文件属性)。还假设之前的显 式验证指明数据没有什么变化,但在显式验证和发送4kB的NRV读取 消息之间发生了介入的写操作。因为在读取响应中属性发生了变化 (由伴随有响应的隐式验证来表示),高速緩存文件管理器检测到 该介入的写入。这转而使得高速緩存文件管理器120在其高速緩存巻 150上弹出其文件的副本并且使用NRV读取消息来生成适当的获取操 作,以从原始服务器180获取所请求的数据。该情况表示了写入操作可引起额外的和浪费的读取操作。根据本发明的一个方面,泵模块298可用于緩解这种不足。泵模 块实现流控制并且新的网络高速緩存系统体系结构提供了另 一种形 式的流控制,该流控制实质上代理了向原始服务器18 0的读取操作, 而不用经由普通文件系统读取处理器为它们服务。即是,响应于为 服务客户端请求而难以将文件的数据装载到其本地高速緩存中,高 速緩存文件管理器120切换到这样的模式将指向该文件的读取操作 传递到RUE292 (类似于写操作)且传递到原始服务器180上,而是通 过文件系统280传递到读取处理器。原始服务器接着使用标准的流控 制和原子性机制,以便将单个响应返回到该读取操作。G. 优先化根据本发明的一个方面,由高速緩存文件管理器执行提前读取操 作,并且因此当在客户端请求和推测的提前读取请求之间存在差异 时,文件管理器实现了优先化。该特征对于网络高速緩存系统实现 的优点在于,因为它不会"看见"所有的客户端请求,因此通常当 做出提前读取的决定时,原始服务器不必具有和高速緩存文件管理 器一样多的知识。因为高速緩存文件管理器具有在其上执行的多协 议引擎,它可做出与通常由原始服务器做出的相同的提前读取的决 定,即使在文件管理器和服务器之间存在高速緩存巻。特别地,高 速緩存文件管理器使用和由原始服务器使用的相同的提前读取引 擎,并且因此像原始服务器一样生成相同的提前读取请求。为了请 求的优先化,网络高速緩存系统实现将请求作为两个不同的优先级 范围对待,其中客户端请求的优先级在推测的提前读取之上,并且 如果系统是饱和的,则丢弃推测的提前读取请求。H. 高速緩存弹出如所记录的,截取器294编码高速緩存弹出策略,以便当本地高 速緩存(例如高速緩存巻150)变满时回收存储空间。在高速緩存文 件管理器120的高速緩存巻150小于在原始服务器180的原始巻185上 存储的工作区的情况下,频繁地出现高速緩存弹出决定。当接收客 户端请求时,高速緩存文件管理器需要释放巻存储空间以高速緩存 (存储)那些请求。在释放空间时,必须从高速緩存巻150收回一些 数据。在说明性的实施例中,截取器294实现为扫描器,其配置为当需要空间时,(i )在高速緩存巻150内"行走"以扫描存储在巻上 的文件的緩冲树和(ii )做出关于应当收回哪些之前被高速緩存的 数据的决定。说明性地,高速緩存弹出策略是贯穿信息节点文件的循环处理, 优点是不需要维持全局的最近最少使用(LRU)的列表。为此,截取 器294以循环法(round robin)方式扫描信息节点文件,例如在信 息节点的起点开始,前进到终点并且接着在该文件的起点重新开 始,且任意地收回其经过的每个完整文件(直到满足了需要的空闲 空间)。因此,当需要空间时策略随机地收回文件,但具有特性 在信息节点文件被完全地遍历之前,相同的文件不会被收回两次。 如果高速緩存巻是繁忙的,则非常可能的是在任何给定的时间将工 作区的大部分高速緩存。然而,如果错误地收回了 "流行"的文件, 在截取器遍历了整个信息节点文件之前策略将不会再次收回该文 件。图12是根据本发明的实施例的示出实现高速緩存弹出策略的过 程1200的步骤的流程图。过程在步骤1202开始,并且进行到步骤 1204,其中截取器初始化到信息节点文件的第一信息节点。在步骤 1206,响应于例如高速緩存巻变为完全填充,截取器被唤醒(调用)。 在步骤1208,截取器"收回,,第一信息节点并且在步骤1210,继续 收回随后的信息节点(文件),直到在巻上有足够的可用存储空间。 实质上,仅当需要收回高速緩存巻上的存储空间时,截取器被激活 且扫过信息节点文件。说明性地,通过传递緩沖树到删除现有块的 "僵(zombie)"系统来收回信息节点或文件(或更具体地,文件 的信息节点緩冲树)并且该信息节点接着被在顶级具有"孔"的信 息节点代替。关于这点,孔定义为高速緩存巻上的信息节点文件的 未分配的段(与缺少块相反,缺少块是被分配的)。过程接着在步 骤1212结束。对于高速緩存弹出策略的优化是收回(删除)信息节点的整个 块,诸如删除信息节点文件块中的每个信息节点、释放信息节点文 件块和将孔插入在信息节点文件中其位置处(分配新的空白信息节 点文件块)。在高速緩存巻上的孔(或信息节点文件的未分配段) 依从于原始服务器上的可能实际使信息节点被分配的信息节点文件块。在该后一种情况下,当客户端请求访问特别的文件时,高速緩存文件管理器仅分配信息节点文件块;在分配信息节点文件块时, 高速緩存文件管理器启动获取以获得文件内容。该特定于高速緩存 的格式使得能够使用文件系统默认策略,以在信息节点文件中用新 的未分配信息节点来填充孔。在说明性的实施例中,存在两个用于激活截取器294的触发器。 一个触发器在填充时间(其中术语"填充"表示当在高速緩存文件 管理器从原始接收响应时采取的动作)发生。在填充时间,期望将 任何返回的数据插入到其文件的緩沖树中;但如果没有足够的物理 磁盘空间容纳该数据,通过文件系统中的空间统计来触发截取器。 说明性地,检查聚集中的空闲块的数目并且基于低-高水线标志(例 如85%-95%),确定触发截取器是适当的。截取器的另一个触发器是在文件系统一致性点(CP)时刻。因为 高速緩存巻是灵活的vvol,它们可和传统巻共存于相同的聚集上。 当传统(或虚拟)巻扩展而消耗更多的磁盘空间时,在高速緩存巻 上触发截取以限制其磁盘空间的消耗。在CP时间(例如每10秒或CP 频繁发生)测试磁盘空间的量(聚集中的自由物理空间)。这里, 写分配器282发信号通知截取器294重新启动并且释放聚集的存储空 间,直到可用空间落入低于设立的低水线标志。I.结论有利地,本发明虚拟化多协议高速緩存文件管理器的存储空间, 使得能够让客户端对网络高速緩存系统服务的数据快且有效地访 问。不像之前的高速緩存系统,该系统需要显式的文件的句柄到对 象的存储转换,新的多协议高速緩存文件管理器使得客户端能够通 过使用文件系统且特别地使用由文件系统组织的存储对象(文件) 的实际名称而有效地访问由网络高速緩存系统服务的数据。而且, 文件系统与高速緩存文件管理器的稀疏的巻协同,以便提供以对多 协议客户端透明的方式对所提供数据的存储空间虚拟化。尽管已经示出和描述了网络高速緩存系统的说明性实施例,所述 网络高速緩存系统具有耦合到原始服务器的多协议高速緩存文件管 理器,以响应于计算机网络上多协议客户端发出的数据访问请求而 提供由文件管理器服务的数据的存储虚拟化,应当理解,可在本发明的精神和范围内做出各种其它适应和修改。例如,在本发明的可替换实施例中,需求生成器296可用于系统地获取没有本地存储在磁 盘上的数据块,以用于预填充高速緩存巻。注意,在高速緩存部署 中使用比原始巻185小很多的高速緩存巻150 (例如以提供相对于完 全复制的优点)是常见的。所以,更小的高速緩存巻的预填充需要 专门的需求生成器,该需求生成器配置为提供关于应当驻留在本地 高速緩存的数据的智能决定,因为不是所有的原始数据都适合高速 緩存。前面的说明已经针对了本发明的特定实施例。然而明显的是,可 对描述的实施例做出其它变化和修改,而具有所述实施例的一些或 全部优点。例如,明显可预期的是,本发明的教导可实现为软件, 包括具有在计算机上执行的程序指令的计算机可读介质、硬件、固 件或其组合。因此,仅是通过举例的方式给出了本说明书并且其并 不限制本发明的范围。因此,所附权利要求的目标是覆盖落入本发 明的真实精神和范围的所有这种变化和修改。
权利要求
1.一种网络高速缓存系统,包括原始服务器;和耦合到原始服务器的高速缓存文件管理器,该高速缓存文件管理器具有配置为管理稀疏卷的文件系统,该文件系统虚拟化数据的存储空间以由此响应于多协议客户端发出的数据访问请求而提供由文件管理器服务的数据的存储虚拟化。
2. 权利要求l所述的网络高速緩存系统,还包括高速緩存文件管 理器的多协议引擎,该多协议引擎配置为将多协议客户端发出的多 协议数据访问请求变换为可由高速緩存文件管理器和原始服务器都 执行的文件系统操作。
3. 权利要求2所述的网络高速緩存系统,还包括高速緩存文件管 理器的本地高速緩存,该本地高速緩存包括适于服务由一个或多个 客户端从一个或多个存储对象请求的数据的稀疏巻,所述存储对象具有至少一个表示从稀疏巻中遗失的数据的缺少块,其中缺少块的 遗失数据存储在原始服务器上并且以对客户端透明的方式使用远程 获取操作来取得。
4. 权利要求3所述的网络高速緩存系统,其中存储对象是文件和 逻辑单元号之一。
5. 权利要求3所述的网络高速緩存系统,其中稀疏巻是包括耦合 到高速緩存文件管理器的一个或多个磁盘的高速緩存巻。
6. 权利要求5所述的网络高速緩存系统,还包括高速緩存文件管 理器的远程更新引擎(RUE),该RUE配置为将修改高速緩存巻的任 何文件系统操作转发到原始服务器。
7. 权利要求6所述的网络高速緩存系统,还包括高速緩存文件管 理器的截取器,该截取器配置为实现高速緩存弹出策略以在高速緩 存巻变满时回收存储空间。
8. —种用于操作网络高速緩存系统的方法,包括 接收指向所述系统的高速緩存文件管理器上的存储对象的数据访问请求;确定数据访问请求是否修改在高速緩存文件管理器的高速緩存 巻上存储的数据;如果是,将所述数据访问请求从高速緩存文件管理器传送到所述系统的原始服务器;和在原始服务器处理所述数据访问请求。
9. 权利要求8所述的方法,还包括如果所述数据访问请求没有修改高速緩存巻上存储的数据,将该 请求传递到高速緩存文件管理器的文件系统中;确定所述请求所请求的数据是否驻留在高速緩存文件管理器的 本地高速緩存上;如果未驻留,在高速緩存文件管理器上生成一个或多个获取操作 以从原始服务器取得所请求的数据;和在从原始服务器接收响应时,将获取的数据存储在高速緩存文件 管理器的本地高速緩存中。
10. 权利要求9所述的方法,还包括如果所请求的数据驻留在高速緩存文件管理器的本地高速緩存 上,在高速緩存文件管理器服务所述请求。
11. 一种用于操作网络高速緩存系统的方法,包括 接收指向所述系统的高速緩存文件管理器上的存储对象的数据访问请求;从高速緩存文件管理器向所述系统的原始服务器发送按需获取 (F0D)的请求,该FOD请求对存储对象的属性的最近副本进行请求;确定自从存储对象在高速緩存文件管理器上高速緩存后,是否发 生了任何属性的变化;和如果是,触发在高速緩存文件管理器的本地高速緩存上存储的存 储对象的弹出。
12. 权利要求ll所述的方法,其中存储对象是文件和逻辑单元号 之一。
13. 权利要求ll所述的方法,其中属性包括存储对象的修改时间 和存储对象的创建时间。
14. 权利要求13所述的方法,其中任何属性中发生的变化表明存 储对象自从在高速緩存文件管理器上高速緩存后已经修改过。
15. 权利要求ll所述的方法,还包括在高速緩存文件管理器上生成一个或多个获取操作,以从原始服务器取得所请求的数据。
16. 权利要求15所述的方法,其中每个获取操作实现为NRV读取 消息。
17. 用于操作网络高速緩存系统的设备,包括 用于接收指向所述系统的高速緩存文件管理器上的存储对象的数据访问请求的装置;用于确定数据访问请求是否修改在高速緩存文件管理器的高速 緩存巻上存储的数据的装置;如果是,用于将所述数据访问请求从高速緩存文件管理器传送到 所述系统的原始服务器的装置;和用于在原始服务器处理所述数据访问请求的装置。
18. 权利要求17所述的设备,还包括如果所述数据访问请求没有修改高速緩存巻上存储的数据,用于 将该请求传递到高速緩存文件管理器的文件系统中的装置;用于确定所述请求所请求的数据是否驻留在高速緩存文件管理 器的本地高速緩存上的装置;如果未驻留,用于在高速緩存文件管理器上生成一个或多个获取 操作以从原始服务器取得所请求的数据的装置;和在从原始服务器接收响应时,用于将获取的数据存储在高速緩存 文件管理器的本地高速緩存中的装置。
19. 一种包含操作网络高速緩存系统的可执行程序指令的计算机 可读介质,该可执行指令包括一个或多个程序指令,用于接收指向所述系统的高速緩存文件管理器上的存储对象的数据 访问请求;确定数据访问请求是否修改在高速緩存文件管理器的高速緩存 巻上存储的数据;如果是,将所述数据访问请求从高速緩存文件管理器传送到所述 系统的原始服务器;和在原始服务器处理所述数据访问请求。
20. 权利要求19所述的计算机可读介质,还包括一个或多个程序 指令,用于如果所述数据访问请求没有修改高速緩存巻上存储的数据,将该请求传递到高速緩存文件管理器的文件系统中;确定所述请求所请求的数据是否驻留在高速緩存文件管理器的 本地高速緩存上;如果未驻留,在高速緩存文件管理器上生成一个或多个获取操作 以从原始服务器取得所请求的数据;和在从原始服务器接收响应时,将获取的数据存储在高速緩存文件 管理器的本地高速緩存中。
全文摘要
一种网络高速缓存系统,具有连接到原始服务器的多协议高速缓存文件管理器,以提供文件管理器响应于计算机网络上多协议客户端发出的数据访问请求而提供的数据的存储虚拟化。多协议高速缓存文件管理器包括配置为管理稀疏卷的文件系统,该文件系统虚拟化数据的存储空间以由此提供使得能够由多协议客户端访问数据的高速缓存功能。为此,高速缓存文件管理器还包括多协议引擎,该多协议引擎配置为将多协议客户端数据访问请求转换为可由高速缓存文件管理器和原始服务器都可执行的通用文件系统原始操作。
文档编号G06F17/30GK101228523SQ200680022927
公开日2008年7月23日 申请日期2006年4月24日 优先权日2005年4月25日
发明者B·M·夸里安, J·A·兰戈, K·艾亚尔, M·B·阿姆杜, P·C·伊斯塔姆, P·格里伊斯, Q·郑, R·L·Y·蔡, R·M·恩格里斯 申请人:网络装置公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1