管理输入/输出的方法

文档序号:6568427阅读:214来源:国知局
专利名称:管理输入/输出的方法
技术领域
本发明一般涉及主计算机与存储服务器之间经由输入/输出(I/O)适配器的通信协议。更具体地说,本发明涉及,使用户空间 中间件或应用程序能够将I/O存储请求传递给存储服务器的系统和方法,所述存储服务器在相对于与所述存储服务器相关联的特定存储设备来处理i/o存储请求之前,验证所述i/o存储请求。此外,本发明还涉及,使用户空间中间件或应用程序能够将这种I/O存储请求传递 给存储服务器,而没有来自本地操作系统(OS)或在虚拟系统、本地管理程序中的运行时间牵连的系统和方法。
背景技术
根据当前现有技术,操作系统不允许诸如数据库的用户空间中间件或应用程序直接访问通过操作系统的原始模式存储器I/O接口或操作系统的逻辑巻存储器i/o接口识别的永久性存储器。其结果是,每次进行i/o操作时,用户空间中间件必须调用操作系统(OS)调用并 招致若干次任务切换。当中间件或应用程序将存储请求传送到OS时, 引起第一次任务切换。在OS完成了中间件或应用程序存储请求的处理并将存储请求传递给存储适配器之后,当os将控制传回给用户空 间中间件或应用程序时,发生第二次任务切换。当存储适配器完成了相关I/O存储操作并中断应用程序正在进行的处理,以便os可以处理存储适配器的完成结果时,发生第三次任务切换。当OS结束了存储适配器完成结果的处理并将控制还给将 存储请求传递给OS的中间件或应用程序时,发生最后一次任务切换。除了这些任务切换之外,存储适配器通常还具有处理来自操作系统的 工作的单个请求队列。可以认为上述四次任务切换消耗了处理器周期,因为需要停止被 切换的线程上的所有工作直到任务切换完成。在一些服务器上,用户 空间中间件或应用程序所执行的存储操作的数量可能相当大。现代高 端服务器可能具有每秒数百万次的这些操作,导致每秒几百万次的任 务切换。发明内容鉴于上面的情况,具有最小化这种任务切换的用于管理输入/输出(I/O)存储请求的方法、系统和具有计算机可读指令的计算机程序产品将是有益的。此外,具有使用户空间中间件或应用程序能够直接将I/O存储请求传递给物理I/O适配器,并在此后传递给存储服务 器,而没有来自本地操作系统(OS)、或在虚拟系统、本地管理程序中的运行时间牵连的改进方法、系统和计算机指令将是有利的。具有应用于InfiniBand, TCP/IP卸栽引擎、RDMA (远程直接存储器访 问)使能的NIC (网络接口控制器)、iSCSI适配器、iSER ( RDMA 的iSCSI扩展)适配器、并行SCSI适配器、光纤通道适配器、串行 附加SCSI适配器、ATA适配器、串行ATA适配器和任何其它类型 的存储适配器的机制也将是有利的。并且,具有使存储服务器中的保护机制能够保证只对与存储服务 器相关联的存储设备部分完成I/O存储请求的改进方法、系统和计算 机指令将是有利的,所述I/O存储请求是从一个应用实例直接发送到 物理I/O适配器并被存储服务器接收的,以及所述部分以前已被分配 用于与所述应用实例的来自用户空间的I/O。此外,具有允许创建、 修改、查询和删除用于便于应用实例、物理I/O适配器和存储服务器之间的直接i/o操作的数据结构表目的方法、系统和计算机指令也将是有益的。另外,具有处理用户空间操作,以便进行存储设备资源管理和直接I/O操作数据结构管理的方法、系统和计算机指令也将是有益的。最后,具有利用在主系统上运行的操作系统的文件系统来实现 上述目的的方法、系统和计算机指令将是有益的。本发明提供了管理i/o的方法、系统和计算机程序。所述方法包 含如下步骤从应用实例接收输入/输出(1/0)请求,其中,I/O请 求包括标识翻译保护表数据结构中的表目的关键字值,以及其中,I/O 请求瞄准远程存储系统中的进行I/O操作的存储设备的一部分;根据 所述关键字值从翻译保护表中检索表目,其中,所述表目包括存储设 备的标识符和与1/0请求所瞄准的存储设备的所述部分相对应的逻辑 单元号;根据通过所述表目从翻译保护表中检索的存储设备的标识符 和逻辑单元号来生成存储命令;以及将存储命令放入存储命令队列中 以便发送到远程存储系统。优选地,所述存储设备的所述部分是包含存储设备的一个或多个 逻辑单元号(LUN)的逻辑巻。更优选地,所述存储设备的所述部分 是包含存储设备的一个或多个逻辑单元号(LUN)的文件。本发明提供了一种方法、计算机程序产品和数据处理系统,使得 用户空间中间件或应用程序能够直接将I/O存储请求传递给物理I/O适配器,并因此通过物理i/o适配器传递给存储服务器,而没有来自本地操作系统(OS)、或在虚拟系统、本地管理程序中的运行时间牵 连。描述在本发明中的机制应用于InfiniBand主通道适配器、TCP/IP 卸载引擎、RDMA (远程直接存储器访问)使能的NIC (网络接口控 制器)、iSCSI适配器、iSER (RDMA的iSCSI扩展)适配器、并行 SCSI适配器、光纤通道适配器、串行附加SCSI适配器、ATA适配 器、串行ATA适配器、和任何其它类型的存储适配器。具体地说,本发明涉及一种提供并使用翻译保护表(TPT )数据 结构来控制用户空间和来自用户空间的输入/输出(I/O )操作的机制。 在本发明的一个示范性实施例中,TPT包括具有用于由操作系统的文 件系统管理的每个文件的表目的文件名保护表(FNPT) 。 FNPT中 的表目包括指向与文件名相对应的文件扩展保护表(FEPT)的段的 指针。FEPT中的表目可包括存储设备标识符号、逻辑单元号(LUN )、 偏移和长度、以及其它可选保护表上下文信息。通过这个示范性实施 例的TPT,应用实例或中间件可以通过利用文件关键字找出FNPT中与作为1/0请求的目标的文件相对应的表目,来提交I/0请求。FNPT 中的表目包括指向FEPT中的表目的指针。FEPT表目中的偏移用于 计算与1/0请求相对应的开始存储块地址。检索FEPT表目中的存储 设备标识符号、LUN和长度,并且将它们与计算的开始存储块地址和 请求的应用实例或中间件所提供的验证关键字 一起放在存储服务器 命令队列中的存储命令中。当应用实例初始化时,所述应用实例可以请求打开一个文件,应用实例要通过该文件来进行i/o操作。响应于这种请求,操作系统可以创建该文件并执行自举算法,以便授权应用实例访问与创建的文件 相关联的存储设备部分。这个自举算法可以使操作系统将请求发送到 存储服务器,以便为文件分配一个或多个存储设备的一个或多个部 分。存储服务器可以将验证关键字与文件相关联,并且可以将这个验 证关键字返回给应用实例。验证关键字可以与文件相关联地放在翻译 保护表,例如,FNPT或FEPT中。此后,当应用实例要通过该文件进行i/o操作时,应用实例请求打开创建的文件。然后使用翻译保护表来检索文件的验证关键字以及 与文件相关联的存储设备部分的标识符,例如,逻辑单元号(LUN)。 将验证关键字打包到存储在队列中的"打开"存储设备命令中,以便发 送到存储服务器,从而启动应用实例与存储服务器之间的会话。然后,由1/0适配器从队列中检索存储命令,所迷i/o适配器将 "打开"存储命令转发给存储服务器的存储服务器控制器。然后,存储 服务器控制器根据验证关鍵字来验证"打开"存储命令。例如,存储服 务器控制器根据标识验证关键字与逻辑单元号(LUN)之间的对应关 系的数据结构来检验存储服务器。存储服务器控制器查找基于存储服 务器的数据结构中在"打开"存储命令中标识的LUN,并且识别相应验 证关键字。然后,将从基于存储服务器的数据结构中检索的验证关键 字与在"打开"存储命令中传递给存储服务器的验证关键字相比较。如 果匹配,存储服务器控制器启动应用实例与存储设备的识别部分之间 的会话。如果验证关键字之间不匹配,那么,拒绝打开存储设备的一(些)部分,并且可以返回错误消息。假设应用实例与存储设备的一 (些)部分之间的会话被启动,接着,应用实例可以将存储命令发送 到存储设备的这些打开部分,而无需进一步的验证,直到会话被中断。在本发明的一个实施例中,TPT包括具有用于为主系统的OS或 系统映像创建的每个逻辑巻的表目的逻辑巻保护表。与如上所述的 FEPT中的表目相似,逻辑巻保护表中的表目标识存储设备标识符号、 逻辑单元号、偏移和长度。应用实例或中间件可以使用巻关键字来识 别逻辑巻保护表(LVPT)中与作为I/O存储请求的目标的逻辑巻相 对应的表目。相应LVPT表目中的巻偏移可以用于为1/0存储请求计 算开始存储块地址。从LVPT表目中检索存储设备标识符号、逻辑单 元号和长度,并且将它们与计算的开始存储块地址和请求应用实例或 中间件所提供的验证关键字一起放在存储命令队列中的存储命令中。在本实施例中,当打开逻辑巻时,可以使用与上述打开文件相似 的机制。也就是说,可以将分配一个或多个存储设备的一个或多个部 分的请求发送到存储服务器,从而为来自应用实例的1/0操作启动逻 辑巻。这个处理可能牵涉到返回到应用实例并由应用实例用于访问与 逻辑巻相关联的存储设备部分的验证关键字的建立。验证关键字可以 以与前面FNPT或FEPT所述相同的方式存储在LVPT中。在将验证 关键字存储在LVPT中之后,在启动与存储服务器的会话时可以使用 验证关键字,从而打开逻辑巻供来自应用实例的1/0操作使用。以此方式,只有那些已经分配给应用实例或中间件的与存储服务 器相关联的存储设备部分才可以被应用实例或中间件访问。此外,只设备的该部分。另外,在处理i/o请求期间,主系统的操作系统或系统映像不需要被牵涉到,除了将存储命令保持在存储命令队列中以 外。因此,本发明省去了在现有技术机制中需要的多次上下文切换。 如下文所述,在本发明的一个示范性实施例中,提供了一种从应用实例接收输入/输出(I/O)请求的计算机程序产品、方法和装置, 所述I/O请求包括用于标识翻译保护表数据结构中的表目的关键字值,以及其中,所述1/0请求瞄准远程存储系统中的要对其进行1/0操作的存储设备的一部分。根据所述关键字值,从翻译保护表中检索表目,所述表目包括存储设备的标识符和与1/0请求所瞄准的存储设备的所述部分相对应的逻辑单元号。根据通过所述表目从翻译保护表 中检索的存储设备的标识符和逻辑单元号来生成存储命令。将存储命 令放入存储命令队列中以便发送到远程存储系统。被瞄准的存储设备的所述部分可以是包含存储设备的 一个或多个逻辑单元号(LUN)的逻辑巻。可替代地,被瞄准的存储设备的所 述部分可以是包含存储设备的一个或多个逻辑单元号(LUN )的文件。除了上述以外,还可以从应用实例接收请求,以便打开存储设备 的所述部分,该请求包括验证关键字。可以将具有验证关键字的命令 发送到远程存储系统,以便打开存储设备的所述部分。可以返回打开 存储设备的所述部分的命令的结果。远程存储系统可以根据验证关键 字,对打开存储设备的所述部分的命令进行验证。此外,还可以从应用实例接收请求,以便将存储设备的逻辑单元 分配给存储设备的所述部分用于应用实例的输入/输出操作。可以将根 据接收的分配逻辑单元的请求生成的分配命令发送到远程存储系统, 并且可以从远程存储系统接收响应,该响应识别在打开存储设备的所 述部分的逻辑单元用于1/0操作的过程中使用的验证关键字。可以将在翻译保;表数据、结:中。 、 、而且,可以从从翻译保护表中检索的表目中检索验证关键字,并 且可以生成打开命令,以便打开存储设备的所述部分。打开命令可以 包括验证关键字。可以将打开命令发送到远程存储系统,从而在应用"逻;单元用于1/、o操作。只;当远程存储系统根据打开命令中"验 证关键字核实应用实例被允许访问存储设备的所述部分的逻辑单元时,远程存储系统才打开存储设备的所述部分的逻辑单元用于I/O操作。除了上述以外,可以接收请求来创建翻译保护表数据结构中用于 存储设备的所述部分的表目。可以创建翻译保护表数据结构中用于存 储设备的所述部分的表目,并且可以返回与创建的表目相对应的翻译 保护表关键字。该表目可以包括存储设备标识符号、逻辑单元号、偏 移和长度。该表目可以进一步包括保护域、访问控制信息、或验证关 键字的至少一个。在本发明的另 一个实施例中,可以接收查询翻译保护表数据结构 中用于存储设备的所述部分的表目的请求,并且可以识别翻译保护表 数据结构中用于存储设备的所述部分的表目。然后,可以返回翻译保 护表数据结构中的表目的属性。在进一步的实施例中,可以接收修改翻译保护表数据结构中用于 存储设备的所述部分的表目的请求。可以修改翻译保护表数据结构中 的表目,并可以返回翻译保护表中的修改表目的属性。可以确定是否 存在有关翻译保护表数据结构中的表目的活动事务,以及只有当不存 在有关该表目的活动事务时,才可以进行翻译保护表数据结构中的表 目的修改。如果存在有关翻译保护表数据结构中的表目的活动事务,则可以 启动定时器。可以确定在到达静止点之前定时器是否超时。如果在到 达静止点之前定时器超时,则可以产生错误。在本发明的另 一个实施例中,可以接收删除翻译保护表数据结构 中用于存储设备的所述部分的表目的请求。可以将翻译保护表数据结 构中的表目标记为无效。可以确定是否存在有关翻译保护表数据结构 中的表目的活动事务。只有当不存在有关该表目的活动事务时,才可 以进行翻译保护表数据结构中的表目的标记。如果存在有关翻译保护表数据结构中的表目的活动事务,则可以 启动定时器。可以确定在到达静止点之前定时器是否超时。如果在到 达静止点之前定时器超时,则可以产生错误。在本发明的一个示范性实施例中,该装置可以包括处理器和存储 器。存储器可以包含执行如上所述的各种操作的指令。这些指令可以问和处理。在对本发明的示范性实施例的如下详细描述中说明了本发明的 这些和其它特征和优点,或者本发明的这些和其它特征和优点对于本 领域的普通技术人员来说在考虑了对本发明的示范性实施例的如下 详细描述之后显而易见。


在所附权利要求书中给出了被认为是本发明特征的新特征。但 是,通过结合附图阅读例示性实施例的如下详细描述,可以最佳地了解本发明本身以及它的优选使用方式、进一步的目的和优点,其中图l是按照本发明示范性实施例的主处理器节点的功能方框图;图2是例示按照本发明示范性实施例,用于允许来自用户空间的 存储器I/O访问的主处理器节点的基本操作单元的图;图3是例示按照本发明示范性实施例,用于翻译和保护基于逻辑 巻的存储的示范性控制结构的图;图4是例示按照本发明示范性实施例,用于将存储请求从用户空 间中间件或应用实例传递到存储适配器的示范性控制结构的图;图5是概括当创建逻辑巻及其相关逻辑单元供应用实例访问时, 本发明 一个示范性实施例的示范性操作的流程图;图6是概括当打开与OS逻辑巻相对应的一个或多个LUN供应 用实例访问时,本发明 一 个示范性实施例的示范性操作的流程图;图7是概括当关闭以前打开的OS逻辑巻时,本发明一个示范性 实施例的示范性操作的流程图;图8是概括当处理来自应用实例的I/O存储请求时,本发明 一个 示范性实施例的示范性操作的流程图;图9是概括当创建逻辑巻和相应翻译保护表表目时,本发明一个 示范性实施例的示范性操作的流程图;图IO是概括当查询逻辑巻保护表以便获得属性信息时,本发明 一个示范性实施例的示范性操作的流程图;图11是概括当修改逻辑巻保护表表目时,本发明一个示范性实施例的示范性操作的流程图;图12是概括当删除或破坏逻辑巻保护表表目时,本发明一个示 范性实施例的示范性操作的流程图;以及图13是例示按照本发明示范性实施例,用于翻译和保护基于文 件名的存储的示范性控制结构的图。
具体实施方式
本发明应用于访问与存储服务器相关联的远程存储设备的一部 分的任何通用或专用主机。例如,本发明应用于经由诸如PCI系列I/O 适配器、虚拟I/0适配器、端点设备、虚拟端点设备等的1/0适配器 与一个或多个网络上的存储服务器通信的主机。 一个或多个网络可以 包括端节点、交换机和互连这些部件的链路。网络链路可以是光纤通 道、以太网、InfiniBand、高级交换互连、另一条标准存储网络互连、 或使用专有或标准协议的专有链路。虽然下文的描绘和说明将参照网 络和主节点的特定布置,但应该认识到,如下的示范性实施例只是示 范性的,可以在不偏离本发明的精神和范围的情况下对具体描绘和说 明的布置作出各种修改。重要的是注意到本发明可以釆取整个硬件实施例、整个软件实施 例或包含硬件和软件元件两者的实施例的形式。在示范性实施例中, 本发明以包括但不局限于固件、驻留软件、微码等的软件来实现。而且,本发明可以采取可从计算机可用或计算机可读介质访问的 计算机程序产品的形式,所述介质提供程序代码供计算机或任何指令 执行系统使用或与计算机或任何指令执行系统结合使用。为了本说明 的目的,计算机可用或计算机可读介质可以是可以包含、存储、传送、传播、或传输程序供指令执行系统、装置或设备使用或与指令执行系 统、装置或设备结合使用的任何装置。所述介质可以是电、磁、光、电磁、红外或半导体系统(或装置 或设备)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可拆卸计算机软盘、随机访问存储器(RAM)、只读存储 器(ROM)、硬磁盘和光盘。光盘的当前例子包括只读光盘存储器 (CD-ROM)、读写光盘(CD-R/W)和DVD。适合存储和/或执行程序代码的数据处理系统将包括通过系统总 线与存储元件直接或间接耦合的至少一个处理器。存储元件可以包括 在程序代码的实际执行期间应用的本地存储器、海量存储器和高速緩 冲存储器,高速緩冲存储器提供至少一些程序代码的暂时存储,以便 减少在执行期间必须从海量存储器中检索代码的次数。输入/输出或I/O设备(包括但不局限于键盘、显示器、定位设备等)可以直接或通过中介i/o控制器与系统耦合。网络适配器与系统耦合,使得数据处理系统能够通过中介专用或公用网络与其它数据 处理系统、远程打印机或存储设备耦合。调制解调器、电缆调制解调 器和以太网卡只不过是可以用在本发明中的少数几种当前可用类型 的网络适配器。现在参照附图,尤其参照图1来描绘按照本发明的一个示范性实施例的主节点的功能方框图。在本例中,主节点102包括通过链路101 互连的两个处理器I/O层面100和103。为了易于描绘主节点102的 元件,只完整描绘了处理器I/0层面100,处理器I/O层面103尽管 未作描绘,但具有与如下讨论相似的元件布置。如图所示,处理器I/0层面100包括处理器芯片107,处理器芯 片107包括一个或多个处理器和它们的相关高速緩存。处理器芯片107 通过链路108与存储器112连接。诸如链路120的处理器芯片上的链 路之一与PCI系列I/O桥128连接。PCI系列I/O桥128具有一条或 多条PCI系列(PCI、 PCI-X、 PCI-Express、或任何新一代PCI)链 路,用于通过诸如链路132、 136和140的PCI链路来连接其它PCI 系列I/O桥或诸如PCI系列适配器1 145和PCI系列适配器2 144的 PCI系列I/O适配器。诸如PCI系列适配器1 145的PCI系列适配器 可以用于通过诸如到网络164的链路156的与交换机或路由器160连 接的网络链路与网络附加存储器152连接,交换机或路由器160又经由链路158和存储服务器159与网络附加存储设备152连接。诸如PCI 系列适配器2 144的PCI系列适配器也可以用于通过链路148与直接 附加存储设备162连接。重要的是注意到,诸如PCI系列适配器1 145或PCI系列适配 器2 144的PCI系列适配器可以与主节点102上的其它部件集成。例 如,PCI系列适配器1 145或PCI系列适配器2 144可以与PCI系列 I/O桥128集成。另一个例子是诸如PCI系列适配器1 145或PCI系 列适配器2 144的PCI系列适配器可以与处理器芯片107集成。通过本发明的示范性实施例,诸如网络附加存储设备152和直接 附加存储设备162的网络附加存储设备和直接附加存储设备是小型计 算机系统接口 (SCSI)存储设备。每个SCSI存储设备具有唯一 SCSI ID号。这个SCSI ID号唯一地标识SCSI存储设备,并还可以用于确 定与SCSI存储设备相关联的优先级。每个SCSI存储设备可以进一 步分解成由逻辑单元号(LUN)标识的逻辑单元,例如,编号为O到 7的八个逻辑单元。在本发明的示范性实施例中,存储服务器159是因特网小型计算 机系统接口 (iSCSI)存储服务器。iSCSI协议是由因特网工程任务部 (IETF)开发的用于链接数据存储设施的基于网际协议(IP)的存储 器联网标准。通过在IP网络上传达SCSI命令,iSCSI用于便于内联网上的数据传送并管理长距离上的存储器。通过基于iSCSI的存储器,当最终用户或应用程序发送请求时, 操作系统生成适当SCSI命令和数据请求,然后,它们经历封装过程 和(如有必要)加密过程。在以太网连接上发送所得IP分组之前, 加入分组首标。当接收到分组时,解密它(如果在发送之前已加密)并分解它, 分离出SCSI命令和请求。将SCSI命令发送到SCSI控制器,并且从 那里发送到SCSI存储设备。因为iSCSI是双向的,该协议还可用于响应于原始请求而返回数据。应该注意到,在iSCSI协议中,要求操作系统生成SCSI命令和数据请求。通过本发明,正如下面讨论的那样,以操作系统无需被巻入SCSI命令和数据请求的生成中的方式来启用iSCSI协议。虽然本发明示范性实施例将针对作为SCSI存储设备和iSCSI存储服务器的网络附加存储设备和存储服务器来描述,但本发明不局限 于此。与此相反,也可以使用其它硬件接口而不偏离本发明的精神和 范围。另外,虽然本发明示范性实施例将针对PCI系列适配器来描述,但应该认识到,本发明不局限于这种类型的适配器。与此相反,物理1/0适配器可以是任何类型的1/0适配器,包括PCI系列适配器、虚拟i/o适配器、端点设备、虛拟端点设备、虚拟i/o适配器端点设备等。可以用于本发明的虛拟I/O适配器的一个例子描述在例如2005 年2月25日提交的发明名称为"Data Processing System, Method and Computer Program Product for Creation and Initialization of a Virtual Adapter on a Physical Adapter that Supports Virtual Adapter Level Virtualization"的共同转让和同时待审美国专利申请号 11/065,829中,其在这里通过引用而并入。也可以使用其它类型的I/O 适配器,而不偏离本发明的精神和范围。现在参照图2,图2描绘了与本发明一个示范性实施例相关联的 系统部件的功能方框图。在描绘的例子中,物理I/O适配器250是诸 如图1中的PCI系列适配器1 145或PCI系列适配器2 144的PCI适 配器的例子。另外,存储服务器270和存储设备280被认为是iSCSI 存储服务器和SCSI存储设备。为了易于说明本发明,图2中的本发 明实施例将针对基于逻辑巻的I/O实施例来描述。将在下文参照图13 来描述允许本发明用于文件模式I/O的方式。如图2所示,主系统200包括运行需要访问与存储服务器270 相关联的网络附加存储设备280上的存储位置的应用实例224的处理 器210。应用实例224具有相关应用程序库226,应用程序库226又 包括翻译保护表(TPT) 228。应用程序库226是应用实例224可访 问用于经由主系统200的物理I/O适配器250直接将I/O存储请求提交给网络附加存储设备的程序和/或数据的集合。TPT 228提供了用于 将应用实例224所生成的I/O存储请求中的存储位置标识符翻译成存 储命令,例如SCSI命令的翻译机制,所述存储命令可被封装到网络 协议数据分组中、在一个或多个网络上发送到存储服务器270、并由 存储服务器270处理以进行所请求I/O操作。当应用实例224需要一个或多个存储设备280的一部分用于数据 存储时,应用实例224将一个请求提交给操作系统(OS) 230。响应 于此,假设对于应用实例所请求的存储设备的那个部分存在足够容 量,OS 230创建逻辑巻,并且将标识已经分配给应用实例224的逻辑 巻的信息返回给OS 230。这个信息可以包括例如存储设备标识符号、 逻辑单元号、验证关键字等。OS 230根据这个信息来生成TPT 228 中的一个或多个表目。然后,OS230可以将应用实例可以用来提交指 向分配的逻辑巻的I/O存储请求的关键字值返回给应用实例。在分配了供应用实例224使用的逻辑巻之后,应用实例224可以 打开所述逻辑巻,并且直接提交瞄准所述逻辑巻的1/0存储请求。也 就是说,应用实例224可以生成具有提供给它的关键字值的1/0存储 逻辑巻打开请求,以便为当前会话打开逻辑巻。应用实例224调用应 用程序库226来进行I/O存储逻辑巻打开请求到可以由存储服务器 270处理的存储命令的翻译,从而打开逻辑巻用于应用实例224与存 储服务器270之间的会话期间的访问。作为这个打开处理的 一部分, 存储服务器270可以根据应用实例224传递给存储服务器270的验证 关键字来进行打开I/0请求的验证。此后,应用实例224可以经由TPT所述存储命令被封装到网络数据分组中、发送到存储服^器270、并 由存储服务器270处理以便对存储设备280进行I/O操作。根据来自应用实例224的"打开"I/0存储请求中的信息,应用程 序库226查找TPT 228中的存储设备信息,并且根据从TPT 228检索 的信息来生成存储命令。如上所述,"打开,,存储命令可以包括由应用 实例224传递给应用程序库228的验证关键字。这个验证关键字可以根据由来自应用实例224的I/O请求传递给应用程序库226的关鍵字 值,从例如TPT228中获得。可替代地,应用实例224本身可以具有 存储验证关鍵字的相关寄存器或其它存储设备,使得应用实例224可 以为"打开"存储命令供应验证关键字。将"打开,,存储命令放在存储命 令队列232中,并最终由适配器250调度到存储服务器270。存储服务器270接收打开存储命令,并且对打开存储命令进行验 证,以保证应用实例227可被允许访问存储设备280中被打开存储命 令引用的那个部分。这种验证可以根据包括在打开存储命令中的验证 关键字来进行。存储设备270可以在本地数据结构中查找与存储命令 所瞄准的存储设备280的一部分的标识符相对应的表目。然后,可以 将识别的表目中的相关验证关键字与在打开存储命令中接收的验证 关键字相比较。如果两个关键字匹配,则允许存储服务器处理打开存储命令,从 而打开相应逻辑巻用于应用实例224与存储服务器270之间的当前会 话期间的访问。此后,后续1/0存储请求可以由应用实例224提交, 然后,后续1/0存储请求被转换成存储命令,所述存储命令被封装在 网络数据分组中、发送到存储服务器、并由存储服务器处理,以便在 与存储设备280中的逻辑巻相关联的LUN上进行I/O操作。如果两 个关键字不匹配,那么,拒绝打开逻辑巻供应用实例224访问,并且 可以将错误消息返回给应用实例224。如参照图13所述,在另一个示范性实施例中,应用实例224利 用与操作系统230相关联的文件系统来提交I/O存储请求。也就是说, I/O存储请求引用应用实例224所瞄准并且其数据将被写入存储设备 280中或从存储设备280中读取数据的文件。如此,TPT 228包括将 在I/O存储请求中标识的文件名关键字值翻译成存储设备标识符号、 逻辑单元号等的数据结构。根据这些翻译,可以生成满足存储服务器270的协议要求的存储命令,用于存储服务器270的处理。利用本发明的上述机制, 一旦分配了存储设备280的一些部分供 应用实例224访问,则在应用实例与存储服务器270之间的1/0存储请求的处理过程中无需包括操作系统230。也就是说,应用实例224 可以打开与存储设备280中的LUN相关联的逻辑巻,并且经由应用 程序库226、存储命令队列232和适配器250直接将I/O存储请求提 交给存储服务器。因此,省去了现有技术系统中当操作系统230被巻 入1/0存储请求处理时所需的上下文切换。另外,由于将"打开"存储命令的验证卸载到存储服务器270,不 需要修改主系统200以包括验证机制并在处理"打开"1/0存储请求时 利用它的资源来进行验证。因此,主系统200的适配器250和操作系 统230可以保持像在现有技术中众所周知的那样。主系统200唯一需 要修改的是修改应用程序库226以包括本发明的TPT 228机制。将存 储服务器270修改成包括用于验证"打开"存储命令并返回验证结果的 验证逻辑。接着转到图3,其中按照本发明的一个示范性实施例描绘了翻译 保护表(TPT)和存储命令队列(SCQ)的例子。在本发明的这个具体示范性实施例中,假设使用了基于逻辑巻的i/o操作。本发明的可替代的基于文件模式I/O的实施例将在下面参照图13加以描述。如图3所示,翻译保护表可以包含应用程序库300中的逻辑巻保 护表302。逻辑巻保护表302包含用于分配给运行在与系统映像310 相关联的主系统上的应用实例的每个逻辑巻的表目。这些表目的每一 个描述了构成逻辑巻的存储设备的存储设备标识符号、逻辑单元号 (LUN)、相对于存储块的逻辑巻或LUN地址空间的偏移、以及逻 辑巻或LUN中的存储块的长度,在本发明的一些示范性实施例中, 逻辑巻保护表302中的表目可以进一步包括存储服务器指定给应用实 例305用于访问逻辑巻的验证关键字、用于保证只有分配了逻辑巻的 应用实例305才可以访问逻辑巻保护表表目(LVPTE)的保护域、以 及可以识别LVPTE是否是有效LVPTE,即,是否未被删除,以及允 许对逻辑巻进行哪种类型的1/0访问的访问控制。逻辑巻保护表表目N 320描绘了逻辑巻保护表分段中的示范性 表目。逻辑巻保护表(LVPT )分段304中的每个表目包含用于定义那个表目的一组字段。逻辑巻保护表表目N 320包含如下字段保护 域、访问控制、存储设备标识符号、逻辑单元号、偏移、长度和验证 关键字。保护域是当在LVPT分段304中创建LVPTE 320时提供给 应用实例305的值。当应用实例305提交指向特定逻辑巻的I/O请求 时,应用实例305提供用于标识特定LVPTE的关鍵字值、和可以用 于验证应用实例访问标识的LVPTE的能力的保护域值。如果I/O请 求中的保护域值与LVPTE中的保护域值相匹配,那么,可以进一步 处理I/0请求;否则,可以返回错误消息。访问控制识别LVPTE是否仍然有效或它是否已经被标记为已被 删除或重新分配。如果LVPTE不再有效,则放弃瞄准LVPTE的I/O 请求的进一步处理,返回错误消息。访问控制可以进一步识别可以对 与逻辑巻相对应的存储设备的所述一 (些)部分进行什么类型的I/O操作。如果i/o请求标识不被允许的1/0操作,则可以放弃对i/o请求的进一步处理,返回错误消息。存储设备标识符号可以是例如SCSI存储设备或构成由逻辑单元 号标识的逻辑巻的设备的SCSI标识符号。逻辑单元号可以是例如 SCSILUN。 SCSI标识符号(ID)和SCSI逻辑单元号(LUN )用于 将LVPTE 320分别与特定SCSI设备和那个设备内的特定LUN相关 联。偏移和长度是标识相对于逻辑巻中的存储块的开始地址的偏移 和存储块的长度。偏移可以用于计算存储块开始的存储块地址,例如, 存储块的线性块地址(LBA)。从偏移中计算LBA可以以在现有技 术中众所周知的方式来进行,因此,这里不再提供详细说明。包含在LVPTE 320的字段中的信息可以用于创建SCQ 322中的 存储命令队列表目。也就是说,LVPTE 320中的偏移可以用于计算被 瞄准存储块的开始存储块地址。可以将这个开始存储块地址与从 LVPTE 320中获得的存储设备标识符号、逻辑单元号和长度以及验证 关键字组合,以生成打开与LVPTE 320相对应的逻辑巻的"打开"存 储命令。 一旦被打开,开始存储块地址就可以与存储设备标识符号、逻辑单元号和长度组合,以生成后续1/0存储命令。在生成这些存储 命令之后,将它们放在SCQ322中,以便可以将它们调度到远程存储 服务器。验证关键字是当应用实例305请求分配存储系统,即存储服务器 和存储设备中的逻辑巻时,从存储服务器提供给应用实例305的关键 字值。所述验证关鍵字唯一地将应用实例305标识成能够访问存储服 务器为那个应用实例305创建的逻辑巻的存储位置的唯一源。在一个 实施例中,将验证关键字与应用实例305相关联地存储在寄存器或其 它存储设备中,以便当打开逻辑巻时,只有应用实例305可以提供验 证关键字。在另一个示范性实施例中,将验证关键字存储在用于逻辑 巻的逻辑巻保护表302的一个表目中,并且,通过使用保护域,只有 应用实例305才可以访问逻辑巻保护表302中的那个表目。如图3所示,应用实例305利用应用程序库310和应用程序库 310内的LVPT 302来生成被放在系统映像300的存储命令队列 (SCQ) 322中的存储命令。为了例示起见,系统映像300可以是诸 如Windows XPTM、 AIXTM、 LimixTM等的操作系统或专用软件映像。 出于如下描述的目的,术语"系统映像,,和"操作系统"可以交换地用于 指系统映像,即系统存储器的当前内容,其可以包括操作系统和任何 运行的应用实例。存储命令队列322是诸如要由I/O适配器316处理的存储命令n 330的存储命令的队列。存储命令队列322可以是例如包含SCSI命 令的SCSI命令队列,所述SCSI命令由I/O适配器316处理,以便通 过一个或多个网络发送到远程存储服务器。存储命令队列和I/O适配 器的使用在现有技术中是众所周知的,因此,这里不包括i/o适配器 316在发送和接收I/O事务过程中进行的处理的详细说明。这样说就 足够了 ,存储命令队列322和I/O适配器316以在现有技术中众所周 知的方式工作。一旦存储服务器(未示出)处理了存储命令,则可以通过适配器 316和完成队列350将完成消息返回给系统映像300。系统映像300或操作系统可以检索完成队列的表目并处理它们,从而通知应用实例
305它所提交的特定I/O存储请求已完成。完成消息和完成队列的使 用在现有技术中也是众所周知的,因此,这里不再提供所涉及的处理 的进一步详细说明。
接着参照图4,它提供了例示按照本发明示范性实施例的存储系 统的基本操作部件的示范图。如图4所示,存储服务器410包括从诸 如图2中的主系统200上的应用实例224的主系统上的应用实例接收 存储命令的存储服务器控制器420。这些存储命令放在处理队列215 中,存储服务器控制器420从处理队列215中检索并处理它们。存储 服务器控制器420处理存储命令,并且对一个或多个存储设备450、 452和454进行在存储命令中请求的I/O操作。
作为存储命令的这种处理的一部分,存储服务器控制器420可以 对存储命令进行验证检验,以保证作为存储命令的源的应用实例被允 许访问存储命令所瞄准的存储位置。例如,可以在接收"打开"存储命 令以便打开逻辑巻供应用实例在应用实例与存储服务器410之间的会 话期间访问时,进行这种验证检验。
在本发明的一个示范性实施例中,验证检验包括对验证数据结构 440进行查找操作,查找在存储命令中引用的存储设备标识符号和逻 辑单元号。这种查找操作导致检索出关联存储设备标识符、逻辑单元 号、和创建与存储设备标识符和逻辑单元号相对应的逻辑巻时生成的 相关验证关键字的表目。
然后,存储服务器控制器420可以将从验证数据结构440中检索 的验证关键字与在存储命令中接收的验证关键字相比较。如果存在匹 配,那么,存储命令源自被允许访问存储命令所瞄准的逻辑巻的存储 位置的应用实例。其结果是,打开逻辑巻供应用实例在应用实例与存 储服务器之间的当前会话期间访问。以相似的方式将来自应用实例的 后续1/0请求翻译成存储命令,除了验证关键字可能被并入或可能未 被并入存储命令中之外。这些存储命令可以由存储服务器以在现有技 术中众所周知的方式处理,以便对存储设备450、 452和/或454的被瞄准部分进行请求的1/o操作。 一旦完成了请求的i/o操作,存储服
务器控制器420就可以将完成消息放在完成队列中返回给主系统,供 系统映像处理。以此方式,就将请求的1/0操作已完成通知给应用实 例。
如果验证关键字不匹配,那么,存储命令源自不被允许访问存储 命令所瞄准的逻辑巻的存储位置的应用实例。在这种情况下,不打开
逻辑巻供应用实例访问,并且可以将错误消息返回给主系统。这个错 误消息可以作为放在完成队列中的完成消息返回,供系统映像处理, 从而通知应用实例无法完成请求的I/O操作。
接着参照图5,它提供了概括当创建逻辑巻和它的相关逻辑单元 供应用实例访问时,本发明示范性操作的流程图。应该明白,图5中 的流程图例示以及如下所述的后续图中的流程图例示的每个方块以 及这些方块的组合可以通过计算机程序指令来实现。可以将这些计算 机程序指令提供给处理器或其它可编程数据处理装置,以形成一台机 器,使得在处理器或其它可编程数据处理装置上执行的指令形成用于 实现在一个或几个流程图方块中指定的功能的部件。这些计算机程序 指令也可以存储在可以引导处理器或其它可编程数据处理装置以特
定方式起作用的计算机可读存储器或存储介质中,使得存储在计算机
可读存储器或存储介质中的指令形成包括实现在一个或几个流程图
方块中指定的功能的指令部件的制品。
因此,流程图例示的方块支持执行指定功能的部件的组合、执行 指定功能的步骤的组合、和执行指定功能的程序指令部件。还应该明 白,流程图例示的每个方块、以及流程图例示中的方块的组合可以通 过执行特定功能或步骤的专用基于硬件的计算机系统,或通过专用硬 件和计算机指令的组合来实现。
如图5所示,操作从接收来自应用实例的创建操作系统逻辑巻的 请求开始(步骤510)。作出响应,操作系统创建新操作系统逻辑巻 ID (步骤520),并执行自举算法以授权应用实例访问SCSI设备, 所述SCSI设备按照iSCSI标准将包含与OS逻辑巻相关联的SCSILUN (步骤530 )。
然后,操作系统将请求发送到存储服务器,以便为OS逻辑巻分 配一个或多个存储设备上的一个或多个LUN (步骤540 )。存储服务 器确定是否存在具有适合可用于满足应用实例的OS逻辑巻大小的足 够SCSOLUN容量的存储设备(步骤550)。如果存在,那么,在识 别的存储设备上创建LUN,并且将LUN与OS逻辑巻相关联,诸如 例如将LUN与逻辑巻保护表、逻辑巻管理器等中的逻辑巻相关联(步 骤560).
然后,将验证关键字与LUN相关联并返回给应用实例(步骤 570)。这可包括将验证关键字存储在与逻辑巻相对应的逻辑巻保护 表表目中,或将验证关键字与应用实例相关联地存储在寄存器或其它 存储设备中。此后,应用实例可以利用验证关键字来打开与OS逻辑 巻相关联的LUN,以便对LUN内的存储位置进行I/O操作。
如果在存储设备上没有足够的SCSI LUN容量(步骤550 ),那 么,确定是否可以利用带有一个或多个LUN的多个SCSI设备来创建 逻辑巻(步骤580)。如果可以,操作转到步骤560。如果不可以, 则不能成功地完成操作,并可以将错误消息返回给应用实例(步骤 590)。然后终止操作。
图6是概括当打开与OS逻辑巻相对应的一个或多个LUN供应 用实例访问时,本发明示范性操作的流程图。如图6所示,操作从接 收来自应用实例的打开OS逻辑巻的请求开始(步骤610)。例如, 与概括在图5中的操作一样,该请求可以包括生成OS逻辑巻和相关 LUN时供应给应用实例的验证关键字。
作出响应,操作系统执行自举算法,以授权应用实例访问包含与 OS逻辑巻相关联的SCSI LUN的SCSI设备(步骤620 )。然后,将 "打开"I/0存储请求翻译成存储命令并且将它发送到存储服务器(步 骤630)。存储服务器进行验证检验,以确定在"打开"I/0存储请求 中提供的验证关键字是否与相应于"打开"1/0存储请求所瞄准的OS 逻辑巻的LUN的验证关键字相匹配(步骤640 )。如果验证关键字匹配,那么,打开LS逻辑巻的LUN (步骤650 ),并且将成功完成消 息返回给应用实例(步骤660)。如果验证关键字不匹配,那么,不 能完成"打开"操作,并将错误消息返回给应用实例(步骤670)。
在为应用实例与存储服务器之间的当前会话打开了 OS逻辑巻的 LUN之后,如前所述,应用实例以后可以利用本发明的翻译保护表数 据结构将I/O存储请求提交给存储服务器。如上所述的验证只需在处 理"打开"存储命令时进行。来自应用实例的后续1/0请求和因此的存 储命令无需以相同方式来验证。 一旦应用实例不再需要访问LUN,或 一旦发生了会话关闭事件,则可以关闭LUN。
图7是概括当关闭以前打开的OS逻辑巻时本发明示范性操作的 流程图。如图7所示,操作从接收来自应用实例的关闭OS逻辑巻的"关 闭,,请求开始(步骤710)。作出响应,OS关闭应用实例与OS逻辑 巻之间的会话(步骤720)。这可以通过例如执行关闭会话iSCSI算 法(参见iSCSI规范)来完成。然后,将成功完成消息返回给应用实 例(步骤730)。此后,应用实例不再能访问OS逻辑巻,直到它被 重新打开。
正如上面所讨论的那样, 一旦应用实例打开了 OS逻辑巻,应用 实例就可以对OS逻辑巻的LUN进行I/O存储操作。例如,应用实例 可以利用可在应用程序库中获得的翻译保护表数据结构来对打开的 OS逻辑巻进行读/写1/0操作。应用程序库中的翻译保护表用于将从
务器^理的存储命令。' 图8是概括当处理来自应用实例的I/O存储请求时本发明示范性 操作的流程图。如图8所示,操作从接收具有一个或多个关键字值的 I/O存储请求开始(步骤810)。 一个或多个关键字值用于从翻译保 护表数据结构中检索与关键字值相对应的表目(步骤820)。
I/O存储请求可以被核实为来自可以访问在I/O存储请求中标识 的逻辑巻的应用实例。这可以利用如上所述的保护域和访问控制来完 成。这个核实处理是可选的,不是本发明的必需操作,因此,在图8中未明确示出。检索的表目中的存储设备标识符、逻辑单元号、偏移和长度信息用于生成存储命令(步骤830)。然后,将存储命令放入存储命令队 列中(步骤840)。然后,适配器从存储命令队列中检索存储命令, 并且将存储命令封装到网络数据分组中,以便发送到存储服务器(步 骤850)。然后终止操作。除了打开/关闭OS逻辑巻和提交读/写1/0操作之外,可以进行 各种翻译保护表管理操作,包括创建逻辑巻保护表表目、查询逻辑巻 保护表表目属性、修改逻辑巻保护表表目属性、和删除或破坏逻辑巻 保护表表目。这些操作的每一个将在下面参照图9-12作详细描述。 在本发明的示范性实施例中,系统映像或操作系统响应于用户空间操 作的启用来执行概括在图9-12中的操作。尽管示范性实施例让这些 操作在系统映像或操作系统中执行,但本发明不局限于此。与之相反, 例如,可以在用户空间应用程序、管理程序等中执行这些操作。图9是概括当创建逻辑巻保护表表目时本发明的示范性操作的 流程图。如图9所示,操作从应用实例请求将逻辑巻分配给应用实例 开始(步骤910)。作为响应,操作系统诸如在逻辑巻管理器(LVM) 中执行在操作系统中创建适当数据结构的逻辑巻创建算法,以便访问 逻辑巻(步骤920 )。确定是否已经创建了逻辑巻保护表(步骤930 )。 如果不是,则操作系统创建逻辑巻保护表(步骤940)。此后,或者如果已经创建了逻辑巻保护表,则创建逻辑巻保护表 中的表目(步骤950)。如上所述,这个逻辑巻保护表表目可以标识 存储设备标识符号、逻辑单元号、相对于逻辑巻的开始地址的偏移、 LUN的长度、和从存储服务器接收的相关验证关键字。然后,操作系 统将创建的表目的逻辑巻保护表表目关键字值返回给应用实例(步骤 960)。然后结束搮作。图10是概括当查询逻辑巻保护表以便获得属性信息时本发明的 示范性操作的流程图。如图10所示,操作从接收来自应用实例的查 询驻留在应用程序库中的逻辑巻保护表中的表目的请求开始(步骤1010)。然后,根据在查询请求中提供的逻辑巻保护表表目关鍵字值, 来识别逻辑巻保护表中的相应表目(步骤1020)。然后,应用程序库 将请求的表目的属性返回给应用实例(步骤1030),并且结束操作。图11是概括当修改逻辑巻保护表表目时本发明的示范性操作的 流程图。如图11所示,操作从接收来自应用实例的修改逻辑巻保护 表表目的请求开始(步骤1110)。应该注意到,此时应用实例已经打 开了 OS逻辑巻并拥有整个OS逻辑巻和相关SCSI LUN。确定是否存在有关要修改的逻辑巻保护表中的一个或多个表目 的任何活动I/O事务(步骤1120)。如果存在有关一个或多个表目的 未决I/0事务,则启动定时器(步骤1130),并且确定在到达静止点 之前定时器是否超时(步骤1140)。静止点是没有有关一个或多个表 目的活动i/o事务的点。如果在到达静止点之前定时器超时,则应用 程序库生成错误结果,并且将其返回给应用实例(步骤1150)。如果没有有关一个或多个表目的活动I/O事务,或如果在定时器 超时之前到达静止点,则应用程序请求通过应用程序库的逻辑巻修改 (步骤1160)。然后,应用程序库请求操作系统进行逻辑巻修改(步 骤1170)。作为这个逻辑巻修改的一部分,例如,操作系统可以为逻 辑巻获得附加LUN分配,因此,可能需要为逻辑巻修改逻辑巻保护 表表目中的属性。然后,应用程序库返回修改的逻辑巻保护表表目的 属性(步骤1180),并且操作结束。图12是概括当删除或破坏逻辑巻保护表表目时本发明的示范性 操作的流程图。如图12所示,操作从接收来自应用实例的删除或破 坏逻辑巻保护表表目的请求开始(步骤1210)。并且,应该注意到, 此时应用实例已经打开OS逻辑巻并拥有整个OS逻辑巻和相关SCSI IAJN。确定是否存在有关要删除或破坏的逻辑巻保护表中的一个或多 个表目的活动I/O事务(步骤1220)。如果存在有关一个或多个表目 的未决I/0事务,则启动定时器(步骤1230),并且确定在到达静止 点之前定时器是否超时(步骤1240)。静止点是没有有关一个或多个表目的活动i/o事务的点。如果在到达静止点之前定时器超时,则应用程序库生成错误结果,并且将其返回给应用实例(步骤1250)。如果没有有关一个或多个表目的活动I/O事务,或如果在定时器 超时之前到达静止点,则应用程序请求通过应用程序库的逻辑巻破坏 或删除(步骤1260)。然后,应用程序库请求操作系统进行逻辑巻删 除或破坏(步骤1270),并且操作终止。应该注意到,虽然上面的流程图参照了逻辑巻保护表,上面概括 的操作也可应用于本发明的基于文件模式1/0的实施例。也就是说, 取代创建、查询、修改和删除逻辑巻保护表中的表目,本发明的机制 也可用于对文件名保护表和文件扩展名保护表进行这样的操作,文件 扩展名保护表包括用于保留在操作系统的文件系统中的每个文件及 其相应文件扩展名的表目。因此,在创建期间,可以与它的一个或多 个文件扩展名保护表表目一起生成文件名保护表表目。文件名保护表 表目可以包括保护域、访问控制信息、和指向与文件名保护表表目相 对应的一个或多个文件扩展名保护表表目的指针。 一个或多个文件扩 展名保护表表目可以标识存储设备标识符号、逻辑单元号、偏移和长 度。然后,可以将文件名关键字返回给应用实例,以便以后在访问文 件名保护表表目的过程中使用,从而访问文件。类似地,可以针对这 样的文件名保护表表目和/或一个或多个文件扩展名保护表表目进行 查询、修改和删除。图13是例示按照本发明示范性实施例的用于翻译和保护基于文 件名的存储的示范性控制结构的图。在图13中示出了三种数据结构 文件名保护表数据结构1302、文件扩展名保护表数据结构1312、和 存储命令队列(SCQ) 1322。文件名保护表数据结构1302和文件扩 展名保护表数据结构1312可以一起构成诸如图2中的TPT 228的应 用实例1305的翻译保护表(TPT )数据结构。文件名保护表1302包 含用于操作系统或系统映像1300的文件系统所管理的每个文件的表 目。诸如表目1330的文件名保护表1302中的表目指向与文件名保护 表表目所代表的文件相对应的文件扩展名保护表1312的分段。如前所述,文件名保护表1302中的表目可以进一步包括保护域、和用于 核实应用实例所发送的I/O请求的访问控制。另外,文件名保护表1302可以进一步包括当创建文件时指定给 与文件名保护表1302相对应的文件的验证关鍵字。这个验证关鍵字 可以用于为应用实例与存储服务器之间的当前会话打开文件,以便应 用实例可以对所述文件进行I/O操作。打开文件的处理与如上所述打 开逻辑巻的处理类似。也就是说,经由远程存储系统的存储服务器根 据"打开"存储命令中的验证关键字验证的适配器1316,将"打开"存储 命令发送到远程存储系统(未示出)。如果"打开"存储命令被核实为 真,则在应用实例1305与存储服务器之间的当前会话中,打开文件 用于来自应用实例1305的1/0操作。文件扩展名保护表1312包含用于每个文件扩展名的表目。这些 表目的每一个描述构成逻辑巻或LUN的存储设备的存储设备标识符 号、逻辑单元号、存储块在逻辑巻或LUN地址空间中的偏移、和逻 辑巻或LUN中的存储块的长度。在描绘的例子中,文件扩展名保护 表1312包含用于每个SCSI逻辑单元号(LUN )的表目。文件扩展名保护表1312可被分段成一组文件扩展名保护表分 段。这些分段可以利用若干数据结构互连,这些数据结构包括B-树、 由非叶节点中的指针和叶节点中的指针构成的树、简单链接列表等。 在描绘的例子中,文件扩展名保护表分段1314使用了简单链接列表, 其中表中的笫一表目是指向包含文件扩展名保护表表目的下一个表 的指针。文件扩展名保护表表目N 1320描绘文件扩展名保护表分段中的 示范性表目。文件扩展名保护表分段1314中的每个表目包含用于定 义那个表目的一组字段。文件扩展名保护表表目N 1320包含如下字 段存储设备标识符号、逻辑单元号、偏移和长度。存储设备标识符 号可以是例如SCSI存储设备或构成通过逻辑单元号标识的逻辑巻的 设备的SCSI标识符号。逻辑单元号可以是例如SCSILUN。 SCSI标 识符号(ID )和SCSI逻辑单元号(LUN )用于将FEPT 1312表目分别与特定SCSI设备和那个设备内的特定LUN相关联。如上所述,偏移和长度是标识相对于逻辑巻中的存储块的开始地 址的偏移和存储块的长度。偏移可以用于计算存储块开始的存储块地 址,例如,存储块的线性块地址(LBA)。包含在FEPT 1312表目的字段中的信息可以用于创建SCQ 1322 中的存储命令队列表目。也就是说,FEPT表目1320中的偏移可以 用于计算被瞄准存储块的开始存储块地址。可以将这个开始存储块地 址与从FEPT 1312表目中获得的存储设备标识符号、逻辑单元号和长 度结合在一起。对于"打开,,存储命令,可以进一步将这些值与根据在 来自应用实例的I/O请求中引用的文件名关键字从文件名保护表1302 中获得的由应用实例1305传递的验证关键字结合在一起。如图13所示,应用实例1305使用应用程序库1310和应用程序 库1310内的FNPT 1302和FEPT 1312,来生成放在系统映像1300 的存储命令队列(SCQ) 1322中的存储命令。 一旦存储服务器(未示 出)处理了存储命令,就可以经由适配器1316和完成队列1350将完 成消息返回给系统映像1300。系统映像1300或操作系统可以检索完 成队列表目并处理它们,从而通知应用实例1305它所提交的特定1/0 存储请求已完成。如上所述的文件^t式1/0实施例可以利用与概括在图5 - 12中的 那些类似的操作,来分配存储系统中的文件、打开文件、关闭文件、和将i/o存储请求提交给存储系统。但是,取代瞄准逻辑巻,文件模式1/0实施例瞄准特定文件和文件扩展名。也就是说,应用实例可以 请求分配存储系统中的文件,以与概括在图5中的创建逻辑巻的请求 相似的方式来处理。其结果是,可以将用于访问文件的验证关键字返 回给应用实例并存储在文件名保护表1302中,或可替代地,存储在 与对应于所述文件的文件扩展名相关联的文件扩展名保护表1312中。 这个验证关键字同样可以用于一旦存储系统以与上面概括在图 6中相似的方式分配了文件就打开文件。 一旦打开,应用实例就可以 通过发送具有用于标识文件名保护表1302和文件扩展名保护表1312中的特定表目的文件名关键字(FN一Key )和文件扩展名关鍵字 (FE—Key)的1/0请求,来对文件进行I/0操作。1/0请求可以进一 步包括保护域和要进行的1/0操作的类型的标识符,以便可以进行如 上所述的核实.可以利用存储在文件名保护表1302和文件扩展名保 护表1312中的信息,将这样的I/O请求转换成I/O存储命令。在上面 的图8中已经针对逻辑巻概括了这种操作。除了这些操作之外,也可以以与图7和9中的基于逻辑巻的操作 相似的方式,来进行文件的关闭以及文件名保护表和文件扩展名保护 表表目的创建。此外,也可以以与概括在图10-12中的针对逻辑巻 的操作相似的方式,来进行文件名保护表表目和/或文件扩展名保护表 表目属性的查询、文件名保护表表目和/或文件扩展名保护表表目属性 的修改、以及文件名保护表表目和/或文件扩展名保护表表目的删除。因此,通过本发明,提供了允许在应用实例和远程网络附加存储设备之间经由存储服务器的直接i/o的机制。应该注意到,虽然本发译保护表表目、的创建和管理有关的许多操^ , 一但二般不对每个存 储请求进行这些操作。也就是说,操作系统或系统映像只巻入OS逻 辑巻的打开/关闭和翻译保护表表目的建立中。由于应用程序库可以利 用翻译保护表和上述机制来处理I/O存储请求,所以不需要操作系统 或系统映像来处理中间件或应用实例所提交的每个实际I/O存储请求。而且,由存储服务器进行验证,而不是由操作系统进行验证。其 结果是,本发明省去了如上面在背景技术中说明的现有技术机制所需 要的上下文切换和它们的相关开销。注意到如下情况是重要的,尽管本发明是在全能数据处理系统的 上下文中描述的,但本领域的普通技术人员应该认识到,本发明的处 理能够以指令的计算机可读介质的形式和各种形式分发,以及本发明 与实际用于进行分发的信号承载介质的特定类型无关地平等应用。计算机可读介质的例子包括诸如软盘、硬盘驱动器、RAM、 CD-ROM、 DVD-ROM的可记录型介质、和诸如数字和模拟通信链路、利用例如射频和光波传输的传输形式的无线或有线通信链路的传输型介质。计 算机可读介质可以采取为了实际用在特定数据处理系统中而被解码 的編码格式的形式。本发明的描述只是为了例示和描述的目的给出的,其目的不是为 了穷举或以公开的形式限制本发明。许多修改和改变对于本领域的普 通技术人员来说是显而易见的。选择和描述实施例是为了最佳地说明 本发明的原理、实际应用、和使本领域的其它普通技术人员能够针对 可以作出诸如适合设想的特定使用的各种修改的各种实施例了解本 发明。
权利要求
1.一种用于管理I/O的方法,包含如下步骤从应用实例接收输入/输出(I/O)请求,其中,所述I/O请求包括用于标识翻译保护表数据结构中的表目的关键字值,以及其中,所述I/O请求瞄准远程存储系统中的要对其进行I/O操作的存储设备的一部分;根据关键字值从翻译保护表中检索表目,其中,所述表目包括存储设备的标识符和与I/O请求所瞄准的存储设备的所述部分相对应的逻辑单元号;根据通过所述表目从翻译保护表中检索的存储设备的标识符和逻辑单元号来生成存储命令;以及将存储命令放入存储命令队列中以便发送到远程存储系统。
2. 根据权利要求l所述的方法,进一步包含如下步骤 从应用实例接收打开所述存储设备的所述部分的请求,其中,所述请求包括验证关键字;将具有验证关键字的命令发送到远程存储系统,以便打开所述存 储设备的所述部分;和将打开所述存储设备的所述部分的命令的结果返回给应用实例, 其中,远程存储系统根据验证关键字来对打开所述存储设备的所述部 分的命令进行验证。
3. 根据权利要求1或权利要求2所述的方法,进一步包含如下步骤从应用实例接收将存储设备的逻辑单元分配给所迷存储设备的 所述部分用于应用实例的输入/输出操作的请求;将根据接收的分配逻辑单元的请求而生成的分配命令发送到远 程存储系统;以及从远程存储系统接收响应,该响应识别用于打开所述存储设备的 所述部分的逻辑单元用于I/O操作的验证关键字。
4. 根据权利要求3所述的方法,进一步包含如下步骤 将验证关鍵字的标识符与所述存储设备的所述部分的标识符相关联地存储在翻译保护表数据结构中。
5. 根据权利要求4所述的方法,进一步包含如下步骤 从在翻译保护表中检索的表目中检索验证关键字; 生成打开所迷存储设备的所迷部分的打开命令,其中,所述打开命令包括所述验证关键字;以及将所述打开命令发送到远程存储系统,从而打开所述存储设备的 所述部分的逻辑单元用于应用实例与远程存储系统之间的当前会话 期间的I/0操作,其中,只有当远程存储系统根据打开命令中的验证 关键字核实了应用实例被允许访问所述存储设备的所述部分的逻辑 单元时,远程存储系统才打开所述存储设备的所述部分的逻辑单元用 于I/O操作。
6. 根据前面任何一项权利要求所迷的方法,进一步包含如下步接收在翻译保护表数据结构中创建用于所述存储设备的所述部 分的表目的请求;在翻译保护表数据结构中创建用于所述存储设备的所述部分的 表目;以及返回与创建的表目相对应的翻译保护表关键字。
7. 根据前面任何一项权利要求所迷的方法,进一步包含如下步接收查询翻译保护表数据结构中用于所述存储设备的所述部分的表目的请求;识别翻译保护表数据结构中用于所述存储设备的所述部分的表 目;以及返回翻译保护表数据结构中的所述表目的属性。
8. 根据前面任何一项权利要求所述的方法,进一步包含如下步接收修改翻译保护表数据结构中用于所述存储设备的所述部分的表目的请求;修改翻译保护表数据结构中的所述表目;和 返回翻译保护表中的被修改表目的属性。
9. 根据权利要求8所述的方法,进一步包含如下步骤 确定是否存在有关翻译保护表数据结构中的表目的任何活动事务,其中,只有当不存在有关所述表目的活动事务时,计算设备才修 改翻译保护表数据结构中的所述表目。
10. 根据前面任何一项权利要求所述的方法,进一步包含如下步级.接收删除翻译保护表数据结构中用于所述存储设备的所述部分 的表目的请求;和将翻译保护表数据结构中的所述表目标记为无效。
11. 根据权利要求10所述的方法,进一步包含如下步骤确定是否存在有关翻译保护表数据结构中的所述表目的任何活 动事务,其中,只有当不存在有关所述表目的活动事务时,计算设备 才将翻译保护表数据结构中的所述表目标记为无效。
12. 根据权利要求9或权利要求11所述的方法,进一步包含如 下步骤如果存在有关翻译保护表数据结构中的所述表目的活动事务,则 启动定时器;确定在到达静止点之前定时器是否超时;以及 如果在到达静止点之前定时器超时,则生成错误。
13. —种用于管理I/0的装置,包含 处理器;和与处理器耦合的存储器,其中,所述存储器存储当被处理器执行 时使处理器执行如下步骤的指令从应用实例接收输入/输出(1/0)请求,其中,所述i/o请求包 括用于标识翻译保护表数据结构中的表目的关键字值,以及其中,所述I/O请求瞄准远程存储系统中的要对其进行I/O操作的存储设备的一部分;根据关键字值从翻译保护表中检索表目,其中,所述表目包括存 储设备的标识符和与I/O请求所瞄准的所述存储设备的所述部分相对应的逻辑单元号;根据通过所述表目从翻译保护表中检索的存储设备的标识符和逻辑单元号,来生成存储命令;以及将存储命令放入存储命令队列中以便发送到远程存储系统。
14. 根据权利要求13所述的装置,其中,所述指令进一步使处 理器执行以下步骤从应用实例接收打开所述存储设备的所述部分的请求,其中,所 述请求包括验证关键字;将具有验证关键字的命令发送到远程存储系统,以便打开所述存 储设备的所述部分;以及将打开所述存储设备的所述部分的命令的结果返回给应用实例, 其中,远程存储系统根据验证关键字来对打开所述存储设备的所述部 分的命令进行验证。
15. 根据权利要求13或权利要求14所述的装置,其中,所述指 令进一步使处理器执行以下步骤从应用实例接收将存储设备的逻辑单元分配给所述存储设备的 所述部分用于应用实例的输入/输出操作的请求;将根据接收的分配逻辑单元的请求而生成的分配命令发送到远 程存储系统;以及从远程存储系统接收响应,该响应识别用于打开所述存储设备的 所述部分的逻辑单元用于I/O操作的验证关键字。
16. 根据权利要求15所述的装置,其中,所述指令进一步使处 理器执行以下步骤将验证关键字的标识符与所述存储设备的所述部分的标识符相 关联地存储在翻译保护表数据结构中。
17. 根据权利要求16所述的装置,其中,所述指令进一步使处 理器执行以下步骤从在翻译保护表中检索的表目中检索验证关键字; 生成打开所迷存储设备的所述部分的打开命令,其中,所述打开 命令包括验证关键字;以及将所述打开命令发送到远程存储系统,从而打开所述存储设备的 所述部分的逻辑单元用于应用实例与远程存储系统之间的当前会话 期间的I/0操作,其中,只有当远程存储系统根据打开命令中的验证 关键字核实了应用实例被允许访问所述存储设备的所述部分的逻辑 单元时,远程存储系统才打开所述存储设备的所述部分的逻辑单元用 于I/O操作。
18. 根据权利要求13到17的任何一项所述的装置,其中,所述 指令进一步使处理器执行以下步骤接收在翻译保护表数据结构中创建用于所述存储设备的所述部 分的表目的请求;在翻译保护表数据结构中创建用于所述存储设备的所述部分的 表目;以及返回与创建的表目相对应的翻译保护表关键字。
19. 根据权利要求13到18的任何一项所述的装置,其中,所述 指令进一步使处理器执行以下步骤接收查询翻译保护表数据结构中用于所述存储设备的所述部分 的表目的请求;识别翻译保护表数据结构中用于所述存储设备的所述部分的所 述表目;以及返回翻译保护表数据结构中的所述表目的属性。
20. 根据权利要求13到19的任何一项所述的装置,其中,所述 指令进一步使处理器执行以下步骤接收修改翻译保护表数据结构中用于所述存储设备的所述部分 的表目的请求;修改翻译保护表数据结构中的所述表目;和 返回翻译保护表中的被修改表目的属性。
21. 根据权利要求20所述的装置,其中,所述指令进一步使处 理器执行以下步骤确定是否存在有关翻译保护表数据结构中的表目的任何活动事 务,其中,只有当不存在有关所述表目的活动事务时,计算设备才修改翻译保护表数据结构中的表目。
22. 根据权利要求13到21的任何一项所述的装置,其中,所述 指令进一步使处理器执行以下步骤接收删除翻译保护表数据结构中用于所述存储设备的所述部分 的表目的请求;和将翻译保护表数据结构中的所述表目标记为无效。
23. 根据权利要求22所述的装置,其中,所述指令进一步使处 理器执行以下步骤确定是否存在有关翻译保护表数据结构中的表目的任何活动事 务,其中,只有当不存在有关所述表目的活动事务时,计算设备才将 翻译保护表数据结构中的表目标记为无效。
24. 根据权利要求21或权利要求23所述的装置,其中,所述指 令进一步使处理器执行以下步骤如果存在有关翻译保护表数据结构中的表目的活动事务,则启动 定时器;确定在到达静止点之前定时器是否超时;以及 如果在到达静止点之前定时器超时,则生成错误。
25. —种包含程序代码部件的计算机程序,其中,所述程序代码 部件适用于当所述程序在计算机上运行时执行根据权利要求1到12 的任何一项所述的所有步骤。
全文摘要
提供了使用户空间中间件或应用程序能够经由进行验证的存储服务器,直接将I/O存储请求传递给网络附加存储设备的系统、方法和计算机程序产品。提供了利用可包括文件名保护表(FNPT)和文件扩展名保护表(FEPT)或逻辑卷保护表(LVPT)的翻译保护表(TPT)数据结构,来控制用户空间和来自用户空间的输入/输出(I/O)操作的机制。存储服务器对应用实例的打开操作系统逻辑卷的请求进行验证,一旦被验证,允许应用实例经由TPT将I/O存储请求提交给打开的OS逻辑卷。利用TPT将I/O存储请求翻译成存储命令并封装所述存储命令,以便经由一个或多个网络发送到存储服务器。
文档编号G06F9/46GK101233514SQ200680028205
公开日2008年7月30日 申请日期2006年8月2日 优先权日2005年8月31日
发明者奥古斯丁·梅纳三世, 威廉·T·伯伊德, 约翰·L·胡弗德, 雷纳多·雷西奥, 麦德林·维加 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1