本发明涉及raid卡技术领域,具体提供一种基于uefiscsi的raid卡驱动设计方法。
背景技术:
raid卡能够充分发挥出多块硬盘在数据存储方面的加成优势,能够提供在线扩容、动态修改阵列级别、自动数据恢复、驱动器漫游、超高速缓冲等功能,它在提升硬盘性能、数据安全性、可靠性、可用性和可管理性等方面表现出色,因而在高性能服务器及存储系统中已经得到了越来越广泛的应用。
bios作为连接硬件和软件的关键组件,在计算机系统中起着至关重要的作用。uefibios具有开发效率高、扩展性强、性能优越等优点,所以uefibios已逐渐取代legacybios。
但是由于uefibios无法支持raid卡,因此在服务器产品中的应用受到很大限制。
技术实现要素:
本发明的技术任务是针对上述存在的问题,提供一种能够实现uefibios对raid卡的支持,大大扩展uefibios的应用范围的基于uefiscsi的raid卡驱动设计方法。
为实现上述目的,本发明提供了如下技术方案:
一种基于uefiscsi的raid卡驱动设计方法,设有硬件抽象层、协议层和核心层,硬件抽象层中设有硬件卡驱动,用于初始化并驱动raid卡工作;协议层包括主机驱动和总线驱动;核心层包括启动服务和运行时服务,硬件抽象层、协议层为核心层提供服务。
总线驱动采用uefibios自带的现有实现,主机驱动和raid卡驱动与硬件相关,需自行设计实现。raid卡驱动分为raid卡驱动框架和raid卡驱动服务。raid卡驱动框架包括start、stop和supported三部分,其中start用于分配资源及初始化raid卡,stop用于释放在start中分配的资源,并停止设备,supported用于检查raid卡是否被该驱动支持。raid卡驱动服务定义了一个通用的服务模板,包含一组操作底层硬件设备的服务接口,提供给上层的总线服务层。基于uefiscsipassthru协议设计实现raid卡主机驱动,其中的passthru函数与具体的硬件直接相关,主要功能为构建并向raid卡发送scsi命令。
作为优选,所述硬件抽象层还包括uefibios的处理器驱动模块、芯片组驱动模块和外设驱动模块。
作为优选,所述主机驱动为uefi规范定义的uefiscsi主机协议的一个实例,用于实现uefibios对具体的scsi主机控制器的管理。
作为优选,所述总线驱动从主机驱动获取来自底层raid卡的响应,并向上提供给scsi磁盘。scsi磁盘驱动进一步向上层驱动(如文件系统)提供服务,将上层io请求转换为scsi请求,从而实现从上层应用到底层raid卡的io请求处理。
作为优选,所述主机驱动解析总线驱动下发的命令包,将解析后的命令向下传递给raid卡,并保存raid卡对scsi命令的响应结果。
作为优选,所述协议层还包括isa总线协议、pci总线协议和usb总线协议、网络协议栈模块和文件系统模块。
此外协议层还设有虚拟磁盘驱动、块协议。
作为优选,所述核心层提供用户空间访问内核空间的接口。
作为优选,所述启动服务提供uefi事件管理服务、内存管理服务、protocol管理服务、驱动管理服务、image管理服务。
作为优选,所述运行时服务用于在启动服务结束后继续为osloader和os继续提供读写系统时间、读写uefi系统变量服务。
与现有技术相比,本发明的基于uefiscsi的raid卡驱动设计方法具有以下突出的有益效果:所述基于uefiscsi的raid卡驱动设计方法实现了uefibios对raid卡的支持,大大扩展了uefibios的应用范围,具有良好的推广应用价值。
附图说明
图1是本发明所述基于uefiscsi的raid卡驱动设计方法设计的raid卡驱动架构图。
具体实施方式
下面将结合附图和实施例,对本发明的基于uefiscsi的raid卡驱动设计方法及其设计方法作进一步详细说明。
实施例
如图1所示,本发明的基于uefiscsi的raid卡驱动设计方法,设有硬件抽象层、协议层和核心层。
硬件抽象层中设有硬件卡驱动,用于初始化并驱动raid卡工作。硬件抽象层还包括uefibios的处理器驱动模块、芯片组驱动模块和外设驱动模块。
协议层包括主机驱动和总线驱动。还包括isa总线协议、pci总线协议和usb总线协议、网络协议栈模块和文件系统模块。
此外协议层还设有虚拟磁盘驱动、块协议。
主机驱动为uefi规范定义的uefiscsi主机协议的一个实例,用于实现uefibios对具体的scsi主机控制器的管理。
主机驱动解析总线驱动下发的命令包,将解析后的命令向下传递给raid卡,并保存raid卡对scsi命令的响应结果。
总线驱动采用uefibios自带的现有实现,主机驱动和raid卡驱动与硬件相关,需自行设计实现。raid卡驱动分为raid卡驱动框架和raid卡驱动服务。raid卡驱动框架包括start、stop和supported三部分,其中start用于分配资源及初始化raid卡,stop用于释放在start中分配的资源,并停止设备,supported用于检查raid卡是否被该驱动支持。raid卡驱动服务定义了一个通用的服务模板,包含一组操作底层硬件设备的服务接口,提供给上层的总线服务层。基于uefiscsipassthru协议设计实现raid卡主机驱动,其中的passthru函数与具体的硬件直接相关,主要功能为构建并向raid卡发送scsi命令。总线驱动从主机驱动获取来自底层raid卡的响应,并向上提供给scsi磁盘。scsi磁盘驱动进一步向上层驱动(如文件系统)提供服务,将上层io请求转换为scsi请求,从而实现从上层应用到底层raid卡的io请求处理。
核心层包括启动服务和运行时服务,硬件抽象层、协议层为核心层提供服务。
核心层提供用户空间访问内核空间的接口。
其中启动服务提供uefi事件管理服务、内存管理服务、protocol管理服务、驱动管理服务、image管理服务。
运行时服务用于在启动服务结束后继续为osloader和os继续提供读写系统时间、读写uefi系统变量服务。
以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
1.一种基于uefiscsi的raid卡驱动设计方法,其特征在于:设有硬件抽象层、协议层和核心层,硬件抽象层中设有硬件卡驱动,用于初始化并驱动raid卡工作;协议层包括主机驱动和总线驱动;核心层包括启动服务和运行时服务,硬件抽象层、协议层为核心层提供服务。
2.根据权利要求1所述的基于uefiscsi的raid卡驱动设计方法,其特征在于:所述硬件抽象层还包括uefibios的处理器驱动模块、芯片组驱动模块和外设驱动模块。
3.根据权利要求2所述的基于uefiscsi的raid卡驱动设计方法,其特征在于:所述主机驱动为uefi规范定义的uefiscsi主机协议的一个实例,用于实现uefibios对具体的scsi主机控制器的管理。
4.根据权利要求3所述的基于uefiscsi的raid卡驱动设计方法,其特征在于:所述总线驱动从主机驱动获取来自底层raid卡的响应,并向上提供给scsi磁盘。
5.根据权利要求4所述的基于uefiscsi的raid卡驱动设计方法,其特征在于:所述主机驱动解析总线驱动下发的命令包,将解析后的命令向下传递给raid卡,并保存raid卡对scsi命令的响应结果。
6.根据权利要求5所述的基于uefiscsi的raid卡驱动设计方法,其特征在于:所述协议层还包括isa总线协议、pci总线协议和usb总线协议、网络协议栈模块和文件系统模块。
7.根据权利要求6所述的基于uefiscsi的raid卡驱动设计方法,其特征在于:所述核心层提供用户空间访问内核空间的接口。
8.根据权利要求7所述的基于uefiscsi的raid卡驱动设计方法,其特征在于:所述启动服务提供uefi事件管理服务、内存管理服务、protocol管理服务、驱动管理服务、image管理服务。
9.根据权利要求8所述的基于uefiscsi的raid卡驱动设计方法,其特征在于:所述运行时服务用于在启动服务结束后继续为osloader和os继续提供读写系统时间、读写uefi系统变量服务。
技术总结