用于管理对存储装置的访问的方法和设备的制作方法

文档序号:6560421阅读:163来源:国知局
专利名称:用于管理对存储装置的访问的方法和设备的制作方法
技术领域
本发明涉及为得到改善的系统性能而在数据处理系统内管理对存储装置(storage)的访问。
背景技术
在典型的数据处理系统中,多个软件工具需要经常访问磁盘存储装置和其他辅助存储装置。除了由系统用户与应用程序的交互直接引起的输入和输出操作(存储装置I/O操作)之外,诸如索引、对离线存储装置进行备份以及具有数据移动和压缩的存档之类的实用程序(utility)也需要进行磁盘访问。对于诸如病毒扫描和间谍软件(spyware)检测之类的周期地执行的应用程序来说也需要磁盘访问。
执行这些文件级别的操作中的每个操作的工具通常不知道其他工具,即使它们是并行地运行时。在当前可用的个人计算机中,由于需要读/写单元相对于磁盘实际移动,因此任何磁盘I/O操作都是相对较慢的操作。当两个或更多这种工具执行对大量文件的批处理时,这些工具对磁盘访问的重复需要会导致非常慢的系统性能。这在工具并行运行并竞争资源时是有问题的,但在一个批处理实用程序后接另一个批处理实用程序时也是有问题的,原因是较慢的系统性能会持续不可接受的长时间段。
在对磁盘访问操作进行调度方面已经进行了很多工作。例如,美国专利申请公开No.2002/0143847描述了一种对混合优先级工作负荷(包括高优先级联机事务处理操作和低优先级监控操作)进行调度的方法。美国专利申请公开No.2002/0143847描述了影响响应时间的问题,诸如跨多个存储卷的请求与并行查询之间的冲突。推迟对服务于低优先级工作负荷的进程的分派,并且不执行低优先级I/O操作,以确保不会将高优先级工作负荷项推迟到不可接受的响应时间界限之外。
公开号为EP 1193967的欧洲专利申请也描述了一种用于混合优先级工作负荷的磁盘调度算法。
当新的请求到达时,对保持在队列中的请求进行重新组织,使得仅当为低优先级请求提供服务不会违反高优先级请求的最终期限(deadline)限制时,才为低优先级请求提供服务。
美国专利No.6,078,998是描述了参考最终期限和优先级进行调度的另一份专利说明书,在此情况下,目的是通过计算寻求时间的全局优化来改善诸如多媒体应用之类的数据密集的应用的磁盘利用率和效率。
美国专利No.6,182,197描述了基于优先级而对关于共享磁盘数据的数据访问请求进行排序,以及响应于更新后的优先级而对请求进行重排序。
上述专利说明书的每一个都描述了对特定类型进程的不同优先级请求进行处理的尝试。然而,关于对磁盘访问操作进行调度的这些已知尝试都集中于对执行不同任务的顺序进行优化,而没有对减少不同磁盘访问操作的数目进行任何尝试。

发明内容
本发明的各方面提供了一种用于对多个进程的读/写操作进行调度的文件访问管理器和方法,以及一种用于实现该方法的数据处理设备。该方法包括识别各自独立地需要对保持在数据存储装置中的特定文件进行存储装置I/O操作的多个进程;从数据存储装置检索该特定文件;以及针对该多个进程中的至少两个进程而对检索到的文件执行读/写操作,然后将结果保存到存储装置。
该多个进程可以是需要文件系统访问的用独立计算机程序实现的进程,诸如能够在不需要用户干预的情况下作为后台任务而定期地执行的实用程序和应用程序。本发明特别适用于对自动进行批处理(依次地访问很多文件)的进程的协调的文件访问进行管理。这种进程通常对任一文件执行持续时间相对较短的操作,并从而需要在与典型的由用户控制的交互应用程序相比相对较短的时间段内将每个文件保持在系统存储器(memory)中。可应用本发明的示例性实用程序包括用于对文件内容进行索引(例如在桌面搜索工具中)、用于备份、用于存档或用于软件检查点的计算机程序。示例性应用程序包括病毒扫描和间谍软件检测。
在一个实施例中,识别需要对特定文件进行存储装置I/O操作的多个进程的步骤包括识别来自该多个进程的并发待处理的I/O请求,这些I/O请求与将要对该特定文件执行的读/写操作相关联。在对磁盘的一次单独的文件检索之后,对文件进行两次或更多的读/写操作,并且随后是一次单独的磁盘写操作。该方法和文件访问管理器能够减少存储装置访问操作的总数,原因是可以在特定时间段中对特定的数据文件进行一次检索以用于N个进程的处理,而不是进行N次检索。
在另一实施例中,识别步骤包括识别定期地执行并对特定文件执行读/写操作的多个进程。对I/O操作调度的控制被委派给文件访问管理器并基于在每个进程注册到文件访问管理器时所提供的信息(而不是始终响应于并发待处理的读/写操作请求)。文件访问管理器和方法能够对I/O操作进行调度,使得检索特定文件的操作在适当的时间上执行以满足两个或多个进程的需要。然后,由两个或更多进程对检索到的文件执行多次读/写操作而不需要多次检索操作,并且即使执行了多次写操作,也只执行一次单独的磁盘写操作。
响应于接收到文件请求,或者在调度的基础上,或者当CPU(中央处理单元)利用率低于门限时,可以立即调用文件访问管理器。
上述实施例的并发请求调度和长期调度支持可以同时在一个单独的文件访问管理工具内实现。可以结合常规的调度算法而实现本发明,以考虑不同的优先级和最终期限,以便得到对I/O操作和读/写操作的优化调度。
本发明的一个实施例实现了一组规则,其中特定进程的动作和结果会根本地影响其他进程是否需要执行。例如,第一规则指定,不应对未通过病毒扫描或被识别为间谍软件文件的文件进行备份。作为第二个实例,不需要重复备份操作的文件也不需要进行重新索引。这些规则使得上述读/写操作优化变得完备。
因此,本发明的方法和文件访问管理器能够确定对磁盘访问操作和对并行进程执行的调度,这种调度考虑了正在运行的进程的当前分布(profile),并且这种调度能够减少磁盘访问操作的总数。如果一个单独的工具在单独地运行,可以根据该工具的需要而选择传统的磁盘访问模式,而当不同的多组进程并发运行时,可以选择不同的模式。
可以以计算机程序代码来实现上述文件访问管理器和方法。根据本发明的程序产品包括记录在记录介质上或经由网络传送的计算机程序代码。该计算机程序可以安装在数据处理设备上以执行上述方法。
可以将文件访问管理器提供为与多个进程相集成的计算机程序工具,例如,提供为集成工具套件内的工具之一。工具套件提供者能够确保工具之间的最佳协作。然而,文件访问管理器还可以在操作系统设备驱动器内或在磁盘控制器内实现。
本发明的另一方面提供了一种数据处理设备,包括数据存储装置;多个计算机程序,其安装在该数据处理设备上,该多个程序各自需要对保持在数据存储装置中的文件进行存储装置I/O操作;以及文件访问管理器,包括用于执行以下方法步骤的程序代码-识别各自独立地需要对保持在数据存储装置中的特定文件进行存储装置I/O操作的多个进程;-从数据存储装置检索该特定文件;以及-针对该多个进程中的至少两个进程而对检索到的文件执行读/写操作,然后将结果保存到存储装置。


以下将通过实例,参考附图,更详细地描述本发明的实施例,在附图中图1是在其上已经实现本发明的数据处理系统的存储管理体系结构的示意性表示;图2是根据本发明的实施例,由文件访问管理器程序和使用该文件访问管理器的服务的实用程序所执行的步骤的示意性表示;并且图3是根据本发明的实施例,由图2的文件访问管理器执行的步骤的更详细的表示。
具体实施例方式
体系结构概观图1示出了数据处理系统10内的存储管理体系结构。如同在本领域中已知的那样,存储子系统20包括多个物理磁盘30和存储控制器40,以及相关联的操作系统设备驱动器。在以下详细描述的本发明的第一实施例中,常规的存储控制器40通过接口与实现为磁盘代理的文件访问管理器50连接。
在本发明的其他实施例中,将文件访问管理器50的功能实现为存储控制器40的构成组件,或实现为操作系统的构成特征。为引用方便,在此所用的术语“文件访问管理器”对文件访问管理器在磁盘代理程序内、在存储控制器40内或在操作系统设备驱动器内的实现之间不加区分。
在本发明的第一实施例中,磁盘代理50代表包括实用程序和应用程序的多个已注册的异类进程(为引用方便,以下统称为“实用程序”60)对文件访问操作进行协调。对于多个进程在系统中运行而不注册到磁盘代理50也是可以的。这些未注册进程以常规方式与磁盘控制器40进行通信。然而,如果只有少数自动批处理实用程序进行注册,则磁盘代理50不太可能实现对读/写操作的优化调度。
尽管图1中示出的实例是本发明在一个单独的数据处理系统10上的实现,但图1中示出的组件可以分布在多个系统上。例如,实用程序60可以在经由网络连接到运行磁盘代理50的系统10的多个不同的系统上运行。
磁盘代理50和每个已注册的实用程序60具有相应的输入队列70、80。如下所述,这些队列用于各组件之间的异步通信。实用程序通过将注册消息放置到磁盘代理50的输入队列70上而注册到磁盘代理50。该消息包含实用程序类型、该实用程序所关注的文件类型标识以及该实用程序能够执行的一组操作的标识(例如,“只读”或者“读和写”)的细节。注册消息会针对不同的实用程序而不同。例如,针对备份进程的注册消息可以指定特定目录下的所有文件(诸如“MyDocuments\*.*”),而另一实用程序可以指定访问特定文件类型(诸如所有的JAR文件(Java档案文件)、*.exe文件等)的要求。反病毒程序通常需要对所有可执行文件类型(诸如*.exe、*.doc、*.dll)进行读访问并在识别出问题时偶尔进行写访问。索引文件(诸如“Google桌面”)可能希望读取能够包含文本的任意文件(*.TXT、*.DOC、*.WRI、*.LWP、*.HTML等)。当磁盘代理50已经接收到并处理注册消息时,该代理向实用程序的相应输入队列80发送确认。
在下述第一实施例中,由实用程序在注册时提供的信息足以供磁盘代理50对针对检索到的文件的I/O操作和读/写操作进行调度,并且注册消息可以指定实用程序的每次执行之间的最大时间。
在同样将在以下描述的第二实施例中,到磁盘代理50的某些注册只指定了每个实用程序的一般要求,并且当该代理接收到特定文件请求时由该代理使用这些注册。在后一种情况下,磁盘代理50检查其是否已经接收到对同一文件的多个并发待处理的请求,并执行对磁盘的一次单独的文件检索以使得该多个并发请求者实用程序能够对该文件执行读/写操作。
对已注册的实用程序的I/O操作和读/写操作进行调度在第一实施例中,实用程序将调度I/O操作的责任委派给磁盘代理50。实用程序可以指定其程序代码的每次执行之间的最大周期,并且磁盘代理确定对磁盘I/O操作和读/写操作的调度,其旨在满足所有已注册的实用程序的文件访问要求和时间要求。
举一个简单的例子,假定有三个实用程序,U1需要至少一天执行一次,U2需要至少每周执行一次,并且U3需要至少每个月执行一次。在大多数天,U1单独运行并且不需要共享存储器。每周有一次,磁盘代理使用用于U1和U2所需的任意文件的共享存储器90,对U1和U2的文件访问进行协调(如下所述)。每月有一次,磁盘代理对所有三个实用程序的文件访问进行协调。
在调度好的时间T(其可以是例如每天午夜,此时典型的用户不会使用其系统)上,磁盘代理检查其针对已注册的实用程序而保持的一组注册,并根据所有这些注册生成包括文件类型和文件的联合的文件列表。作为简单的实例,如果第一实用程序U1需要两个文件A和C并且第二实用程序U2需要文件C和D,则该联合是{A,C,D}。当然,A可以代表一个单独的文件或所有的文件(*.*),或者特定目录下的属于特定文件类型的所有文件(诸如My Documents\*.doc)。由于每个实用程序可以在任意时间上更新其注册,因此时间T上的这种检查是所希望的。
在替代性的实现中,当注册更新发生时可以再次将注册更新应用于所需文件的列表,但因为只要在磁盘上存储了新文件,就可以通知磁盘代理,因此该解决方案有所不同。如果新文件与实用程序的注册信息相匹配,则磁盘代理可以通知该实用程序。特别地,可以使得磁盘代理负责处理新的注册,识别改变的文件和新文件,并且负责识别改变的注册。在此情况下,如果能够在存储器中维护精确的列表以识别所有文件并识别哪些文件是已注册的实用程序当前所关注的,则不需要在时间T上重新生成联合。由于新的注册可能需要先前未需要的文件,因此这种列表不应仅限于已注册的实用程序当前所需要的文件。
然后,磁盘代理50指示磁盘控制器40检索文件集合{A,C,D}。对于每个检索到的文件,磁盘代理参考其所存储的注册以确定哪些已注册的实用程序需要该文件。在检索到文件A(或由A代表的文件集合中的一个文件)时,由于磁盘代理已经确定没有其他实用程序当前需要该文件,因此该磁盘代理将该文件加载到指定为专用于实用程序U1的存储器区域中。类似地,磁盘代理将文件D加载到实用程序U2的专用存储器中。然而,磁盘代理已经确定实用程序U1和实用程序U2都需要文件C,并将该文件(或集合)加载到存储器的共享区域中,使得每个实用程序都能够访问该所需要的文件。
实用程序U1和实用程序U2处理文件C的顺序可以是随机的,但在本实施例中根据磁盘代理关于各实用程序当前是否正忙于处理文件的观察来优化这种顺序。例如,当将文件C读取到共享存储器90中时,如果由磁盘代理保持的信息显示实用程序U1正忙于处理文件A,则磁盘代理首先向实用程序U2通报该共享存储器中的文件C的可用性。U2通过执行其对文件C的处理来进行响应。实用程序U1随后向磁盘代理通报U1已经完成了处理文件A(通过将消息放置到该磁盘代理的输入队列70上)。由于没有其他实用程序需要文件A,因此现在可以将文件A写回到磁盘。然后,磁盘代理向U1通报文件C在共享存储器中可用。U1通过处理文件C来进行响应,并在完成处理时通知磁盘代理。当已注册为需要处理文件C的每个实用程序都已经向磁盘代理通报处理完成时,该磁盘代理可以将文件C写回到磁盘。
确定哪些实用程序当前繁忙可以由磁盘代理以各种方式实现。例如,该代理可以对实用程序进行轮询(poll),以确定该实用程序当前是否可用于处理检索到的文件。作为替代,当实用程序变得可用时,这些实用程序可以向该代理发送消息,并且当实用程序变得不可用时,这些实用程序可以向该代理发送另一消息。第三,当实用程序忙于其他处理时,该实用程序可以简单地拒绝处理文件。
文件到已注册的实用程序的这种分配可以通过磁盘系统地进行,以文件在磁盘上存储的顺序的顺序检索所需要的文件;或者这种分配可以通过文件列表系统地工作,而不管文件在磁盘上的位置来实现。前一解决方案对存储子系统进行了更有效的利用。
图2中示出了由第一实用程序60所执行的与磁盘代理50进行交互的操作序列。在启动(200)时,实用程序60通过将消息放置到(210)磁盘代理50的输入队列70上而注册到该磁盘代理,并随后等待接收确认消息。当经由实用程序的输入队列接收到(220)注册确认消息时,注册过程终止(230)。然后,磁盘实用程序进入其核心循环。由于每个实用程序不向磁盘控制器40发送文件访问请求,而是等待被磁盘代理50调用,因此每个实用程序根据由磁盘代理50控制的调度而定期地执行。当实用程序从磁盘代理接收到(240)已经检索到该实用程序所需要的文件中的一个文件用于处理并且该文件在存储器中可用的通知时,该实用程序访问存储器中的该文件并执行(250)其处理。在完成其对该文件的处理后,实用程序60通知(260)磁盘代理50不再需要该文件。
图2还示出了由磁盘代理执行的操作序列的概观。从逻辑上说,磁盘代理的操作包括两个并发的执行流程(即线程)。第一流程对放置到磁盘代理的输入队列70上的消息进行响应。如果该消息是来自实用程序60的注册消息,则将细节记录(300)在该磁盘代理的内部结构中。这包括该实用程序所关注的文件类型的标识。磁盘代理使用该注册来确定(310)由这些实用程序所进行的磁盘I/O操作和读/写的最优调度。该第一流程还处理表明所识别的实用程序已经处理了特定文件并且不再需要该文件的响应消息。当磁盘代理确定没有实用程序需要该文件时,该磁盘代理将该文件写回到(330)磁盘(仅当一个或多个实用程序执行了对该文件的写操作时才是必须的),并随后释放(340)该文件所使用的共享存储器90的区域并丢弃为该文件保持的任何其他资源。
第二流程负责代表实用程序提供对磁盘的访问。该流程在图3中示出,并且在图2中由方框320代表。第二流程可以由第一流程(例如作为对注册的中间响应)或由某些其他外部调用(例如当定义的时间段届满时)启动(321)。磁盘代理首先将文件的“头”数据(即标识文件类型、文件名以及确定需要何种处理所需要的其他属性的信息)加载(322)到存储器中。当已经加载了该头信息之后,磁盘代理执行(323)与所存储的从已注册的实用程序得到的所需要文件类型的列表的比较。如果只有一个实用程序需要这些文件内容,则将该文件直接读取到专用于该实用程序的存储器中。另一方面,如果多个实用程序需要这些文件内容,则磁盘代理会将文件内容加载(324)到共享存储器90中。这可能需要等待在当前文件操作完成时释放空间。在成功地加载(或为了得到更高的效率,对文件内容进行存储器映射)了文件内容之后,磁盘代理将文件头放置(325)到具有对该类型的文件的相应需要的磁盘实用程序中的一个选定的实用程序的输入队列上。在另一实施例中,向具有对该文件的需要的所有实用程序发送关于文件可用性的通知,并且第一个进行响应的实用程序得到文件访问。
磁盘代理保持实用程序使用每个文件的的记录,以使得该磁盘代理能够确定何时可以从共享存储器丢弃文件内容。
针对并发请求对读/写操作进行调度磁盘代理50通过提示磁盘控制器40检索文件内容来对来自已注册的实用程序的文件访问请求进行响应。磁盘代理50还在其整个输入队列上向前扫描以识别对同一文件的其他请求(即以名称提及该文件的请求或由需要执行对该类型的所有文件的操作的实用程序在该队列中放置的请求)。如果只有一个实用程序当前需要该文件,则将文件内容加载到专门指定给请求者实用程序的存储器区域中。然而,如果多个实用程序需要这些文件内容,则磁盘代理将这些内容加载到本地系统的共享存储器90的区域中。然后,磁盘代理在具有针对该文件的待处理的并发请求的实用程序中的每个实用程序的相应输入队列80上放置消息。这些消息包括针对检索到的文件的头信息并表明了用于处理的文件的可用性。
如上所述,可以按不同的方式确定处理顺序。在本发明的一个实施例中,第一个对针对一个文件的可用性消息进行响应的实用程序是第一个能够执行其对该文件的读/写操作的实用程序。第一个进行响应的实用程序可以获得对该文件的锁定(即防止来自其他实用程序的读和写),同时执行该处理。响应于来自第一实用程序的该实用程序已经完成其处理的通知而解除锁定,并且该文件随后变得可用于其他实用程序。如果没有实用程序具有向该文件进行写入的需要,则不需要对该文件进行锁定。
接收到引用检索到的文件的消息的每个实用程序执行关于该实用程序是否需要该文件的内容的确定。例如,尽管病毒扫描需要这些文件内容,但某些其他实用程序最初可能只需要该文件的有限的信息(例如文件名、文件位置、字节长度、时戳等)。如果备份实用程序根据这种“头”信息而确定自从上次备份以来该文件还没有改变,则该备份实用程序得到该头信息就已满足需要。对于需要这些文件内容的每个实用程序,从共享存储器检索这些内容用于处理。这些实用程序根据需要对文件头和/或文件内容执行操作,并随后将响应消息放置到磁盘代理的输入队列上,以表明该实用程序对该文件已没有进一步的需要。应当意识到,对单一文件的多个读取可以由两个或更多实用程序无冲突地执行,但当多个实用程序需要文件访问并且这些实用程序中的至少一个实用程序需要执行修改内容的写操作时,必须采取措施以避免冲突。这种避免措施可以简单到限于依次地执行任意修改数据的写操作。例如,可以在一组读操作之后执行存档操作(具有数据移动和压缩)。本领域中已知有多种用于管理资源更新争夺的解决方案。
当请求文件的每个实用程序已经向磁盘代理50通报不再需要该文件时,如果该文件的内容已经被修改,该磁盘代理提示磁盘控制器40将该文件写回到磁盘。
实例使用场景以下所描述的是使用中的本发明的多个实例。
在第一种只读场景中,磁盘存储装置中所保持的五个文件A、B、C、D和E属于注册到磁盘代理50的一个或多个实用程序60所关注的文件类型。第一实用程序U1已经通过在磁盘代理的输入队列上放置请求消息而请求了对文件A和C中的每个文件的读访问。第二实用程序U2已经请求了对文件C和D的读访问。磁盘代理处理其输入队列并确定U1需要文件A,U1和U2需要文件C,并且U2需要文件D。文件B和文件E当前不被需要。
为了使得能够对所需要的文件执行所需要的操作,从磁盘存储装置中将文件A读取到用于由实用程序U1处理的存储器的专用区域中,并将文件D读取到U2的专用存储器中。由于文件C被多个实用程序所需要,因此从磁盘将文件C读取到共享存储器90中。磁盘代理通过在U1和U2中的每一个的相应输入队列上放置消息而向其通报文件C的可用性。然后,U1和U2可以并行地读取文件C并执行其处理操作。当U1和U2已经读取了文件C并且不再需要该文件被保持在共享存储器中时,U1和U2中的每一个通知磁盘代理50。当磁盘代理已经从U1和U2中的每一个接收到通知时,文件C被从共享存储器丢弃(即将存储器空间标记为可以再用)。这一过程的益处是,即使两个实用程序分别需要读访问,也只从磁盘存储装置读取文件C一次。
在第二种读-写场景中,U1和U2需要对与第一场景中相同的文件进行写访问。如前所述,一次单独的磁盘读取检索文件A并将其保存到用于由U1处理的专用存储器中。U1执行其处理并且文件A被写回到磁盘。类似地,一次单独的磁盘读取将文件D检索到用于由U2处理的专用存储器中。U2执行其处理操作并且文件D被写回到磁盘。一次单独的磁盘读取将文件C检索到共享存储器中,当该文件被保持在存储器中时,U1对该文件进行写入并且随后U2对其进行写入。然后,一次单独的磁盘写入将修改后的文件C返回磁盘存储装置。在该第二种场景中,已经保存了一次磁盘读取操作和一次磁盘写入操作。可以采用已知技术执行协商,来确定U1和U2中的哪一个实用程序应当是第一个修改文件C的存储器中副本的实用程序,并采用锁定来避免写冲突。对文件处理的排序同样可以是随机的或简单的循环(round-robin)分配。
在第三种场景中,U1需要对文件C进行写访问而U2只需要对文件C进行读访问。除了确定哪个实用程序应当首先执行其处理(首先读取或首先写入)之外,情况与第二场景的情况相同。
尽管如上所述,可以应用对资源争夺的常规解决方案来确定多个实用程序对检索到共享存储器的文件执行其操作的顺序,但磁盘代理可以实现考虑了实用程序与其处理的可能结果之间的关系的多个特定规则。第一实例规则是,不需要其他实用程序对反病毒程序识别出具有匹配的病毒特征的文件进行操作。可以为反病毒程序分配最高优先级,以确保其在诸如备份程序之类的其他实用程序处理文件之前扫描该文件。于是,磁盘代理取消其他已注册的实用程序对该文件的处理。
类似地,不需要对由反间谍软件程序识别出的间谍软件文件进行操作。
除了上述示例性实施例之外,多个替代性实施例也在本发明的范围内。例如,当共享存储器中没有太多空闲空间时,文件访问管理器可以对该文件访问管理器已知不需要内容加载的文件的检索区分优先次序。
除了磁盘访问之外,另一实施例给出了对CPU利用率进行优化。该解决方案将依赖于对诸如.ZIP文件之类的压缩文件进行一次单独的解压缩并且将在压缩并写回到磁盘之前对内容进行多次读/写处理。这可以结合上述本发明调度解决方案来实现。
上述两个实施例根据哪些实用程序需要对文件进行访问而将文件加载到存储器的不同区域(专用的或共享的)中。在本发明的一个实施例中,磁盘代理将所有检索到的文件加载到存储器的共享访问区域中。然后,如上所述,该磁盘代理只向需要该文件的那些实用程序发送文件可用性的通知。
上述实施例采用队列实现了异步通信。在本发明的另一实施例中,实现本发明的软件组件同步地进行通信,这能够提供更快的通信,但通常更难保证通信成功。
如上所述,图1中示出的组件可以分布在多个系统上。特别地,实用程序60可以在不同于磁盘代理50的机器上运行,并且这些实用程序本身可以各自在不同的机器上运行。例如,面向服务的体系结构中的GRID(网格)客户或客户端系统可以调用这些实用程序作为远程Web(环球网)服务。由网络上运行的实用程序与磁盘代理之间的通信引起的性能影响可以由在多个专用服务器或“服务器农场”(server farm)上运行的实用程序所提供的可扩展性、可用性和可靠性所补偿。例如,客户可以针对提供索引实用程序而对一个公司付费并针对反病毒服务而对另一公司付费。
本发明的一个实施例提供了对诸如虚拟存储器文件之类的非常大的文件(其不能一次性地进行存储器映射)的特定处理。在本发明中,可以通过将这些文件推迟到磁盘代理的常规调度执行结束时来处理这些文件。在磁盘扫描结束时,就可以将已经推迟的大于门限大小的任意文件提交给需要该文件的实用程序。发送给相关实用程序的消息等同于上述通知消息,只不过发送给相关实用程序的消息指定数据不在共享存储器中并且应用程序必须执行其自己的磁盘访问。可以一般地应用这一机制以处理处在常规处理范围之外的任意文件。
权利要求
1.一种用于对读/写操作进行调度的方法,包括步骤识别各自独立地需要对保持在数据存储装置中的特定文件进行存储装置输入/输出操作的多个进程;从所述数据存储装置检索所述特定文件;以及针对所述多个进程中的至少两个进程而对检索到的文件执行读/写操作,然后将结果保存到存储装置。
2.根据权利要求1所述的方法,其中所述多个进程包括用于执行对多个文件的自动批处理的计算机程序。
3.根据权利要求2所述的方法,其中从所述数据存储装置检索一批文件中的每个文件并根据以下方法将其加载到存储器中将第一组进程当前需要对其执行读/写操作的检索到的文件加载到存储器的共享区域中,以使得所述第一组进程能够执行读/写操作;并且将只有一个单独的进程当前需要对其执行读/写操作的检索到的文件加载到分配给所述相应单独进程的存储器的专用区域中。
4.根据权利要求3所述的方法,对于加载到存储器的共享区域中的文件,还包括步骤所述第一组进程依次地对所述文件执行读/写操作;以及响应于完成所述读/写操作,如果所述第一组进程已经对所述文件执行了至少一次写操作,则将所述文件写到磁盘,并随后从所述存储器共享区域释放所述文件。
5.根据任一前述权利要求所述的方法,其中所述识别步骤包括识别被要求定期执行并需要对特定文件执行读/写操作的多个进程,并且其中将所述从数据存储装置检索所述特定文件的步骤调度为在某个满足所述多个进程中的每个进程的定期执行要求的时间上执行。
6.根据任一前述权利要求所述的方法,其中所述识别独立地需要对特定文件进行存储装置输入/输出操作的多个进程的步骤包括识别来自所述多个进程的并发待处理的输入/输出请求,所述输入/输出请求与将要对所述特定文件执行的读/写操作相关联。
7.根据权利要求1-5中的任一项所述的方法,其中一组进程各自注册到文件访问管理器以指定其文件访问要求,并且其中所述识别步骤包括检查已注册的进程的所述文件访问要求。
8.根据权利要求7所述的方法,其中所述一组进程跨多个数据处理系统分布并经由通信网络与所述文件访问管理器进行通信。
9.根据权利要求7所述的方法,其中所述一组进程中的每个进程都通过向所述文件访问管理器发送注册消息来注册到所述文件访问管理器,所述注册消息指定相应进程所需要的文件类型;以及相应进程能够对所需要文件执行的一组操作。
10.根据任一前述权利要求所述的方法,其中所述针对所述至少两个进程中的至少一个进程而对检索到的文件执行读/写操作的步骤依赖于所述至少两个进程中的另一个进程对所述检索到的文件进行处理的结果。
11.根据权利要求10所述的方法,其中当先前执行的反病毒扫描识别出与病毒特征的匹配时,阻止备份进程执行备份操作。
12.一种文件访问管理器计算机程序,包括用于控制数据处理设备的程序代码,所述程序代码在所述数据处理设备上执行以实现一种对读/写操作进行调度的方法,所述方法包括识别各自独立地需要对保持在数据存储装置中的特定文件进行存储装置输入/输出操作的多个进程;从所述数据存储装置检索所述特定文件;以及针对所述多个进程中的至少两个进程而对检索到的文件执行读/写操作,然后将结果保存到存储装置。
13.一种数据处理设备,包括数据存储装置;多个计算机程序,其安装在所述数据处理设备上,所述多个程序各自需要对保持在数据存储装置中的文件进行存储装置输入/输出操作;以及文件访问管理器,包括用于执行以下方法步骤的程序代码-识别所述各自独立地需要对保持在数据存储装置中的特定文件进行存储装置输入/输出操作的多个计算机程序中的第一组计算机程序;-从所述数据存储装置检索所述特定文件;以及-针对所述第一组程序中的至少两个程序而对检索到的文件执行读/写操作,然后将结果保存到存储装置。
14.根据权利要求13所述的数据处理设备,包括多个网络连接的数据处理系统,其中所述文件访问管理器安装在第一数据处理系统上并且所述第一组程序中的至少一个程序安装在与所述第一数据处理系统分离的第二数据处理系统上。
全文摘要
所提供的是一种用于对必须从磁盘存储装置检索的文件的读/写操作和磁盘I/O操作进行优化调度的方法、设备和文件访问管理器。该文件访问管理器对这些操作进行调度,使得对磁盘的一次单独的文件检索就能满足对文件进行操作的多个进程的全部需要。如果这些进程中的任意进程向文件进行写入,则执行一次单独的磁盘写操作。这种协调的调度解决方案特别适用于磁盘实用程序和进行自动批处理(对大量文件依次地执行操作)的其他程序。对多个磁盘实用程序的读/写操作进行协调能够减少磁盘I/O操作的总数并从而减小批处理程序不利地影响系统性能的时间。这是当前因多个自动的批处理实用程序分别且独立地反复访问磁盘存储装置而加剧的一个问题。
文档编号G06F17/30GK1975655SQ20061010836
公开日2007年6月6日 申请日期2006年8月2日 优先权日2005年11月29日
发明者马克·斯坦利·卡特, 伊恩·戴维·刘易斯, 卢卡斯·威廉·帕特里奇, 巴拉特·维尔·贝迪 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1