NVMe磁盘阵列数据处理方法、装置、设备及存储介质与流程

文档序号:32953896发布日期:2023-01-14 15:12阅读:441来源:国知局
NVMe磁盘阵列数据处理方法、装置、设备及存储介质与流程
nvme磁盘阵列数据处理方法、装置、设备及存储介质
技术领域
1.本技术涉及存储技术领域,更具体地说,涉及nvme磁盘阵列数据处理方法、装置、设备及存储介质。


背景技术:

2.近年来随着存储技术的高速发展,nvme(non volatile memory express,非易失性内存接口规范)设备的使用场景已经越来越广泛。nvme是一种非易失性内存主机控制器接口规范,该标准协议具有低延时、高并发以及低功耗的特性,是一种高性能、高可扩展的存储协议,用于连接主机和内存子系统。为了进一步提高nvme磁盘数据的存储性能和可靠性,一般将多个独立的nvme磁盘组成在一起形成一个大的磁盘系统,即raid(redundant array of independent disks,独立磁盘冗余阵列)组独立磁盘冗余阵列。
3.常见的raid组等级包括raid0、raid1、raid5、raid6、raid10等。raid0可以提供非常高的执行性能,基本的读写操作是单块磁盘的n倍(n为组成raid0的磁盘数)。raid1在写数据时,将同一份数据无差别的分别写到工作磁盘和镜像磁盘,具有比raid0更好的可靠性。raid5是把数据和相对应的奇偶校验信息分别存储于不同的磁盘上,兼顾了存储性能、数据安全和存储成本。raid6每个数据块有两个校验保护信息,因此数据的可靠性更高。raid10兼备了raid 1和raid 0的优点,从raid1来看,相当于写双份数据,起到了数据保障的作用,从raid0来看,数据可分为n(n为组成raid0的磁盘数)份并发的读写,保障了数据的读写效率。
4.虽然可以借助raid来保证nvme磁盘阵列的读写效率,但是在nvme磁盘阵列中依然使用nvme命令读写命令进行数据处理,由于nvme命令与nvme磁盘阵列的匹配度较差,使得nvme磁盘阵列的数据处理效率较慢。
5.综上所述,如何基于nvme命令快速对nvme磁盘阵列进行数据处理便是目前本领域技术人员亟待解决的问题。


技术实现要素:

6.本技术的目的是提供一种nvme磁盘阵列数据处理方法,其能在一定程度上解决如何基于nvme命令快速对nvme磁盘阵列进行数据处理的技术问题。本技术还提供了一种nvme磁盘阵列数据处理装置、设备及计算机可读存储介质。
7.为了实现上述目的,本技术提供如下技术方案:一种nvme磁盘阵列数据处理方法,包括:获取对目标nvme磁盘阵列进行操作的目标nvme命令,所述目标nvme磁盘阵列基于raid方法搭建;提取所述目标nvme命令中的raid参数信息;解析所述目标nvme命令的类型;若所述目标nvme命令为读写命令,则基于所述raid参数信息将所述目标nvme命令
转换为对应的raid命令,以使raid执行引擎基于所述raid命令对所述目标nvme磁盘阵列进行数据读写;若所述目标nvme命令为非读写命令,则基于所述raid参数信息将所述目标nvme命令转换为对应的异常命令,以使所述目标nvme磁盘阵列的cpu基于所述异常命令对所述目标nvme磁盘阵列进行数据处理。
8.优选的,所述基于所述raid参数信息将所述目标nvme命令转换为对应的raid命令,包括:对所述raid参数信息进行解析,得到执行引擎参数;基于所述执行引擎参数生成目标微指令序列;对所述目标微指令序列进行封装,得到所述raid命令。
9.优选的,所述对所述raid参数信息进行解析,得到执行引擎参数,包括:对所述raid参数信息进行分析,得到第一类参数;对所述第一类参数进行计算,得到第二类参数;将所述第一类参数和所述第二类参数作为所述执行引擎参数。
10.优选的,所述基于所述执行引擎参数生成目标微指令序列,包括:基于所述执行引擎参数生成对应的条带微指令;对所述条带微指令进行排序,得到原始微指令序列;对所述原始微指令序列进行优化,得到所述目标微指令序列。
11.优选的,所述基于所述执行引擎参数生成对应的条带微指令,包括:按照预设的微指令数据格式对所述执行引擎参数进行转换,得到对应的所述条带微指令;其中,所述微指令数据格式包括微指令特征区和微指令参数区;所述微指令特征区中的参数包括所述条带微指令在所述目标微指令序列中的位置、所述条带微指令的执行方式、所述条带微指令的所述raid执行引擎、所述条带微指令的调试模式、所述条带微指令的大小、所述条带微指令的执行状态;所述微指令参数区中参数包括基于所述条带微指令的所述raid执行引擎的功能确定的参数。
12.优选的,所述对所述条带微指令进行排序,得到原始微指令序列,包括:基于预设的微指令序列模板对所述条带微指令进行排序,得到所述原始微指令序列;其中,所述微指令序列模板用于根据操作场景定义对应的微指令序列,以及根据所述操作场景定义确定的微指令参数。
13.优选的,所述对所述原始微指令序列进行优化,得到所述目标微指令序列,包括:提取所述原始微指令序列中指令处理对象的特征;基于所述指令处理对象的特征,删除所述原始微指令序列中当前不使用的微指令,得到所述目标微指令序列。
14.优选的,所述对所述原始微指令序列进行优化,得到所述目标微指令序列,包括:基于所述目标nvme命令对所述原始微指令序列中的参数重新赋值,得到所述目标微指令序列。
15.优选的,所述对所述目标微指令序列进行封装,得到所述raid命令,包括:
按照预设的raid命令格式对所述目标微指令序列进行封装,得到所述raid命令;其中,所述raid命令格式包括命令特征区、原始nvme命令区、引擎通用参数区和微指令序列区;所述命令特征区用于存储命令长度、类型、生成时间、操作模式、命令异常类型;所述原始nvme命令区用于存储所述目标nvme命令;所述引擎通用参数区用于存储在所述raid命令的执行过程中、所述raid执行引擎间的交互信息;所述微指令序列区用于存储所述目标微指令序列。
16.优选的,所述基于所述raid参数信息将所述目标nvme命令转换为对应的异常命令,包括:按照预设的raid命令格式,基于所述raid参数信息将所述目标nvme命令转换为对应的所述异常命令;其中,所述raid命令格式包括命令特征区、原始nvme命令区、引擎通用参数区和微指令序列区;所述命令特征区用于存储命令长度、类型、生成时间、操作模式、命令异常类型;所述原始nvme命令区用于存储所述目标nvme命令;所述引擎通用参数区与所述微指令序列区为空。
17.优选的,所述提取所述目标nvme命令中的raid参数信息,包括:提取所述目标nvme命令中的所述raid参数信息,所述raid参数信息包括namespace信息、raid组信息和盘组信息。
18.优选的,所述基于所述raid参数信息将所述目标nvme命令转换为对应的raid命令之后,还包括:基于静态映射的方式存储所述raid命令;基于异步事件的方式通知所述raid执行引擎处理所述raid命令。
19.优选的,所述基于所述raid参数信息将所述目标nvme命令转换为对应的异常命令之后,还包括:基于静态映射的方式存储所述异常命令;基于异步事件的方式通知所述cpu处理所述异常命令。
20.一种nvme磁盘阵列数据处理装置,包括:命令获取器,用于获取对目标nvme磁盘阵列进行操作的目标nvme命令,所述目标nvme磁盘阵列基于raid方法搭建;与所述命令获取器连接的信息提取器,用于提取所述目标nvme命令中的raid参数信息;与所述信息提取器连接的任务规则检查器,用于解析所述目标nvme命令的类型;与所述任务规则检查器连接的任务派发模块,用于若所述目标nvme命令为读写命令,则将所述目标nvme命令及所述raid参数信息派发给raid命令生成引擎;若所述目标nvme命令为非读写命令,则将所述目标nvme命令及所述raid参数信息派发给异常命令生成引擎;与所述任务派发模块连接的所述raid命令生成引擎,用于基于所述raid参数信息将所述目标nvme命令转换为对应的raid命令,以使raid执行引擎基于所述raid命令对所述目标nvme磁盘阵列进行数据读写;与所述任务派发模块连接的所述异常命令生成引擎,用于基于所述raid参数信息
将所述目标nvme命令转换为对应的异常命令,以使所述目标nvme磁盘阵列的cpu基于所述异常命令对所述目标nvme磁盘阵列进行数据处理。
21.优选的,还包括:与所述raid命令生成引擎及所述异常命令生成引擎连接的命令输出仲裁器,用于输出所述raid命令或所述异常命令进行存储。
22.优选的,还包括:与所述信息提取器及所述任务派发模块连接的资源管理器,用于从命令存储器中申请存储空间;与所述命令输出仲裁器连接的所述命令存储器,用于在所述存储空间中存储所述raid命令或所述异常命令。
23.优选的,还包括:与所述命令输出仲裁器连接的任务调度器,用于对所述raid执行引擎处理所述raid命令的过程进行调度。
24.优选的,还包括:与所述信息提取器连接的寄存器,用于存储所述raid参数信息。
25.一种nvme磁盘阵列数据处理设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上任一所述nvme磁盘阵列数据处理方法的步骤。
26.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述nvme磁盘阵列数据处理方法的步骤。
27.本技术提供的一种nvme磁盘阵列数据处理方法,获取对目标nvme磁盘阵列进行操作的目标nvme命令,目标nvme磁盘阵列基于raid方法搭建;提取目标nvme命令中的raid参数信息;解析目标nvme命令的类型;若目标nvme命令为读写命令,则基于raid参数信息将目标nvme命令转换为对应的raid命令,以使raid执行引擎基于raid命令对目标nvme磁盘阵列进行数据读写;若目标nvme命令为非读写命令,则基于raid参数信息将目标nvme命令转换为对应的异常命令,以使目标nvme磁盘阵列的cpu基于异常命令对目标nvme磁盘阵列进行数据处理。本技术中,可以提取对目标nvme磁盘阵列进行操作的目标nvme命令中的raid参数,并且在目标nvme命令为读写命令时,可以基于raid参数信息将目标nvme命令转换为对应的raid命令来使raid执行引擎对其快速进行处理,在目标nvme命令为非读写命令时,可以基于raid参数信息将目标nvme命令转换为对应的异常命令来使cpu对其进行快速处理,实现了借助性能不同的raid执行引擎和cpu来针对性的对不同的nvme命令进行处理,提高了nvme命令与nvme磁盘阵列的匹配度,进而提高了nvme磁盘阵列的数据处理效率。本技术提供的一种nvme磁盘阵列数据处理装置、设备及计算机可读存储介质也解决了相应技术问题。
附图说明
28.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
29.图1为本技术实施例提供的一种nvme磁盘阵列数据处理方法的第一流程图;图2为本技术实施例提供的一种nvme磁盘阵列数据处理方法的第二流程图;图3为本技术实施例提供的一种nvme磁盘阵列数据处理方法的第三流程图;图4为微指令数据格式示意图;图5为微指令序列创建结构示意图;图6为raid命令封装格式示意图;图7为异常命令封装格式示意图;图8为异常命令与主设备cpu的交互示意图;图9为本技术实施例提供的一种nvme磁盘阵列数据处理装置的结构示意图;图10为资源池的结构示意图;图11为namespace、raid、盘组信息二级索引示意图;图12为nvme磁盘阵列数据处理装置的数据处理流程图;图13为nvme磁盘阵列数据处理装置中各器件的交互过程图;图14为多通道实现nvme命令向raid操作命令的转换示意图;图15为本技术实施例提供的一种nvme磁盘阵列数据处理设备的结构示意图;图16为本技术实施例提供的一种nvme磁盘阵列数据处理设备的另一结构示意图。
具体实施方式
30.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
31.请参阅图1,图1为本技术实施例提供的一种nvme磁盘阵列数据处理方法的第一流程图。
32.本技术实施例提供的一种nvme磁盘阵列数据处理方法,可以包括以下步骤:步骤s101:获取对目标非易失性内存接口规范磁盘阵列进行操作的目标非易失性内存接口规范命令,目标非易失性内存接口规范磁盘阵列基于独立磁盘冗余阵列方法搭建。
33.实际应用中,可以先获取对目标nvme磁盘阵列进行操作的目标nvme命令,比如可以从目标nvme磁盘阵列的主机端获取该目标nvme命令等,目标nvme命令的内容、格式、获取方式等均可以根据具体应用场景来确定,本技术在此不做具体限定。不过需要说明的是,本技术中的目标nvme磁盘阵列指的是基于raid方法搭建的磁盘阵列,也即是通过基于raid方法来对多个nvme磁盘进行组合得到的磁盘阵列,目标nvme磁盘阵列的大小及所依据的raid方法等均可以根据实际需要确定。
34.步骤s102:提取目标非易失性内存接口规范命令中的独立磁盘冗余阵列参数信息。
35.实际应用中,在获取对目标nvme磁盘阵列进行操作的目标nvme命令之后,便可以
提取目标nvme命令中的raid参数信息,以便后续基于该raid参数信息对目标nvme命令进行转换。
36.具体应用场景中,raid参数信息的类型可以根据实际需要确定,比如raid参数信息可以包括namespace信息、raid组信息和盘组信息等,具体的,在提取目标nvme命令中的raid参数信息的过程中,可以先根据目标nvme命令中的namespace(命名空间) id(标识)字段,索引对应的namespace信息,依据该信息中的raid group id来索引raid组信息,最后再根据raid组信息中的device信息,索引该raid组所涉及的盘组信息,比如物理盘组信息等。
37.需要说明的是,namespace信息、raid组信息和盘组信息的具体内容可以根据实际需要来确定,比如namespace信息可以包括当前namespace的读写特征、大小范围、对应的raid组id、有效标记等信息;raid组信息可以包括当前raid组类型、状态、特征、操作特点、盘组信息、有效标记等信息;盘组信息可以包括一个raid组中涉及盘的类型、操作通道号、物理id号、校验码、有效标记等信息。
38.步骤s103:解析目标非易失性内存接口规范命令的类型。
39.步骤s104:若目标非易失性内存接口规范命令为读写命令,则基于独立磁盘冗余阵列参数信息将目标非易失性内存接口规范命令转换为对应的独立磁盘冗余阵列命令,以使独立磁盘冗余阵列执行引擎基于独立磁盘冗余阵列命令对目标非易失性内存接口规范磁盘阵列进行数据读写。
40.步骤s105:若目标非易失性内存接口规范命令为非读写命令,则基于独立磁盘冗余阵列参数信息将目标非易失性内存接口规范命令转换为对应的异常命令,以使目标非易失性内存接口规范磁盘阵列的中央处理器基于异常命令对目标非易失性内存接口规范磁盘阵列进行数据处理。
41.实际应用中,在提取目标nvme命令中的raid参数信息之后,便可以解析目标nvme命令的类型,并根据解析结果来决定对目标nvme命令的处理方式。
42.具体应用场景中,可以根据目标nvme命令的类型将目标nvme命令分为读写命令和非读写命令,以此来针对性的对目标nvme命令进行处理,并且在目标nvme命令为读写命令的情况下,可以基于raid参数信息将目标nvme命令转换为对应的raid命令,比如转换为对raid0阵列的raid命令,转转换为对raid1阵列的raid命令,转换为对raid5阵列的raid命令,转换为对raid6阵列的raid命令、转换为对raid10阵列的raid命令等,以使raid执行引擎基于raid命令对目标nvme磁盘阵列进行数据读写;在目标nvme命令为非读写命令的情况下,可以基于raid参数信息将目标nvme命令转换为对应的异常命令,以使目标nvme磁盘阵列的cpu(central processing unit,中央处理器),比如核心cpu来基于异常命令对目标nvme磁盘阵列进行数据处理。
43.需要说明的是,本技术中的异常命令指的是与raid命令不同的命令,其还可以用目标命令、第二命令等进行表述;此外,非读写命令的nvme命令的具体类型可以根据实际需要确定,比如当nvme命令为admin命令;或当nvme命令中prp(physical region page)1非4kb对齐;或当nvme命令slba(starting logical block address)超界时;或当前namespace无效时;或当raidlevel不为raid0/raid1/raid5/raid6/raid10;或当raid组的chunksize不为64kb/128kb/256kb/512kb/1024kb时;或当raid组盘数超界时;或当io长度超界时;或当raid组raidgroupvalid为无效时;或当raid组raidstate为非正常状态时;可
以认为目标nvme命令为非读写命令等。
44.本技术提供的一种nvme磁盘阵列数据处理方法,获取对目标nvme磁盘阵列进行操作的目标nvme命令,目标nvme磁盘阵列基于raid方法搭建;提取目标nvme命令中的raid参数信息;解析目标nvme命令的类型;若目标nvme命令为读写命令,则基于raid参数信息将目标nvme命令转换为对应的raid命令,以使raid执行引擎基于raid命令对目标nvme磁盘阵列进行数据读写;若目标nvme命令为非读写命令,则基于raid参数信息将目标nvme命令转换为对应的异常命令,以使目标nvme磁盘阵列的cpu基于异常命令对目标nvme磁盘阵列进行数据处理。本技术中,可以提取对目标nvme磁盘阵列进行操作的目标nvme命令中的raid参数,并且在目标nvme命令为读写命令时,可以基于raid参数信息将目标nvme命令转换为对应的raid命令来使raid执行引擎对其快速进行处理,在目标nvme命令为非读写命令时,可以基于raid参数信息将目标nvme命令转换为对应的异常命令来使cpu对其进行快速处理,实现了借助性能不同的raid执行引擎和cpu来针对性的对不同的nvme命令进行处理,提高了nvme命令与nvme磁盘阵列的匹配度,进而提高了nvme磁盘阵列的数据处理效率。
45.请参阅图2,图2为本技术实施例提供的一种nvme磁盘阵列数据处理方法的第二流程图。
46.本技术实施例提供的一种nvme磁盘阵列数据处理方法,可以包括以下步骤:步骤s201:获取对目标非易失性内存接口规范磁盘阵列进行操作的目标非易失性内存接口规范命令,目标非易失性内存接口规范磁盘阵列基于独立磁盘冗余阵列方法搭建。
47.步骤s202:提取目标非易失性内存接口规范命令中的独立磁盘冗余阵列参数信息。
48.步骤s203:解析目标非易失性内存接口规范命令的类型。
49.步骤s204:若目标非易失性内存接口规范命令为读写命令,则对独立磁盘冗余阵列参数信息进行解析,得到执行引擎参数;基于执行引擎参数生成目标微指令序列;对目标微指令序列进行封装,得到独立磁盘冗余阵列命令,以使独立磁盘冗余阵列执行引擎基于独立磁盘冗余阵列命令对目标非易失性内存接口规范磁盘阵列进行数据读写。
50.实际应用中,在基于raid参数信息将目标nvme命令转换为对应的raid命令的过程中,可以对raid参数信息进行解析,得到执行引擎参数;再基于执行引擎参数生成能够被raid执行引擎处理的目标微指令序列;最后对目标微指令序列进行封装,得到raid命令。
51.具体应用场景中,在对raid参数信息进行解析,得到执行引擎参数的过程中,可以先对raid参数信息本身进行分析,得到第一类参数;再对第一类参数进行计算,得到raid参数信息之外的第二类参数;最后将第一类参数和第二类参数作为执行引擎参数,以得到完备的执行引擎参数。
52.需要说明的是,第二类参数的类型可以根据实际需要确定,比如第二类参数可以包括:allocdatasize,用于表征处理当前命令所需数据空间大小;datastartoffset,用于表征不同处理数据在数据空间的起始位置;alloclistsize用于表征处理当前命令所需链表空间大小;liststartoffset,用于表征不同链表在链表空间的起始位置;listmode,用于表征链表的操作模式,连续、步进、正向、反向等;nextcbposition,用于表征下一个微指令位置,当微指令序列中微指令执行可能出现分支或者跳转时,当前微指令中的参数需要该
信息;stripeid,用于表征当前命令的slba所在条带的id号;chunkoffset,用于表征当前命令的slba所在条带中的偏移量;startdevid,用于表征当前命令的slba所在起始盘id;enddevid,用于表征当前命令的结束盘id;pdevid,用于表征当前命令的slba所在条带的校验p盘的id等;本技术在此不做具体限定。
53.步骤s205:若目标非易失性内存接口规范命令为非读写命令,则基于独立磁盘冗余阵列参数信息将目标非易失性内存接口规范命令转换为对应的异常命令,以使目标非易失性内存接口规范磁盘阵列的中央处理器基于异常命令对目标非易失性内存接口规范磁盘阵列进行数据处理。
54.请参阅图3,图3为本技术实施例提供的一种nvme磁盘阵列数据处理方法的第三流程图。
55.本技术实施例提供的一种nvme磁盘阵列数据处理方法,可以包括以下步骤:步骤s301:获取对目标非易失性内存接口规范磁盘阵列进行操作的目标非易失性内存接口规范命令,目标非易失性内存接口规范磁盘阵列基于独立磁盘冗余阵列方法搭建。
56.步骤s302:提取目标非易失性内存接口规范命令中的独立磁盘冗余阵列参数信息。
57.步骤s303:解析目标非易失性内存接口规范命令的类型。
58.步骤s304:若目标非易失性内存接口规范命令为读写命令,则对独立磁盘冗余阵列参数信息进行解析,得到执行引擎参数;基于执行引擎参数生成对应的条带微指令;对条带微指令进行排序,得到原始微指令序列;对原始微指令序列进行优化,得到目标微指令序列;对目标微指令序列进行封装,得到独立磁盘冗余阵列命令,以使独立磁盘冗余阵列执行引擎基于独立磁盘冗余阵列命令对目标非易失性内存接口规范磁盘阵列进行数据读写。
59.实际应用中,在基于执行引擎参数生成目标微指令序列的过程中,可以先基于执行引擎参数生成对应的条带微指令,也即生成可被raid执行引擎处理的用于对raid条带进行处理的微指令,且本技术中的条带指的是把连续的数据分割成相同大小的数据块,把每段数据分别写入到阵列中的不同磁盘上;再对条带微指令进行排序,得到原始微指令序列;最后对原始微指令序列进行优化,得到目标微指令序列。
60.具体应用场景中,在基于执行引擎参数生成对应的条带微指令的过程中,可以按照预设的微指令数据格式对执行引擎参数进行转换,快速得到对应的条带微指令;且微指令数据格式可以包括微指令特征区和微指令参数区,其格式可以如图4所示,各个区的大小可以根据实际需要确定;微指令特征区中的参数包括条带微指令在目标微指令序列中的位置、条带微指令的执行方式、条带微指令的raid执行引擎、条带微指令的调试模式、条带微指令的大小、条带微指令的执行状态;微指令参数区中参数包括基于条带微指令的raid执行引擎的功能确定的参数。
61.具体应用场景中,在对条带微指令进行排序,得到原始微指令序列的过程中,可以基于预设的微指令序列模板对条带微指令进行排序,快速得到原始微指令序列;且微指令序列模板用于根据操作场景定义对应的条带微指令序列,以及根据操作场景定义确定的条带微指令参数。
62.需要说明的是,微指令序列模板的类型可以根据实际需要确定,比如微指令序列
模板可以包括:raid0writewriteback,用于在cache为writeback机制时raid0的写操作;raid0writewritethrough,用于在cache为writethrough机制时raid0的写操作;raid1writewriteback,用于在cache为writeback机制时raid1的写操作;raid1writewritethrough,用于在cache为writethrough机制时raid1的写操作;raid5writewriteback,用于在cache为writeback机制时raid5的写操作;raid5writewritethrough,用于在cache为writethrough机制时,raid5的写操作;raid6writewriteback,用于在cache为writeback机制时raid6的写操作;raid6writewritethrough,用于在cache为writethrough机制时raid6的写操作;raid10writewriteback,用于在cache为writeback机制时raid10的写操作;raid10writewritethrough,用于在cache为writethrough机制时raid10的写操作;raidreadwriteback,用于在cache为writeback机制raid0/raid1/raid5/raid6/raid10的读操作;raidreadwritethrough,用于在cache为writethrough机制时raid0/raid1/raid5/raid6/raid10的读操作等。
63.其中,writethrough表示写通模式,面向系统缓存的一种操作模式;writeback表示写回模式,也是面向系统缓存的一种操作模式。
64.此外,在具体应用场景中,还可以定义包括上述微指令序列模板的微指令序列模板集合,在创建原始指令序列时,可以先通过raid信息中的raidlevel、namespace信息中的writemode、nvme命令中的opcode信号组合编码选出一个微指令序列模板,如图 5所示,其中,opcode为nvme命令中关于操作模式的字段;微指令模板派发模块再根据微指令模板中的引擎id,将条带微指令发送至不同的引擎指令创建模块,同时按照微指令序列顺序将引擎id送入指令排序模块,指令排序模块输出的引擎id可确保微指令模板排序模块对不同创建完成的引擎微指令按照原先的模板顺序排放并输出,输出的结果即为原始微指令序列,以此来快速生成原始微指令序列。
65.具体应用场景中,在对原始微指令序列进行优化,得到目标微指令序列的过程中,可以提取原始微指令序列中指令处理对象的特征;基于指令处理对象的特征,删除原始微指令序列中当前不使用的条带微指令,得到目标微指令序列。比如可以根据不同微指令类型选择跳过raid执行引擎a或者raid执行引擎b的相应条带微指令;根据数据io长度特征,跳过raid执行引擎b的相应条带微指令;若raid0未跨条带或者紧邻两个条带初始磁盘id不重合时,跳过raid执行引擎b的相应条带微指令等。
66.具体应用场景中,在对原始微指令序列进行优化,得到目标微指令序列的过程中,还可以基于目标nvme命令对原始微指令序列中的参数重新赋值,得到目标微指令序列。比如可以根据数据io长度特征,修正raid执行引擎a中相应条带微指令的参数信息;根据io特征,调整条带微指令中的相关并发信息等。
67.具体应用场景中,在对目标微指令序列进行封装,得到raid命令的过程中,还可以按照预设的raid命令格式对目标微指令序列进行封装,快速得到raid命令,如图6所示等;且raid命令格式可以包括命令特征区、原始nvme命令区、引擎通用参数区和微指令序列区,
各个区的大小等可以根据实际需要确定;命令特征区用于存储命令长度、类型、生成时间、操作模式、命令异常类型;原始nvme命令区用于存储目标nvme命令;引擎通用参数区用于存储在raid命令的执行过程中、raid执行引擎间的交互信息;微指令序列区用于存储目标微指令序列。
68.步骤s305:若目标非易失性内存接口规范命令为非读写命令,则基于独立磁盘冗余阵列参数信息将目标非易失性内存接口规范命令转换为对应的异常命令,以使目标非易失性内存接口规范磁盘阵列的中央处理器基于异常命令对目标非易失性内存接口规范磁盘阵列进行数据处理。
69.具体应用场景中,在基于raid参数信息将目标nvme命令转换为对应的异常命令的过程中,还可以按照预设的raid命令格式,基于raid参数信息快速将目标nvme命令转换为对应的异常命令,如图7所示等;且raid命令格式可以包括命令特征区、原始nvme命令区、引擎通用参数区和微指令序列区,各个区的大小等可以根据实际需要确定;命令特征区用于存储命令长度、类型、生成时间、操作模式、命令异常类型;原始nvme命令区用于存储目标nvme命令;引擎通用参数区与微指令序列区为空。
70.具体应用场景中,在基于raid参数信息将目标nvme命令转换为对应的raid命令之后,还可以基于静态映射的方式存储raid命令;基于异步事件的方式通知raid执行引擎处理raid命令。相应的,在基于raid参数信息将目标nvme命令转换为对应的异常命令之后,还可以基于静态映射的方式存储异常命令;基于异步事件的方式通知cpu处理异常命令;以条理化的借助raid执行引擎或cpu来处理raid命令或异常命令,其过程可以如图8所示,其中,异常命令事件格式可以包括异常命令类型和资源标记等,其中的装置指的是实现本技术nvme磁盘阵列数据处理方法的装置。需要说明的是静态映射指的是对命令写入地址进行静态映射,比如通过存储空间基地址和指令标记的方式实现静态映射等。
71.请参阅图9,图9为本技术实施例提供的一种nvme磁盘阵列数据处理装置的结构示意图。
72.本技术实施例提供的一种nvme磁盘阵列数据处理装置,可以包括:命令获取器,用于获取对目标nvme磁盘阵列进行操作的目标nvme命令,目标nvme磁盘阵列基于raid方法搭建;与命令获取器连接的信息提取器,用于提取目标nvme命令中的raid参数信息;与信息提取器连接的任务规则检查器,用于解析目标nvme命令的类型;与任务规则检查器连接的任务派发模块,用于若目标nvme命令为读写命令,则将目标nvme命令及raid参数信息派发给raid命令生成引擎;若目标nvme命令为非读写命令,则将目标nvme命令及raid参数信息派发给异常命令生成引擎;与任务派发模块连接的raid命令生成引擎,用于基于raid参数信息将目标nvme命令转换为对应的raid命令,以使raid执行引擎基于raid命令对目标nvme磁盘阵列进行数据读写;与任务派发模块连接的异常命令生成引擎,用于基于raid参数信息将目标nvme命令转换为对应的异常命令,以使目标nvme磁盘阵列的cpu基于异常命令对目标nvme磁盘阵列进行数据处理。
73.本技术实施例提供的nvme磁盘阵列数据处理装置中各个器件的相关功能可以参
阅上述实施例,在此不再赘述。
74.实际应用中,本技术实施例提供的nvme磁盘阵列数据处理装置中,还可以包括:与raid命令生成引擎及异常命令生成引擎连接的命令输出仲裁器,用于输出raid命令或异常命令进行存储。具体的,命令输出仲裁器可以以rr(roundrubin,轮询仲裁方式)或wr(weightrubin,带有权重的仲裁方式)的方式输出raid命令或异常命令等。
75.实际应用中,本技术实施例提供的nvme磁盘阵列数据处理装置中,还可以包括:与信息提取器及任务派发模块连接的资源管理器,用于从命令存储器中申请存储空间;与命令输出仲裁器连接的命令存储器,用于在存储空间中存储raid命令或异常命令。具体的,资源管理器可以采用标记的方式对片上命令存储器空间进行管理,统一资源标记的派发、使用和回收控制,如图10所示,资源管理器可以通过资源代理,对资源标记进行预申请,当系统有资源请求时,将预申请的资源标记反馈给申请者,资源申请者完成作业后,将资源标记通过资源代理还回资源池,这样可以实现资源标记的动态高效利用。
76.实际应用中,本技术实施例提供的nvme磁盘阵列数据处理装置中,还可以包括:与命令输出仲裁器连接的任务调度器,用于对raid执行引擎处理raid命令的过程进行调度。
77.实际应用中,本技术实施例提供的nvme磁盘阵列数据处理装置中,还可以包括:与信息提取器连接的寄存器,用于存储raid参数信息。当然,也可以借助存储器来存储raid参数信息,本技术在此不做具体限定。
78.具体应用场景中,可以在nvme磁盘阵列初始化时,在寄存器中划定namespace信息、raid组信息和盘组信息的存储空间,且namespace信息、raid组信息和盘组信息可以采用级联方式连接,如图11所示,其中,namespace信息可以是一组或者多组,当有多组namespace信息时,通过nvme命令中的nsid(namespaceid号)字段选出对应的信息;raid组信息可以是一组或者多组,当有多组raid组信息时,通过前一级namespace信息中的raidgroup选出;盘组信息包含多个raid组对应的盘信息,组数和raid组数目相等,通过前一级namespace信息中的raidgroup选出。此外,namespace信息的内容可以见表1,raid信息的内容可以见表2,盘信息的内容可以见表3等。
79.表1namespace的信息表2raid的信息
表3盘的信息实际应用场景中,可以根据需要灵活调整本技术中nvme磁盘阵列数据处理装置的数据处理流程和其内部各器件间的信息交互,比如nvme磁盘阵列数据处理装置的数据处理流程可以如图12所示;nvme磁盘阵列数据处理装置中各器件的交互过程可以如图13所示等。
80.其中,nvme磁盘阵列数据处理装置中各器件的交互过程中的各个步骤如下:s0:信息初始化,即在初始化时配置寄存器文件,将namespace信息、raid信息、盘组信息写入;s1:获取nvme命令,即nvme磁盘阵列数据处理装置从主设备端获取nvme命令;s2_1:索引raid组id,即根据nvme命令中的namespaceid字段,索引对应的namespace信息,该信息中的raidgroupid用于索引raid组信息;s2_2:索引盘组id,即根据raid组信息中的device信息,索引该raid组所涉及的物理盘组信息;s2_3:资源申请,即在信息获取的时候,向资源管理器申请命令存储器的存储空
间;s2_4:规则判断信息,即将涉及规则判断的信息送入任务规则检查器,以依据这些信息筛选可由该nvme磁盘阵列数据处理装置转换的命令和不可由该nvme磁盘阵列数据处理装置转换的命令;s3_1:规则判断结果,即任务规则检查器将规则判断结果送入任务派发器,任务派发器根据该结果判断将当前任务派发给raid命令生成引擎或者异常命令生成引擎;s3_2:资源标记信息,即资源标记信息被任务派发器派发给raid命令生成引擎或者异常命令生成引擎,引擎根据资源标记信息将生成的命令写入命令存储器的指定位置;s4_1:可转换的nvme命令及相关信息,即任务派发器将可转换的nvme命令及相关信息送入raid命令生成引擎,相关信息指在s2阶段获取的namespace信息、raid组信息和盘组信息;s4_2:执行引擎参数及命令特征信息,即命令解析器根据nvme命令、namespace信息、raid组信息和盘组信息分析计算得到执行引擎参数信息,这些参数信息用于组成条带微指令;且得到命令特征信息,这些信息用于条带微指令序列优化模块对微指令或微指令序列进行优化;s4_3:原始序列,即条带微指令序列生成器将s4_2阶段生成的执行引擎参数信息组成条带微指令,并按照一定顺序将这些微指令排列成原始的微指令序列;s4_4:优化序列,即条带微指令序列优化器根据s4_2阶段生成的命令特征信息优化原始的微指令序列,包括序列中微指令的删除和微指令中参数的调整等操作;优化后的微指令序列送入指令组装器进行最终raid命令格式的封装;s5_1:不可转换的nvme命令及相关信息,即任务派发器将不可转换的nvme命令及相关信息送入异常命令生成引擎,相关信息指在s2、s3阶段获取的namespace信息、raid组信息、盘组信息和规则判断结果信息;s5_2:异常命令信息,即从nvme命令、namespace信息、raid组信息、盘组信息和规则判断结果信息中提取部分或者全部送入指令组装器,指令组装器进行最终异常命令格式的封装。
81.s5_3:异常模式信息,即异常指令反馈模块采用同步或者异步通信机制,将异常命令通知给系统其他设备,比如通知给cpu;s6_1:正常raid命令,即将s4阶段最终的正常raid命令送入命令输出仲裁器。
82.s6_2:异常命令,即将s5阶段最终的异常命令送入命令输出仲裁器。
83.s6_3:raid命令,即命令输出仲裁器按照rr或者wr仲裁模式,输出raid命令,raid命令按照s3阶段获得的资源标记信息写入命令存储器的指定位置;s6_4:raid命令驱动,即在完成raid命令的存储后,由nvme磁盘阵列数据处理装置(raid命令生成引擎、 异常命令生成引擎)驱动任务调度器执行命令;s6_5:异常命令通知,即当s6_2阶段产生异常命令后,通知cpu处理该异常命令;s7:raid命令调度,即任务调度器调度raid执行引擎执行任务。
84.s8:raid子任务执行,即raid执行引擎根据命令存储器中的命令执行任务。
85.s9_1:提交nvme命令,即raid执行引擎完成命令执行后,将nvme命令结束信息提交给主端。
86.s9_2:资源回收,即raid执行引擎完成命令执行后,将资源标记信息归还给资源管理器,命令存储器本次命令空间释放。
87.实际应用场景中,还可以根据需要灵活调整本技术中nvme磁盘阵列数据处理装置的结构,比如可以采用多通道的方式实现多命令的并发转换,提高nvme磁盘阵列数据处理装置的执行性能,如图14所示,nvme磁盘阵列数据处理装置内集成两个raid命令生成引擎,可以分别对两个nvme命令实现转换,在引擎内部,并发集成两路条带微指令序列生成器和优化器,可以同时对两个独立的raid条带进行命令转换,这样不仅可以简化命令解析设计、条带微指令序列模板,还可以提高整个nvme命令转换raid操作命令的速度。
88.本技术还提供了一种nvme磁盘阵列数据处理设备及计算机可读存储介质,其均具有本技术实施例提供的一种nvme磁盘阵列数据处理方法具有的对应效果。请参阅图15,图15为本技术实施例提供的一种nvme磁盘阵列数据处理设备的结构示意图。
89.本技术实施例提供的一种nvme磁盘阵列数据处理设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如上任一实施例所描述nvme磁盘阵列数据处理方法的步骤。
90.请参阅图16,本技术实施例提供的另一种nvme磁盘阵列数据处理设备中还可以包括:与处理器202连接的输入端口203,用于传输外界输入的命令至处理器202;与处理器202连接的显示单元204,用于显示处理器202的处理结果至外界;与处理器202连接的通信模块205,用于实现nvme磁盘阵列数据处理设备与外界的通信。显示单元204可以为显示面板、激光扫描使显示器等;通信模块205所采用的通信方式包括但不局限于移动高清链接技术(hml)、通用串行总线(usb)、高清多媒体接口(hdmi)、无线连接:无线保真技术(wifi)、蓝牙通信技术、低功耗蓝牙通信技术、基于ieee802.11s的通信技术。
91.本技术实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如上任一实施例所描述nvme磁盘阵列数据处理方法的步骤。
92.本技术所涉及的计算机可读存储介质包括随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质。
93.本技术实施例提供的nvme磁盘阵列数据处理装置、设备及计算机可读存储介质中相关部分的说明请参见本技术实施例提供的nvme磁盘阵列数据处理方法中对应部分的详细说明,在此不再赘述。另外,本技术实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
94.还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
95.对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本技术。对这
些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1