文件系统串行化重新初始化装置、方法和系统的制作方法

文档序号:6656504阅读:214来源:国知局
专利名称:文件系统串行化重新初始化装置、方法和系统的制作方法
技术领域
本发明涉及文件服务器,更确切地说,涉及响应串行化故障对文件服务器中的串行化数据进行重新初始化。
背景技术
对于在若干多处理器文件系统服务器之间共享的数据存储设备来说,多个数据访问请求的串行化可能是极其复杂的。多个数据访问请求的串行化包括定义将哪些应用程序连接到哪些存储设备或其哪些部分,以及为每个应用程序提供什么种类的访问。例如,对一定的写操作某些应用程序被授予排他访问权限,而其他应用程序可能未收到排他访问。同时,对共享数据存储设备上一定的读操作某些应用程序可以收到共享访问权限。通过定义在哪些时间允许哪些应用程序进行哪些种类的访问,文件系统服务器能够预防许多数据操作错误,如若不然,则这些错误可能发生。
不过,串行化技术并非完美,而且串行化措施可能出错。在发出请求的应用程序尚未得到对所请求的数据文件或目录的读或写访问权限时,就可能发生串行化故障。例如,在两个应用程序请求对已经专门分配给其他应用程序的数据的数据访问权限时,就可能发生串行化故障。
图1a显示了应用程序环境10的一个实例,其中可能发生串行化冲突。确切地说,所展示的应用程序环境10包括第一应用程序12和第二应用程序14。第一应用程序12对第一数据文件18具有排他权限(如实线箭头16所示)。同样,第二应用程序14对第二数据文件22具有排他权限(如实线箭头20所示)。
图1a也显示了第一应用程序12对第二数据文件22请求访问权限(如虚线箭头24所示)。同样,第二应用程序14可能对第一数据文件18请求访问权限(如虚线箭头26所示)。在这种情况下,发生了串行化“死锁”故障,此时第一应用程序12和第二应用程序14要一直到所请求的访问权限被允许才能进行,但是所请求的访问权限由于所请求的数据文件18、22已经被非请求的应用程序12、14使用而无法被允许。发生这种类型的串行化故障时,文件系统服务器(未显示)可能变为不响应从而不可用,因为应用程序12、14在请求附加的访问权限的同时继续保持其现有的访问权限。
虽然内部串行化故障就其本身而言既不损害数据文件18、22中所存储数据的完整性,也不损害正在运行的应用程序12、14的运行期状态,但是这样的串行化故障对文件系统服务器能产生剧烈的后果。例如,严重的串行化故障可能出现在作为操作系统中心的文件系统,比如从文件系统加载程序的能力对基本操作系统功能是必要的之时。不仅如此,串行化故障能够导致操作系统运行中断,从而引发所有正在运行的应用程序处理故障,包括与对应文件系统不直接相关联的处理。此外,由于文件系统服务器停机时间影响了商业上关键的应用程序,因此串行化故障可能导致超高的成本。
关于文件系统串行化故障,常规的措施集中在修正所有串行化故障的基本原因上。不过,鉴于可能的串行化问题和原因的数目呈现压倒趋势的现代多任务、多处理和群集环境的复杂性,这种解决方案在实践上不可行。
根据上述讨论应当不难看出,需要自动应付文件系统串行化故障的装置、系统和方法,以某种方式克服常规技术的若干缺点。在文件系统串行化信息重新初始化时,这样的装置、系统和方法会有利于允许正在运行的应用程序与文件系统保持逻辑连接。此外,这样的装置、系统和方法通过预防系统运行中断和相关的成本,会优于常规的系统和方法。

发明内容
在第一方面,本发明提供了一种文件服务器重新初始化装置,所述装置包括故障识别模块,被配置为识别文件服务器上的文件系统串行化故障;丢弃模块,被配置为响应所述串行化故障而丢弃位于文件服务器地址空间中的现有串行化数据;以及串行化模块,被配置为从位于客户地址空间中的现有连接/位置数据产生工作备份串行化数据。
优选情况下,所述文件服务器地址空间是文件服务器地址空间。
优选情况下,所述客户地址空间是客户地址空间。
优选情况下,由所述串行化模块产生所述新串行化数据的从始至终一直保留所述现有连接/位置数据。
优选情况下,所述装置进一步包括停顿模块,被配置为在预料到重新初始化的情况下停顿当前的数据访问过程。
优选情况下,所述丢弃模块被进一步配置为调用操作系统函数以破坏文件服务器地址空间。
优选情况下,所述串行化模块被进一步配置为调用操作系统函数以创建新的文件服务器地址空间。
优选情况下,所述串行化模块被进一步配置为在所述新的文件服务器地址空间中存储所述新的串行化数据。
优选情况下,所述串行化模块被进一步配置为搜索多个地址空间并在客户地址空间中查找现有连接/位置信息。
优选情况下,所述连接/位置数据定义了应用程序和共享存储资源之间的开放连接。
优选情况下,所述连接/位置数据进一步定义了所述共享存储资源内所述应用程序最近访问所述共享存储资源的当前位置。
优选情况下,所述共享存储资源包括从文件、目录、子目录和目录项选出的资源。
优选情况下,所述串行化数据定义了应用程序和共享存储资源之间的连接类型。
优选情况下,所述连接类型定义了应用程序和共享存储资源之间开放连接的排他性。
重新初始化文件服务器的装置可以包括前端模块,被配置为存储客户地址空间中的连接/位置数据,所述连接/位置数据描述应用程序和共享存储资源之间的开放连接;后端模块,被配置为管理开放连接的串行化数据,所述串行化数据描述所述开放连接的排他性;以及串行化模块,被配置为响应文件系统串行化故障,从所述连接/位置数据产生新的串行化数据。
优选情况下,所述前端模块被进一步配置为在所述客户地址空间内运行。
优选情况下,所述后端模块被进一步配置为在所述文件服务器地址空间内运行。
优选情况下,所述串行化模块被进一步配置为在新的文件服务器地址空间中存储新的串行化数据。
优选情况下,所述串行化模块被进一步配置为在产生所述新的串行化数据阶段不修改所述连接/位置信息。
所述装置可以进一步包括停顿模块,被配置为在所述串行化模块产生新的串行化信息之前,等待完成多个正在进行的数据访问过程的持续时间。
优选情况下,所述共享存储资源包括从文件、目录、子目录以及目录项选出的资源。
可以提供重新初始化文件服务器的系统,所述系统包括多个共享存储设备,被配置为存储数据;在文件服务器群集内的多个文件服务器,所述多个文件服务器的每一个都被配置为访问所述共享存储设备上的数据;以及串行化重新初始化装置,被配置为响应所述多个文件服务器的第一个文件服务器上文件系统串行化的故障,使所述第一个文件服务器重新初始化。
这样的系统可以进一步包括通告模块,被配置为允许所述第一个文件服务器在预料到第一个文件服务器重新初始化的情况下通告剩余的多个文件服务器。
优选情况下,所述通告模块被进一步配置为允许所述第一个文件服务器在第一个文件服务器重新初始化结束之后,通告剩余的多个文件服务器。
可以提供信号承载介质,有形地包含由数字处理装置可执行的机器可读指令的程序,以执行文件服务器重新初始化的操作,所述指令包括以下操作识别文件服务器上的文件系统串行化故障;响应所述串行化故障而丢弃位于文件服务器地址空间中的现有串行化数据;以及从位于客户地址空间中的现有连接/位置数据产生新的串行化数据。
优选情况下,所述指令进一步包括由所述串行化模块产生所述新串行化数据的从始至终一直保留所述现有连接/位置数据的操作。
优选情况下,所述指令进一步包括在预料到重新初始化的情况下停顿当前数据访问过程的操作。
优选情况下,所述指令进一步包括调用操作系统函数以破坏所述文件服务器地址空间的操作。
优选情况下,所述指令进一步包括调用操作系统函数以创建新的文件服务器地址空间的操作。
优选情况下,所述指令进一步包括在所述新的文件服务器地址空间中存储所述新的串行化数据的操作。
优选情况下,所述指令进一步包括搜索多个地址空间并在所述客户地址空间中查找现有连接/位置信息的操作。
所述信号承载介质,有形地包含由数字处理装置可执行的机器可读指令的程序,以执行文件服务器重新初始化的操作,可以具有包括以下操作的指令在客户地址空间中存储连接/位置数据,所述连接/位置数据描述应用程序和共享存储资源之间的开放连接;管理用于所述开放连接的串行化数据,所述串行化数据描述所述开放连接的排他性;以及响应文件系统串行化故障,从所述连接/位置数据产生新的串行化数据。
优选情况下,所述指令进一步包括在所述客户地址空间内执行所述前端模块的操作。
优选情况下,所述指令进一步包括在所述文件服务器地址空间内执行所述后端模块的操作。
优选情况下,所述指令进一步包括在新的文件服务器地址空间中存储所述新的串行化数据的操作。
优选情况下,所述指令进一步包括在产生所述新的串行化数据阶段不修改所述连接/位置信息的操作。
优选情况下,所述指令进一步包括在所述串行化模块产生新的串行化信息之前,等待完成多个正在进行的数据访问过程的持续时间的操作。
优选情况下,所述共享存储资源包括从文件、目录、子目录以及目录项选出的资源。
在第二方面,本发明提供了重新初始化文件服务器的方法,所述方法包括识别文件服务器上的文件系统串行化故障;响应所述串行化故障而丢弃位于文件服务器地址空间中的现有串行化数据;以及从位于客户地址空间中的现有连接/位置数据产生新的串行化数据。
所述方法可以包括识别文件服务器上的文件系统串行化故障;在预料到重新初始化的情况下停顿当前的数据访问过程;响应所述串行化故障,通过调用操作系统函数以破坏所述文件服务器地址空间而丢弃位于文件服务器地址空间中的现有串行化数据;调用操作系统函数以创建新的文件服务器地址空间;搜索多个地址空间并在所述客户地址空间中查找所述现有连接/位置信息;从位于客户地址空间中的现有连接/位置数据产生新的串行化数据;以及在所述新的文件服务器地址空间中存储所述新的串行化数据。
可以提供重新初始化文件服务器的装置,所述装置包括识别文件服务器上的文件系统串行化故障的装置;响应所述串行化故障而丢弃位于文件服务器地址空间中的现有串行化数据的装置;以及从位于客户地址空间中的现有连接/位置数据产生新的串行化数据的装置。
在第三方面,本发明提供了计算机程序,当加载到计算机系统内并在该处执行时,使得所述计算机系统执行根据所述第二方面方法的所有步骤。
本发明系针对现有技术而开发,尤其是针对当前可用的文件服务器系统的串行化系统尚未完全解决的业内问题和需求而开发。所以,已经开发的本发明提供了文件服务器重新初始化所用的装置、系统和方法,它们克服了以上讨论的现有技术的许多或全部缺点。
重新初始化文件服务器的装置具备包含多个模块的逻辑单元,被配置为功能上执行文件系统服务器的串行化数据的重新初始化的若干必要步骤。在所介绍的实施例中,这些模块包括前端模块和后端模块。在一个实施例中,所述前端模块驻留在客户地址空间中,所述后端模块驻留在文件服务器地址空间中。
在某些实施例中,所述前端模块可以包括连接模块和挂起装置。所述连接模块管理所述连接/位置信息(也称为连接/位置数据),它描述与应用程序相关联的开放文件连接或其他资源连接。在一个实施例中,所述挂起装置在所述文件服务器串行化重新初始化之前和过程中挂起数据访问请求。
在某些实施例中,所述后端模块可以包括串行化模块、停顿模块、丢弃模块和故障识别模块。所述串行化模块为对应于客户地址空间的给定应用程序管理所述串行化数据。所述串行化模块也从现有连接/位置数据产生新的串行化数据作为重新初始化操作的一部分。
所述故障识别模块识别串行化故障。所述丢弃模块丢弃所述现有串行化数据。例如,所述丢弃模块可以请求操作系统破坏现有串行化数据所在的地址空间。在一个实施例中,所述现有串行化数据位于文件服务器的地址空间中。在进一步的实施例中,整个后端模块也可以位于由所述操作系统破坏的文件服务器地址空间中。所述挂起模块可以便于在丢弃了现有文件服务器地址空间之后创建新的文件服务器地址空间。所述停顿模块在重新初始化过程之前和过程中停顿所述文件服务器。在一个实施例中,停顿阶段与上述介绍的挂起装置协调。
所述后端模块也可以包括完成装置和群集装置。所述完成装置跟踪与应用程序相关联任务的进度。在一个实施例中,所述完成装置可以连同所述停顿模块一起使用,在所述停顿阶段稳定所述连接/位置数据。所述连接/位置数据可以驻留在客户地址空间中,在文件系统串行化重新初始化阶段被保留而不被丢弃。当一个文件服务器上的串行化数据被重新初始化时,所述群集装置管理必要的权限以及在群集内多个文件服务器之间的协商通信。
本发明的系统也呈现为对文件系统服务器串行化数据进行重新初始化。本系统可以在处理群集中实施,所述处理群集包括多个对一个或多个共享的数据存储设备具有共享访问权限的文件服务器。确切地说,本系统的一个实施例包括多个文件服务器、共享存储设备和串行化重新初始化装置。本系统还可以包括耦接设施,以便利所述多个文件服务器之间的全局串行化。
本系统可以进一步包括通告模块。在一个实施例中,所述通告模块被配置为在期望本地文件服务器将要被重新初始化时通告该处理群集内的一个或多个远程文件服务器。同样,所述通告模块在本地文件服务器被重新初始化后也通告这些远程服务器。
还提供本发明的方法以对文件服务器重新初始化。所公开实施例中的方法实质上包括执行关于以上介绍的装置和系统所呈现功能的必要步骤。在一个实施例中,本方法包括识别文件服务器上的文件系统串行化故障、丢弃现有串行化数据以及从现有连接/位置数据产生新的串行化数据。如上所述,在重新初始化过程的从始至终,在例如客户地址空间中,所述现有连接/位置数据一直保持稳定并保存。
本方法包括也可以包括停顿文件服务器,调用操作系统函数以破坏文件服务器地址空间并调用操作系统函数以创建新的文件服务器地址空间。此外,本方法也可以包括在内存中搜索现有连接/位置数据、从位于客户地址空间中的现有连接/位置数据产生新的串行化数据,以及在所述新的文件服务器地址空间中存储所述新的串行化数据。
还提供了信号承载介质。所述信号承载介质被配置为存储软件指令,以执行以上参考本方法、装置和系统所介绍的某些或全部功能。
贯穿本说明书的对特征、优点或类似术语的引用并不意味着以本发明可以实现的全部特征和优点应当或就在本发明的任何单一实施例中。相反,涉及若干特征和优点的语言应被理解为意味着连同实施例所介绍的具体特征、优点或特点被包括在本发明的至少一个实施例中。所以,贯穿本说明书的对特征、优点或类似术语的讨论可以但不一定是指同一实施例。
不仅如此,所介绍的本发明的特征、优点和特点可以在一个或多个实施例中以任何适宜的方式组合。相关领域的技术人员将理解,无须特定实施例的一种或多种具体特征或优点也能够实践本发明。在其他情况下,可以在某些实施例中被认出附加特征和优点可能不会出现在本发明的所有实施例中的。
根据以下的说明和附带的权利要求书,本发明的这些特征和优点将变得完全显而易见,或者可以由后文阐述的对本发明的实施而了解。


为了容易地理解本发明的优点,将参考附图中所展示的特定实施例对以上简要介绍的本发明进行更具体的说明。应当理解这些附图仅仅描述本发明的典型实施例,所以不应当认为是对其范围的限制,将通过使用这些附图,介绍和解释本发明的额外特征和细节,其中图1a是示意框图,展示了根据本发明的应用程序环境的一个实施例;图1b是示意框图,展示了根据本发明的存储系统群集的一个实施例;图2是示意框图,展示了根据本发明的电子存储设备的一个实施例;图3a是示意框图,展示了根据本发明的连接/位置数据的一个实施例;图3b是示意框图,展示了根据本发明的串行化数据的一个实施例;图4是示意框图,展示了根据本发明的串行化重新初始化装置的一个实施例;图5是示意流程图,展示了根据本发明的重新初始化方法的一个实施例;图6是示意流程图,展示了根据本发明的重建方法的一个实施例。
具体实施例方式
本说明书中介绍的许多功能单元已经被标注为模块,以便更特别地强调其实施独立性。例如,模块可以实施为硬件电路,包括定制的VLSI电路或门阵列、诸如逻辑芯片的现成半导体、晶体管或其他分立组件。模块也可以实施在可编程硬件器件中,比如可编程门阵列、可编程阵列逻辑、可编程逻辑器件等。
模块也可以在由多种类型的处理器执行的软件中实施。可执行代码的所识别模块可以例如包括计算机指令的一个或多个物理或逻辑块,它们可以例如被组织为对象、过程或函数。尽管如此,所识别模块的可执行代码不必在物理上位置放在一起,而是可以包括不同位置上存储的完全不同的指令,逻辑地结合在一起时包括所述模块并实现所述模块的指定目的。
可执行代码的模块确实可以是单一指令,也可以是许多指令,甚至可以在不同的代码段上、在不同程序之间并跨越几个存储器设备而分布。同样,操作数据也可以在模块内识别和展示,并可以以任何适宜的形式实施以及在任何适宜类型的数据结构内组织。操作数据可以聚集为单一数据集,也可以分布在不同的位置上,包括不同的存储设备上,并且可以至少部分地存在为仅仅是系统或网络上的电子信号。
贯穿本说明书的对“一个实施例”、“实施例”或类似术语的引用意味着连同该实施例说明的具体特征、结构或特点包括在本发明的至少一个实施例中。所以,贯穿本说明书的短语“在一个实施例中”、“在实施例中”或类似术语的出现可以但不一定是指同一实施例。
不仅如此,所介绍的本发明的特征、结构或特点可以在一个或多个实施例中以任何适宜的方式组合。在以下说明中提供了许多特定细节,比如编程、软件模块、用户选择、网络事务、数据库查询、硬件模块、硬件电路、硬件芯片等的实例,以提供对本发明实施例的彻底理解。不过,本领域的技术人员将理解,可以在没有一个或多个这些特定细节的情况下,或者利用其他方法、组件、材料等来实践本发明。在其他实例中,为了避免模糊本发明的若干方面,没有显示或描述已知的结构、材料或操作。
图1b描绘了可以采用本发明的某些实施例的处理群集100的一个实施例。所展示的处理群集100包括多个文件服务器102、一个或多个共享存储设备104以及耦接设施106。每个文件服务器102都被配置为管理处理群集100中的若干资源。例如,多个文件服务器102为处理群集100中执行的每个应用程序或其他软件程序管理着分配处理、存储器和数据存储资源。在本文的使用中,对“应用程序”的引用可以包括应用程序软件以及系统软件,比如操作系统,除非另外指明。
共享存储设备104包括电子存储设备,它们被配置为根据来自多个文件服务器102的指令而存储数据。在一个实施例中,共享存储设备104包括多个硬盘驱动器。作为替代,共享存储设备104可以包括一个或多个光盘驱动器、磁带驱动器和/或其他数据存储驱动器。共享存储设备104上存储的数据可以由文件服务器102读取和以其他方式访问。在一个实施例中,共享存储设备104上存储的数据可以存储在文件系统内,包括目录、子目录、文件和其他目录项。每个目录、子目录、文件、其他目录项和类似数据结构都是处理群集100内的共享存储资源。
每次文件服务器102之一上的应用程序请求访问共享存储设备104之一上的数据时,文件服务器102都会协调该数据访问与同一文件服务器102上和处理群集100中其他文件服务器102上运行的其他客户应用程序。这种协调被称为串行化,因为文件服务器102允许对共享存储104上的数据进行串行或顺序访问。串行化允许每个应用程序对具体的数据集具有或者共享或者排他的访问权限,所以其他应用程序不干扰或以其他方式妨碍目标数据集。
在处理群集100和共享存储设备104之内串行化可以多种粒度级别实施。例如,串行化可以发生在目录级别或子目录级别。此外,串行化也可以发生在文件、记录或数据包级别。串行化粒度取决于处理群集100、文件服务器102、共享数据存储设备104以及处理群集100内所用的其他硬件的类型。粒度也取决于应用程序或操作系统请求的数据访问操作的类型。
在一个实施例中,配备了耦接设施106,便于处理群集100内所有文件服务器102之间的串行化。具体地说,耦接设施106可以存储串行化信息并有助于许多文件服务器102之间的消息传送操作。不过,处理群集100的替代实施例可以无须耦接设施106的协助而进行全局串行化。
图2描绘了电子存储器设备200的一个实施例,它可以用于存储串行化程序和数据以及相关信息。所展示的存储器200划分为多个地址空间202。每个地址空间202都包括为给定应用程序分配的一组合法的存储器地址,并且表示或者实际地或者虚拟地为该应用程序分配的存储器200的存储量。所展示的存储器200尤其包括客户地址空间202a、文件服务器地址空间202b和附加地址空间202n。存储器200也包括可共同寻址存储器204。
可以为与给定文件服务器102交互的每个应用程序创建客户地址空间202a。例如,存储器200可以包括四个客户地址空间202a,与文件服务器102交互的四个客户机中的每一个使用一个客户地址空间。客户地址空间202a也可以被称为“前端”,因为它负责与应用程序直接交互。一般来说,客户地址空间202a便利了发出请求的软件程序比如应用程序软件或系统软件进行数据访问操作。
所展示的客户地址空间202a一般包括前端数据210,尤其包括连接/位置数据212。每个客户地址空间202a都可以包含与相关联的客户有关的对应的前端数据210,包括连接/位置数据212。连接/位置数据212描述由对应的应用程序访问的共享存储设备104上的数据。下面参考图3a更详细地介绍连接/位置数据212的实例。
本说明书从始至终引用客户地址空间202a都应当理解为是指一个或多个客户地址空间202a,其中每个客户地址空间202a对应于一个独立的客户。同样,引用前端数据210和/或连接/位置数据212也应当理解为是指一个或多个客户与给定文件服务器102交互的这样的数据。
在一个实施例中,文件服务器地址空间202b负责文件服务器102内的串行化,以及对共享存储设备104的数据访问。文件服务器地址空间202b也可以被称为“后端”,因为它管理着文件服务器102和共享存储设备104之间的接口。具体地说,文件服务器地址空间202b使与相关联的客户地址空间202a对应的应用程序的数据访问请求串行化。这些数据访问请求与来自同一文件服务器102和处理群集100内其他文件服务器102服务的其他应用程序的其他数据访问请求串行化。
所展示的文件服务器地址空间202b一般包括后端数据220,尤其包括串行化数据222。在进一步的实施例中,后端数据220也可以包括完成权限224,它可以指明数据访问请求的处理状态和/或客户地址空间202a中存储的连接/位置数据212的稳定性。
附加地址空间202n可以用于与客户地址空间202a和文件服务器地址空间202b中存储的程序和数据类似的程序和数据。附加地址空间202n也可以包括主地址空间等,正如现有技术中所公知的那样。
可共同寻址存储器204是存储器200的一部分,它可以用于存储可由一个或多个地址空间202共同访问的程序和数据。例如,可共同寻址存储器204可以用于存储数据比如文件名,或者客户地址空间202a中的连接/位置数据212和文件服务器地址空间202b中的串行化数据222二者共同引用的元数据。
图3a描绘了连接/位置数据300的一个实施例,它本质上类似于参考图2介绍的连接/位置数据212。连接/位置数据300包括几个字段,每个都被配置为存储标识符或其他数据,以描述与具体应用程序对应的数据访问请求相关联的连接和位置信息。本文中连接/位置数据300也可以称为连接/位置信息或连接/位置记录。
所展示的连接/位置数据300包括应用程序标识符字段302、目录标识符字段304、文件标识符字段306和位置标识符字段308。在进一步的实施例中,连接/位置数据300可以包括更少或更多的数据和/或元数据字段。在一个实施例中,应用程序标识符字段302存储的应用程序标识符标识客户地址空间202a为其而存在的应用程序。
目录标识符字段304存储的目录标识符标识共享存储设备104上与应用程序标识符所标识的应用程序相关联的操作正在使用的目录。同样,文件标识符字段306存储的文件标识符标识与同一应用程序相关联的数据访问操作正在使用的文件。在某些实施例中,文件标识符可能与该文件是目录成员的目录标识符有关。给定了这种关系,文件标识符也可以被称为成员标识符。目录标识符和文件标识符一般可以被称为资源标识符。在本发明的替代实施例中,在连接/位置数据300内也可以存在其他资源标识符字段和资源标识符。
在一个实施例中,位置标识符字段308存储的位置标识符标识当前或最近访问的文件或存储资源的位置。在一个实施例中,位置标识符可以包括字节偏移,从文件的起点算起用若干字节指明正在访问的当前读或写位置。
图3b描绘了串行化数据320的一个实施例,它本质上类似于参考图2介绍的串行化数据222。串行化数据320包括几个字段,每个都被配置为存储标识符或其他数据,以描述与具体任务对应的数据访问请求相关联的串行化信息。任务是与具体应用程序相关联的一个数据访问操作。应用程序可以产生一个或多个任务。本文中串行化数据320也可以称为串行化信息或串行化记录。
所展示的串行化数据320包括任务标识符字段322、资源标识符字段324和排他性标识符字段326。在进一步的实施例中,串行化数据320可以包括更少或更多的数据和/或元数据字段。在一个实施例中,任务标识符字段322存储的任务标识符标识在文件服务器地址空间202b内执行的任务。
在一个实施例中,资源标识符字段324存储的资源标识符标识与任务标识符标识的任务相关联的或者输入资源或者输出资源。在一个实施例中,资源标识符可以标识输入资源比如共享存储设备104,可以从其输入数据到任务操作中。例如,任务操作可以从共享存储设备104读取数据。在进一步的实施例中,资源标识符可以标识输出资源比如缓冲区,根据任务操作可以向其发送数据。
排他性标识符字段326存储的排他性标识符标识为所标识任务提供的对标识符资源的资源排他性的类型。例如,任务可以对将要从共享存储设备104读取的目标数据集具有或者共享或者排他的读取访问权限。在许多情况下,尽管不是所有情况下,排他性标识符为数据读取(输入)操作提供了共享访问权限。在进一步的实例中,任务对可以写入数据的目标缓冲区可以具有排他写入访问权限。在许多情况下,尽管不是所有情况下,排他性标识符为数据写入(输出)操作提供了排他访问权限。
图4描绘了串行化重新初始化装置400的一个实施例,它可以连同本发明的多种实施例使用。所展示的串行化重新初始化装置400包括前端模块402和后端模块404。在一个实施例中,前端模块402和后端模块404是分别驻留在客户地址空间202a和文件服务器地址空间202b中的软件程序。
串行化重新初始化装置400被配置为响应串行化错误或故障而重新初始化文件服务器102的串行化数据222。如上所述,串行化故障可能发生在一个或多个应用程序无法恰当地访问完成操作所必须的所存储的数据时。例如,回头参考图1,文件服务器102可以等待对数据文件18具有排他访问权限的第一应用程序12完成操作之后,再允许第二应用程序14对同一数据文件18具有访问权限。
当文件服务器102之内或处理群集100之内多个文件服务器102之间的串行化数据222出错时,文件服务器102或处理群集100可能变得不可用。例如,当两个应用程序12、14试图访问专门为彼此保留的数据时,文件服务器102可能变得不响应或者“死锁”。通过重新初始化文件服务器102的串行化数据222,串行化重新初始化装置400丢弃现有的串行化信息222并从连接/位置数据212重建新的串行化信息,从而改正任何串行化故障。
回头参考图4,在一个实施例中,前端模块402包括连接模块410和挂起装置412。连接模块410被配置为监控和记录与应用程序相关联的每个任务的连接/位置数据212。在一个实施例中,挂起装置412被配置为在重新初始化文件服务器102的串行化数据222时挂起数据访问请求。在一个实施例中,挂起装置412在串行化重新初始化之前的停顿阶段以及在串行化重新初始化的过程中挂起数据访问请求。
如图所示,后端模块404包括串行化模块420、停顿模块422、丢弃模块424、故障识别模块426、完成装置428以及群集装置430。在一个实施例中,串行化模块420被配置为管理文件服务器102的串行化数据222。此外,串行化模块420可以连同文件服务器102的串行化重新初始化,从连接/位置数据212重建串行化数据222。
在一个实施例中,停顿模块422被配置为在重新初始化文件服务器102的串行化数据222之前,定义和实施停顿阶段。在某些实施例中,停顿阶段可以是几秒钟。作为替代,停顿阶段可以长于或短于几秒钟。在停顿阶段,后端模块404可以拒绝来自前端模块402的新的数据访问请求。此外,停顿阶段可以用于在串行化重新初始化之前允许正在进行的任务完成。不仅如此,在停顿阶段也可以挂起或以其他方式推迟正在进行的任务,以便维护客户地址空间202a中存储的连接/位置数据212的完整性。
在一个实施例中,丢弃模块424被配置为连同文件服务器102的串行化重新初始化,丢弃现有串行化数据222。例如在某些实施例中,丢弃模块424可以请求操作系统简单地破坏在文件服务器地址空间202b即后端中存储的全部信息、程序和数据。换句话说,可以调用操作系统以删除后端数据220,包括现有串行化数据222和完成权限224。不仅如此,操作系统可以彻底地丢弃后端模块404,包括串行化模块420、停顿模块422、丢弃模块424、故障识别模块426、完成装置428以及群集装置430。这些后端模块、装置以及数据的每一个都可以在串行化重新初始化阶段被重建。
在一个实施例中,故障识别模块426被配置为识别文件服务器102内的串行化故障。在进一步的实施例中,故障识别模块426可以例如连同耦接设施106识别全局串行化故障。在替代实施例中,操作员可以识别文件服务器102不响应的情况,并且在系统控制台的键盘(未显示)上明确地发出命令,以启动重新初始化过程。在这种情况下,操作员可以使用诊断辅助程序帮助作出这种判断。
在一个实施例中,完成装置428被配置为跟踪任务的完成进度。在一个实施例中,完成装置428可以创建和使用后端数据220内的完成权限224,以跟踪任务的进度。在一个实施例中,群集装置430被配置为在多个文件服务器102之一的串行化重新初始化阶段,管理处理群集100的通信和操作。
以下的示意流程图一般地阐述为逻辑流程图。因而所描述的顺序和所标注的步骤指明了本方法的一个实施例。可以构思出其他步骤和方法,功能、逻辑或效果上与所展示方法的一个或多个步骤或其部分等价。此外,提供了所采用的格式和符号体系,以解释本方法的逻辑步骤,而且理解为不限制本方法的范围。虽然在流程图中可以采用多种箭头类型和线段类型,但是应当理解它们不限制对应方法的范围。某些箭头或其他连线确实可以用于仅仅指明本方法的逻辑流程。例如,箭头可以指明所描述方法列举步骤之间不确定持续时间的等待或监控阶段。此外,具体方法出现的顺序可以严格地也可以不严格地坚持所显示的对应步骤的顺序。
图5描述重新初始化方法500的一个实施例,可以连同以上所介绍的串行化重新初始化装置400一起执行。所展示的重新初始化方法500在故障识别模块426识别502文件服务器102内的串行化故障之时开始。虽然本文没有详细介绍,但是在某些实施例中,故障识别模块426可以辨别串行化故障的不同类型。根据检测的502串行化故障的类型,串行化重新初始化装置400可以确定不启动串行化重新初始化。不过,在所介绍的实施例中,串行化重新初始化装置400确实启动了串行化重新初始化。
在识别502串行化故障之后,本地串行化重新初始化装置400通知504在处理群集100内的每个远程文件服务器102本地文件服务器102将被重新初始化,以改正串行化故障。在一个实施例中,后端模块404可以包括通知模块(未显示),被配置为通知504远程文件服务器102所预测的串行化重新初始化。在进一步的实施例中,通知模块可以包括在串行化重新初始化装置400内的故障识别模块426、群集装置430或者另一个模块或装置之内。在某些实施例中,通知模块可以与耦接设施106通信,以便恰当地通知504远程文件服务器102。
一旦已经通知504了所有的远程文件服务器102,停顿模块422就在随后的重新初始化操作之前启动506停顿阶段。如以上参考图4的说明,在停顿阶段时可以拒绝或挂起新的任务和/或正在进行的任务。停顿阶段的一项优点是在重新初始化之前允许连接/位置数据212稳定。否则,如果当串行化重新初始化发生时连接/位置数据212不稳定,新的串行化数据222可能不正确。在某些实施例中,在停顿阶段未完成的或不稳定的任务可以被终止。
一旦连接/位置信息212稳定且停顿阶段结束,丢弃模块424就丢弃508现有串行化数据222。在一个实施例中,丢弃模块424可以仅仅丢弃508现有串行化数据222,而不涉及任何其他数据。在另一个实施例中,丢弃模块424可以丢弃508完成权限224、后端模块404的全部或部分以及串行化数据222。如上所述,丢弃模块424可以调用操作系统函数彻底地丢弃508文件服务器地址空间202b。
如果后端模块404与串行化数据一起被丢弃,前端模块402随后可以重建后端模块404,包括串行化模块420。然后串行化模块420从在串行化重新初始化期间在前端数据210中保持稳定的连接/位置数据212重建510串行化数据222。新的串行化数据222预期没有串行化冲突,因为它是从稳定的连接/位置数据212重建,而不是从随机到达的数据访问请求重建。因此,预期新的串行化数据222是稳健的,不会导致后来的串行化故障。以下将参考图6更详细地介绍重建510串行化数据222。
随着串行化数据222的重建510,文件服务器102通知512处理群集100内的远程文件服务器102串行化重新初始化完成。在一个实施例中,以上介绍的通知模块可以执行这项通知操作。然后文件服务器102可以使用新的串行化数据222重新开始处理数据访问请求,以管理对共享数据存储设备104的串行化访问。然后结束所描述的重新初始化方法500。
图6描述重建方法600的一个实施例,以图5所示重新初始化方法500的串行化重建操作510为实例给出。所展示的重建方法600在存储器200中创建602新的文件服务器地址空间202a之时开始。当然这假设了先前的文件服务器地址空间202b已经被破坏,如以上的介绍。然后后端模块404被重新加载604到新创建的文件服务器地址空间202b内。换句话说,串行化模块420、停顿模块422、丢弃模块424等可以存储在新的文件服务器地址空间202b中。
在一个实施例中,然后调用了串行化模块420,以产生新的串行化数据222。为了做到这一点,串行化模块420可以在存储器200搜索包含连接/位置数据212的客户地址空间202a。确切地说,串行化模块420查找606每个地址空间202并判断608具体的地址空间202是否包含连接/位置数据212。
一旦串行化模块420识别了客户地址空间202a,在参考重新初始化方法500所介绍的丢弃操作508阶段它保持原封不动,串行化模块420就可以开始重建串行化数据222。确切地说,串行化模块420可以识别610位于应用程序标识符字段302、目录标识符字段304和文件标识符字段306(以及可应用的其他类似标识符字段)中的连接数据。串行化模块420也识别612位于位置标识符字段308中的位置数据。
然后串行化模块420使用识别的连接/位置信息212在新的文件服务器地址空间202b中创建614新的串行化数据222。串行化模块420继续从客户地址空间202a读取连接/位置数据212,并且向文件服务器地址空间202b写入新的串行化数据222,直到串行化模块420确定616不再有要处理的连接/位置数据212。在一个实施例中,串行化模块420判断616已经搜索了全部的客户地址空间202a。然后结束所描述的重建方法600。
在某些实施例中,停顿506文件服务器102、丢弃508现有串行化数据222以及重建510新的串行化数据222所需要的全部时间可能是几十秒。优选情况下,以这种方式重新初始化串行化数据222不需要将文件服务器102断电。不仅如此,所描述的重新初始化方法500有利于不严重地中断正在进行的应用程序处理,尽管有可能挂起数据访问请求几秒钟或更长时间。
本发明可以以其他特定的形式实施而不脱离其本质特征。所介绍的实施例在所有方面都应当被视为只是展示性的而不是限制性的。因此,本发明的范围由附带的权利要求书而不是上面的介绍指明。处于权利要求书等效内容的含意和范围内的所有改变都应当包含在其范围内。
权利要求
1.一种文件服务器重新初始化装置,所述装置包括故障识别模块,被配置为识别文件服务器上的文件系统串行化故障;丢弃模块,被配置为响应所述串行化故障而丢弃位于文件服务器地址空间中的现有串行化数据;以及串行化模块,被配置为从位于客户地址空间中的现有连接/位置数据产生新的串行化数据。
2.根据权利要求1的装置,其中,所述丢弃模块被进一步配置为调用操作系统函数以破坏所述文件服务器地址空间。
3.根据权利要求1或2的装置,其中,所述串行化模块被进一步配置为调用操作系统函数以创建新的文件服务器地址空间。
4.根据任何一项上述权利要求的装置,其中,所述串行化模块被进一步配置为在所述新的文件服务器地址空间中存储所述新的串行化数据。
5.根据任何一项上述权利要求的装置,其中,所述串行化模块被进一步配置为搜索多个地址空间并在客户地址空间中查找现有连接/位置信息。
6.一种文件服务器重新初始化方法,所述方法包括识别文件服务器上的文件系统串行化故障;响应所述串行化故障而丢弃位于文件服务器地址空间中的现有串行化数据;以及从位于客户地址空间中的现有连接/位置数据产生新的串行化数据。
7.根据权利要求6的方法,进一步包括调用操作系统函数以破坏所述文件服务器地址空间。
8.根据权利要求6或7的方法,进一步包括调用操作系统函数以创建新的文件服务器地址空间。
9.根据权利要求6到8中任何一项的方法,进一步包括在所述新的文件服务器地址空间中存储所述新的串行化数据;以及搜索多个地址空间并在所述客户地址空间中查找现有连接/位置信息。
10.一种计算机程序,当加载到计算机系统内并在其上执行时,使所述计算机系统执行根据权利要求6到9中任何一项的方法的全部步骤。
全文摘要
所公开的一种装置、系统和方法用于文件服务器中的串行化数据重新初始化。所述装置包括故障识别模块、丢弃模块和串行化模块。故障识别模块识别文件服务器上的文件系统串行化故障。在识别了串行化故障后,丢弃模块丢弃位于第一存储器地址空间比如文件服务器地址空间中的现有串行化数据。在某些实施例中,操作系统可以破坏全部的文件服务器地址空间。然后串行化模块从现有连接/位置数据产生新的串行化数据。连接/位置数据位于第二地址空间中,比如在串行化重新初始化过程阶段保留的客户地址空间。以这种方式包含和重建串行化数据有利于防止系统出故障、减少故障时间以及降低随后串行化死锁的可能性。
文档编号G06F11/14GK1989500SQ200580024767
公开日2007年6月27日 申请日期2005年7月21日 优先权日2004年9月1日
发明者格拉德·M.·迪林, 威廉·S.·艾德沃兹, 埃尔莫·E.·拉多雷, 托马斯·A.·马弘, 小里尔·L.·梅里修 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1