专利名称:包括网络中几个节点的改进的基于计算机的系统的制作方法
技术领域:
本发明涉及基于计算机的系统,包括称为网络中的互连节点的几 个计算机设施或站。
背景技术:
现代网络包括若干用户站,它们连接到 一 台或多台服务器并且能 够本地地或远程地共享应用程序和/或存储空间。
在共享的应用程序使用大量数据的领域内或者在共享大量数据 的领域内,常见的是使用专用的存储系统比如存储区域网络(即
SAN)。
使用这些改进的系统具有一定的缺点,比如相关联的成本、性能 和可扩展性限制,以及与之对应的普遍的安装不便。
不仅如此,就现代网络而言,使用这些改进的系统象征着未充分 使用网络中已经存在的装备。
本发明着手改进这种状况。
发明内容
为此目的,本发明提出了基于计算机的系统,包括多个基于计算 机的设施,称为网络中的互连节点。所述节点中的至少某些称为存储 节点的节点包括至少一个本地直接存取存储器单元,以及安排为根据 访问请求队列来管理对这个本地存储器单元的访问的存储服务器。
所述节点中的至少某些称为应用程序节点的节点包括
*应用程序环境,配备了
-文件系统管理器,安排为保持着可以按虛拟地址形式从这 个节点访问的文件的表示,以及-对应关系模块,能够保持每个虚拟地址与存储节点的本地 存储器单元上的至少一个物理地址之间的对应关系,以及
*存储客户机,能够根据指定物理地址的访问请求与任何一台所
述存储服务器交互。
在这种基于计算机的系统中,至少 一 台所迷存储服务器包括调度 器,能够以指定的次序执行其队列中包含的所述访问请求,并且所述 调度器被安排为将这种次序确定为形成性能准则并且包括所述队列和 /或该队列驻留其上的所述存储节点的一个或多个状态参数的规则组 的函数。
这种类型的基于计算机的系统具有的优势为使用所述网络的站 (它们将也称为节点)的固有存储资源,以便有效地存储数据。在这 些站中,所述存储服务器可以用于优化所述网络和所述存储资源的使 用。因此这种系统使得可以最大限度地利用所迷网络的固有能力而不 需要专门系统。
本发明还涉及能够在包括多个称为节点的互连的基于计算机的
设施的网络中使用的数据管理过程,包括以下步骤
a. 根据以虚拟地址形式的表示,从所述网络的应用程序节点发 送文件请求,
b. 根据每个虚拟地址与所述网络的存储节点的本地存储器单元 上的至少一个物理地址之间的对应关系,确定所述虛拟地址所对应的 至少一个物理地址,
c. 向管理着对其本地存储器单元的访问的存储服务器发送指明 所述物理地址的访问请求,以及
d. 将所述访问请求放置在所述存储服务器的队列中,并且以确 定为形成性能准则并且包括所述本地存储器单元和/或所关心的存储 节点的一个或多个状态参数(处理器负栽、中心存储器的占有率水平 等)的规则组的函数的次序,执行所述队列中包含的访问请求。
根据附图,从作为展示而无限制性而提供的某些实施例的以下说
明的学习中,本发明的进一步优点和特点将变得显而易见,其中
图l显示了根据本发明基于计算机的系统的一般功能图2显示了图1中系统的逻辑实施实例;
图3显示了图2中的单元的组成实例;
图4显示了对图1的系统中的文件进行访问的方法;
图5显示了图4中部分过程的功能实施实例;
图6显示了在图5的实施的范围内,在存储服务器中的调度和执 行循环的实例;
图7至图IO显示了图6的功能实例;
图11显示了在替代实施例中存储服务器的调度和执行循环的实
例;
图12显示了图11的功能实例;以及 图13至图15显示了图12的功能实例。
下面的附图和说明实质上包含了具有某些性质的要素。它们不仅 可以用作帮助理解本发明,而且可以在适当时用作帮助限定它。
具体实施例方式
本发明属于利用了符合版权保护的要素的类型。权利所有人不反 对任何人对本专利文档或其说明书(比如它在官方文件中出现的形式) 进行无改变的复制。对于其他方面,作者保留其一切权利。
图l显示了根据本发明基于计算机的系统的一般设计图。在这个 系统中,应用程序环境2具有对文件系统管理器4的访问入口。可视 化层6建立了文件系统管理器4与存储服务器8之间的对应关系。
图2显示了图1中系统的逻辑实施。在这项实施中,本文也称为 节点的一组站10在网络中互连,它们形成其中的物理和应用程序资 源。
在本文介绍的实例中,所述网络由标注为Ni的5个站构成,其 中i在l和5之间变化。应用程序环境2由Nl、 N2和N3上分布的应用程序层12、 N4上的应用程序层14和N5上的应用程序层16构成。 应当注意,文本使用的术语设施或站应当通用地解释为指代网络 中的基于计算机的单元,应用程序或服务器程序或者二者都在其上运 行。文件系统管理器4由分布式文件系统18以及两个非分布式的文件 系统20和22构成。系统18分布在N1、 N2和N3上并且定义了能够 从分布式应用程序层12访问的全部文件。文件系统20和22分别定义 了能够从应用程序层14和16访问的全部文件。
由文件系统18、 20和22指定的文件被物理地存储在虚拟存储空 间24中,它分布在所有的Ni上,其中i在l和5之间变化。本文将 虛拟存储空间24划分为共享逻辑空间26和两个私有逻辑空间28和 30。
共享逻辑空间26对应于能够利用分布式文件系统18从分布式应 用程序层12访问的空间,而私有逻辑空间28和30对应于能够利用文 件系统20和22从应用程序层14和16访问的空间。
逻辑空间26分布在N1、 N2和N3上,私有逻辑空间28分布在 N3和N4上,而私有逻辑空间30在N5上。
因此,层12(或者分别是14或16)的应用程序利用文件系统18 (或者分别是20或22 )"看到了 "存储在逻辑空间26 (或者分别是 28或30)中的数据,即使该数据未必物理地存在于使用这个应用程序 的站10的存储盘之一上。
不仅如此,空间26、 28和30是纯粹逻辑的,即它们不直接表示 物理存储空间。逻辑空间利用文件系统18、 20和22中引用或包含的 虛拟地址进行映射。
为了访问这些文件中的数据,有必要使用对应关系模块。对应关 系模块包含着逻辑空间中数据的虚拟地址与指示实际存储着这些数据 的物理存储空间的物理地址之间的对应关系表。
对于对应关系模块,众多实施例是可能的。本文介绍的物理存储 空间的分布就是旨在显示本发明非常一般的范围的实例。
正如从所示的实例中可见的,每个站既用于应用程序层也用于存储层。这种多功能性使得可以使用网络的全部站上的自由空间,而不 是让这种空间空闲。
不过,在本发明的范围内,将可以使某些站专门化并创建专用于 存储的节点或专用于应用程序的节点。
这意味着在本发明的范围内,任何站都可以用作应用程序节点、 存储节点,或者同时担当这两种角色。
全部应用程序、存储和文件系统资源都可以本地地集成在每个站 上,也可以分布在网络的若干站上。
这就是例如对站N1、 N2和N3的实例的情况,其资源在应用程 序层面以及文件系统和存储层面上被集成地分布。
图3显示了图2中站10的架构实例。在这个实例中所示的站可 以代表站N1、 N2或N3之一。
站Nx单独地具有的结构类似于图l所示的全局结构。因此它包 括应用程序层32、文件系统34、虚拟层36和形式为直接访问本地存 储器的存储空间38。
虛拟层36包括马达(motor) 40和对应关系表42。对存储空间 38的直接访问由存储客户机44和存储服务器46管理。后文将介绍这 些单元的运行角色和方法。
本文介绍的实例显示了本发明的改进实施例,其中 一切资源—— 应用程序和存储——都分布在网络上。
这意味着例如文件系统34并非全部都在这个站上,而是分布在 它们中的几个上,并且对其的访问涉及与网络上包含所期望数据的其 他节点之间的通信。
对于虛拟层36、存储客户机44和存储服务器46也是如此。这些 单元的分布利用管理模块48来管理。
管理模块48主要用在创建和更新逻辑空间时。在创建或修改逻 辑空间期间,管理模块48调用虚拟层36,以便创建逻辑空间的每个 虚拟地址与给定存储节点上的物理地址之间的对应关系表。
然后,按照创建逻辑空间时制定的映射,在利用这个逻辑空间的文件系统的层次上,建立能够通过这个文件系统访问的文件与组成该 文件的数据的虚拟地址之间的对应关系,"物理,,数据被存储在对应 关系表中的与虚拟地址相关联的物理地址中。
这意味着, 一旦管理模块已经创建了逻辑空间,就产生了虚拟地 址与物理地址之间的对应关系。因此,在给出对逻辑空间的访问入口 的文件系统中,虚拟地址看起来是"空的",而它们对应的物理地址 已经利用对应关系表被"保存"。
正是在建立这个空间中文件的数据与这些数据的虚拟地址之间 的链接时,才填充了物理地址。
由虚拟层所完成的工作可以以多种方式执行。在一个实施例中, 虚拟层将数据分布在不同种类的存储资源上,以便在充分利用网络中 的存储资源流与充分利用这些资源的存储容量之间找到最佳的折衷。
在欧洲专利1 454 269 Bl的
段落中介绍了这些机制的一个实施例。
在本说明书的剩余部分从始至终,所考虑的资源是否为分布式无 关紧要。
为了帮助理解本发明,建议区分应用程序层和存储层。事实上,
官 优势。
图4显示了由系统执行的访问文件的过程,给定节点的应用程序层的应用程序对文件的访问是由文件访问
请求50启动的。文件访问请求50包括
文件系统的所关心的文件的标识符和这个文件中的地址, 请求的大小,即按照所指文件的地址要访问的位数,以及 请求的类型,也就是读或写。
在步骤52,文件系统确定这个文件中数据的一个或多个虛拟地 址,并且才艮据请求50和这些虚拟地址产生一个或多个虚拟访问请求。 每个虚拟地址请求都包括 所期望的虚拟地址,
请求的大小,即按照所指的虚拟地址要访问的位数,以及 请求的类型,它与请求50的类型一致。
现在参考图2中所介绍的系统,步骤52包括确定逻辑空间以及 虛拟地址或由请求50所指定的这个空间上的若干地址,并且产生一个 或多个"虚拟"请求。
在文件访问请求与虚拟访问请求之间存在着等级差异。事实上, 文件访问请求将把大量虛拟地址的内容作为目标对象以便能够重构文 件的内容,而虚拟请求则把与这个地址相关联数据块的内容作为目标
得到的虚拟访问请求然后被发送到虛拟层,它在步骤54确定物 理地址和对应的存储空间。
为了确定物理地址,虛拟层的操作方式为使用马达40和对应关 系表42。
在读访问请求的范围内,所期望的文件已经存在于存储空间38 中,马达40以虛拟地址调用对应关系表42,以便通过对应关系确定 文件中数据的物理地址。
在写访问请求的范围内,该文件未必在存储空间38中预先存在。 然而,正如先前所见,虚拟地址与物理地址之间的对应关系是固定的, 那么马达40以与读请求范围内相同的方式操作,以便确定数据的物理 地址。在所有情况下, 一旦马达40已经确定了物理地址,它就在步骤 56产生物理访问请求,并且将其发送到存储客户机44。
在步骤56,根据请求50和在步骤54中确定的物理地址产生物理 访问请求0
这些请求包括
-目标的物理地址;
—请求的大小,即按照作为请求的目标对象的物理地址要访问的 位数,以及
-试图进行的动作的类型,也就是读或写。
从步骤54中直接得到物理地址和请求的大小,而请求类型从所 述虚拟访问请求的类型继承。
然后开始循环,其中对于步骤52中得到的全部物理地址,当物 理访问请求已经被发送到存储客户机44时,便达到了停止条件58。
事实上,每个物理访问请求都放置在存储客户机44的请求队列 中以便在步骤60执行。存储客户机44可以可选地包括许多队列,例 如它与之进行交互的每台存储服务器46都有队列。
为了简明起见,在这个循环中,步骤56的一切物理访问请求都 显示为依次执行。不过,执行也可以并行地进行,而不是仅以串行方 式。
在所介绍的实例中,请求是一层一层地发送的,直到它们到达了 物理访问层。不过,可以仅仅确定和发送地址(虛拟的然后是物理的), 然后在物理层的层面,恢复初始文件请求的所选定属性以便形成物理 访问请求。
为了执行给定的物理访问请求,存储客户机44与存储站的存储 服务器46交互,该站包含着由所述物理访问请求所指定的物理地址所 在的存储空间38。这种交互将利用图5进行解释。
正如从图5可见,存储客户机44对物理访问请求的执行包括首 先由所述存储服务器46接收物理访问请求。本文的这种接收釆取的形 式为发送头部62,它告诉存储服务器46请求的类型、这个请求的大小以及作为目标对象的物理地址。
然后该请求通过其头部存储在存储服务器46的队列64中。队列 64包含由一切存储客户机44向所述存储服务器46所发送的尚未执行 的 一切访问请求以及它们的执行状态。
存储服务器46可以包括许多队列64,例如对于网络中每台存储 客户机44都有一个队列,或者对于存储服务器46管理对其的访问的 每个存储器空间都有一个队列,或者适于执行后文将介绍的调度策略 的任何其他布局。
存储服务器46因此可以从一台或多台存储客户机依次接收大量 的请求,并且使执行它们的次序能够最有利于占用执行它的站、它管 理的磁盘的充满程度以及一般来说网络的充满程度。
在已知的布局中,存储客户机与存储服务器之间的关系被称为 "面向客户机的"。在这种类型的关系中,来自存储客户机44的请求 队列占大多数,只有服务器已经响应了先前的请求后,才允许客户机 向其发送新的访问请求。
本文介绍的架构构成了 "面向服务器"的对存储器空间的访问的 管理。与已知的布局不同,给定的存储客户机44因此能够向同一存储 服务器46发送大量的访问请求,而不需要后者首先对存储客户机44 先前发送的请求发回结果。这就使得可以在输入/输出访问中实现磁盘 和网络负载的更好的平衡,并且尤为有益。
与在其队列64中接收请求并行,存储服务器46执行循环中的步 骤66,它在其中调度和执行在队列中所收到的请求。头部62所对应 的请求因此以存储服务器所确定的次序在这个循环中处理。
在步骤66,服务器对队列64中的请求执行调度,以便在考虑若 干参数(比如处理器负载、所述站的中心存储器的充满程度等)的情 况下本地地优化它管理其访问的存储空间的使用以及它在其上运行的 站的使用。
在步骤66进行的调度和执行利用图6进行解释。
在给定时刻,存储服务器46在其队列中具有一组请求,它们可以处于多种状态。这些状态可以是例如"将被处理,,(在请求刚刚被
队列收到时)、"等待执行"(当存储服务器46具有了执行请求所需 要的全部数据并且已经安排了后来的执行时)、或者"在执行过程中"。
同样似乎这些请求具有至少两种分开的类型。第一种类型称为 "网络,,并且指示在存储服务器46与给定存储客户机44之间必须发 生的交换。另一种类型称为"磁盘"并且指示存储服务器46必须在其 管理的存储空间之一上执行的访问,以便读取或写入数据。
执行步骤66的调度时依据这些请求的性质及其状态、系统的网 络状态参数和由存储服务器46所管理的存储空间的状态参数,以及在 其上运行的站的使用情况,并考虑了若干参数,比如处理负载、所述 站的中心存储器的填充程度等。
步骤66将关于其中存储服务器管理多个数据存储盘的情况进行 介绍。结果,关于循环具有全局性质的许多要素是若干表,有可能是 多维的。
因此,将使用的表称为Last_Sect,它包括单行,它的每列表示 着这一列所对应的磁盘上被访问的最后一个扇区。
类似的是,将使用矩阵Tm一Used,其中每行都表示存储某个客 户机,每列都表示某个磁盘,x行和y列的交叉点处的元素值表示客 户机x发出的请求占据磁盘y的时间。
步骤66的循环处理数据70。数据70包含请求的列表File和请 求的列表List一Req。请求的列表File包含具有"将被处理"状态的一 组请求,也就是在该时刻在存储服务器的队列中所收到的若干请求。
称为List一Req的列表包含着具有"等待执行"或"在执行过程 中,,状态的一组请求。这些请求的每条都伴随有年龄指示器。请求的 年龄指示器指出了从这个请求添加到列表List一Req起它已经经过的 循环次数。
在步骤72,存储服务器以列表File和List一Req作为参数调用函 数Init()。函数Init()将参考图7更详细地介绍。
函数Init()在步骤700开始,在步骤702,调用以列表File和List—Req作为参数的函数Add_New_Req()。函数Add—New—Req()具 有从列表File中获得全部新请求并将其添加到列表List—Req的作用。 在列表List_Req中,新请求的年龄指示器被函数Add_New—Req()复 位为0。
步骤702的后面是关于存储服务器的占用情况的双重条件测试, 以便优化系统功能。第一个条件在步骤704中测试,其中测试等待指 示器Stat—Wt。
当指示器Stat—Wt等于0时,这意味着从先前循环开始没有任何 等待。相反,先前循环期间的等待由指示器Stat一Wt等于l所表明。
第二个条件在步骤706中测试,其中存储服务器验证列表File 中存在着两个以上的请求。
如果这些条件之一不满足,也就是在先前循环期间有了等待,或 者在列表File中存在着两个以上的请求,就在步骤708执行函数Init(), 其中指示器Sta^Wt被设置为0,用于下一个循环。
然后,在步骤710,存储服务器检查列表List一Req是否为空。如 果不为空,函数Init()在步骤712终止,使调度循环能够继续以便处理 列表List—Req中的请求。
如果列表List一Req为空,那么就没有必要继续调度循环,并且 存储服务器在步骤714通过函数Wait(l)等待一毫秒,然后,将指示器 Stat一Wt设置为l,用于下一个循环,并返回到步骤702,以便恢复由 存储服务器的队列所收到的任何新请求。
在函数Init()之后,存储服务器在步骤76调用函数Run_01d()。 这个函数的目的是执行List—Req中的具有非常高年龄指示器的请求。
函数Run一Old()利用图8介绍,并且如果执行了旧的请求就返回 指示器Rst等于l,否则Rst等于O。
在开始步骤800之后,存储服务器在步骤802调用函数 Max_Age()。函数Max—Age()将列表List_Req作为参数,并且返回 List一Req中的请求的最高年龄指示器。
如果这个年龄指示器大于150,那么存储服务器便在步骤804调用函数Age(),它将列表List—Req和数字120作为参数。函数Age() 确定List_Req中的年龄指示器大于120的请求組。这些请求被存储在 请求列表List—Old中。
然后,存储服务器在步骤806以列表List—Old和表Last—Sect作 为参数来调用函数Req_Min_Sect()。函数Req—Min—Sect()使得可以判 断出列表List一Old中哪项请求具有的请求访问扇区最接近近来所访问 的最后一个扇区。
^t到这一点的方式为对于List一Old中包含的每项请求,计算目 标磁盘扇区与Last一Sect中所包含的这个磁盘上被访问的最后扇区之 间的距离绝对值。 一旦确定了最小值,对应的请求便存储在请求Req 中。
然后,存储服务器在步骤808通过将请求R叫作为函数Exec() 的参数进行调用而执行它。函数Exec()执行请求Req,测量该请求的 执行时间并且将这个时间存储在数字T_ex中。
该请求的执行利用图9介绍。这种执行基于三元组(triplet), 包括请求900的物理地址-大小-类型,该请求包含在队列64中的头部 中。
在步骤902,关于请求类型的测试将确定要执行的磁盘和网络输 入/输出的环节(chain)。
如果是写请求,存储服务器便在步骤904要求存储客户机向其发 送写入数据。存储服务器等待该数据,并且在收到它们后,在步骤906 将其输入到由物理地址所指定的空间中。
存储服务器46然后向存储客户机44发送写收据908以确认该写 入。在此之后,执4亍在步骤914完成。
如果是读请求,存储服务器46便在步骤910访问由物理地址所 指定的空间中包含的数据,直至该请求的大小,并且在步骤912将这 些数据发送到存储客户机44。在此之后,执行在步骤914完成。
一旦执行了请求Req,存储服务器就在步骤810更新List—Req。 进行这种更新的方式为将列表List一Req和数字T_ex作为参数调用函数Upd()。
这个函数从列表List_Req和List—Old中撤销请求Req,并且更 新矩阵Tm—Used,将数字T一ex加入发送请求Req的存储客户机44 对应的行与请求Req所确定的目标磁盘对应的列的交叉点处的元素。 这使得可以使每台存储客户机占有每个磁盘的状态保持最新。最后, 更新表Last一Sect中请求Req已经访问的磁盘的列,以考虑实际访问 的最后扇区。
存储服务器46然后在步骤812检查列表List—Old是否为空。如 果为空,便在步骤814将指示器Rst设置为1以表明已经执行了 "旧" 请求,并且函数Rui^01d()在步骤816完成。如果不是这种情况,函 数Run—OW()返回到步骤806以执行剩余的其他旧请求。
如果函数Max-Age0返回的年龄指示器小于150,那么在步骤818 将指示器Rst设置为0以表明尚未执行任何"旧"请求,并且函数 Run—01d()在步骤820完成。
调度和执行循环然后继续在步骤78对指示器Rst进行测试,以 便确定是否已经执行了 "旧,,请求。如果是这样,那么存储服务器便 通过再次调用函数Init()利用步骤72重复该循环。
否则,存储服务器便通过以列表List—Req作为参数调用函数 Run—Min—Use(),来终止该调度和执行循环。 ,
参考图10介绍函数Run_Min_Use()。在步骤1000中的初始化之 后,存储服务器46在步骤1002以数字1作为参数调用函数Add_Age()。 函数Add一Age()将列表Lis^Req中的全部请求的年龄指示器都增加1, 并且将计数器Min一t复位到0。
在步骤1004 ,存储服务器46然后以列表List_Req和计数器Min—t 作为参数调用函数Use_Inf_Min_t()。函数Use_Inf—Min—t()对列表 List—Req进行遍历,并且对每项请求都验证矩阵Tm一Used中发送它 的存储客户机44对应的行与它指定的磁盘对应的列的交叉点处的元 素是否小于Min一t。
确切地说,这意味着如果已经发送请求的客户机已经占用它的目标磁盘的时间少于Min一t,给定请求就被选中。由此选中的一切请求 都存储在列表List_Min_Req中。
在步骤1006,存储服务器进行测试以查看List_Min—Req是否为 空。如果是这样,那么计数器Min—t在步骤1008中增加1,并且重复 步骤1004。
一旦列表List_Min—Req包含至少一项请求,存储服务器46就执 行步骤1010、 1012和1014,它们与先前介绍的步骤906、 908和910 的不同之处仅仅在于这里使用的是列表List—Min_Req,而不是列表 List—Old 。
最有利的请求才艮据步骤1010、 1012和1014执行之后,存储服务 器46在步骤1016调用函数Rst—Tm—Used()。
函数Rst_Tm—Used()的目的是在一台存储客户机44与其他存储 客户机相比已经使用磁盘相当多时使矩阵Tm—Used复位。
对于这种情况,函数RstJTmJJsed()将矩阵Tm_Used的全部元 素求和。这表示了全部存储客户机44对存储服务器46所管理的磁盘 的占用时间的总和。
如果这个总和超过了预定值,那么矩阵Tm—Used的全部元素都 ,皮i殳置为0。否则,矩阵Tm—Used不变。
在步骤1016之后,函数Run—MinJJse()在步骤1018终止,而调. 度和执行循环在步骤72再次开始。
函数Run—MinJJseO因此可以根据请求头部中包含的信息而调 度请求的执行,而不考虑由这些请求所指定的任何数据的存在。
所以,以这种方式可以调度大量请求的执行,特别是写请求,而 不会因为这些请求中要写入的数据而使存储器空间超载。
不过,在其他应用程序中,将可以仅仅调度列表File中的那些执 行请求所需要的全部数据都可用的请求。做到这一点的方式可以是通 过并行地提供数据供应循环,从而确保向请求数据的存储所分配的空 间被填充为使得将要调度的请求的数量最优化。
关于存储服务器管理多个数据存储盘的情况已经介绍了步骤66。结果,与循环相比,性质为全局的许多元素是表,有时是多维的。 如果存储服务器仅仅管理单个磁盘,情况就可以简化。那么,元素
Last—Sect变为简单的值,而元素Tm一Used变为一维表(存储客户机)。 不仅如此,在此已经执行调度的方式为将存储服务器的若干队列
中的全部请求都放置在一起。不过,可以串行或并行地要么通过将列
表List_Req做索引要么通过对每个队列执行调度,分别作为从其中取
出请求的队列的函数而区分这些请求。
图ll显示了调度和执行循环的替代实施例。
在这个具体实施例中,调度和执行循环实质上与图6所示的循环 一致,只不过它还具有睡眠循环110,在图6所示的步骤之前执行该 睡眠循环110。
睡眠循环110包括睡眠管理函数Sleep—Mng() 112,其结果存储 在变量Slp中。
变量Slp表明了是否将存储服务器临时置于睡眠状态的决策。这 项功能将连同图13至图15进一步介绍。
在函数Sle印—Mng() 112之后,睡眠循环110包括关于变量Slp 值的测试114。
如果这个变量不为0,那么存储服务器被函数Force一Slp() 116临 时地置于睡眠。然后睡眠循环110在112处复位。
函数Force一Slp()116 "将存储服务器置于睡眠",方式为在队列 中发送称为"置于睡眠"的请求。置于睡眠的请求优先于一切其他请 求。它被执行时,会导致存储服务器在可参数化的时间内空转。这个 函数可视为与图7中函数Wait()等同。
如果变量Slp为0,调度和执行循环的执行与图6所示完全相同。
现在将参考图12介绍函数Slp_Mng()。正如从这幅图可见,函 数Slp—Mng()包括函数Upd_Slp_Par() 1122、函数Perf_Slp() 1124和 函数Mnt_Slp() 1126的顺序执行,再在步骤1128终止。
函数Upd一Slp一Par() 1122的角色是更新用于判断是否将服务器 置于睡眠的参数。现在将借助于图13介绍这个函数。正如从图13可见,函数Upd—Slp_Par() 1122更新了 Tm_psd、 Nb—Rq_Slp两个参数以及变量Slp。
在步骤1302,利用函数Elps—Time()更新了参数Tm—psd。函数 EIpsJTime()计算了从最后执行函数Upd—Slp—Par() 1122以来已经经 历了多长时间。
做到这一点的方式可以为,例如从一个循环到下一个循环保留每 次执行时都更新的时间/日期变量,然后在后面循环期间将这个变量与 执行时的当前时间进行比较。
在步骤1304,将参数Nb_Rq—Sip增加数值Tm_psd*Fq_Rq_Slp。 参数Nb_Rq_Slp表示要置于睡眠的请求数目。
在这里介绍的实施列中,存在着两种主要类型的睡眠条件。第一 种是关连性能的条件类型,第二种是有关名义占用程度的类型。这种 程度可以利用管理模块具体地定义,或者概括地说可以视为由系统管 理员固定的参数。
参数Nb—Rq_Slp属于这第二种类型。它是计数器,确保服务器 以频率Fq一Rq—Slp创建睡眠请求,该频率是由存储服务器的管理员所 调节的参数。
不过,正如进一步将变得显而易见的,睡眠请求实际上仅仅在一 定的条件下才会执行。这种计数器将使得可以确定可能已经执行了多 少睡眠请求。
然后,在步骤1306,变量SIp被复位为O,用于当前睡眠循环, 并且函数Upd—Par—Slp()在步骤1308终止。
现在将参考图14介绍函数Perf_Slp()。这个函数使得可以根据存 储节点和队列的状态参数决定置于睡眠。
为此,这个函数基于1402和1404两项测试。第一项测试1402 涉及本地资源(即存储服务器在其上执行的存储节点的资源)的占用 程度。
在这里介绍的实施列中,被测试的是处理器资源。为了做到这一 点,调用了评估处理器占用程度的函数。这些函数可以属于标准类型,并且可以基于例如对由操作系统所保留的全局变量的参考,它们也可 以是更专用的函数。
如果处理器已经处于极限负载(例如,高于90%),那么它就会 决定将存储服务器置于睡眠以便不损害存储节点的性能。
因此,如果是这种情况,变量Slp在步骤1406被设置为1并且 函数Perf—Slp()在步骤1408终止。
应当注意,连同或取代处理器负载在此可以使用许多其他条件, 比如本地存储器单元的存取负载或者技术人员将能够设想的其他条 件。
仅仅在第一项测试1402为负时,也就是说在处理器的负载不太 重时,才进行第二项测试1404。这个第二项测试涉及评估队列中包含 的请求数目。
事实上,如果这个数目太低,存储服务器就没有很好地利用调度 循环,因此潜在地降低了性能。
因此,如果队列中存在的请求数目太低,变量Slp在步骤1406 被设置为1并且函数Perf—Slp()在步骤1408终止。否则,函数直接在 步骤1408终止。
这里也应当注意,可以使用许多其他条件,原则是只要尚未满足 有利的性能条件就将存储服务器置于睡眠。
在这些替代条件当中,人们可以注意例如队列中存在的请求类 型。因此,如果请求是"远离的,,,也就是说如果由每个请求指定的 物理地址与存储服务器先前访问的物理地址之间的距离超过某固定阈 值,就可以认为在队列中等待"更靠近的"请求到达更有利。可以使 用的另一种类型准则是请求的性质,即读还是写,或者涉及请求特征 的其他准则。
现在将借助于图15介绍函数Mnt一Slp()。这个函数使得可以取消 睡眠的计划时段,或者相反,强加"维护式的"睡眠。函数Mnt一Slp() 基于1502和1508两项测试。
第一项测试1502将参数Nb一Rq—Slp与为了允许睡眠请求之一被执行所需的睡眠请求最少数量进行比较。这就归结为判断最近是否已 经执行了许多睡眠请求。
如果参数Nb_Rq_Slp小于该最小数量,变量Sip在步骤1504被 设置为0并且该函数在步骤1506终止。
仅仅在第一项测试1502为肯定的时才进行第二项测试1508。这 个第二项测试将参数Nb—Rq一Slp与睡眠请求的最大数量进行比较。这
;':、、 。、、、、''
如果参数Nb_Rq—Slp小于所述最大数量,函数在步骤1506终止。 在相反的情况下,变量Slp在步骤1510被设置为1,然后该函数在步 骤1506终止。
这意味着
-即使事先计划要执行睡眠请求,但是由于在不久前已经执行了 许多其他请求,因此将不执行它,或者相反,
-当已经经历了 一段时间而未执行睡眠请求时,也会做出随意的 决定以执行一个睡眠请求,即使按照其他准则这并不必要。
由于函数MnLSlp()是在函数PerJLSlp()之后执行的事实,所以 应当理解它能够推翻后者的决策。换言之,由于维护存储服务器的原 因,这个函数使得可以通过对变量Slp起作用而取消已计划的睡眠时 段,或者强制执行一个计划外的睡眠。
也应当注意,函数Force一Slp()在每次执行时都将计数器 Nb_Rq_Slp减少一个单位。
正如从阅读上文将变得显而易见的,调度和执行循环包括依次处 理的三个主要部分以及可选的预循环
-可选的睡眠循环,用于保证存储服务器所在的存储节点的性能;
-第一部分,用于管理新请求;
-第二部分,用于处理最旧的请求;
-第三部分,用于处理来自使用存储服务器最少的存储客户机的请求。非常显然,这些部分彼此独立并且简化的循环可以仅仅包含后者 中的一个或几个。同样清楚的是这些部分的处理可以是并行的,并且 可以执行第三部分,而不是执行了 "旧,,请求之后重新设置该循环。
第二和第三部分可以视为更一般概念的特定实例。
因此,在第二部分,对"旧"请求的处理起于管理"例外"请求 的需要,其不管由于什么原因而尚未被该算法优先执行。这是必须记 住的指导构思,因为可以设想避免这些情况的其他实施方案。
至于第三部分, 一般的概念是根据存储客户机与存储服务器之间 的关系作为定量准则的函数调度请求。因此,在所介绍的实例中,本 地存储器单元使用时间的定量准则被用于在若干请求之间进行区分。
不过,可以根据表征存储客户机/存储服务器交互特性的统计结 果来使用其他定量准则,比如数据交换的平均水平、在这些交互期间 的平均网络等待时间、数据包丢失的程度等。
不仅如此,本文介绍的实施方案是作为简化的实例而给出的,并 且利用常规的编程技术(比如使用緩冲区或者考虑调度的其他参数) 可以《故进一步改进。
在所提供的描述中,调度是基于有利于两个主轴的策略执行旧 请求以及在磁盘与客户机之间共享负载。
(通过对应地改变前述方法)可以实施其他策略以有利于其他方 法,比:i口
-最大限度地利用磁盘带宽,例如将邻近的或者近乎邻近的请求 聚集到单个请求中,从而节省对磁盘的访问。
-最大限度地利用磁盘等待时间,例如通过在存储服务器处产生 以磁盘的中心为目标的若干最优化请求以便减少等待时间,或者通过 在存储服务器处产生可预示的请求(即通过预见将来的请求而指向数 据)。
其他策略及其实现以及无数的变种对技术人员将显而易见。 因此,访问已存储数据的应用程序可以包括管理多种要素之间的 关系的驱动程序,这些要素例如是应用程序与文件系统之间的交互、文件系统与对应关系模块之间的交互、对应关系模块与存储客户机之
间的交互;存储服务器的策略实施方案,方式为从每个要素获得结果 和利用这个结果(或者这个结果修改后的形式)调用下一个要素。
作为替代,所述系统可以是自治的,不依赖于调用数据的应用程 序,并且这些要素能够彼此通信,使得所述信息从一个要素到一个要 素向下层传播然后再传上来。
类似的是,以不同的方式可以确保这些要素之间的通信,例如利
用POSIX接口、 IP、 TCP和UDP协议、共享存储器、RDMA(远程
直接存取存储器)。心中应当记住,本发明的目的是根据现有网络资
源提供专业化存储器系统的优点。
以上介绍的系统实施例基于网络,产生其中的站的计算机包括 *专用或通用处理器(例如属于CISC或RISC类型或其他类型); *一个或多个存储盘(例如具有串行ATA或SCSI接口或其他接
口的硬盘)或者任何其他类型的存储器,以及
*网络接口 (例如Gigabit、 Ethernet、 Infiniband、 SCI…) *基于操作系统(比如Linux)的应用程序环境,用于支持应用
程序并提供文件系统管理器;
*产生对应关系模块的应用程序组件,例如Seanodes(注册商标)
/>司的Exanodes (注册商标)应用程序的Clustered Logical Volume
Manager模块;
*产生每个NBD的存储客户机和服务器客户机的应用程序组件, 例如Seanodes (注册商标)公司的Exanodes (注册商标)应用程序的 Exanodes Network Block设备模块;
*管理共享要素的应用程序组件,例如Seanodes (注册商标)公 司的Exanodes (注册商才示)应用考呈序的Exanodes Clustered Service Manager模块。
可以在网络中产生这种类型的系统,包括
*适于网络上使用的应用程序并用作应用程序节点的常规用户 站,以及*根据上述说明产生的基于计算机的装备组,用作网络的服务器 和存储节点。
产生本发明范围内的装置的替代实施例的其他装备和应用程序 对技术人员将变得显而易见。
本发明涵盖基于计算机的系统,其整体地包括应用程序节点和存 储节点。它也涵盖这种基于计算机的系统的各个要素,尤其是分开的 应用程序节点和存储节点,以及用于产生它们的多种装置。
同样,数据管理过程应当总体考虑,也就是按照应用程序节点与 存储节点的交互,而且还要考虑适于产生这个过程的应用程序节点和 存储节点的各个基于计算机的设施。
以上说明的陈述介绍了本发明的具体实施例。不应当将其视为限 制性的或者以限制的方式描述后者,并且它特别地覆盖了相互介绍的 若干变种的特点的一切組合。
本发明作为产品还覆盖所介绍的软件要素,它们以任何计算机可 读"介质"(支持)面世。表述"计算机可读介质,,涵盖磁性的、光 学的和/或电子的数据存储支持,以及传输支持即媒介物,比如模拟或 数字信号。
这样的媒体也包括软件要素自身,也就是适于直接运行的要素, 比如用于安装和/或配置的软件要素,比如安装盘或远程可加载的安装 程序。这样的安装可以在客户机站和服务器站上全局地进行,也可以 每次以合适的产品分开地进行。
权利要求
1.一种基于计算机的系统,包括多个称为网络中的互连节点的基于计算机的设施,-至少某些称为存储节点的节点包括至少一个本地直接存取存储器单元(38),以及安排为根据访问请求队列(64)管理对这个本地存储器单元(38)的访问的存储服务器(46),-至少某些称为应用程序节点的节点,各自包括*应用程序环境,具有以块地址形式从这个节点可访问的文件的表示,每个地址指定在存储节点的本地存储器单元(38)上的至少一个物理地址,以及*存储客户机(44),能够根据指定块地址的访问请求与任何一台所述存储服务器(46)交互,其特征在于,至少一台所述存储服务器(46)包括调度器,该调度器能够以指定的次序执行其队列(64)中包含的访问请求,而且在于所述调度器被安排为将这种次序确定为形成性能准则并且包括所述队列和/或该队列驻留其上的存储节点的一个或多个状态参数的规则组的函数。
2. 根据权利要求1所述的基于计算机的系统,其特征在于,所 述规则組还包括所述本地存储器单元的一个或多个状态参数。
3. 根据权利要求1或2所述的基于计算机的系统,其特征在于, 所述规则组包括适于对所述队列(64)中存在的请求进行选择并基于 每项请求的头部(62)的内容的规则,而且在于这条规则在不存在与 这些请求相关联的其他数据的情况下是可运行的。
4. 根据前述权利要求之一所述的基于计算机的系统,其特征在 于,所述规则组包括适于对所述队列(64)中存在的请求进行选择并 基于依据这台存储客户机(44)与所关心的存储服务器(46)之间的 先前交互所建立的定量准则的规则。
5. 根据权利要求4所述的基于计算机的系统,其特征在于,所述定量准则由所述存储客户机依据所关心的存储服务器(46)的先前 负载的持续时间而建立。
6. 根据前述权利要求之一所述的基于计算机的系统,其特征在 于,所述规则组包括适于对所述队列(64)中存在的请求进行选择并 基于所述请求在所述队列(64)中已经存在的时间长度的规则。
7. 根据前述权利要求之一所述的基于计算机的系统,其特征在 于,所述规则组包括适于对所述队列(64)中存在的请求进行选择并 基于每项请求指定的物理地址与所述存储服务器(46)先前访问的物 理地址之间的距离的规则。
8. 根据前述权利要求之一所述的基于计算机的系统,其特征在 于,所述存储服务器(46 )的至少其一被安排为按次序执行其队列(64 ) 中包含的访问请求,其中所述次序被确定为从关于所述性能准则而形 成策略的多个不同规则组当中所选择的规则组的函数。
9. 根据前述权利要求之一所述的基于计算机的系统,其特征在 于,至少某些所述存储客户机(44)被批准在所关心的存储客户机向 给定的存储服务器先前发送的访问请求完成之前,向这台存储服务器(46)选择性地发送访问请求。
10. 根据前述权利要求之一所述的基于计算机的系统,其特征在 于,至少某些所述存储服务器(46)管理几个本地存储器单元(38)。
11. 根据前述权利要求之一所述的基于计算机的系统,其特征在 于,至少某些所述节点是应用程序节点和存储节点。
12. 根据前述权利要求之一所述的基于计算机的系统,其特征在时间长度的规则。
13. 根据权利要求12所述的基于计算机的系统,其特征在于, 所述规则基于所述存储节点的资源的占用程度。
14. 根据权利要求12或13所述的基于计算机的系统,其特征在 于,所述规则基于从包括所述队列中包含的请求数量和所述队列中包 含的请求类型的组当中选定的准则。
15. 根据权利要求12至14之一所述的基于计算机的系统,其特征在于,所述规则基于对从所述先前移动以来已经经历的时间的评估。
16. 根据前述权利要求之一所述的基于计算机的系统,其特征在于,它包括对应关系模块(36),能够保持每个块地址与存储节点的本地存储器单元(38)上的至少一个物理地址之间的对应关系。
17. 根据权利要求16所述的基于计算机的系统,其特征在于,所述对应关系模块(36)包括对应关系表(42),该对应关系表(42)含有每个块地址与存储节点的本地存储器单元(38)上的至少一个物理地址之间的对应关系;以及马达(40),被设计为通过下列方式对给定请求定义至少一个物理地址以块地址询问对应关系表(42),并且向所关心的存储客户机(44)发送带有所确定的物理地址的给定请求,以便执行所述给定请求。
18. —种数据管理过程,能够用于包括多个称为节点的互连的基于计算机的设施的网络中,包括以下步骤a. 根据以虚拟地址形式的表示,从所述网络的应用程序节点发送文件请求,b. 根据每个虛拟地址与所述网络的存储节点的本地存储器单元(38)上的至少一个物理地址之间的对应关系,确定所述虚拟地址所对应的至少一个物理地址,c. 从存储客户机(44 )向管理着对与所述物理地址相关联的所述本地存储器单元(38)的访问的存储服务器(46)发送指明所述物理地址的i方问请求,其特征在于,所述过程进一步包括以下步骤d. 将所述访问请求放置在所述存储服务器(46)的队列(64)中,并且以确定为形成性能准则并且包括所述队列和/或它驻留其上的所述存储节点的一个或多个状态参数的规则组的函数的次序,执行所述队列(64)中包含的访问请求。
19. 根据权利要求18所述的过程,其特征在于,所述规则组还包括所述本地存储器单元的一个或多个状态参数。
20. 根据权利要求18或19所述的过程,其特征在于,所述规则组包括适于对所述队列(64)中存在的请求进行选择并基于每项请求的头部(62)的内容的规则,而且在于这条规则在不存在与这些请求相关联的其他数据情况下开始生效。
21. 根据权利要求18至20之一所述的过程,其特征在于,所述规则组包括适于对所述队列(64)中存在的请求进行选择并基于依据发出每项请求的所述存储客户机(44)与所关心的存储服务器(46)的先前交互所建立的定量准则的规则。
22. 根据权利要求21所述的过程,其特征在于,所述定量准则由所述存储客户机依据所关心的存储服务器(46)的先前负载的持续时间而建立。
23. 根据权利要求18至22之一所述的过程,其特征在于,所述规则组包括适于对所述队列(64)中存在了选定时间长度的请求进行选择的规则。
24. 根据权利要求18至23之一所述的过程,其特征在于,所述规则组包括适于对所述队列(64)中存在的请求进行选择并基于每项请求指定的物理地址与所述存储服务器(46)先前访问的物理地址之间的距离的规则。
25. 根据权利要求18至24之一所述的过程,其特征在于,所述规则組包括从关于所述性能准则形成策略的多个不同规则组当中所选择的多条规则。
26. 根据权利要求16至23之一所述的过程,其特征在于,在同一访问请求发送者(44)预先向这台存储服务器(46)发送访问请求的步骤d.完成之前,所关心的访问请求发送者(44)能够以另一个物理地址再现步骤c.。
27. 根据权利要求18至26之一所述的过程,其特征在于,至少某些所述存储服务器(46 )为每个访问请求发送者(44 )包括队列(64 )。
28. 根据权利要求18至27之一所述的过程,其特征在于,至少某些所述存储服务器(46)管理着对多个本地存储器单元(38)的访问
29.根据权利要求18至28之一所述的过程,其特征在于,所述的规则。
30. 根据权利要求29所述的过程,其特征在于,所述规则基于所述存储节点的资源的占用程度。
31. 根据权利要求29或30所述的过程,其特征在于,所述规则基于从包括所述队列中包含的请求数量和所述队列中包含的请求类型的组当中选定的准则。
32. 根据权利要求29至31之一所述的过程,其特征在于,所述规则基于对从所述先前移动以来已经经历的时间的评估。
33. —种形成存储节点的基于计算机的设备,被安排为根据权利要求18至32之一执行所述过程的步骤d.。
34. —种计算机程序产品,包括若干程序代码装置,在计算机上运行时适于执行根据权利要求18至33之一所述的过程。
全文摘要
本发明涉及包括网络中几个节点的改进的基于计算机的系统。一种基于计算机的系统,包括几台称为网络中的互连节点的基于计算机的设施,存储节点包括直接存取本地存储器单元(38),以及根据队列管理对这个单元的访问的存储服务器(46);应用程序节点,每个包括应用程序环境,具有以指定本地存储器单元(38)上的物理地址的块地址形式可访问的文件的表示,以及存储客户机(44),能够根据指定块地址的访问请求与存储服务器(46)交互。存储服务器(46)包括调度器,能够以确定的次序执行其队列(64)中包含的访问请求。这种次序被确定为形成性能准则并且包括所述队列和/或该队列驻留其上的存储节点的一个或多个状态参数的规则组的函数。
文档编号H04L29/06GK101529860SQ200780039790
公开日2009年9月9日 申请日期2007年10月25日 优先权日2006年10月26日
发明者C·吉坦尼特, N·本卡利发, O·科泽特, S·理查德 申请人:思诺蒂斯公司