CN115904260B - 磁盘阵列卡的启动方法、装置、存储介质及电子设备 - Google Patents
磁盘阵列卡的启动方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN115904260B CN115904260B CN202310218226.8A CN202310218226A CN115904260B CN 115904260 B CN115904260 B CN 115904260B CN 202310218226 A CN202310218226 A CN 202310218226A CN 115904260 B CN115904260 B CN 115904260B
- Authority
- CN
- China
- Prior art keywords
- target
- hard disk
- descriptor
- port
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 84
- 230000008569 process Effects 0.000 claims abstract description 19
- 238000012545 processing Methods 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 16
- 239000007787 solid Substances 0.000 claims description 16
- 238000013507 mapping Methods 0.000 claims description 12
- 238000005516 engineering process Methods 0.000 abstract description 5
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 239000000306 component Substances 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种磁盘阵列卡的启动方法、装置、存储介质及电子设备,其中,该方法包括:获取磁盘阵列卡的配置参数,磁盘阵列卡包括集成有多个处理器核心的芯片和多个硬盘端口;获取包括多个第一描述符的第一描述符表,每个第一描述符用于表示不同的处理器核心的处理器信息;根据配置参数,将多个第一描述符中第一目标描述符的指针传入与第一目标描述符对应的目标处理器核心;在磁盘阵列卡中的全部处理器核心传入对应的第一目标描述符的指针的情况下,确定磁盘阵列卡初始化完成,控制初始化后的磁盘阵列卡执行启动进程。通过本申请,解决了相关技术中启动磁盘阵列卡的速度及安全性难以进一步提高的问题。
Description
技术领域
本申请实施例涉及计算机领域,具体而言,涉及一种磁盘阵列卡的启动方法、磁盘阵列卡的启动装置、计算机可读存储介质及电子设备。
背景技术
随着集成电路知识产权核(intellectual property core,IP核)的发展, 系统级芯片(System-on-Chip,SoC)作为各嵌入式计算系统沟通核心部件已广泛应用于存储、高性能计算机和工业控制等诸多领域,以进一步提高产品的计算效能、有效地降低产品开发成本。目前,基本上都是在单芯片中集成多个中央处理器(central processing unit,CPU)核心,形成通常所说的4核、8核或更多的SoC芯片。尤其在存储领域中,多个CPU核心构建成一个SoC芯片并嵌入到一个磁盘阵列(Redundant Array of Independent Disks,RAID)卡中,基于SoC芯片的RAID卡是作为分布式存储的支撑架构。
分布式存储为了实现更灵活的扩展性和更大的存储规模,采用无中心的组网方式,每个基于SoC芯片的RAID卡作为存储节点都可以同时提供计算和存储资源。RAID卡内部有多个CPU核心,多个CPU核心之间通过SoC芯片实现互联互通,多个RAID卡控制节点构建的分布式存储软件提供统一的存储资源池。由于RAID卡就是将服务器连接的多个硬盘按照RAID级别组织成一个或多个RAID阵列,用户在RAID卡上创建一个或者多个指定容量的卷来供主机作为块设备使用,因此RAID卡是实现将服务器连接的硬盘按照RAID级别组织成RAID阵列功能的板卡。
基于多核SoC芯片的RAID卡的安全、快速启动对于分布式存储系统的I/O性能和数据安全性起到很关键的作用。然而,目前基于多核SoC芯片的RAID卡缺乏对每个CPU核心的统一管理,导致RAID卡启动的速度及安全性无法进一步提高。
发明内容
本申请实施例提供了一种磁盘阵列卡的启动方法、磁盘阵列卡的启动装置、计算机可读存储介质及电子设备,以至少解决相关技术中启动磁盘阵列卡的速度及安全性难以进一步提高的问题。
根据本申请的一个实施例,提供了一种磁盘阵列卡的启动方法,包括:获取磁盘阵列卡的配置参数,磁盘阵列卡包括集成有多个处理器核心的芯片和多个硬盘端口,配置参数至少包括:多个处理器核心的类型,以及表示多个处理器核心在磁盘阵列卡中的内存空间的地址信息;获取包括多个第一描述符的第一描述符表,每个第一描述符用于表示不同的处理器核心的处理器信息;根据配置参数,将多个第一描述符中第一目标描述符的指针传入与第一目标描述符对应的目标处理器核心;在磁盘阵列卡中的全部处理器核心传入对应的第一目标描述符的指针的情况下,确定磁盘阵列卡初始化完成,控制初始化后的磁盘阵列卡执行启动进程。
在一些可选的实施方式中,获取磁盘阵列卡的配置参数,包括:从磁盘阵列卡的目标内存中获取第一地址信息,第一地址信息包括:每个处理器核心的第一起始地址和第一结束地址,以及每个处理器核心的多个第一地址单元,其中,第一起始地址和第一结束地址用于确定芯片为处理器核心预留的多个第一地址空间,第一地址空间用于映射到磁盘阵列卡中的内存空间,第一地址单元为芯片向处理器核心分配的最大地址空间。
在一些可选的实施方式中,获取磁盘阵列卡的配置参数,还包括:从目标内存中获取第二地址信息,第二地址信息包括:每个硬盘端口的第二起始地址和第二结束地址,以及每个硬盘端口的第二地址单元,其中,第二起始地址和第二结束地址用于确定芯片为硬盘端口预留的第二地址空间,第二地址空间用于映射到磁盘阵列卡中的内存空间,第二地址单元为芯片向硬盘端口分配的最大地址空间。
在一些可选的实施方式中,获取磁盘阵列卡的配置参数,还包括:获取用于表示多个处理器核心与多个硬盘端口的连接关系的场景标识。
在一些可选的实施方式中,上述方法还包括:根据场景标识建立多个处理器核心与多个硬盘端口的连接。
在一些可选的实施方式中,根据配置参数,将多个第一描述符中第一目标描述符的指针传入与第一目标描述符对应的目标处理器核心,包括:确定与目标处理器核心的类型对应的地址信息,得到目标地址信息;从第一描述符表中查找与目标地址信息对应的第一描述符,得到第一目标描述符,其中,第一描述符表示的处理器信息包括处理器类型和总线地址,第一目标描述符表示的处理器信息与目标地址信息对应;将第一目标描述符中的指针字段存储到目标处理器核心在磁盘阵列卡中的内存空间。
在一些可选的实施方式中,根据配置参数,将多个第一描述符中第一目标描述符的指针传入与第一目标描述符对应的目标处理器核心,还包括:在将第一目标描述符中的指针字段存储到处理器核心在磁盘阵列卡中的内存空间之前,获取与目标处理器核心的类型对应的初始化程序;执行与目标处理器核心的类型对应的初始化程序。
在一些可选的实施方式中,根据配置参数,将多个第一描述符中第一目标描述符的指针传入与第一目标描述符对应的目标处理器核心,还包括:根据场景标识,从多个硬盘端口中确定与目标处理器核心具有连接关系的目标硬盘端口;确定用于插入目标硬盘端口的目标硬盘设备对应的回调接口;将回调接口传入目标处理器核心,回调接口用于在磁盘阵列卡发生中断事件的情况下通知与目标硬盘设备对应的存储协议执行对应中断事件的处理任务。
在一些可选的实施方式中,上述方法还包括:在将第一目标描述符的指针传入与第一目标描述符对应的目标处理器核心之前,初始化第一描述符表,以使得每个第一描述符处于未分配状态。
在一些可选的实施方式中,在确定磁盘阵列卡初始化完成之后,以及控制初始化后的磁盘阵列卡执行启动进程之前,方法还包括:对目标处理器核心进行初始化。
在一些可选的实施方式中,对目标处理器核心进行初始化,包括:获取挂载在目标处理器核心上的多个设备的设备信息,多个设备包括多个硬盘设备;获取包括多个第二描述符的第二描述符表,其中,每个第二描述符用于表示多个硬盘端口中不同的目标硬盘端口的端口信息以及与不同的目标硬盘端口对应的硬盘信息,硬盘信息为用于插入目标硬盘端口的硬盘设备的设备信息;根据第一描述符表、目标硬盘端口的端口信息、与目标硬盘端口对应的硬盘信息以及第一预设规则,生成用于插入目标硬盘端口的硬盘设备的硬盘编号,并将多个第二描述符中与目标硬盘端口对应的第二目标描述符的指针以及硬盘编号传入目标硬盘端口;在目标处理器核心上挂载的全部硬盘设备传入对应的第二目标描述符的指针的情况下,确定目标处理器核心初始化完成。
在一些可选的实施方式中,获取挂载在目标处理器核心上的多个设备的设备信息,多个设备包括多个硬盘设备,包括:探测挂载在目标处理器核心上的多个设备;获取包括多个第三描述符的第三描述符表,每个第三描述符用于表示挂载在目标处理器核心上的不同设备的设备信息,第三描述符表示的设备信息至少包括以下之一:第三描述符的分配状态,与第三描述符对应的目标设备的类型,目标设备的总线地址,目标设备的父设备的指针,目标设备的子设备的指针,以及目标设备的兄弟设备的指针,其中,兄弟设备与目标设备具有相同父设备;根据多个设备的类型,从第三描述符表中为多个设备分配对应的多个第三描述符;根据与多个设备中每个设备对应的第三描述符,记录与每个设备对应的设备信息。
在一些可选的实施方式中,获取挂载在目标处理器核心上的多个设备的设备信息,多个设备包括多个硬盘设备,还包括:获取包括多个第三描述符的第三描述符表之后,判断是否探测到目标硬盘端口中插入的硬盘设备为NVMe固态硬盘;在探测到目标硬盘端口中插入NVMe固态硬盘的情况下,将用于表示NVMe固态硬盘的硬盘信息的指针添加到与NVMe固态硬盘对应的第三描述符的子设备链表。
在一些可选的实施方式中,获取挂载在目标处理器核心上的多个设备的设备信息,多个设备包括多个硬盘设备,还包括:在根据多个设备的类型,从第三描述符表中为多个设备分配对应的多个第三描述符之前,初始化第三描述符表,以使得每个第三描述符处于未分配状态。
在一些可选的实施方式中,根据第一描述符表、目标硬盘端口的端口信息、与目标硬盘端口对应的硬盘信息以及第一预设规则,生成用于插入目标硬盘端口的硬盘设备的硬盘编号,包括:根据第二预设规则,确定与目标硬盘设备的类型对应的目标二进制码;从第一描述符表中读取目标处理器核心的处理器信息;根据目标处理器核心的处理器信息,确定目标处理器核心的第一身份标识号;根据用于插入目标硬盘设备的硬盘端口的端口信息,确定用于插入目标硬盘设备的硬盘端口的第二身份标识号;根据预留编码、目标二进制码、第一身份标识号和第二身份标识号,生成目标硬盘设备的硬盘编号。
在一些可选的实施方式中,对目标处理器核心进行初始化,还包括:在根据第一描述符表、目标硬盘端口的端口信息以及与目标硬盘端口对应的硬盘信息,将多个第二描述符中与目标硬盘端口对应的第二目标描述符的指针以及与用于插入目标硬盘端口的硬盘设备对应的硬盘编号传入目标硬盘端口之前,初始化第二描述符表,以使得每个第二描述符处于未分配状态。
在一些可选的实施方式中,对目标处理器核心进行初始化,还包括:为每个硬盘端口分配热插拔中断向量号,并在中断映射表中建立表项。
根据本申请的另一个实施例,提供了一种磁盘阵列卡的启动装置,包括:第一获取模块,用于获取磁盘阵列卡的配置参数,磁盘阵列卡包括集成有多个处理器核心的芯片和多个硬盘端口,配置参数至少包括:多个处理器核心的类型,以及表示多个处理器核心在磁盘阵列卡中的内存空间的地址信息;第二获取模块,用于获取包括多个第一描述符的第一描述符表,每个第一描述符用于表示不同的处理器核心的处理器信息;传入模块,用于根据配置参数,将多个第一描述符中第一目标描述符的指针传入与第一目标描述符对应的目标处理器核心;控制模块,用于在磁盘阵列卡中的全部处理器核心传入对应的第一目标描述符的指针的情况下,确定磁盘阵列卡初始化完成,控制初始化后的磁盘阵列卡执行启动进程。
根据本申请的又一个实施例,还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种电子设备,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
通过本申请,由于在获取磁盘阵列卡(RAID卡)的配置参数之后,根据配置参数,将第一描述符表中用于表示不同的处理器核心的处理器信息的多个第一描述符的指针传入对应的目标处理器核心,从而通过在磁盘阵列卡中的全部处理器核心均传入对应的第一目标描述符的指针,完成磁盘阵列卡的初始化,再控制初始化后的RAID卡执行启动进程,能够通过增加上述第一描述符表(即CPU核心描述符表)来实现对RAID卡中每个处理器核心的统一管理,进而实现更安全、更快速的启动基于多核SoC芯片的RAID卡的目的。因此,可以解决相关技术中启动磁盘阵列卡的速度及安全性难以进一步提高的问题,达到更安全、更快速的启动基于多核SoC芯片的RAID卡,从而提升分布式存储系统性能,使其具有更好的I/O性能和更可靠的数据安全性的效果。
附图说明
图1是本申请实施例的一种磁盘阵列卡的启动方法的移动终端的硬件结构框图;
图2是根据本申请实施例的一种磁盘阵列卡的启动方法的流程图;
图3是根据本申请实施例的上述启动方法中采用的磁盘阵列(RAID)卡装置的结构框图;
图4是根据本申请实施例的一种多核SoC芯片RAID卡初始化流程图;
图5是根据本申请实施例的一种多核SoC芯片RAID卡中CPU核心与硬盘端口的初始化流程的流程图;
图6是根据本申请实施例的一种磁盘阵列卡的启动装置的结构示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:
系统级芯片 (System on Chip,SoC):也称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。同时它又是一种技术,用以实现从确定系统功能开始,到软/硬件划分,并完成设计的整个过程。多核SoC,也叫多微处理器核心,是将两个或更多的独立处理器封装在一起的方案,通常在一个集成电路(Integrated Circuit Chip,IC)中。
磁盘阵列(Redundant Array of Independent Disks,RAID):是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。
RAID卡:RAID卡将服务器连接的多个硬盘按照RAID级别组织成一个或多个RAID阵列,用户在RAID卡上创建一个或者多个指定容量的卷来供主机作为块设备使用,因此RAID卡是实现将服务器连接的硬盘按照RAID级别组织成RAID阵列功能的板卡。
控制节点:即存储控制器,含CPU、内存、SAS接口等。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本申请实施例的一种磁盘阵列卡的启动方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的磁盘阵列卡的启动方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种可以运行于上述移动终端磁盘阵列卡的启动方法,图2是根据本申请实施例的磁盘阵列卡的启动方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,获取磁盘阵列卡的配置参数,磁盘阵列卡包括集成有多个处理器核心的芯片和多个硬盘端口,配置参数至少包括:多个处理器核心的类型,以及表示多个处理器核心在磁盘阵列卡中的内存空间的地址信息;
步骤S204,获取包括多个第一描述符的第一描述符表,每个第一描述符用于表示不同的处理器核心的处理器信息;
步骤S206,根据配置参数,将多个第一描述符中第一目标描述符的指针传入与第一目标描述符对应的目标处理器核心;
步骤S208,在磁盘阵列卡中的全部处理器核心传入对应的第一目标描述符的指针的情况下,确定磁盘阵列卡初始化完成,控制初始化后的磁盘阵列卡执行启动进程。
通过上述步骤,由于在获取磁盘阵列卡(RAID卡)的配置参数之后,根据配置参数,将第一描述符表中用于表示不同的处理器核心的处理器信息的多个第一描述符的指针传入对应的目标处理器核心,从而通过在磁盘阵列卡中的全部处理器核心均传入对应的第一目标描述符的指针,完成磁盘阵列卡的初始化,再控制初始化后的RAID卡执行启动进程,能够通过增加上述第一描述符表(即CPU核心描述符表)来实现对RAID卡中每个处理器核心的统一管理,进而实现更安全、更快速的启动基于多核SoC芯片的RAID卡的目的。因此,可以解决相关技术中启动磁盘阵列卡的速度及安全性难以进一步提高的问题,达到更安全、更快速的启动基于多核SoC芯片的RAID卡,从而提升分布式存储系统性能,使其具有更好的I/O性能和更可靠的数据安全性的效果。
上述步骤S202和上述步骤S204的执行顺序是可以互换的,即可以先执行步骤S204,然后再执行S202。
本实施例中的磁盘阵列(RAID)卡的启动方法可以应用于分布式存储系统中,多个RAID卡多个主机系统通过网络互联,图3中示出了一种分布式存储系统中采用的RAID卡的结构,包括固件层、网络接口、硬件定时器模块。如图3所示,RAID卡中固件层包括驱动程序、RAID卡内核、文件系统、管理监控系统、分配(allocate)模块和定时器软件逻辑功能模块等等(其他部分在图3中没有示出),RAID卡内核提供底层逻辑功能,文件系统可以提供对文件和逻辑单元号LUN访问的功能。RAID卡中固件层的驱动程序实现适配各个外设的代码逻辑功能。处理器执行一些程序指令,用于处理主机I/O请求。图3中210指示的是整个多CPU核心与SoC芯片的互联互通框图以及CPU核心与硬盘端口的关系框图,图3中220指示的硬盘组端口1构成1号RAID阵列,硬盘组端口2构成2号RAID阵列,以此类推,硬盘组端口N构成N号RAID阵列。1号RAID阵列、2号RAID阵列......N号RAID阵列一起构成RAID组。
在上述步骤S202中,从目标内存中获取RAID卡的配置参数,配置参数至少包括:多个处理器核心的类型,以及表示多个处理器核心在磁盘阵列卡中的内存空间的地址信息。
在一些可选的实施方式中,获取上述磁盘阵列卡的配置参数,包括:从磁盘阵列卡的目标内存中获取第一地址信息,第一地址信息包括:每个处理器核心的第一起始地址和第一结束地址,以及每个处理器核心的多个第一地址单元,其中,第一起始地址和第一结束地址用于确定芯片为处理器核心预留的多个第一地址空间,第一地址空间用于映射到磁盘阵列卡中的内存空间,第一地址单元为芯片向处理器核心分配的最大地址空间。具体地,上述配置参数可以包括RAID卡中全部CPU核心的起始/结束地址,即SoC芯片给全部CPU核心预留的地址空间,以将其映射到RAID卡内部内存空间,上述配置参数还可以包括RAID卡中全部CPU核心的地址空间,即每个CPU核心可分配的最大地址空间。
在一些可选的实施方式中,获取磁盘阵列卡的配置参数,还包括:从目标内存中获取第二地址信息,第二地址信息包括:每个硬盘端口的第二起始地址和第二结束地址,以及每个硬盘端口的第二地址单元,其中,第二起始地址和第二结束地址用于确定芯片为硬盘端口预留的第二地址空间,第二地址空间用于映射到磁盘阵列卡中的内存空间,第二地址单元为芯片向硬盘端口分配的最大地址空间。具体地,上述配置参数可以包括RAID卡中全部硬盘端口的起始/结束地址,即SoC芯片给全部硬盘端口预留的地址空间,以将其映射到RAID卡内部内存空间,上述配置参数还可以包括RAID卡中全部硬盘端口的地址空间,即每个硬盘端口可分配的最大地址空间。
在一些可选的实施方式中,获取的磁盘阵列卡的配置参数还包括:用于表示多个处理器核心与多个硬盘端口的连接关系的场景标识。此时,本实施例中的方法还包括:根据上述场景标识建立RAID卡中多个处理器核心与多个硬盘端口的连接。
在上述步骤S204中,获取包括多个第一描述符的第一描述符表,每个第一描述符用于表示不同的处理器核心的处理器信息。具体地,对于RAID卡中集成在SoC芯片上的多个CPU核心,上述第一描述符表即为CPU核心描述符表,表中的每个元素表示一个CPU核心描述符(即第一描述符),每个CPU核心描述符可以定义为:CPU类型和总线地址。其中,上述CPU类型可以包括Pentium(奔腾)、Athlon(速龙)、Celeron(赛扬)、Core(酷睿)等等。上述总线地址即为每个CPU核心可映射到SoC芯片的地址。
在一些可选的实施方式中,在将上述第一目标描述符的指针传入与第一目标描述符对应的目标处理器核心之前,初始化第一描述符表,以使得每个第一描述符处于未分配状态。具体地,对于RAID卡中集成在SoC芯片上的多个CPU核心,先将获取的CPU核心描述符表初始化,以使表中的每个CPU核心描述符均处于未分配状态。
在上述步骤S206中,根据RAID卡的配置参数,将多个第一描述符中第一目标描述符的指针传入与第一目标描述符对应的目标处理器核心。
在一些可选的实施方式中,上述步骤S206包括:确定与目标处理器核心的类型对应的地址信息,得到目标地址信息;从第一描述符表中查找与目标地址信息对应的第一描述符,得到第一目标描述符,其中,第一描述符表示的处理器信息包括处理器类型和总线地址,第一目标描述符表示的处理器信息与目标地址信息对应;将第一目标描述符中的指针字段存储到目标处理器核心在磁盘阵列卡中的内存空间。
在上述可选的实施方式中,在将第一目标描述符中的指针字段存储到处理器核心在磁盘阵列卡中的内存空间之前,获取与目标处理器核心的类型对应的初始化程序;执行与目标处理器核心的类型对应的初始化程序。具体地,对于RAID卡中集成在SoC芯片上的多个CPU核心,初始化全部CUP核心后,传入对应CPU核心描述符指针,从而在全部CUP核心均传入对应的CPU核心描述符指针后,通过CPU核心描述符表以实现对每个CPU核心的统一管理。
在一些可选的实施方式中,上述步骤S206还包括:根据场景标识,从多个硬盘端口中确定与目标处理器核心具有连接关系的目标硬盘端口;确定用于插入目标硬盘端口的目标硬盘设备对应的回调接口;将回调接口传入目标处理器核心,回调接口用于在磁盘阵列卡发生中断事件的情况下通知与目标硬盘设备对应的存储协议执行对应中断事件的处理任务。
具体地,对于RAID卡中集成在SoC芯片上的多个CPU核心,在初始化全部CUP核心后,可以在传入CPU核心描述符指针的同时传入回调接口,回调接口可以在硬盘读写完成、链路异常、热插拔等中断发生时,通知存储协议执行相应的处理。本实施例中通过在基于多核SoC芯片的RAID卡初始化过程中增加了硬盘的热插拔处理逻辑,能够在RAID卡使用过程中有效处理硬盘的热插拔。
在上述步骤S208中,在磁盘阵列卡中的全部处理器核心传入对应的第一目标描述符的指针的情况下,确定磁盘阵列卡初始化完成,控制初始化后的磁盘阵列卡执行启动进程。
示例性的,图4中示出了本实施例中一种多核SoC芯片RAID卡初始化流程,其中,CPU核心图示中示出了具有不同类型控制器的CPU核心直接通过端口或通过端口与级联设备与不同类型硬盘设备连接,如图4所示,该初始化流程包括:
1、从特定内存获取RAID卡配置参数,其中,配置参数包括:场景标识,表示CPU核心和端口连接关系的用户场景标识;每个CPU核心的类型;起始/结束地址:SoC芯片给所有硬件(例如CPU核心、端口等)预留的地址空间,将其映射到RAID卡内部内存空间;地址单元,每个硬件可分配的最大地址空间;
2、配置CPU核心和硬盘端口连接关系;
3、初始化CPU核心描述符表,表中的每个元素表示一个CPU核心描述符,包括CPU类型和可映射到SoC芯片的总线地址;
4、初始化所有CUP并传入CPU核心描述符指针,以及传入如硬盘读写完成、链路异常、热插拔等中断发生时,用于通知存储协议执行相应处理的回调接口;
5、基于多核SoC芯片的RAID卡初始化完毕。
在上述步骤S208中确定磁盘阵列卡初始化完成之后,以及控制初始化后的磁盘阵列卡执行启动进程之前,本实施例中的方法还可以包括:对目标处理器核心进行初始化。
在一些可选的实施方式中,对目标处理器核心进行初始化,包括:获取挂载在目标处理器核心上的多个设备的设备信息,多个设备包括多个硬盘设备;获取包括多个第二描述符的第二描述符表,其中,每个第二描述符用于表示多个硬盘端口中不同的目标硬盘端口的端口信息以及与不同的目标硬盘端口对应的硬盘信息,硬盘信息为用于插入目标硬盘端口的硬盘设备的设备信息;根据第一描述符表、目标硬盘端口的端口信息、与目标硬盘端口对应的硬盘信息以及第一预设规则,生成用于插入目标硬盘端口的硬盘设备的硬盘编号,并将多个第二描述符中与目标硬盘端口对应的第二目标描述符的指针以及硬盘编号传入目标硬盘端口;在目标处理器核心上挂载的全部硬盘设备传入对应的第二目标描述符的指针的情况下,确定目标处理器核心初始化完成。
具体地,对于RAID卡中与每个CPU核心连接的硬盘端口,上述第二描述符表即为硬盘描述符表,表中的每个元素表示一个硬盘描述符(即第二描述符),每个硬盘描述符可以定义为:是否分配,表示该硬盘描述符是否已分配给某个硬盘设备;硬盘设备指针,硬盘的设备描述符指针,表示硬盘信息;端口指针,硬盘设备所在硬盘端口的描述符指针,表示端口信息。本实施例中通过为每个硬盘设备分配硬盘描述符,从而实现对硬盘设备更安全更统一更灵活的管理、同时实现CPU核心和硬盘端口之间灵活的映射关系。
在上述可选的实施方式中,对目标处理器核心进行初始化,还可以包括:在根据第一描述符表、目标硬盘端口的端口信息以及与目标硬盘端口对应的硬盘信息,将多个第二描述符中与目标硬盘端口对应的第二目标描述符的指针以及与用于插入目标硬盘端口的硬盘设备对应的硬盘编号传入目标硬盘端口之前,初始化第二描述符表,以使得每个第二描述符处于未分配状态。具体地,对于RAID卡中与每个CPU核心连接的硬盘端口,先将获取的硬盘描述符表初始化,以使表中的每个设硬盘描述符均处于未分配状态。
在一些可选的实施方式中,获取挂载在目标处理器核心上的多个设备的设备信息,多个设备包括多个硬盘设备,包括:探测挂载在目标处理器核心上的多个设备;获取包括多个第三描述符的第三描述符表,每个第三描述符用于表示挂载在目标处理器核心上的不同设备的设备信息,第三描述符表示的设备信息至少包括以下之一:第三描述符的分配状态,与第三描述符对应的目标设备的类型,目标设备的总线地址,目标设备的父设备的指针,目标设备的子设备的指针,以及目标设备的兄弟设备的指针,其中,兄弟设备与目标设备具有相同父设备;根据多个设备的类型,从第三描述符表中为多个设备分配对应的多个第三描述符;根据与多个设备中每个设备对应的第三描述符,记录与每个设备对应的设备信息。
具体地,对于RAID卡中挂载在每个CPU核心上的设备,上述第三描述符表即为设备描述符表,表中的每个元素表示一个设备描述符(即第三描述符),每个设备描述符可以定义为:是否分配,表示该设备描述符是否已分配给某个设备;设备类型;总线地址,从CPU核心的总线地址划分的可映射到SoC芯片的设备地址;相关设备指针,如包括父设备指针、子设备指针和具有相同父设备的右兄弟设备指针。
在上述可选的实施方式中,获取挂载在目标处理器核心上的多个设备的设备信息,多个设备包括多个硬盘设备,还可以包括:在根据多个设备的类型,从第三描述符表中为多个设备分配对应的多个第三描述符之前,初始化第三描述符表,以使得每个第三描述符处于未分配状态。具体地,对于RAID卡中挂载在每个CPU核心上的设备,先将获取的设备描述符表初始化,以使表中的每个设备描述符均处于未分配状态。
在一些可选的实施方式中,获取挂载在目标处理器核心上的多个设备的设备信息,多个设备包括多个硬盘设备,还包括:获取包括多个第三描述符的第三描述符表之后,判断是否探测到目标硬盘端口中插入的硬盘设备为NVMe固态硬盘;在探测到目标硬盘端口中插入NVMe固态硬盘的情况下,将用于表示NVMe固态硬盘的硬盘信息的指针添加到与NVMe固态硬盘对应的第三描述符的子设备链表。
具体地,从硬盘描述符表中为探测到的每个硬盘端口分配硬盘描述符并保持其指针,不论硬盘设备是否插入硬盘端口,均预分配硬盘设备描述符,并写入硬盘类型或设备类型、总线地址、父设备指针等,如果探测到端口插入了NVMe SSD盘,则将硬盘设备指针添加到设备描述符的子设备链表,如果探测到端口下接的不是NVMe SSD盘的设备,则不做该处理。
在一些可选的实施方式中,根据第一描述符表、目标硬盘端口的端口信息、与目标硬盘端口对应的硬盘信息以及第一预设规则,生成用于插入目标硬盘端口的硬盘设备的硬盘编号,包括:根据第二预设规则,确定与目标硬盘设备的类型对应的目标二进制码;从第一描述符表中读取目标处理器核心的处理器信息;根据目标处理器核心的处理器信息,确定目标处理器核心的第一身份标识号;根据用于插入目标硬盘设备的硬盘端口的端口信息,确定用于插入目标硬盘设备的硬盘端口的第二身份标识号;根据预留编码、目标二进制码、第一身份标识号和第二身份标识号,生成目标硬盘设备的硬盘编号。
具体地,对于RAID卡中与每个CPU核心连接的硬盘端口,该硬盘端口用于插入的硬盘设备的硬盘编号可以为由表1中预设规则生成的物理盘ID,硬盘描述符表可以使用物理盘ID进行索引,物理盘ID中各个字段信息如下。
表1
如表1所示,物理盘ID由0~15具有16个比特位,其中:
0~5为硬盘端口的ID,探测到的每个硬盘端口均具有唯一的五位编号,如00001,00002,22010,00311等;
6~9为CPU核心的ID,对于RAID卡中集成在SoC芯片上的多个CPU核心,每个CPU核心均具有唯一的四位编号,如0001,0040,2010, 0114等;
10~11为物理盘类型,由二进制码进行取值,具有如下预设规则:
00:直接连到RAID卡的NVMe SSD盘;
01:直接连到RAID卡的HDD盘;
10:通过PCIe Switch扩展连接到RAID卡的NVMe SSD盘;
11:通过SATA Expander扩展连接到RAID卡的HDD盘;
12~15为预留的四位比特位。
在一些可选的实施方式中,对目标处理器核心进行初始化,还包括:为每个硬盘端口分配热插拔中断向量号,并在中断映射表中建立表项。
示例性的,图5中示出了本实施例中一种多核SoC芯片RAID卡中CPU核心与硬盘端口的初始化流程,如图5所示,该初始化流程包括:
1、从输入参数获取CPU核心描述符指针和回调接口;
2、初始化设备描述符表,将所有设备描述符初始化为未分配状态,其中,设备描述符定义为:是否分配,表示该设备描述符是否已分配给某个设备;设备类型;总线地址,从CPU核心的总线地址划分的可映射到SoC芯片的设备地址;父设备指针;子设备指针;右兄弟设备指针;
3、初始化硬盘描述符表,将所有硬盘描述符初始化为未分配状态,其中,硬盘描述符定义为:是否分配,表示该硬盘描述符是否已分配给某个盘;硬盘设备指针,硬盘的设备描述符指针,表示硬盘信息;端口设备指针,硬盘所在端口的描述符指针,表示端口信息;
4、以深度优先搜索算法探测挂载在CPU核心上的所有设备,探测过程中记录如下信息:
4.1、从CPU核心描述符表中读取CPU核心的信息(CPU类型,总线地址),将其划分为所有子设备地址(子设备即硬盘或其他外设);
4.2、从设备描述符表(用于描述所有设备信息,即设备描述符资源池)中为每个探测到的设备分配设备描述符并记录设备信息;
4.3、从硬盘描述符表(用于描述所有盘及端口信息,即硬盘描述符资源池)中为探测到的每个硬盘端口分配硬盘描述符并保持其指针,不论硬盘设备是否插入硬盘端口,均预分配硬盘设备描述符,并写入硬盘类型或设备类型、总线地址、父设备指针等,如果探测到端口插入有NVMe SSD盘,则将硬盘设备指针添加到设备描述符的子设备链表,如果探测到端口下接的不是NVMe SSD盘的设备,则不做该处理;
4.4、为每个端口分配热插拔中断向量号,并在中断映射表中建立与物理盘ID的映射关系的表项;
5、遍历硬盘描述符表,其中,硬盘描述符表使用表1中的物理盘ID索引,,调用硬盘设备并插入回调接口,以及传入物理盘ID和硬盘设备描述符指针,回调接口用于通知存储协议某个盘已上线可以读写;
6、基于多核SoC芯片的RAID卡的CPU核心初始化完毕。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
从以上的描述中,可以看出,本申请上述的实施例实现了如下技术效果:
1、通过优化RAID卡的初始化流程,使其实现更安全、更快速的启动流程,提高其性能;
2、通过加速RAID卡启动过程、可以实现RAID卡更安全的启动,降低RAID卡的成本;
3、在基于多核SoC芯片的RAID卡中增加CPU核心描述符表以实现对每个CPU核心的统一管理,从而提高了RAID卡对多核CPU的管理能力;
4、设计的技术方案中包括为每个硬盘分配硬盘描述符,从而实现对盘更安全更统一更灵活的管理、同时实现CPU核心和端口之间灵活的映射关系;
5、在基于多核SoC芯片的RAID卡初始化过程中增加了硬盘的热插拔处理逻辑,因此在RAID卡使用过程中可以有效处理硬盘的热插拔。
在本实施例中还提供了一种磁盘阵列卡的启动装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图6是根据本申请实施例的磁盘阵列卡的启动装置的结构框图,如图6所示,该装置包括:
第一获取模块62,用于获取磁盘阵列卡的配置参数,磁盘阵列卡包括集成有多个处理器核心的芯片和多个硬盘端口,配置参数至少包括:多个处理器核心的类型,以及表示多个处理器核心在磁盘阵列卡中的内存空间的地址信息;
第二获取模块64,用于获取包括多个第一描述符的第一描述符表,每个第一描述符用于表示不同的处理器核心的处理器信息;
传入模块66,用于根据配置参数,将多个第一描述符中第一目标描述符的指针传入与第一目标描述符对应的目标处理器核心;
控制模块68,用于在磁盘阵列卡中的全部处理器核心传入对应的第一目标描述符的指针的情况下,确定磁盘阵列卡初始化完成,控制初始化后的磁盘阵列卡执行启动进程。
通过上述装置,由于在第一获取模块62获取磁盘阵列卡(RAID卡)的配置参数之后,传入模块66根据配置参数,将第二获取模块64获取的第一描述符表中用于表示不同的处理器核心的处理器信息的多个第一描述符的指针传入对应的目标处理器核心,从而通过在磁盘阵列卡中的全部处理器核心均传入对应的第一目标描述符的指针,完成磁盘阵列卡的初始化,控制模块68控制初始化后的RAID卡执行启动进程,能够通过增加上述第一描述符表(即CPU核心描述符表)来实现对RAID卡中每个处理器核心的统一管理,进而实现更安全、更快速的启动基于多核SoC芯片的RAID卡的目的。因此,可以解决相关技术中启动磁盘阵列卡的速度及安全性难以进一步提高的问题,达到更安全、更快速的启动基于多核SoC芯片的RAID卡,从而提升分布式存储系统性能,使其具有更好的I/O性能和更可靠的数据安全性的效果。
在一些可选的实施方式中,第一获取模块包括:第一获取子模块用于从磁盘阵列卡的目标内存中获取第一地址信息,第一地址信息包括:每个处理器核心的第一起始地址和第一结束地址,以及每个处理器核心的多个第一地址单元,其中,第一起始地址和第一结束地址用于确定芯片为处理器核心预留的多个第一地址空间,第一地址空间用于映射到磁盘阵列卡中的内存空间,第一地址单元为芯片向处理器核心分配的最大地址空间。
在一些可选的实施方式中,第一获取模块还包括:第二获取子模块,用于从目标内存中获取第二地址信息,第二地址信息包括:每个硬盘端口的第二起始地址和第二结束地址,以及每个硬盘端口的第二地址单元,其中,第二起始地址和第二结束地址用于确定芯片为硬盘端口预留的第二地址空间,第二地址空间用于映射到磁盘阵列卡中的内存空间,第二地址单元为芯片向硬盘端口分配的最大地址空间。
在一些可选的实施方式中,第一获取模块还包括:第三获取子模块,用于获取用于表示多个处理器核心与多个硬盘端口的连接关系的场景标识。
在一些可选的实施方式中,上述装置还包括:连接模块,用于根据场景标识建立多个处理器核心与多个硬盘端口的连接。
在一些可选的实施方式中,传入模块包括:第一确定模块,用于确定与目标处理器核心的类型对应的地址信息,得到目标地址信息;第二确定模块,用于从第一描述符表中查找与目标地址信息对应的第一描述符,得到第一目标描述符,其中,第一描述符表示的处理器信息包括处理器类型和总线地址,第一目标描述符表示的处理器信息与目标地址信息对应;第一处理模块,用于将第一目标描述符中的指针字段存储到目标处理器核心在磁盘阵列卡中的内存空间。
在一些可选的实施方式中,传入模块还包括:第三确定模块,用于在将第一目标描述符中的指针字段存储到处理器核心在磁盘阵列卡中的内存空间之前,获取与目标处理器核心的类型对应的初始化程序;第一初始化模块,用于执行与目标处理器核心的类型对应的初始化程序。
在一些可选的实施方式中,传入模块还包括:第四确定模块,用于根据场景标识,从多个硬盘端口中确定与目标处理器核心具有连接关系的目标硬盘端口;第五确定模块,用于确定用于插入目标硬盘端口的目标硬盘设备对应的回调接口;第二处理模块,用于将回调接口传入目标处理器核心,回调接口用于在磁盘阵列卡发生中断事件的情况下通知与目标硬盘设备对应的存储协议执行对应中断事件的处理任务。
在一些可选的实施方式中,上述装置还包括:第二初始化模块,用于在将第一目标描述符的指针传入与第一目标描述符对应的目标处理器核心之前,初始化第一描述符表,以使得每个第一描述符处于未分配状态。
在一些可选的实施方式中,在确定磁盘阵列卡初始化完成之后,以及控制初始化后的磁盘阵列卡执行启动进程之前,装置还包括:第三初始化模块,用于对目标处理器核心进行初始化。
在一些可选的实施方式中,第三初始化模块包括:第四获取子模块,用于获取挂载在目标处理器核心上的多个设备的设备信息,多个设备包括多个硬盘设备;第三获取模块,用于获取包括多个第二描述符的第二描述符表,其中,每个第二描述符用于表示多个硬盘端口中不同的目标硬盘端口的端口信息以及与不同的目标硬盘端口对应的硬盘信息,硬盘信息为用于插入目标硬盘端口的硬盘设备的设备信息;第三处理模块,用于根据第一描述符表、目标硬盘端口的端口信息、与目标硬盘端口对应的硬盘信息以及第一预设规则,生成用于插入目标硬盘端口的硬盘设备的硬盘编号,并将多个第二描述符中与目标硬盘端口对应的第二目标描述符的指针以及硬盘编号传入目标硬盘端口;第六确定模块,用于在目标处理器核心上挂载的全部硬盘设备传入对应的第二目标描述符的指针的情况下,确定目标处理器核心初始化完成。
在一些可选的实施方式中,第四获取子模块包括:第四处理模块,用于探测挂载在目标处理器核心上的多个设备;第四获取模块,用于获取包括多个第三描述符的第三描述符表,每个第三描述符用于表示挂载在目标处理器核心上的不同设备的设备信息,第三描述符表示的设备信息至少包括以下之一:第三描述符的分配状态,与第三描述符对应的目标设备的类型,目标设备的总线地址,目标设备的父设备的指针,目标设备的子设备的指针,以及目标设备的兄弟设备的指针,其中,兄弟设备与目标设备具有相同父设备;根据多个设备的类型,从第三描述符表中为多个设备分配对应的多个第三描述符;第五处理模块,用于根据与多个设备中每个设备对应的第三描述符,记录与每个设备对应的设备信息。
在一些可选的实施方式中,第四获取子模块还包括:判断模块,用于在获取包括多个第三描述符的第三描述符表之后,判断是否探测到目标硬盘端口中插入的硬盘设备为NVMe固态硬盘;添加模块,用于在探测到目标硬盘端口中插入NVMe固态硬盘的情况下,将用于表示NVMe固态硬盘的硬盘信息的指针添加到与NVMe固态硬盘对应的第三描述符的子设备链表。
在一些可选的实施方式中,第四获取子模块还包括:第四初始化模块,用于在根据多个设备的类型,从第三描述符表中为多个设备分配对应的多个第三描述符之前,初始化第三描述符表,以使得每个第三描述符处于未分配状态。
在一些可选的实施方式中,第三处理模块包括:第七确定模块,用于根据第二预设规则,确定与目标硬盘设备的类型对应的目标二进制码;读取模块,用于从第一描述符表中读取目标处理器核心的处理器信息;第八确定模块,用于根据目标处理器核心的处理器信息,确定目标处理器核心的第一身份标识号;第九确定模块,用于根据用于插入目标硬盘设备的硬盘端口的端口信息,确定用于插入目标硬盘设备的硬盘端口的第二身份标识号;第六处理模块,用于根据预留编码、目标二进制码、第一身份标识号和第二身份标识号,生成目标硬盘设备的硬盘编号。
在一些可选的实施方式中,第三初始化模块还包括:第五初始化模块,用于在根据第一描述符表、目标硬盘端口的端口信息以及与目标硬盘端口对应的硬盘信息,将多个第二描述符中与目标硬盘端口对应的第二目标描述符的指针以及与用于插入目标硬盘端口的硬盘设备对应的硬盘编号传入目标硬盘端口之前,初始化第二描述符表,以使得每个第二描述符处于未分配状态。
在一些可选的实施方式中,第三初始化模块还包括:第七处理模块,用于为每个硬盘端口分配热插拔中断向量号,并在中断映射表中建立表项。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一些可选的实施方式中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一些可选的实施方式中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (19)
1.一种磁盘阵列卡的启动方法,其特征在于,包括:
获取所述磁盘阵列卡的配置参数,所述磁盘阵列卡包括集成有多个处理器核心的芯片和多个硬盘端口,所述配置参数至少包括:所述多个处理器核心的类型,以及表示所述多个处理器核心在所述磁盘阵列卡中的内存空间的地址信息;
获取包括多个第一描述符的第一描述符表,每个所述第一描述符用于表示不同的所述处理器核心的处理器信息;
根据所述配置参数,将所述多个第一描述符中第一目标描述符的指针传入与所述第一目标描述符对应的目标处理器核心;
在所述磁盘阵列卡中的全部所述处理器核心传入对应的所述第一目标描述符的指针的情况下,确定所述磁盘阵列卡初始化完成,对所述目标处理器核心进行初始化,控制初始化后的所述磁盘阵列卡执行启动进程,
所述对所述目标处理器核心进行初始化,包括:
获取挂载在所述目标处理器核心上的多个设备的设备信息,所述多个设备包括多个硬盘设备;
获取包括多个第二描述符的第二描述符表,其中,每个所述第二描述符用于表示所述多个硬盘端口中不同的目标硬盘端口的端口信息以及与不同的所述目标硬盘端口对应的硬盘信息,所述硬盘信息为用于插入所述目标硬盘端口的硬盘设备的设备信息;
根据所述第一描述符表、所述目标硬盘端口的端口信息、与所述目标硬盘端口对应的硬盘信息以及第一预设规则,生成用于插入所述目标硬盘端口的硬盘设备的硬盘编号,并将所述多个第二描述符中与所述目标硬盘端口对应的第二目标描述符的指针以及所述硬盘编号传入所述目标硬盘端口;
在所述目标处理器核心上挂载的全部所述硬盘设备传入对应的所述第二目标描述符的指针的情况下,确定所述目标处理器核心初始化完成。
2.根据权利要求1所述的方法,其特征在于,所述获取所述磁盘阵列卡的配置参数,包括:
从所述磁盘阵列卡的目标内存中获取第一地址信息,所述第一地址信息包括:每个所述处理器核心的第一起始地址和第一结束地址,以及每个所述处理器核心的多个第一地址单元,其中,所述第一起始地址和第一结束地址用于确定所述芯片为所述处理器核心预留的多个第一地址空间,所述第一地址空间用于映射到所述磁盘阵列卡中的内存空间,所述第一地址单元为所述芯片向所述处理器核心分配的最大地址空间。
3.根据权利要求2所述的方法,其特征在于,所述获取所述磁盘阵列卡的配置参数,还包括:
从所述目标内存中获取第二地址信息,所述第二地址信息包括:每个所述硬盘端口的第二起始地址和第二结束地址,以及每个所述硬盘端口的第二地址单元,其中,所述第二起始地址和第二结束地址用于确定所述芯片为所述硬盘端口预留的第二地址空间,所述第二地址空间用于映射到所述磁盘阵列卡中的内存空间,所述第二地址单元为所述芯片向所述硬盘端口分配的最大地址空间。
4.根据权利要求2所述的方法,其特征在于,所述获取所述磁盘阵列卡的配置参数,还包括:
获取用于表示多个所述处理器核心与多个所述硬盘端口的连接关系的场景标识。
5.根据权利要求4所述的方法,其特征在于,还包括:
根据所述场景标识建立多个所述处理器核心与多个所述硬盘端口的连接。
6.根据权利要求1所述的方法,其特征在于,所述根据所述配置参数,将所述多个第一描述符中第一目标描述符的指针传入与所述第一目标描述符对应的目标处理器核心,包括:
确定与所述目标处理器核心的类型对应的地址信息,得到目标地址信息;
从所述第一描述符表中查找与所述目标地址信息对应的所述第一描述符,得到所述第一目标描述符,其中,所述第一描述符表示的处理器信息包括处理器类型和总线地址,所述第一目标描述符表示的处理器信息与所述目标地址信息对应;
将所述第一目标描述符中的指针字段存储到所述目标处理器核心在所述磁盘阵列卡中的内存空间。
7.根据权利要求6所述的方法,其特征在于,所述根据所述配置参数,将所述多个第一描述符中第一目标描述符的指针传入与所述第一目标描述符对应的目标处理器核心,还包括:
在将所述第一目标描述符中的指针字段存储到所述处理器核心在所述磁盘阵列卡中的内存空间之前,获取与所述目标处理器核心的类型对应的初始化程序;
执行与所述目标处理器核心的类型对应的初始化程序。
8.根据权利要求4所述的方法,其特征在于,所述根据所述配置参数,将所述多个第一描述符中第一目标描述符的指针传入与所述第一目标描述符对应的目标处理器核心,还包括:
根据所述场景标识,从多个所述硬盘端口中确定与所述目标处理器核心具有连接关系的目标硬盘端口;
确定用于插入所述目标硬盘端口的目标硬盘设备对应的回调接口;
将所述回调接口传入所述目标处理器核心,所述回调接口用于在所述磁盘阵列卡发生中断事件的情况下通知与所述目标硬盘设备对应的存储协议执行对应所述中断事件的处理任务。
9.根据权利要求1所述的方法,其特征在于,还包括:
在将所述第一目标描述符的指针传入与所述第一目标描述符对应的目标处理器核心之前,初始化所述第一描述符表,以使得每个所述第一描述符处于未分配状态。
10.根据权利要求1所述的方法,其特征在于,所述获取挂载在所述目标处理器核心上的多个设备的设备信息,所述多个设备包括多个硬盘设备,包括:
探测挂载在所述目标处理器核心上的多个设备;
获取包括多个第三描述符的第三描述符表,每个所述第三描述符用于表示挂载在所述目标处理器核心上的不同设备的设备信息,所述第三描述符表示的设备信息至少包括以下之一:所述第三描述符的分配状态,与所述第三描述符对应的目标设备的类型,所述目标设备的总线地址,所述目标设备的父设备的指针,所述目标设备的子设备的指针,以及所述目标设备的兄弟设备的指针,其中,所述兄弟设备与所述目标设备具有相同父设备;
根据所述多个设备的类型,从所述第三描述符表中为所述多个设备分配对应的多个所述第三描述符;
根据与所述多个设备中每个设备对应的所述第三描述符,记录与所述每个设备对应的设备信息。
11.根据权利要求10所述的方法,其特征在于,所述获取挂载在所述目标处理器核心上的多个设备的设备信息,所述多个设备包括多个硬盘设备,还包括:
获取包括多个第三描述符的第三描述符表之后,判断是否探测到所述目标硬盘端口中插入的硬盘设备为NVMe固态硬盘;
在探测到所述目标硬盘端口中插入所述NVMe固态硬盘的情况下,将用于表示所述NVMe固态硬盘的硬盘信息的指针添加到与所述NVMe固态硬盘对应的第三描述符的子设备链表。
12.根据权利要求10所述的方法,其特征在于,所述获取挂载在所述目标处理器核心上的多个设备的设备信息,所述多个设备包括多个硬盘设备,还包括:
在根据所述多个设备的类型,从所述第三描述符表中为所述多个设备分配对应的多个所述第三描述符之前,初始化所述第三描述符表,以使得每个所述第三描述符处于未分配状态。
13.根据权利要求1所述的方法,其特征在于,所述根据所述第一描述符表、所述目标硬盘端口的端口信息、与所述目标硬盘端口对应的硬盘信息以及第一预设规则,生成用于插入所述目标硬盘端口的硬盘设备的硬盘编号,包括:
根据第二预设规则,确定与所述目标硬盘设备的类型对应的目标二进制码;
从所述第一描述符表中读取所述目标处理器核心的处理器信息;
根据所述目标处理器核心的处理器信息,确定所述目标处理器核心的第一身份标识号;
根据用于插入所述目标硬盘设备的硬盘端口的端口信息,确定用于插入所述目标硬盘设备的硬盘端口的第二身份标识号;
根据预留编码、所述目标二进制码、所述第一身份标识号和所述第二身份标识号,生成所述目标硬盘设备的硬盘编号。
14.根据权利要求1所述的方法,其特征在于,所述对所述目标处理器核心进行初始化,还包括:
在根据所述第一描述符表、所述目标硬盘端口的端口信息以及与所述目标硬盘端口对应的硬盘信息,将所述多个第二描述符中与所述目标硬盘端口对应的第二目标描述符的指针以及与用于插入所述目标硬盘端口的硬盘设备对应的硬盘编号传入所述目标硬盘端口之前,初始化所述第二描述符表,以使得每个所述第二描述符处于未分配状态。
15.根据权利要求1所述的方法,其特征在于,所述对所述目标处理器核心进行初始化,还包括:
为每个所述硬盘端口分配热插拔中断向量号,并在中断映射表中建立表项。
16.一种磁盘阵列卡的启动装置,其特征在于,包括:
第一获取模块,用于获取所述磁盘阵列卡的配置参数,所述磁盘阵列卡包括集成有多个处理器核心的芯片和多个硬盘端口,所述配置参数至少包括:所述多个处理器核心的类型,以及表示所述多个处理器核心在所述磁盘阵列卡中的内存空间的地址信息;
第二获取模块,用于获取包括多个第一描述符的第一描述符表,每个所述第一描述符用于表示不同的所述处理器核心的处理器信息;
传入模块,用于根据所述配置参数,将所述多个第一描述符中第一目标描述符的指针传入与所述第一目标描述符对应的目标处理器核心;
控制模块,用于在所述磁盘阵列卡中的全部所述处理器核心传入对应的所述第一目标描述符的指针的情况下,确定所述磁盘阵列卡初始化完成,控制初始化后的所述磁盘阵列卡执行启动进程,
所述装置还包括:第三初始化模块,用于对所述目标处理器核心进行初始化;
所述第三初始化模块包括:
第四获取子模块,用于获取挂载在所述目标处理器核心上的多个设备的设备信息,所述多个设备包括多个硬盘设备;
第三获取模块,用于获取包括多个第二描述符的第二描述符表,其中,每个所述第二描述符用于表示所述多个硬盘端口中不同的目标硬盘端口的端口信息以及与不同的所述目标硬盘端口对应的硬盘信息,所述硬盘信息为用于插入所述目标硬盘端口的硬盘设备的设备信息;
第三处理模块,用于根据所述第一描述符表、所述目标硬盘端口的端口信息、与所述目标硬盘端口对应的硬盘信息以及第一预设规则,生成用于插入所述目标硬盘端口的硬盘设备的硬盘编号,并将所述多个第二描述符中与所述目标硬盘端口对应的第二目标描述符的指针以及所述硬盘编号传入所述目标硬盘端口;
第六确定模块,用于在所述目标处理器核心上挂载的全部所述硬盘设备传入对应的所述第二目标描述符的指针的情况下,确定所述目标处理器核心初始化完成。
17.根据权利要求16所述的启动装置,其特征在于,所述第四获取子模块包括:
第四处理模块,用于探测挂载在所述目标处理器核心上的多个设备;
第四获取模块,用于获取包括多个第三描述符的第三描述符表,每个所述第三描述符用于表示挂载在所述目标处理器核心上的不同设备的设备信息,所述第三描述符表示的设备信息至少包括以下之一:所述第三描述符的分配状态,与所述第三描述符对应的目标设备的类型,所述目标设备的总线地址,所述目标设备的父设备的指针,所述目标设备的子设备的指针,以及所述目标设备的兄弟设备的指针,其中,所述兄弟设备与所述目标设备具有相同父设备;
分配模块,用于根据所述多个设备的类型,从所述第三描述符表中为所述多个设备分配对应的多个所述第三描述符;
第五处理模块,用于根据与所述多个设备中每个设备对应的所述第三描述符,记录与所述每个设备对应的设备信息。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至15任一项中所述的方法的步骤。
19.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述权利要求1至15任一项中所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310218226.8A CN115904260B (zh) | 2023-03-08 | 2023-03-08 | 磁盘阵列卡的启动方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310218226.8A CN115904260B (zh) | 2023-03-08 | 2023-03-08 | 磁盘阵列卡的启动方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115904260A CN115904260A (zh) | 2023-04-04 |
CN115904260B true CN115904260B (zh) | 2023-05-23 |
Family
ID=85753763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310218226.8A Active CN115904260B (zh) | 2023-03-08 | 2023-03-08 | 磁盘阵列卡的启动方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115904260B (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108008914B (zh) * | 2016-10-27 | 2019-09-13 | 华为技术有限公司 | 一种arm设备中磁盘管理的方法、装置和arm设备 |
CN107357525A (zh) * | 2017-06-30 | 2017-11-17 | 联想(北京)有限公司 | 配置电子设备的磁盘阵列的方法及电子设备 |
CN114721583A (zh) * | 2021-01-06 | 2022-07-08 | 伊姆西Ip控股有限责任公司 | 管理存储系统的方法、设备和计算机程序产品 |
US11720272B2 (en) * | 2021-05-14 | 2023-08-08 | EMC IP Holding Company LLC | Accessing data using UUIDs with a RAID system |
CN114442930A (zh) * | 2021-12-23 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 组磁盘阵列的控制方法、装置、电子设备及可读存储介质 |
CN115543696B (zh) * | 2022-11-30 | 2023-03-17 | 苏州浪潮智能科技有限公司 | 一种磁盘阵列重构任务加速方法、系统、存储介质及设备 |
-
2023
- 2023-03-08 CN CN202310218226.8A patent/CN115904260B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115904260A (zh) | 2023-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110809760B (zh) | 资源池的管理方法、装置、资源池控制单元和通信设备 | |
US7546386B2 (en) | Method for virtual resource initialization on a physical adapter that supports virtual resources | |
CN104346317B (zh) | 共享资源访问方法和装置 | |
US7254652B2 (en) | Autonomic configuration of port speeds of components connected to an interconnection cable | |
US20060195619A1 (en) | System and method for destroying virtual resources in a logically partitioned data processing system | |
US20060195618A1 (en) | 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 | |
CN109324991B (zh) | 一种pcie设备的热插拔装置、方法、介质及系统 | |
US20060200858A1 (en) | Storage partitioning | |
CN113010265A (zh) | Pod的调度方法、调度器、存储插件及系统 | |
CN115203110A (zh) | PCIe功能及其操作方法 | |
US10838861B1 (en) | Distribution of memory address resources to bus devices in a multi-processor computing system | |
US10437523B2 (en) | Secure receive packet processing for network function virtualization applications | |
US11461024B2 (en) | Computing system and operating method thereof | |
CN108228099B (zh) | 一种数据存储的方法及装置 | |
CN115904260B (zh) | 磁盘阵列卡的启动方法、装置、存储介质及电子设备 | |
CN114153549A (zh) | 一种虚拟机创建方法及相关设备 | |
CN100412779C (zh) | 提供主机通过存储控制器端口访问设备的方法和系统 | |
US7024494B1 (en) | Method and system for configuring a peripheral card in a communications environment | |
CN116501487A (zh) | 虚拟机上的任务执行方法、装置、存储介质和电子设备 | |
CN105718589B (zh) | 访问文件的方法和装置 | |
US8316169B2 (en) | Physical to hierarchical bus translation | |
CN114281516A (zh) | 一种基于numa属性的资源分配方法及装置 | |
US11029882B2 (en) | Secure multiple server access to a non-volatile storage device | |
CN116909689B (zh) | 虚拟机热迁移方法、装置、存储介质和电子设备 | |
CN111949414B (zh) | 一种存储控制器性能优化方法、系统、终端及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |