用于存储管理器的数据流过滤器和插件的制作方法

文档序号:6476647阅读:262来源:国知局
专利名称:用于存储管理器的数据流过滤器和插件的制作方法
技术领域
概括地说,本发明涉及对软件应用提供数据存储服务的存储管理器。 更具体地,本发明涉及作为存储管理器操作的一部分提供例如加密、压缩 和其他数据转换的过滤功能。
背景技术
作为背景,存储管理器是用作软件应用(例如备份/恢复程序或web 服务器)和数据存储资源(例如带驱动器、盘驱动器、存储子系统等)之 间的中介的系统。可以与应用程序集成或与其单独实现的存储管理器提供 接受存储的对象并且随后在请求时检索对象的接口 。已使用存储管理器的 应用包括数据库安装的备份映像、企业应用数据、个人工作站、web内容 等的管理。
通常需要一种存储管理器,通过压缩或加密向物理存储设备写入或从 其中读取的数据来过滤所述数据。为压缩和/或加密提供支持的现有存储管 理器以两个方法之一执行此操作。最常见地,由内置存储管理器产品本身 的算法提供此类过滤。不太常见地,通过提供向存储管理器用户给出写入 其自己算法(多个)的选项的编程钩子来支持此类过滤。利用此选项,还 需要用户自己重新实现存储管理器的大部分功能。
第一个方法的缺陷包括
用户受限于存储管理器产品中内置的压缩和/或加密算法。
一些产品支持加密但不支持压缩,反之亦然。
一些产品仅支持弱加密或较差的压缩。
'存储管理器供应商可向客户收取附加费以启用内置的压缩和/或加密
5算法。
如果发现内置算法具有安全缺陷或致命漏洞,则客户不能立即换入 不同的现用算法以避免暴露于风险中。
当发明了更好的算法时,存储管理器客户必须等待供应商使用最新 技术更新嵌入的算法,尽管在单独的现用程序中可能已存在该新技术。
供应商可能未实现客户期望的特定压缩或加密算法。
第二个方法的缺陷包括
存储管理器的编程钩子给客户带来重新实现存储管理器否则将提供 的大部分功能的负担。典型地,用户必须写入这样的程序,即可接受存储 的对象,跟踪这些对象的位置,向/从物理存储设备写入和读取这些对象, 在请求时基于存储管理器需要的任何查询协议来检索这些对象,以及写入 期望的压缩和/或加密算法。在该方案中,存储管理器基本上将所有工作托 付给用户,并且没有提供其自己的任何功能。存储管理器主要用作向用户 写入的外部程序转发所有存储和检索请求以便处理的空壳或"存根 (stub)"。存储管理器自身只是组合和拆分经过其以及调用其的应用之 间的信息的緩冲区,并提供用于接口 API (应用编程接口 )的存根,但是 将大部分工作托付给用户的程序。
该方法为压缩和加密提供很少的支持。存在编程钩子,但是需要客 户以对自身来说较多的附加开销和工作来创建所需的支持。
他们的数据已被其自己的定制程序破坏,或者程序中的漏洞在关键时刻(例 如当需要存储对象来恢复停机的系统时)妨碍检索存储对象。
如果发生在先前段落中描述的事件,则存储管理器供应商可能发现 自身会面临对客户自己的编程,承担责任。
因此,需要一种克服上述缺陷的存储管理器过滤技术。需要一种允许 在不必重新设计存储管理器或在定制程序中重复其功能的情况下容易地实 现存储管理器过滤器的方案。还期望提供实现新的和不同过滤器的能力。 目前,对存储管理器过滤的最常见的需要是压缩和加密。然而,必须承认,如果可行性越宽,在一些情形下有利于提供其他数据转换,例如在英制和
米制单位之间、或在不同代码页或字符集(如ASCII (美国信息交换标准 代码)、EBCDIC (扩展二进制编码的十进制交换码)和统一码(Unicode)) 之间转换。通过实例的方式,如果第一系统以第一字符格式生成a数据 (例如使用EBCDIC字符的大型机)并且该数据需要被恢复到使用第二字 符格式的第二系统(例如使用ASCII字符编码的工作站),则此能力将非 常有用。可4吏用存储管理器过滤的另一领域是审计跟踪的生成。此类过滤 器可用于检查被存储或检索的数据,并生成用于管理用途的审计信息。

发明内容
通过一种方法、系统和计算机程序产品解决以上问题并获得了现有技 术的改进,其中管理数据存储资源上的客户端数据的存储管理器具有利用 许多不同类型数据流过滤器的能力,这些过滤器既未内置在存储管理器中 也不需要定制编程工作。存储管理器用户可通过简单地标识用户希望存储 管理器在过滤用户数据时使用的数据流过滤器来容易地实现过滤。所述过 滤器可以是现用程序,后者不是存储管理器的一部分并且不需要客户端应 用或存储管理器域信息(例如由客户端应用或存储管理器使用的协议或数 据类型的信息)。存储管理器作为被请求的数据流操作的一部分调用所标 识的过滤器,以及从数据流源接收数据流。数据流被提供给所述过滤器, 后者过滤所述数据流。在过滤之后,存储管理器从过滤器接收数据流并将 其发送至数据流目的地。
根据这里公开的示例性实施例,可作为以下项的属性之一接收所述过 滤器标识存储管理器事务请求、存储资源、应用、主机、用户、或存储 对象类别等。所述过滤^作可以导致也可以不导致所述数据流的转换。如 果过滤器转换数据流,则其可作为包括对所述数据流执行转换的写过滤器 以及可以逆转也可以不逆转所述转换的读过滤器的过滤器对的一部分来实 现。此类转换可包括压缩/解压缩过滤、加密/解密过滤、字符集转换过滤 等。如果过滤器未转换数据流,则其可代替地祐:设计为生成与所述数据流相关的信息,例如审计跟踪。
所述过滤器可在其自己的执行上下文中被调用,并且可经由进程间通 信机制与所述过滤器交换所述数据流。此机制可包括第一和第二管道,一 个用于向所述过滤器提供所述数据流,另 一个用于从所述过滤器接收所述 数据流。可以使用过滤器参数来调用所述过滤器,如果所述过滤器适于处 理所述参数,则传递所述过滤器参数,否则,所述#被阻止。通过实例 的方式,所述过滤器可以是加密或解密过滤器,以及所述过滤器参数可以 与加密密钥的标识相关。
在其他方面,存储管理器适于代表远程客户端将数据流过滤作为服务 来管理数据存储资源上的客户端数据。为了实现过滤,存储管理器从远程 客户端或远程客户端(例如可信机构)指定的位置接收客户端选择的过滤 器的副本或此类过滤器的标识。
在另一方面,存储管理器适于利用不一定是数据流过滤器的插件。此 类插件可以是具有客户端应用数据格式或存储管理器的域信息的定制程 序,从而其不是真实的数据流过滤器。


从以下对本发明的示例性实施例的更多特定描述,本发明的以上和其
他特征和优点将变得清楚,如附图所示,其中
图l是示出示例性存储管理器、客户端应用和数据存储资源的功能框
图2是示出图1中所示的组件的一个可能实施方式的功能框图; 图3是示出图1的存储管理器的示例性细节的功能框图; 图4是示出在图3的存储管理器和过滤器之间的进程间通信的示例性 机制的功能框图5是示出可由图1的存储管理器实现以执行数据流过滤的示例性步 骤的流程图6是示出与读和写过滤器对结合的图1的存储管理器的功能框8图7是示出可由存储管理器父进程实现以调用过滤器的示例性步骤的 流程图8是示出可由存储管理器父进程创建的过滤器客户端进程实现的示 例性步骤的流程图9是示出在远程存储管理器服务环境中的图1的存储管理器的示例 性实施方式的功能框图IO是示出可用于提供实现图l的存储管理器的软件版本的系统的示 例性数据处理硬件的功能框图;以及
图ll是可以在图l的存储管理器的计算机程序产品方案中使用的示例 性存储介质的示意性表示。
*实施方式
现在转到附图,在所有几个附图中类似的标号指示类似的元素,图1 示出存储管理器2,其存储和检索由客户端应用4生成的数据。在数据存 储模式下,存储管理器2从应用4接收数据对象的流(数据流),并将对 象存储在数据存储资源6中,典型地(但非必要地)用于归档目的。在数 据检索模式下,存储管理器2从数据存储资源6检索先前存储的对象,并 将它们返回至应用4。可以在软件、固件、硬件、或其组合中实现存储管 理器逻辑。应用4可代表期望在数据存储资源6中放置其数据的任意软件 应用。可作为任意物理存储设备或系统(包括一个或多个带驱动器、盘驱 动器、存储子系统等)实现数据存储资源6。
现在转到图2,没有限制本发明的范围,数据库系统8代表其中可适 于^f吏用图1的组件的一个可能环境。在系统8中,通过带和盘存储管理器 10例示存储管理器2,通过数据库备份/恢复系统12例示应用4,以及通过 可在带驱动器系统(未示出)中工作的一组带存储巻14和盘存储巻15例 示数据存储资源6。 */恢复系统12代表数据库服务器16提供数据^# 和恢复服务,数据库服务器16的存储空间和逻辑日志18需要被定期M 和恢复。仅通过实例,可使用例如IBM Informix ON-Bar备汾和恢复系统的产品在图2的环境中实现*/恢复系统12。该产品为数据库服务器 (例如IBM Informix⑧动态服务器(IDS ),其可用于实现数据库服务器 16 )提供带和盘备份和恢复服务。数据库服务器16可经由是111&1 11^@产 品的一部分的归档API (应用编程接口 )向^#/恢复系统12传送备除和 恢复请求。响应于这些请求,备^V恢复系统12将经由例如XBSA (X/开 放备份服务API)的协议调用存储管理器10来实现存储和检索操作。可使 用例如IBM Informi^存储管理器(ISM)的产品实现存储管理器10 (通 过适当修改以支持在此所述的过滤)。存储管理器10管理带存储巻14和 盘存储巻15。存储管理器10还在盘存储巻15中维护备盼和恢复操作的目 录20,后者将存储的数据对象与相应的带存储巻14和盘存储巻15相关。 存储管理器10的功能包括写入和读取在实际带和盘上的数据、跟踪何种数 据在哪个带或盘上,以及对数据分类。
可通过数据库服务器16的管理员向4^V恢复系统12发出^##求来 启动数据*操作。M/恢复系统12确定需要M何种数据并连接至存 储管理器IO。然后,*/恢复系统12从存储空间和逻辑日志18检索适当 数据,建立*对象的列表,并将其传递至存储管理器10。存储管理器IO 从数据对象列表创建保存组,并将保存组(包括一个或多个数据对象)写 入到适当的带存储巻14和/或盘存储巻15。然后,存储管理器10在目录 20中输入保存组和存储巻的记录。存储管理器10使用目录20来跟踪保存 组以及在其上4^这些保存组的巻。
可通过数据库服务器16的管理员向*/恢复系统12发出恢复请求来 启动数据恢复操作。M/恢复系统12确定需要恢复何种数据并连接至存 储管理器IO。存储管理器10在目录20中搜索由名H分/恢复系统12请求的 特定恢复对象,并将每个恢复对象映射至其在保存组中的偏移。然后,备 份/恢复系统12从存储管理器检索数据,并逐对象地将其传递至数据库服 务器16。数据库服务器16将数据写入存储空间和逻辑日志18中的适当位 置(多个)。
如通过以上背景所述,有时期望存储管理器过滤在数据存储源中存储或从中检索的数据。传统的存储管理器提供有限的过滤选项,例如压缩/ 解压缩和加密/解密。同样如上所述,此类过滤器或者嵌/v存储管理器逻辑 中,并由此难以修改或更新,或者需要复杂的编程工作以使用编程钩子创
建和实现此类过滤器。存储管理器2通过提供这样一种机制来改进此类情 形,即用户可容易地和直接地插入可应用于写入数据存储资源6或从中读 取的数据的现用压缩、加密、或其他数据转换程序。
图3示出可用于实现此功能的存储管理器2的示例性实施方式。如图 所示,存储管理器2实现过滤器调用子系统30,后者负责调用可以从过滤 器组32p 322、 ...32n来指定的过滤器32。这些过滤器不是存储管理器2 的一部分。相反,它们是驻留在数据处理系统(通常也实现存储管理器(尽 管在单独执行上下文中))中的单独程序(或库)。备选地,存储管理器 2和过滤器32可以在单独系统上执行。过滤器标识接口 34允许用户指定 要用作所请求的数据流操作一部分的过滤器32。可实现接口 34以例如经 由存储管理器的用户或管理员操作的命令行或图形用户接口来支持对存储 管理器2的本地或远程访问。过滤器标识存储器36 (例如存储文件、存储 器等)可用于在存储管理器2中保存过滤器标识。如以下更详细描述的, 这支持这样的能力标识过滤器32作为对象属性,例如存储资源6(参见 图1)、应用、主机、用户、或数据对象类别的属性。因为此类对象的其 他属性通常由存储管理器2维护(例如数据资源属性),所以可容易地实 现过滤器属性的添加。这样,不同过滤器32可以与不同存储资源6 (参见 图1)、应用、主机、用户或存储对象类别相关。如果没有此类能力,用 户或应用必须将过滤器标识为每个数据流命令的参数。
数据存储管理器2还包括数据流接收器38和数据流发送器40、以及 过滤写入器42和过滤读取器44。还提供用于与应用4 (参见图1)(例如 实现XBSA协议)通信的第一传统通信接口 46,以及提供用于与数据存储 资源6 (参见图1)(例如实现存^i殳备特定的协议)通信的第二传统通信 接口 48。
图4中示出数据流接收器38、数据流发送器40、过滤写入器42和过
ii滤读取器44的配置,如与过滤器32相对的在数据流写入器和数据流读取 器之间的关系。现在将额外地参照图5的流程图描述存储管理器2的操作 (包括上述组件的操作)。如图5的步骤50所示,存储管理器2利用过滤 器32的能力始于以下操作,用户经由过滤器标识接口 34标识对于存储管 理器的过滤器。在图5的步骤52,存储管理器2将过滤器标识存储在过滤 器标识存储器36中。在过滤器标识之后或与其同时,将请求存储管理器2 执行数据流操作,例如备份或恢复。在图5的步骤54,过滤器调用子系统 30查询过滤器标识存储器36并然后调用其中标识的过滤器32。在图5的 步骤56,数据流接收器38从数据流源接收数据流。对于一些操作(例如 数据备除),数据流源将是应用4 (参见图1)。对于其他操作(例如数据 恢复),数据流源将是数据存储资源(参见图1)。在图5的步骤58,数 据流接收器38将输入的数据流传递至过滤写入器42。过滤写入器42的功 能是将数据流提供给所标识的过滤器32用于过滤。由于过滤器32运行在 单独执行上下文中(或运行在单独系统上),所以过滤写入器42将使用适 当的进程间通信(IPC)机制(例如一对管道P1和P2 (参见图4))与过 滤器通信。也可使用其他IPC机制,例如套接字(例如,如果过滤器32 运行在单独数据处理系统上)。在图5的步骤60,过滤读取器44从执行 过滤的过滤器32接收过滤后的数据流。在图5的步骤62,将过滤后的数 据流传递至数据流发送器40,后者将数据流发送至数据流目的地。对于一 些操作(例如数据备份),数据流目的地是数据存储资源6 (参见图1)。 对于其他操作(例如数据恢复),数据流目的地是应用4 (参见图1)。
在许多情况下,包括过滤器32的过滤程序将不需要知道由存储管理器 2或应用4使用的协议或数据类型(以下称为"域信息"),而是仅需从 stdin (标准输入)读取以及向stdout (标准输出)写入。此类程序是真正 的"过滤器,,,其能够根据自Unix操作系统出现以来而公知的"过滤器" 的标准定义来处理原始数据流。Unix的"compress"和"uncompress"程 序仅是支持此类操作的现用程序的许多实例中的两个。用户也可指定过滤 器32,其实现其他期望的数据转换,例如加密和解密,或在不同字符集或代码页之间转换、在英制单位和米制之间转换等。也可指定非数据转换过
滤器32,例如执行例如审计的任务的过滤器32。例如,此类过滤器可将用 户数据的一部分和当前用户名复制到单独日志,后者使能在以后标识用户 及其访问的数据。备选地,此类过滤器可检查由存储管理器2处理的数据 流,并创建与事务相关的日志信息。尽管许多过滤程序将是现用软件,但 是也可创建定制过滤程序。此类过滤程序可以是Unix意义上的真正数据流 过滤器,或它们更多地在本质上可以是插件(所述插件需要存储管理器的 协议或应用的数据类型或格式的域信息),或者可接受或需要除了仅输入 流之外的参数。例如, 一些过滤程序可使用参数来调用。 一个此类参数可 以是所存储或检索的对象的唯一 ID (对象ID)。过滤程序可选择忽略该 参数,或者其可在参数看来适合时使用该参数。由于客户可具有要求使用 多个密钥来加密数据的策略,所以此能力对于加密过滤器非常有用。在此 类情况下,可使用对象ID选择对正在讨论的对象进行加密(写过滤)或 解密(读过滤)的密钥。例如,可使用对n取^莫的运算在n个不同密钥中 选择(key—id=object_id MOD n )。应注意,并非所有加密过滤程序都必 须需要此类参数进行密钥选择。例如,加密过滤器可以对其始终使用的单 个密钥进行硬编码(但是通常这使得保护过滤器本身与保护加密密钥一样 重要)。
可用于数据转换的两种过滤程序是写过滤器和读过滤器。写过滤器被 应用于存储管理器2向数据存储资源6写入的数据。将用户要求写入的数 据传递至写过滤器作为输入,然后将写过滤器的输出写入到物理存储器。 读过滤器被应用于存储管理器2从数据存储资源6读取的数据。从物理存 储器读取数据,并将其传递至读过滤器作为输入,然后将读过滤器的输出 返回至请求检索该数据的用户。
如果期望,可将两个过滤器32定义为对以一个方向转换数据的写过 滤器(例如Unix "compress");以及逆转原始转换的读过滤器(例如 Unix "uncompress")。图6中示出了此类过滤器配对的实例,其示出写 过滤器32w与读过滤器32R配对。应注意,还可定义只是传递数据而不改
13变数据的过滤器32。因此,可以使得将EBCDIC数据转换成ASCII的写 过滤器与不执行任何转换的读过滤器配对。结果可以是将为EBCDIC的源 数据存储为ASCII并随后以ASCII检索,而不是转换回EBCDIC。
如上所述,在存储管理器2的一个实施方式中,可将过滤器32定义为 物理存储设备的属性(例如表示数据存储资源6的一部分)。这将很方便, 因为在许多存储管理器中,必须首先描述物理存储i史备的属性,然后才可 以使用它们来存储和检索数据。此类属性可包括(l)到达设备的路径,(2) 是盘还是带设备,以及(3 )要在设备中存储的字节的最大数目。存储管理 器2可实现两个新的i更备属性;即,读过滤器和写过滤器。这些属性可4皮 指定为关于设备定义命令的标志,如下所示
sm -p/diskl/ids/logbu —t DISK -s 1000M\ -Fr/usr/bin/uncompress\ -Fw/usr/b in/compress
可用于限定到存储管理器10的物理存储设备的此语句标识设备及其 各种属性,包括-Fr标志(后跟到用于该设备的读取过滤器程序的路径) 以及-Fw标志(后跟到写入过滤器程序的路径)。该语句始于表示存储管 理器的标识"sm" 。 "p"标志表示存储设备路径指定。"/disk/l/ids/logbu" 字段标识到存^i殳备的实际路径。"-tDISK"属性表示设备类型为盘。"-s 1000M"属性标识i史备的大小。仅通过实例的方式,由-Fr标志标识的读过 滤器程序示为Unix "uncompress"程序,由-Fw标志标识的写过滤器程序 示为Unix"compress,,程序。通常,两个程序都位于Unix文件系统的/usr/bin 目录中。当存储管理器2接收到上述命令时,其可将设备属性存储在设备 属性文件中和/或存储器中。此文件或存储器的保存读和写过滤器属性的部 分可代表图3的过滤标识存储器36。因此,在存储管理器操作期间可由过 滤器调用子系统30查询过滤标识存储器36,以确定何种过滤器(多个) 应用于写入数据存储资源6的特定物理设备或从中读取的数据。
如上所述,过滤器指定不限于物理设备级。它们也可以以不同粒度(例 如虛拟设备级、应用级、主机级等)被指定。还可以为不同类别的存储对象(例如日志文件、数据文件等)指定过滤器32。同样,可以为不同的用 户或组、或根据任意其他类别方案指定过滤器32。备选地,如果期望,每 当应用4调用存储管理器2时,可将过滤器32指定为数据存储或检索命令 的参数。
如果存储管理器2被设计为传递过滤器参数,例如用于确定对加密/ 解密过滤器的加密密钥的"-id <object_id>,, ^t,则可需要一种冲支术来处 理确实支持此功能的过滤器32。理想地,过滤器32将能够使用或忽略此
参数。然而,许多现用过滤器被要求从stdin读取和向stdout写入,并且 这些过滤器可抱怨它们不识别该参数。解决此问题的一个方法是围绕现用 过滤器组件编写很小的封装器脚本(wrapper script)以便处理该参数。例 如,可为加密过滤器进行该操作,以基于数据对象ID实现密钥选择。对 于其他现用过滤器程序,例如Unix "compress"和"uncompress"程序, 可编写忽略参数的封装器并简单地将数据传递至程序。此类封装器脚本可 以是可执行文件并被定义为对于存储管理器2的过滤器32,而不是直接定 义对于存储管理器的相应现用过滤器程序。
在以下实例中,称为myCompress (其封装Unix compress)和 myUncompress (其封装Unix uncompress )的一对两行封装器脚本允许将 Unix命令用作过滤器32,即使它们不识别存储管理器2可传递的参数。所 述封装器简单地调用Unix过滤程序而不继续传递参数
myCompress:忽略过滤器参数的压缩封装器脚本 #!/usr/bin/sh /usr/bin/compress
myUncompress:忽略过滤器M的解压缩封装器脚本 #!/usr/bin/sh /usr/bin/uncompress
上述封装器可用于如下的存储设备过滤器配置中(假设myCompress 和myUncompress安装在/usr/local/bin中)
sm —p /path/to/device -t DISK —s 5G\-Fw /usr/local/bin/myCompress\ -Fr /usr/local/bin/myUncompress
用于处理将不处理过滤器参数的过滤器程序的另一方法将是定义向过 滤器调用子系统30指示是否应将任何参数传递至过滤器的标志。如果对于 给定过滤器定义被禁用,则过滤器调用子系统30将不向过滤器32传递任 何参数,从而使能在没有任何封装器脚本的情况下使用不识别或不需要额 外参数(例如压缩-解压缩对)的纯现用过滤器。以下是实例
sm -p /diskl/ids/logbu -t DISK -s 1000MV
-Fr_noarg/usr/bin/uncompress\
-Fw—noarg/usr/bin/compress
这里,-Fr—noarg标志指示这是不应被传递任何参数的读过滤器, -Fw—noarg标志指示这是不应被传递任何参数的写过滤器。然后,在不需 要任何封装器的情况下指定现用Unix "compress"和"uncompress"命令。 应注意,仍可支持上述的原始-Fr和-Fw标志以指示应将^t传递至过滤 器。
另一方法支持将任意参数串传递至每个过滤器32。 以下是实例
sm -p /diskl/ids/logbu —t DISK -s 1000MX
國Fr /usr/bin/uncompress —Fr—arg "read_argl read_arg2 read—arg3"\ 誦Fw /usr/bin/compress —Fw—arg "write—argl write一arg2,, 这里,-Fr标志指示读过滤器,-Fr一arg标志提M当调用读过滤器时 传递给其的参数串。-Fw标志指示写过滤器,-Fw_arg标志提供每当调用 写过滤器时传递给其的参数串。
存在过滤器调用子系统30可用以调用外部过滤器的各种实现机制。现 在,将描述利用Unix操作系统工具创建子进程和重定向它们的输入和输出 流的一个此类实例。应理解,该实例并非旨在将本发明的范围(或所附权 利要求)限于任何特定实施方式,而是仅示出可设计存储管理器2的一个 方法。该实例也未旨在将本发明的范围(或所附权利要求)限于Unix操作系统。其他操作系统具有生成子进程或线程和重定向它们的输入和输出流
的类似工具。例如,Linux是Unix的一种加强,其同样可使用以下示例性 实施方式。借助移植(porting),可以在Windows等操作系统环境中使 用相同方法。
根据示例性实施方式,具有要写入物理存储器的数据的存储管理器2 的Unix版本中的进程可首先使数据经过写过滤器,如下所示
创建2个管道,in_pipe和out—pipe (例如图4中的管道PI和P2 )。
分叉出子进程以执行子过滤器。
从应用4接收数据。
将数据写入injpipe (Pl)的输入端。
从outjipe (P2)的输出端读取过滤后的结果。
向数据存储资源6写入过滤后的结果。 子进程执行过滤器和in_pipe和out_pipe中的服务,如下
关闭stdin并代之以in_pipe (PI)的输出端。
关闭stdout并代之以out_pipe (P2)的输入端。
执行(在Unix中,使用execvp()或类似物)过滤器命令。
当到达文件末尾(输入流的末尾)时退出。
在以上实施方式中,父存储管理器进程将未处理的数据写入injpipe (Pl)的输入端,子过滤器进程从in_pipe的输出端读取该数据(由于过 滤器始终从stdin读取,子进程将其重定向为injipe的输出端)。子过滤 器进程将处理后的结果写入outj)ipe (P2)的输入端(由于过滤器始终向 stdout写入,子进程将其重定向为outjpipe的输入端)。最后,父存储管 理器进程从out_pipe的输出端检索处理后的数据并将其写入物理存储器。
可以通过相反的方式执行写入处理。因此,具有要从物理存储器读取 的数据的存储管理器2的Unix版本中的进程可首先使数据经过读过滤器, 如下
创建2个管道,in_pipe和out_pipe (例如图4中的管道Pl和P2 )。
分叉出子进程以执行子过滤器。 从数据存储资源6读取数据。
■将数据写入in_pipe (Pl)的输入端。
.从out』ipe (P2)的输出端读取过滤后的结果。
将过滤后的数据传递至应用4。
子进程执行过滤器和in_pipe和out_pipe中的服务,如下 关闭stdin并代之以in_pipe (PI)的输出端。
关闭stdout并代之以out_pipe ( P2 )的输入端。
执行(在Unix中,使用execvp()或类似物)过滤命令。
当到达文件末尾(输入流的末尾)时退出。
在以上实施方式中,父存储管理器进程从物理存储器读取未处理的数 据并将其写入in_pipe (PI)的输入端,子过滤器进程从in_pipe的输出端 读取该数据(由于过滤器始终从stdin读取,所以子进程将stdin重定向为 in_pipe的输出端)。子过滤器进程将处理后的结果写入out_pipe (P2 )的 输入端(由于过滤器始终向stdout写入,所以子进程将stdout重定向为 out_pipe的输入端)。最后,父存储管理器进程从outjipe的输出端检索 处理后的数据。
图7和8是在执行上述操作时分别代表存储管理器父进程和子过滤器 进程的操作的流程图。在图7中,步骤70代表父进程创建in_pipe (PI) 和out_pipe ( P2)。图7的步骤72代表父进程分叉出子进程以执行子过滤 器。图7的步骤74代表父进程将数据写入in_pipe的输入端。图7的步骤 76代表父进程从out_pipe的输出端读取数据。在图8中,步骤78代表子 进程关闭stdin并代之以in_pipe ( PI)的输出端。图8的步骤80代表子 进程关闭stdout并代之以out_pipe (P2 )的输入端。图8的步骤82代表 子进程执行过滤命令。图8的步骤84代表当到达输入流末尾时子进程退出。
现在转到图9,示出了存储管理器2的另一示例性实施方式,其中存 储管理器在服务器站点90处运行,以代表远程客户端92经由网络94提供 存储管理器服务。应用4和数据存储资源6也可位于服务器站点卯处。备 选地,这些组件可位于外部的其他位置。客户端92可维护其向存储管理器
182提供(例如经由过滤器接收接口 97)以在过滤客户端数据时使用的过滤 器96。因此,存储管理器2可在服务器站点90处本地实现过滤器96的副 本。备选地,如果期望,客户端92可维护过滤器96的单独副本并筒单地 (例如经由过滤器标识接口 34 )向存储管理器2标识该副本。在此情况下, 存储管理器2可^_用远程过程调用来调用过滤器96,并优选地^f吏用安全连 接(例如SSL (安全套接字层))跨网络94将数据传递至过滤器。如果服 务器站点90具有禁止使用不可信第三方过滤器的策略,则客户端92可(对 于存储管理器2娥定位于由可信过滤器机构维护的储存库98中的过滤器。 因此,公开了一种允许存储管理器实现用于处理数据流的过滤器的技 术。可以理解,所公开的技术提供了在传统存储管理器中不能发现的多个 优点,包括如下
用户不局限于由存储管理器供应商提供的压缩、加密、或其他过滤器。
用户不必向存储管理器供应商支付额外费用来启用嵌入的压缩和/ 或加密算法。
用户可快速换出被发现具有安全缺陷或致命漏洞的过滤器,并换入 提供类似功能的另 一现用组件,而不必等待存储管理器供应商发出补丁版 本。
用户可升级到最新的过滤技术,而无需等待来自存储管理器供应商 的下一版本。
如果用户不使用过滤器,则他们不必编写其自己的冗长程序或重新 实现存储管理器将提供的功能。
.对于客户来说,该方法远比编程钩子安全,因为他们无需自己编写
大部分存储管理软件,在编写中,他们可能没有适当的进程来确保在软件
被部署到生产之前充分测试和调试软件。
可避免实现编程钩子方法的存储管理器供应商的潜在责任。
由于过滤器的通用可插入特征使得客户具有更多的创造性,并JL^
户可发现这使得他们能够解决除了仅仅压缩和/或加密之外的更多问题,例如审计跟踪生成。
可以理解,可以在数据处理系统、机器实现的方法、以及计算机程序 产品中的任何一个中以各种方式实现上述概念,在计算才几程序产品中,由 一个或多个机器可用介质提供编程逻辑以用于控制数据处理器执行所需功
能。相对于数据处理系统和机器实现的方法,图10示出在将存储管理器2 实现为软件时可使用的示例性硬件环境IOO。硬件环境100包括CPU或 其他数据处理资源102和主存储器104,其提供数据处理核心;图形卡106, 生成对于显示监^见器107的可视输出信息;外围存储设备108;其他外围 设备110;以及总线基础设施112,其互连上述元件。存储管理器2可加载 到主存储器104中。如果应用4 (见图1)运行在相同硬件平台上,则其也 可加载到存储器104中。存储设备108可用作过滤器标识存储器36的永久 性存储器。也可在存储器104中维护过滤器信息的副本。可通过由外围设 备110 (可包括USB总线控制器、SCSI盘控制器、和网洛接口卡)提供 的I/O (输入/输出)资源来访问其他数据源。监视器107可用于呈现管理
"f各息。
相对于具有计算机可读介质和编程逻辑的计算机程序产品,通过图11 中的标号200示出用于存储编程逻辑的示例性数据存储介质。介质200被 示为通常用于商业软件销售类型的便携式光学存储盘,例如光盘-只读存储 器(CD-ROM)盘、光盘-读/写(CD-R/W)盘、和数字通用盘(DVD)。 此类介质可单独地或结合含有所需功能的另 一软件产品存储本发明的编程 逻辑。编程逻辑也可以由便携式磁介质(例如软盘、闪存棒等)、或与驱 动系统(例如盘驱动器)结合的磁介质、或包含在数据处理平台中的介质 (例如随M取存储器(RAM)、只读存储器(ROM)或其他半导体或 固态存储器)来提供。更宽泛地,介质可包括任何电子的、磁的、光学的、 电磁的、红外的、半导体系统或装置或设备、发送或传播介质(例如网络) 或信号、或其他实体,它们可包含、存储、传送、传播或传输由数据处理 系统、计算机或其他指令执行系统、装置或设^f吏用或与之结合使用的编 程逻辑。
20尽管已经描述了本发明的各个实施例,但是应理解,可根据本发明实现许多变形和备选实施例。因此,可理解,除了根据所附权利要求及其等同物的精神,不应以任何方式限制本发明。
权利要求
1.一种在适于管理数据存储资源上的客户端数据的存储管理器中的数据过滤方法,包括接收数据流过滤器的标识,所述过滤器是单独的程序或库;作为被请求的数据流操作的一部分调用所述过滤器;向所述过滤器提供数据流;以及向数据流目的地发送所述过滤器的输出。
2. 如权利要求1所述的方法,其中作为以下项的属性之一接收所述 过滤器标识存储管理器事务请求、存储资源、应用、主机、用户、或存 储对象类别。
3. 如权利要求1所述的方法,其中所述过滤操作导致所述数据流的 转换,并且所述过滤器是包括对所述数据流执行转换的写过滤器以及可以 逆转也可以不逆转所述转换的读过滤器的过滤器对的一部分。
4. 如权利要求3所述的方法,其中所述过滤操作包括以下操作之一 压缩/解压缩过滤、加密/解密过滤、或字符集转换过滤。
5. 如权利要求1所述的方法,其中所述过滤操作导致在不转换所述 数据流的情况下生成与所述数据流相关的信息。
6. 如权利要求5所述的方法,其中所述过滤操作包括生成审计跟踪。
7. 如权利要求1所述的方法,其中所述过滤器在其自己的执行上下 文中被调用,并且经由进程间通信机制向所述过滤器提供所述数据流以及 从所述过滤器接收所述数据流。
8. 如权利要求7所述的方法,其中所述进程间通信机制包括向所述 过滤器提供所述数据流的第 一管道以及从所述过滤器接收所述数据流的第 二管道。
9. 如权利要求1所述的方法,其中使用过滤器参数来调用所述过滤 器,如果所述过滤器适于处理所述过滤器参数,则所述过滤器参数^L传递 给所述过滤器,并且如果所述过滤器不适于处理所述过滤器参数,则所述过滤器参数被阻止。
10. 如权利要求9所述的方法,其中所述过滤器是加密或解密过滤器 之一,以及所迷过滤器参数与加密密钥的标识相关。
11. 一种适于管理数据存储资源上的客户端数据的存储管理器系统, 包括数据处理核心; 到应用的第一通信接口; 到数据存储资源的第二通信接口 ;过滤器标识接口,其适于接收数据流过滤器的标识,所述过滤器是单独的程序或库;过滤器标识存储器,其适于保存所述过滤器的所述标识; 过滤器调用子系统,其适于作为被请求的数据流操作的一部分调用所述过滤器;数据流接收器,其适于从代表所述应用或所述数据存储资源之一的数 椐流源接收数据流;过滤写入器,其适于向所述过滤器提供所迷数据流;过滤读取器,其适于在所述过滤器过滤之后从其接收所述数据流;以及数据流发送器,其适于向代表所述应用或所述数据存储资源之一的数 据流目的地发送所述数据流,其中所述数据流目的地不是所述数据流源。
12. 如权利要求11所述的系统,其中所述过滤器标识包括以下项的 属性之一存储管理器事务请求、存储资源、应用、主机、用户、或存储 对象类别。
13. 如权利要求11所述的系统,其中所述过滤器适于转换所述数据 流,并且是包括对所述数据流执行转换的写过滤器以及可以逆转也可以不 逆转所述转换的读过滤器的过滤器对的 一部分。
14. 如权利要求13所述的系统,其中所述过滤器包括以下项之一 压缩/解压缩过滤器、加密/解密过滤器、或字符集转换过滤器。
15. 如权利要求11所述的系统,其中所述过滤器适于在不转换所述数据流的情况下生成与所述数据^M目关的信息。
16. 如权利要求15所述的系统,其中所述过滤器适于生成审计跟踪。
17. 如权利要求11所述的系统,其中所述过滤器调用子系统适于在 其自己的执行上下文中调用所述过滤器,并且所述数据流写入器和读取器 分别适于经由进程间通信机制向所述过滤器提供所述数据流以及从所述过 滤器接收所述数据流。
18. 如权利要求17所述的系统,其中所述进程间通信机制包括向所 述过滤器提供所述数据流的第一管道以及从所述过滤器接收所述数据流的 第二管道。
19. 如权利要求11所述的系统,其中所述过滤器调用子系统适于使 用过滤器参数来调用所述过滤器,如果所述过滤器适于处理所述过滤器参 数,则所述过滤器参数被传递给所述过滤器,并且如果所述过滤器不适于 处理所述过滤器参数,则所述过滤器参数被阻止。
20. 如权利要求19所述的系统,其中所述过滤器是加密或解密过滤 器之一,以及所述过滤器参数与加密密钥的标识相关。
21. —种计算机程序,包括在计算机系统上执行所述计算机程序时, 用于执行根据任意先前方法权利要求的方法的所有步骤的指令。
全文摘要
一种存储管理器和相关方法以及计算机程序产品,用于管理数据存储资源上的客户端数据,并包括利用许多不同类型数据流过滤器的能力,这些过滤器既未内置在存储管理器中也不需要定制编程工作。存储管理器用户可通过简单地标识用户希望存储管理器在过滤用户数据时使用的数据流过滤器来容易地实现过滤。所述过滤器可以是现用程序,后者不是存储管理器的一部分并且不需要客户端应用或存储管理器域信息(例如由所述应用或存储管理器使用的协议或数据类型或格式的信息)。存储管理器作为被请求的数据流操作的一部分调用所标识的过滤器,以及从数据流源接收数据流。数据流被提供给所述过滤器,后者过滤所述数据流。在过滤之后,存储管理器从过滤器接收数据流并将其发送至数据流目的地。
文档编号G06F3/06GK101646995SQ200880008566
公开日2010年2月10日 申请日期2008年3月17日 优先权日2007年3月26日
发明者J·莱福勒, K·J·切尔考尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1