一种实现目标端驱动的方法及该目标端驱动的制作方法

文档序号:6598526阅读:266来源:国知局
专利名称:一种实现目标端驱动的方法及该目标端驱动的制作方法
技术领域
本发明涉及块设备技术领域,尤其涉及一种实现目标端驱动的方法及该目标端驱动。
背景技术
块设备包括光盘、硬盘、存储卡和磁带等存储设备,为了实现块设备的IA)(输入
输出)交互操作,系统使用者不得不通过修改操作系统内核模块,或购买专用硬件设备等 方法实现在相应系统下支持这些块设备的操作。 在目前的一些操作系统中,已实现多种存储传输协议的发起端(Initiator端)驱 动的内核代码支持,而对目标端(target端)驱动的支持却很少。 SCSI (Small Computer System Interface,小型计算机系统接口 )与其他接口一 样,实际上是存储系统中发起端与目标端之间相互通信的一套协议。SCSI主机利用SCSI主 机总线适配器(Host Bus Adaptor, HBA)将存储设备或其他外部设备接入到主机的I/O总 线,并使用SCSI协议管理、控制和操作这些外部设备。 在目前大多数存储系统中,目标端驱动实现的功能有与发起端进行传输协议间 的交互;实现硬件接口驱动;处理主要的及专有的设备命令集驱动程序;对应如图l所示的 传输协议、硬件接口和目标端驱动三个子系统。 现有存储系统中,目标端根据需求与发起端进行的数据交互可以采用不同的传输 协议,参考图l,如FCP(Fibre Channel Protocol,网状信道协议)、iSCSI (Internet Small Computer System Interface, Internet小型计算机系统接口 ) 、SRP (SCSI RDMA protocol, SCSI远程直接访问协议)等,每种传输协议都需要专有的硬件接口,而又由于硬件接口的 唯一性,需要为每一种硬件接口提供相对应的一套目标端驱动,在目标端驱动中既包括传 输协议命令处理和硬件接口专有命令处理等,又包括SCSI通用命令处理和访问本地设备 等功能。 在现有的存储系统实现中,每采用一种新的传输协议及硬件接口,都需要重复实 现具有上述所有功能的目标端驱动。然而,目标端驱动中除了传输协议命令处理和硬件接 口专有命令处理外,其他部分都是独立的并且功能相似,在目标驱动的开发过程中,相似部 分的重复开发导致了成本的提高及开发周期的延长。

发明内容
本发明要解决的技术问题是提供一种实现目标端驱动的方法及该目标端驱动,解 决不同传输协议及硬件接口的目标端驱动的部分内容重复开发的问题,实现共用公共的部 分,以节约开发成本及周期。 为解决上述技术问题,本发明的一种实现目标端驱动的方法,包括 硬件接口驱动将接收到的存储通信协议命令发送给目标端统一驱动平台; 目标端统一驱动平台根据所接收到的存储通信协议命令的类型,对该存储通信协议命令进行访问控制处理,完成访问控制处理后,执行该存储通信协议命令,对块设备进行 操作。 进一步地,若存储通信协议命令是向块设备写入数据的命令,则该目标端统一驱 动平台对该写入数据的命令完成访问控制处理后,为数据的写入分配存储空间,并将存储 空间地址返回给发起端主机; 在接收到发起端主机的携带地址指针和待写入数据的存储通信协议命令后,目标 端统一驱动平台对待写入数据进行数据处理,完成数据处理后,将数据按照地址指针的指 示写入到块设备的相应空间中。 进一步地,若存储通信协议命令是从块设备读取数据的命令,则该目标端统一驱 动平台对该读取数据的命令完成访问控制处理后,按照该读取数据的命令的指示从相应块 设备中读取数据,并将读取出的数据返回给发起端主机。
进一步地,存储通信协议为小型计算机系统接口协议。 进一步地, 一种目标端驱动,包括硬件接口驱动和目标端统一驱动平台,该目标 端统一驱动平台包括依次相连的目标端核心处理模块、块设备处理层和存储通信协议中 间层,还包括命令处理守护线程和统一平台函数库,该命令处理守护线程分别与目标端核 心处理模块和统一平台函数库相连; 硬件接口驱动,用于将接收到的存储通信协议命令发送给目标端核心处理模块;
目标端核心处理模块,用于将接收到的存储通信协议命令发送给命令处理守护线 程,并将接收到的该命令处理守护线程返回的基本输入输出命令发送给块设备处理层;
命令处理守护线程,用于根据接收到的存储通信协议命令的类型,在需要时调用 统一平台函数库中的库函数,对存储通信协议命令进行访问控制处理,生成基本输入输出 命令,并发送给目标端核心处理模块; 块设备处理层,用于对接收到的基本输入输出命令进行预处理,将完成预处理的 基本输入输出命令发送给存储通信协议中间层; 存储通信协议中间层,用于将接收到的基本输入输出命令转换为存储通信协议命 令,根据该存储通信协议命令对块设备进行操作。 进一步地,若存储通信协议命令是向块设备写入数据的命令,则命令处理守护线 程完成访问控制处理后,为数据分配存储空间,并将存储空间地址通过目标端核心处理模 块返回给发起端主机;并且, 在接收到发起端主机的携带地址指针和待写入数据的存储通信协议命令后,对待
写入数据进行数据处理,生成基本输入输出命令,携带处理后的数据,发送给目标端核心处
理模块,该目标端核心处理模块将该基本输入输出命令发送给块设备处理层; 块设备处理层对接收到的基本输入输出命令进行预处理后,发送给存储通信协议
中间层,该存储通信协议中间层进行命令转换,将转换得到的存储通信协议命令中携带的
数据,按照地址指针的指示写入到块设备的相应空间中。 进一步地,若存储通信协议命令是从块设备读取数据的命令,则存储通信协议中 间层按照转换得到的存储通信协议命令的指示,从相应块设备中读取数据,并通过块设备 处理层和目标端核心处理层,将读取出的数据返回给发起端主机。 进一步地,目标端核心处理模块、 设备处理层和存储通信协议中间层位于操作系统的内核态空间;命令处理守护线程和统一平台函数库位于操作系统的用户态空间。 进一步地,统一平台函数库中保存传输协议及硬件接口驱动的共用函数。 进一步地,该目标端驱动还包括管理模块,该管理模块与命令处理守护线程连接,
用于通过命令处理守护线程对统一平台函数库中的库函数进行管理维护。 综上所述,本发明将各种传输协议及硬件接口的目标端驱动的公共部分通过目标
端统一平台来实现,实现了目标端驱动开发的简单化和快速化,从而保证了系统的兼容性
及可扩展性,本发明可应用于各种传输协议和硬件接口,并可能随时加入其他类型的传输
协议及硬件接口 ,在目标端统一驱动平台中只需增加对新传输协议和硬件接口的接口函
数,就能很好地兼容新协议和硬件接口的使用,而大量重复的处理任务都已在统一平台内
部实现,系统修改量很少,使目标端驱动的开发时间大大縮短,本发明中大部分功能都在操
作系统用户态空间中实现,可以充分利用用户态丰富的库函数及调试工具,使开发工作简
单快捷。


图1为现有技术中的块设备交互的架构图;
图2为本发明块设备交换的架构图;
图3为本发明中目标端统一驱动平台的结构图;
图4为本发明实现目标端驱动的方法的流程图。
具体实施例方式
考虑到目标端驱动中包含独立的且功能相似的部分,因此,本实施方式将各种协 议下目标端驱动的重复共有部分抽象出来,实现一个统一驱动平台,如图2中目标端统一 驱动平台,采用统一驱动平台的方式有利于新产品的开发,縮短开发周期,提高模块的复用 性。 本实施方式的目标端驱动包括硬件接口驱动和目标端统一驱动平台,目标端统 一驱动平台将每种硬件接口及传输协议所对应的目标端驱动中重复的处理部分抽象出来, 实现一个共用的API(A卯lication Programminglnterface,应用程序编程接口 )函数集, 在此统一驱动平台中,目标端驱动的核心是将大部分处理操作放入操作系统用户态空间实 现,相比目前的目标端驱动的功能大都在操作系统内核态空间实现,可以使开发更加方便 快捷,并且可以使用操作系统用户态空间中丰富的库函数及开发调试工具,提高了目标端 驱动的兼容性及维护的简易性。 下面将结合附图对本发明的具体实施方式
进行详细说明。 图3所示为本实施例的目标端统一驱动平台,假设存储通信协议为SCSI协议,该 目标端统一驱动平台包括位于操作系统内核态空间中的目标端核心处理模块、块设备处 理层和SCSI中间层,以及位于操作系统用户态空间中的管理模块、命令处理守护线程和统 一驱动平台函数库,其中目标端核心处理模块、块设备处理层和SCSI中间层依次相连,目 标端核心处理模块还与命令处理守护线程相连,命令处理守护线程还分别与管理模块和统 一平台函数库相连。 目标端核心处理模块的主要任务是将接收到的命令发送给命令处理守护线程,并负责将命令处理守护线程返回的BIO(基本输入输出)命令发送给块设备处理层。 块设备处理层主要负责对BIO命令进行预处理,预处理完成后,将BIO命令发送给
SCSI中间层,SCSI中间层将BIO命令转换为SCSI命令,对块设备执行读写操作。 管理模块主要是实现一些管理命令工具,以实现对系统功能进行配置,如访问权
限的配置,逻辑盘的大小的配置等,管理模块通过命令处理守护线程对统一平台函数库中
的库函数进行管理维护。 命令处理守护线程主要是用来进行处理SCSI命令和管理命令,对各具体的SCSI 命令处理时,根据不同SCSI命令的需要,调用统一平台函数库中的库函数实现命令的访问 控制和数据的处理。 统一平台函数库中保存了系统中提供的各种传输协议及硬件接口的实现函数集, 该函数集提高了系统实现的复用性及稳定性。 图4所示为本实施方式实现目标端统一驱动的方法,包括 401 :硬件接口驱动接收到发起端主机发送的包含SCSI命令的数据包后,根据传 输协议解析出SCSI命令,并发送给目标端核心处理模块; 402 :目标端核心处理模块在接收到SCSI命令后,通过操作系统内核中的网络接 口将SCSI命令发送到用户态空间的命令处理守护线程; 403 :命令处理守护线程在接收到目标端核心处理模块发送的SCSI命令后,根据 SCSI命令的类型,如果需要则调用统一平台函数库中的库函数,对SCSI命令进行访问控制 处理,对SCSI命令中携带的数据进行数据处理; 例如,命令处理守护线程接收到从硬盘读取数据给发起端主机的SCSI命令,SCSI 命令指示读取从某个逻辑盘的某个地址开始的一段数据,命令处理守护线程判断所要读取 的逻辑盘是否处于正常工作状态,发起端主机是否具有读取该逻辑盘的权限以及对数据地 址的合法性进行判断等访问控制处理。 假如命令处理守护线程接收到向硬盘写入数据的SCSI命令,则对写入数据的 SCSI命令进行如上述的访问控制处理,以及分配数据存储空间,并将存储空间地址通过目 标端核心处理模块返回给发起端主机。 发起端主机接收到存储空间地址后,发送携带地址指针和待写入数据的SCSI命 令,地址指针指向存储空间地址,命令处理守护线程根据要写入数据的逻辑盘进行不同的 数据处理操作。如,逻辑盘的类型为raidO、 raidl和raid5, raid5由三块物理盘组成,如 果是向raid5写入数据,则命令处理守护线程将数据分割为两个数据块,对这两个数据块 进行异或操作,并生成将两个数据块及异或运算的结果分别写入到三个物理盘中的BIO命 令。 统一平台函数库中保存有异或运算函数、SCSI解析函数、生成BIO命令函数和逻 辑盘的访问控制函数等各种传输协议及硬件接口驱动的共用函数。统一平台函数库在操作 系统用户态空间实现,方便调用及实现。 404 :命令处理守护线程完成SCSI命令的访问控制及数据处理后,生成进行块设
备操作的BIO命令,将BIO命令发送给目标端核心处理模块; 405 :目标端核心处理模块将接收到的BIO命令发送给块设备处理层; 406 :块设备处理层接收到BIO命令后,对BIO命令进行预处理,如BIO命令对物理盘的操作是否合法等; BIO命令是对块设备进行物理操作的命令。 407 :块设备处理层将完成预处理的BIO命令发送给SCSI协议中间层; 408 :SCSI协议中间层将BIO命令转换为SCSI命令,根据SCSI命令对块设备进行操作。 如果是读取数据的SCSI命令,则SCSI协议中间层按照数据地址从块设备读取数 据,并通过块设备处理层和目标端核心处理模块将读取的数据发送给发起端主机。
如果是写入数据的SCSI命令,则将SCSI命令中携带的数据,按照该SCSI命令的 指示写入到块设备的相应地址空间中。 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技 术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修 改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
一种实现目标端驱动的方法,包括硬件接口驱动将接收到的存储通信协议命令发送给目标端统一驱动平台;所述目标端统一驱动平台根据所接收到的存储通信协议命令的类型,对该存储通信协议命令进行访问控制处理,完成访问控制处理后,执行该存储通信协议命令,对块设备进行操作。
2. 如权利要求1所述的方法,其特征在于若所述存储通信协议命令是向所述块设备写入数据的命令,则该目标端统一驱动平台 对该写入数据的命令完成访问控制处理后,为数据的写入分配存储空间,并将存储空间地 址返回给发起端主机;在接收到所述发起端主机的携带地址指针和待写入数据的存储通信协议命令后,所述 目标端统一驱动平台对待写入数据进行数据处理,完成数据处理后,将所述数据按照所述 地址指针的指示写入到所述块设备的相应空间中。
3. 如权利要求1所述的方法,其特征在于若所述存储通信协议命令是从所述块设备读取数据的命令,则该目标端统一驱动平台 对该读取数据的命令完成访问控制处理后,按照该读取数据的命令的指示从相应块设备中 读取数据,并将读取出的数据返回给发起端主机。
4. 如权利要求1所述的方法,其特征在于 所述存储通信协议为小型计算机系统接口协议。
5. —种目标端驱动,包括硬件接口驱动和目标端统一驱动平台,该目标端统一驱动 平台包括依次相连的目标端核心处理模块、块设备处理层和存储通信协议中间层,还包 括命令处理守护线程和统一平台函数库,该命令处理守护线程分别与所述目标端核心处 理模块和统一平台函数库相连;所述硬件接口驱动,用于将接收到的存储通信协议命令发送给所述目标端核心处理模块;所述目标端核心处理模块,用于将接收到的存储通信协议命令发送给所述命令处理守 护线程,并将接收到的该命令处理守护线程返回的基本输入输出命令发送给所述块设备处 理层;所述命令处理守护线程,用于根据接收到的存储通信协议命令的类型,在需要时调用 所述统一平台函数库中的库函数,对所述存储通信协议命令进行访问控制处理,生成基本 输入输出命令,并发送给所述目标端核心处理模块;所述块设备处理层,用于对接收到的基本输入输出命令进行预处理,将完成预处理的 基本输入输出命令发送给所述存储通信协议中间层;所述存储通信协议中间层,用于将接收到的基本输入输出命令转换为存储通信协议命 令,根据该存储通信协议命令对块设备进行操作。
6. 如权利要求5所述的目标端驱动,其特征在于若所述存储通信协议命令是向所述块设备写入数据的命令,则所述命令处理守护线程 完成访问控制处理后,为数据分配存储空间,并将存储空间地址通过所述目标端核心处理 模块返回给发起端主机;并且,在接收到所述发起端主机的携带地址指针和待写入数据的存储通信协议命令后,对所述待写入数据进行数据处理,生成基本输入输出命令,携带处理后的数据,发送给所述目 标端核心处理模块,该目标端核心处理模块将该基本输入输出命令发送给所述块设备处理 层;所述块设备处理层对接收到的基本输入输出命令进行预处理后,发送给所述存储通信 协议中间层,该存储通信协议中间层进行命令转换,将转换得到的存储通信协议命令中携 带的所述数据,按照所述地址指针的指示写入到所述块设备的相应空间中。
7. 如权利要求5所述的目标端驱动,其特征在于若所述存储通信协议命令是从所述块设备读取数据的命令,则所述存储通信协议中间 层按照转换得到的存储通信协议命令的指示,从相应块设备中读取数据,并通过所述块设 备处理层和目标端核心处理层,将读取出的数据返回给所述发起端主机。
8. 如权利要求5所述的目标端驱动,其特征在于所述目标端核心处理模块、块设备处理层和存储通信协议中间层位于操作系统的内核 态空间;所述命令处理守护线程和统一平台函数库位于操作系统的用户态空间。
9. 如权利要求5所述的目标端驱动,其特征在于所述统一平台函数库中保存传输协 议及硬件接口驱动的共用函数。
10. 如权利要求9所述的目标端驱动,其特征在于,该目标端驱动还包括管理模块,该 管理模块与所述命令处理守护线程连接,用于通过所述命令处理守护线程对所述统一平台 函数库中的库函数进行管理维护。
全文摘要
本发明公开了一种实现目标端驱动的方法,包括硬件接口驱动将接收到的存储通信协议命令发送给目标端统一驱动平台;目标端统一驱动平台根据所接收到的存储通信协议命令的类型,对该存储通信协议命令进行访问控制处理,完成访问控制处理后,执行该存储通信协议命令,对块设备进行操作。本发明将各种传输协议及硬件接口的目标端驱动的公共部分通过目标端统一平台来实现,实现了目标端驱动开发的简单化和快速化,从而保证了系统的兼容性及可扩展性。
文档编号G06F3/06GK101788888SQ20101011381
公开日2010年7月28日 申请日期2010年2月9日 优先权日2010年2月9日
发明者周洋 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1