一种下发I/O的方法及装置与流程

文档序号:12801388阅读:266来源:国知局
一种下发I/O的方法及装置与流程

本发明涉及存储技术领域,尤其涉及一种下发输入输出(英文全称:(input/output,英文缩写:i/o)的方法及装置。



背景技术:

现有复杂存储系统或者其它块设备从主机i/o到设备驱动下盘时,很多子系统设计都需要处理i/o,比如i/o调度、i/o拆分、i/o排序、i/o合并、i/o流控等。因此,每秒进行读写(i/o)操作的次数(英文全称:input/outputoperationspersecond,英文缩写:iops)成为衡量存储系统性能的关键指标,验证iops相关能力的i/o路径验证也变得非常关键。

目前整个系统块的i/o路径验证,其i/o输入都是基于客户端(比如主机)下发i/o或基于存储系统中存储服务器侧的阵列控制器下发i/o。然而,现有技术中,在基于阵列控制器下发i/o时,通常是在阵列控制器侧向逻辑单元号(英文全称:logicalunitnumber,英文缩写:lun)下发i/o、或者针对特定层,比如高速缓冲寄存器(英文名称:cache)层下发i/o。也就是说,该方案只能针对少数特定子系统开发特定的工具,应用受限,不够通用,且维护成本较高。

如何提供一种通用的i/o下发方法,成为目前亟待解决的问题。



技术实现要素:

本发明实施例提供一种下发i/o的方法及装置,以至少解决现有的阵列控制器侧下发i/o时,只能针对少数特定子系统开发特定的工具,应用受限,不够通用,且维护成本较高的问题。

为达到上述目的,本发明实施例提供如下技术方案:

第一方面,提供一种下发输入/输出i/o的方法,该方法包括:

获取并解析第一业务子系统的i/o模式设置信息;

根据该第一业务子系统的i/o模式设置信息,对预先注册的第一业务子系统的i/o输入接口进行i/o实例化,获得第一业务子系统的i/o输入接口对应的i/o流;

将该i/o流下发给第一业务子系统。

由于该第一业务子系统可以是任意子系统,因此该下发i/o的方法为一种通用的下发i/o的方法,解决了现有的阵列控制器侧下发i/o时,只能针对少数特定子系统开发特定的工具,应用受限,不够通用,且维护成本较高的问题,可以为任意单个子系统提供i/o输入,也可以为多个子系统同时提供i/o输入。进一步的,由于各级子系统的i/o输入相互独立,不需要依赖上级子系统,因此也加速了子系统验证的收敛。

第二方面,提供一种下发输入/输出i/o的装置,该装置包括:处理单元和发送单元;

处理单元,用于获取并解析第一业务子系统的i/o模式设置信息;

处理单元,还用于根据该第一业务子系统的i/o模式设置信息,对预先注册的第一业务子系统的i/o输入接口进行i/o实例化,获得第一业务子系统的i/o输入接口对应的i/o流;

发送单元,用于将该i/o流下发给第一业务子系统。

由于该第一业务子系统可以是任意子系统,因此该下发i/o的装置可以提供一种通用的下发i/o的方法,解决了现有的阵列控制器侧下发i/o时,只能针对少数特定子系统开发特定的工具,应用受限,不够通用,且维护成本较高的问题,可以为任意单个子系统提供i/o输入,也可以为多个子系统同时提供i/o输入。进一步的,由于各级子系统的i/o输入相互独立,不需要依赖上级子系统,因此也加速了子系统验证的收敛。

可选的,结合上述第一方面,在获取并解析第一业务子系统的i/o模式设置信息之前,还可以包括:

对所述第一业务子系统注册i/o输入接口。

可选的,结合上述第二方面,处理单元,还用于在获取并解析第一业务子系统的i/o模式设置信息之前,对所述第一业务子系统注册i/o输入接口。

可选的,结合上述第一方面或者第二方面或者第一方面或第二方面任 意一种可选的实现方式,一种可能的实现方式中,第一业务子系统的i/o模式设置信息可以为第一业务子系统通过配置文件的方式设置i/o模式后获得的信息。

可选的,结合上述第一方面或者第二方面或者第一方面或第二方面任意一种可选的实现方式,另一种可能的实现方式中,第一业务子系统的i/o模式设置信息可以为第一业务子系统通过命令行的方式设置i/o模式后获得的信息。

可选的,结合上述第一方面或者第二方面或者第一方面或第二方面任意一种可选的实现方式,i/o模式设置信息可以包括i/o模式信息和i/o操作信息。

第三方面,提供一种下发输入/输出i/o的装置,该装置包括:处理器、存储器、总线和通信接口;

存储器用于存储计算机执行指令,处理器与存储器通过总线连接,当该装置运行时,处理器执行存储器存储的计算机执行指令,以使该装置执行如上述第一方面或第一方面任意一种可选的实现方式中所述的下发i/o的方法。

由于本发明实施例提供的下发i/o的装置可以用于执行上述第一方面或第一方面任意一种可选的实现方式中所述的下发i/o的方法,因此其所能获得的技术效果也可参考上述方法实施例,本发明实施例在此不再赘述。

第四方面,提供一种可读介质,包括计算机执行指令,当下发i/o的装置的处理器执行该计算机执行指令时,该下发i/o的装置执行如上述第一方面或者第一方面的任意一种可选方式中所述的下发i/o的方法。

其中,本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员 来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为现有的网络存储系统的架构示意图;

图2为现有的i/o处理路径示意图;

图3为本发明实施例提供的下发i/o的方法的流程示意图一;

图4为本发明实施例提供的下发i/o的场景示意图;

图5为本发明实施例提供的下发i/o的方法的流程示意图二;

图6为本发明实施例提供的下发i/o的装置的结构示意图一;

图7为本发明实施例提供的下发i/o的装置的结构示意图二。

具体实施方式

为了下述各实施例的描述清楚简洁,首先给出相关概念的简要介绍:

现有的网络存储(英文全称:storageareanetwork,英文缩写:sae)系统如图1所示,包括多个客户端和多个存储服务器,其中,存储服务器中包含阵列控制器,客户端通过交换网与存储服务器进行通信。

具体的,在存储服务器中,i/o处理路径如图2所示。在图2中,i/o的处理层次如下,包括:

s1、小型计算机系统接口(英文全称:smallcomputersysteminterface,英文缩写:scsi)目标框架(英文全称:scsitargetframework,英文缩写:tgt)从主机接收scsi命令,并将其转换为内部i/o请求。

s2、lun根据i/o访问的lun的工作控制器,转发i/o到相应控制器。

s3、卷(英文名称:volume)接收从lun转发来的i/o,并处理其thin、增值等逻辑,将地址空间映射到块(英文名称:extent)。

s4、volumecache缓存从volume来的脏数据,并提供读数据预取命中和镜像功能。其中,脏数据具体是指有修改的数据。

s5、extent将地址空间映射到由来自同一磁盘组(英文全称:diskgroup,英文缩写:dg)中不同硬盘的多个chunk按照某种独立磁盘冗余阵列(英文全称:redundantarrayofindependentdisks,英文缩写:raid)属性构成的组合(英文全称:chunkgroup,英文缩写:ckg)中。 其中,chunk是指存储池内的硬盘空间被切分成的若干固定大小的物理空间。

s6、ckg根据extent所属的控制权转发i/o到相应控制器,并处理本地i/o,为其提供raid功能,并将地址空间映射到逻辑硬盘。

s7、分条(英文名称:stripe)cache缓存从ckg来的脏数据,并提供元数据缓存、镜像和写入孔(英文名称:writehole)保护功能。

s8、块设备管理(英文全称:blockdevicemanagement,英文缩写:bdm)将逻辑硬盘i/o空间映射到物理硬盘i/o空间,并提供i/o排序、多路径等功能。

s9、ini驱动程序(英文全称:driver,英文缩写:drv)将i/o发送到硬盘。

其中,如背景技术中所述,现有技术中,在基于阵列控制器下发i/o时,通常是在阵列控制器侧向lun下发i/o、或者针对特定层,比如cache层下发i/o。也就是说,该方案只能针对少数特定子系统开发特定的工具,应用受限,不够通用,且维护成本较高。

基于此问题,本发明实施例提供一种下发i/o的方法及装置,以至少解决上述问题。核心思想在于:从上面整个i/o处理流程可以看出,lun、volume、cache、ckg、bdm等子系统输入都有些共同信息,比如i/o操作类型、起始扇区、扇区数量等。考虑这些公共的特征,实现一种通用的下发i/o的方法,可以基于访问i/o的操作类型(读操作或者写操作)、对象标识、起始扇区、扇区数量、单i/o或者顺序i/o或者随机i/o、i/o的大小、i/o负载等特征给阵列控制器侧的各个子系统提供i/o输入。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

如本申请所使用的,术语“组件”、“模块”、“系统”等等旨在指代计算机相关实体,该计算机相关实体可以是硬件、固件、硬件和软件的结合、软件或者运行中的软件。例如,组件可以是,但不限于是:在处理器上运行的处理、处理器、对象、可执行文件、执行中的线程、程序和/或计算机。作为示例,在计算设备上运行的应用和该计算设备都可以是组件。一个或多个组件可以存在于执行中的过程和/或线程中,并且组件可以 位于一个计算机中以及/或者分布在两个或更多个计算机之间。此外,这些组件能够从在其上具有各种数据结构的各种计算机可读介质中执行。这些组件可以通过诸如根据具有一个或多个数据分组(例如,来自一个组件的数据,该组件与本地系统、分布式系统中的另一个组件进行交互和/或以信号的方式通过诸如互联网之类的网络与其它系统进行交互)的信号,以本地和/或远程过程的方式进行通信。

本申请将围绕可包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。

另外,在本发明实施例中,“示例的”、“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例的”、“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例的”、“例如”等词旨在以具体方式呈现概念。

本发明实施例描述的场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着新场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。

如图3所示,为本发明实施例提供的一种下发i/o的方法的流程示意图,包括步骤s301-s303:

s301、下发i/o的装置获取并解析第一业务子系统的i/o模式设置信息。

s302、下发i/o的装置根据第一业务子系统的i/o模式设置信息,对预先注册的第一业务子系统的i/o输入接口进行i/o实例化,获得第一业务子系统的i/o输入接口对应的i/o流。

s303、下发i/o的装置将该i/o流下发给第一业务子系统。

具体的,本发明实施例步骤s301中:

第一业务子系统具体可以是图2中的tgt、lun、volume、cache、extent、ckg、bdm或者inidrv,本发明实施例对此不作具体限定。

i/o模式设置信息具体可以包括i/o模式信息和i/o操作信息。

其中,i/o模式信息具体可以包括起始扇区、扇区数量、单i/o或者顺序i/o或者随机i/o、i/o总体带宽、启动时间或者终止时间等,本发明实施例对此不作具体限定。

i/o操作信息具体可以包括启动或者停止等。

需要说明的是,之所以携带i/o操作信息是因为:各个分层子系统的i/o操作是独立的,为方便独立控制各个层次的子系统,因此可以携带i/o操作信息。

可选的,本发明实施例中,第一业务子系统的i/o模式设置信息可以为第一业务子系统通过配置文件的方式设置i/o模式后获得的信息。

比如,该配置文件可以是可扩展标记语言(英文全称:extensiblemarkuplanguage,英文缩写:xml)或者其它配置模板。

或者,第一业务子系统的i/o模式设置信息可以为第一业务子系统通过命令行的方式设置i/o模式后获得的信息。

比如,该命令行可以是诊断(英文名称:diagnose)。

需要说明的是,对于上述两种方式中的任何方式,均首先需要将i/o模式设置整理输出标准化,方便配置文件或者命令行呈现。

需要说明的是,上述仅是示例性的列举两种第一业务子系统的i/o模式设置信息的获取方式。当然,第一业务子系统的i/o模式设置信息也可以通过其它方式获取,本发明实施例对此不作具体限定。

具体的,本发明实施例步骤s302中:

根据第一业务子系统的i/o模式设置信息,对预先注册的所述第一业务子系统的i/o输入接口进行i/o实例化,实际是指,根据第一业务子系统的i/o模式设置信息,通过一定算法对输入模式i/o进行实例化输出,产生所需的i/o流。

示例性的,若i/o模式信息为顺序i/o,则可以根据i/o地址偏移算法中的递增算法对输入模式i/o进行实例化输出,产生所需的i/o流。

具体的,本发明实施例步骤s303中:

在获得i/o输入接口对应的i/o流之后,可以将该i/o流下发给i/o输入接口对应的第一业务子系统。

示例性的,如图4所示,假设第一业务子系统为lun,则可以将i/o 流下发给lun,为lun提供i/o输入;假设第一业务子系统为volume,则可以将i/o流下发给volume,为volume提供i/o输入;假设第一业务子系统为volumecache,则可以将i/o流下发给volumecache,为volumecache提供i/o输入。

可以看出,本发明实施例中,下发i/o的装置可以为单个子系统提供i/o输入,也可以为多个子系统同时提供i/o输入,本发明实施例对此不作具体限定。

需要说明的是,本发明实施例中,因为下发i/o的装置只产生比较纯粹的i/o流,因此,对于子系统i/o依赖的上下文和i/o流转换为子系统实际使用的i/o结构体,需要子系统进行维护,本发明实施例对此不作具体限定。

可选的,如图5所示,本发明实施例中,在下发i/o的装置获取并解析第一业务子系统的i/o模式设置信息(步骤s301)之前,还可以包括步骤s304:

s304、下发i/o的装置对第一业务子系统注册i/o输入接口。

即,本发明实施例中,第一业务子系统可以向下发i/o的装置请求注册i/o输入接口,进而下发i/o的装置对第一业务子系统注册i/o输入接口。

当然,也可以是下发i/o的装置对各级业务子系统分别注册i/o输入接口,该各级业务子系统中包含第一业务子系统,本发明实施例对此不作具体限定。

需要说明的是,本发明实施例中的下发i/o的装置具体可以是阵列控制器,也可以是集成在阵列控制器中的一个装置,也可能是独立于阵列控制器的一个装置,本发明实施例对此不作具体限定。

基于本发明实施例提供的下发i/o的方法,本发明实施例中,下发i/o的装置获取并解析第一业务子系统的i/o模式设置信息;并根据第一业务子系统的i/o模式设置信息,对预先注册的第一业务子系统的i/o输入接口进行i/o实例化,获得第一业务子系统的i/o输入接口对应的i/o流之后,将该i/o流下发给第一业务子系统。由于该第一业务子系统可以是任意子系统,因此该下发i/o的方法为一种通用的下发i/o的方法,解决了 现有的阵列控制器侧下发i/o时,只能针对少数特定子系统开发特定的工具,应用受限,不够通用,且维护成本较高的问题,可以为任意单个子系统提供i/o输入,也可以为多个子系统同时提供i/o输入。进一步的,由于各级子系统的i/o输入相互独立,不需要依赖上级子系统,因此也加速了子系统验证的收敛。

如图6所示,本发明实施例提供了一种下发i/o的装置60,该装置60可以用于执行以上图3或图5所示的下发i/o的方法中下发i/o的装置所执行的步骤。该下发i/o的装置60可以包括相应步骤所对应的单元,示例的,可以包括:处理单元601和发送单元602。

处理单元601,用于获取并解析第一业务子系统的i/o模式设置信息。

处理单元601,还用于根据第一业务子系统的i/o模式设置信息,对预先注册的第一业务子系统的i/o输入接口进行i/o实例化,获得第一业务子系统的i/o输入接口对应的i/o流。

发送单元602,用于将该i/o流下发给第一业务子系统。

可选的,本发明实施例中,处理单元601,还用于在获取并解析第一业务子系统的i/o模式设置信息之前,对第一业务子系统注册i/o输入接口。

可选的,本发明实施例中,一种可能的实现方式中,第一业务子系统的i/o模式设置信息为第一业务子系统通过配置文件的方式设置i/o模式后获得的信息。

可选的,本发明实施例中,另一种可能的实现方式中,第一业务子系统的i/o模式设置信息为第一业务子系统通过命令行的方式设置i/o模式后获得的信息。

可选的,本发明实施例中,i/o模式设置信息可以包括i/o模式信息和i/o操作信息。

可以理解,本发明实施例的下发i/o的装置60可对应于上述图3或图5所示的下发i/o的方法中的下发i/o的装置,并且本发明实施例的下发i/o的装置60中的各个单元的划分和/或功能等均是为了实现上述图3或图5所示的下发i/o的方法流程,为了简洁,在此不再赘述。

由于本发明实施例中的下发i/o的装置60可以用于执行上述方法流 程,因此,其所能获得的技术效果也可参考上述方法实施例,本发明实施例在此不再赘述。

如图7所示,本发明实施例提供一种下发i/o的装置70,该装置70可以包括:处理器701、存储器702、总线703和通信接口704。

存储器702用于存储计算机执行指令,处理器701与存储器702通过总线连接,当该装置70运行时,处理器701执行存储器703存储的计算机执行指令,以使该装置70执行如图3或图5所示的下发i/o的方法。具体的下发i/o的方法可参见上述如图3或图5所示的实施例中的相关描述,此处不再赘述。

其中,本发明实施例中的处理器701可以为一个中央处理器(英文全称:centralprocessingunit,英文缩写:cpu),还可以为其他通用处理器、数字信号处理器(英文全称:digitalsignalprocessing,英文缩写:dsp)、专用集成电路(英文全称:applicationspecificintegratedcircuit,英文缩写:asic)、现场可编程门阵列(英文全称:field-programmablegatearray,英文缩写:fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,该处理器还可以为专用处理器,该专用处理器可以包括基带处理芯片、射频处理芯片等中的至少一个。进一步地,该专用处理器还可以包括具有该下发i/o的装置70其他专用处理功能的芯片。

存储器702可以包括易失性存储器(英文:volatilememory),例如随机存取存储器(英文全称:random-accessmemory,英文缩写:ram);存储器702也可以包括非易失性存储器(英文:non-volatilememory),例如只读存储器(英文全称:read-onlymemory,英文缩写:rom),快闪存储器(英文:flashmemory),硬盘(英文全称:harddiskdrive,英文缩写:hdd)或固态硬盘(英文全称:solid-statedrive,英文缩写:ssd);另外,存储器702还可以包括上述种类的存储器的组合。

总线703可以包括数据总线、电源总线、控制总线和信号状态总线等。本实施例中为了清楚说明,在图7中将各种总线都示意为总线703。

通信接口704具体可以是该下发i/o的装置70上的收发器。处理器 701通过通信接口704与其他设备或模块,例如各级子系统之间进行数据的收发。

在具体实现过程中,上述如图3或图5所示的方法流程中的各步骤均可以通过硬件形式的处理器701执行存储器702中存储的软件形式的计算机执行指令实现。为避免重复,此处不再赘述。

由于本发明实施例提供的下发i/o的装置70可用于执行上述方法流程,因此其所能获得的技术效果可参考上述方法实施例,此处不再赘述。

可选的,本实施例还提供一种可读介质,包括计算机执行指令,当下发i/o的装置的处理器执行该计算机执行指令时,该下发i/o的装置可以执行如图3或图5所示的下发i/o的方法。具体的下发i/o的方法可参见上述如图3或图5所示的实施例中的相关描述,此处不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在 一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1