基于RAID控制器以实现计算性能提升的数据处理装置的制作方法

文档序号:27555670发布日期:2021-11-25 00:18阅读:93来源:国知局
基于RAID控制器以实现计算性能提升的数据处理装置的制作方法
基于raid控制器以实现计算性能提升的数据处理装置
技术领域
1.本发明属于数据存储领域,具体涉及一种基于raid控制器以实现计算性能提升的数据处理装置。


背景技术:

2.独立冗余存储阵列(redundant array of independent disks,raid)能够将多个物理硬盘组合成一个逻辑硬盘,通过并行访问多个硬盘提供比单个硬盘更高的存储性能。另一方面,存储阵列能够提供数据冗余保护,通过raid结构对数据进行编码,产生冗余校验信息,和原始数据一起保存在存储阵列中,以便在故障发生后进行数据恢复。存储阵列中使用不同的raid级别,主要包括raid0、raid1、raid5和raid6等。
3.raid控制器是采用专用设计实现存储阵列功能的设备,可以解放阵列存储控制操作对服务器系统cpu和操作系统的资源占用。随着主机计算存储需求的不断提高以及固态硬盘(solid state disk,ssd)读写速度的持续提升,raid控制器的计算能力直接影响整个存储系统的处理能力和处理效率,容易成为影响存储系统处理效率的瓶颈。因此,如何设计实现更为有效的存储阵列数据处理方法成为了目前需要解决的技术问题。


技术实现要素:

4.(一)要解决的技术问题
5.本发明要解决的技术问题是:如何提供一种用于存储阵列控制器的数据处理方法与装置。
6.(二)技术方案
7.为解决上述技术问题,本发明提供一种基于raid控制器以实现计算性能提升的数据处理装置,所述数据处理装置包括:主机、raid控制器、存储设备;其中,主机为具有数据处理或计算能力的设备,其数据存储功能通过raid控制器连接存储设备;raid控制器包含处理器、主机传输接口、存储设备接口、存储器和raid计算单元;存储器包括至少一个存储介质;
8.所述raid控制器用于接收主机发起的数据访问指令并进行数据计算与处理,访问指令包括读取指令和写入指令;
9.如果访问指令是写入指令,所述数据处理装置的工作过程包括如下步骤:
10.步骤101:处理器调用主机传输接口将写入指令内容传输到存储器中,并进行指令解析,获得解析后的指令;
11.步骤102:处理器调用主机传输接口,根据解析后的指令内容将待写入的主机数据传输到已分配的存储器空间中;
12.步骤103:处理器完成raid阵列数据空间的计算,确定raid模式并配置raid计算单元;
13.步骤104:raid计算单元根据当前raid模式配置,读取存储器中的主机数据;
14.步骤105:raid计算单元对主机数据进行冗余校验数据的计算;
15.步骤106:raid计算单元将冗余校验数据写入存储器中,在存储器中组合成全部存储阵列数据;
16.步骤107:处理器配置存储设备接口对全部存储阵列数据进行拆分,分别写入存储设备中的各存储介质中进行存储;
17.步骤108:处理器完成当前写入指令的处理;
18.如果访问指令是读出指令,所述数据处理装置的工作过程包括如下步骤:
19.步骤201:处理器调用主机传输接口将读取指令内容传输到存储器中,并进行指令解析,获得解析后的指令;
20.步骤202:处理器根据解析后的指令内容,得到对应的存储设备各存储介质中所需读取数据的位置;
21.步骤203:存储设备接口将存储介质中的数据分别读出到存储器空间中;
22.步骤204:处理器根据raid阵列状态,判断下一步处理步骤,如果raid阵列处于正常状态,则进入步骤208;当raid阵列处于降级状态时,则进入步骤205;
23.步骤205:raid计算单元读取存储器中已有的数据;
24.步骤206:raid计算单元按照raid算法进行计算,得到缺失数据;
25.步骤207:raid计算单元将缺失数据写回存储器中,在存储器中组合成全部待读出数据;
26.步骤208:处理器按照读取指令要求,调用主机传输接口将所需数据传输到主机内存的对应位置;
27.步骤209:处理器完成当前指令处理。
28.其中,所述步骤204中,raid阵列处于降级状态的情况包括:raid 5模式下1个存储介质无法正常读取的情况。
29.其中,所述raid控制器中各功能单元的功能相互独立,各单元在处理流程中采用流水线方式处理;对于主机发送多个访问指令的情况下,所述多个访问指令按时序分为指令1、指令2、指令3
……

30.其中,主机传输接口接收到指令1的指令,上报处理器完成指令解析,并根据指令内容将写入数据传输到控制器的存储空间中,而后启动raid计算单元进行raid计算,即所述步骤101、步骤102、步骤103;在所述步骤104、步骤105、步骤106的计算过程中,主机传输接口即可以接收指令2的指令,并进行所述步骤101、步骤102、步骤103的解析、传输处理操作;
31.在指令1的raid冗余校验数据计算完成后,处理器启动存储设备的写入操作,即所述步骤107及步骤108;此时指令2对应的写入数据已经传输到存储空间中,从而启动指令2的raid计算,即所述步骤104、步骤105、步骤106,而同时,主机传输接口也可以接受指令3的指令,并进行解析、传输处理操作,即所述步骤101、步骤102、步骤103;
32.由此,raid控制器能够实现多条主机指令的同时处理,以提升控制器的整体处理效率。
33.其中,在实际应用中,数据在主机内存中的位置不一定是连续的,而是可能分散在内存不同位置;其中,步骤101所述的raid控制器对应的指令按照链表的方式保存指令信
息;
34.主机在内存中按照程序功能执行的顺序,会生成多个存储访问的指令,以指令1为例;指令1地址中的内容为指令1描述符的首地址,指令1描述符包括指令1的参数信息、数据块列表地址以及数据块总数量m的信息;指令1参数信息包含指令类型、逻辑硬盘中的逻辑地址lba以及数据长度信息;数据块列表中分别包含m个数据块的地址和长度。
35.其中,raid控制器接收到指令1后,在步骤102中,处理器调用主机传输接口,首先按照指令格式将指令列表的全部指令内容传输到raid控制器的存储器的存储空间中,而后根据指令内容完成主机内存传输与raid控制器的存储器之间的数据传输;
36.主机传输接口使用直接内存存取方式来读取数据;当raid控制器发送写指令时,主机传输接口根据指令类型判断将数据应从主机内存传输到raid控制器的存储器,根据数据总长度在存储器中分配对应的存储空间;首先获取到数据块1的地址和长度,将对应位置的数据传输到存储器;传输完成后,自动读取数据块2的地址和长度,将对应位置的数据继续传输到存储器;当遍历所有的数据块m后,完成全部的数据传输操作;此方法可以减少raid控制器的计算负担,提升传输效率;读指令与上述操作方向相反,此处不再赘述。
37.其中,按照raid阵列格式规定,连续的数据块被分割成多个条带进行存储,每个条带中按照raid数据介质的数量分成多个数据单元;步骤104中raid计算单元按照既定raid格式读取数据单元内容,步骤105计算raid冗余数据,然后步骤106将冗余数据1写回条带中的设定位置;条带2/3/4依次操作,最终完成全部冗余数据的生成操作;以raid5格式为例,如果包含3个数据盘空间和1个冗余校验盘空间,则计算公式如下:
38.冗余数据1=数据单元1xor数据单元2xor数据单元3。
39.其中,当写入数据和冗余数据准备好后,根据raid格式要求,冗余数据需要分散到不同的存储介质上,这样可以避免单个存储介质的访问量显著增大;继续以raid5格式为例,步骤107中按照轮转循环的方式,将冗余数据1写入存储介质4中,冗余数据2写入存储介质3中,冗余数据3写入存储介质2中,冗余数据4写入存储介质1中,其他数据单元按照正常顺序放在各存储介质中;确定写入对应关系后,处理器调用存储设备接口,执行存储介质的数据写入操作,完成raid控制器的写入指令。
40.其中,所述raid控制器包括的各个单元具体由硬件实现;
41.raid控制器的各单元的实现方式包括:通过专用集成电路实现,或通过可编程逻辑器件实现;
42.其中,所述pld的实现方式包括复杂程序逻辑器件、现场可编程门阵列、通用阵列逻辑或其任意组合。
43.其中,所述存储器可能是高速缓存或者片外随机存储器;
44.所述存储介质是指存储数据的载体,其包括固态硬盘或机械硬盘;硬盘接口类型包括串行连接的小型计算机系统接口硬盘、串行高级技术附件硬盘。
45.其中,所述主机与raid控制器之间采用高速传输接口协议实现通信,包括pci、pcie、nvme、sata、sas、以太网或者无线传输接口。
46.(三)有益效果
47.本发明公开了一种用于存储阵列控制器的数据处理方法和装置,能够实现数据存储和raid阵列管理功能,有效分担存储系统的主机计算压力,提升存储系统的整体计算性
能。
48.第一方面,本发明提供一种数据处理方法,应用于包含存储阵列处理功能的raid控制器。raid控制器根据主机发送的数据存储访问指令,实现对存储设备的数据读取和写入操作,在访问操作过程中完成冗余校验数据计算和数据并行传输处理功能。
49.如果是数据写入指令,raid控制器根据指令内容,接收并暂存写入数据,然后计算出写入数据的冗余校验数据信息,根据raid阵列配置将写入数据和校验数据分别写入到对应的存储介质中的逻辑地址。
50.如果是数据读出指令,raid控制器根据指令内容,计算需要读取的数据在各存储介质中的逻辑地址,获取到数据后重新组合成完整数据,发送给主机完成数据读取。
51.通过实施本发明,raid控制器能够生成冗余校验数据,在存储设备或数据异常情况下实现对数据完整性的保护。另外通过将主机的数据访问指令按照确定规则拆分成多个数据访问子指令,将不同数据访问子指令同时发送给多个存储介质进行处理。
52.raid控制器处理流程的各阶段可以实现流水化处理,以写入指令为例,当raid控制器计算第一条写入指令的冗余校验数据信息时,可以同时启动第二条写入指令的数据接收操作,并将数据传输到独立的存储器空间中;而当第一条写入指令的数据启动存储介质的写入操作时,也就可以启动第二条写入指令的冗余校验数据信息计算操作。采用这种方法可以有效提升整体的raid处理性能,宏观上达到多操作并行处理的效果。
53.raid控制器可以按照链表形式调用dma自动处理数据,并按照raid格式要求无需处理器干预,此方法可以减少raid控制器的计算负担,避免软硬件频繁调度导致性能消耗,提升传输效率。
54.第二方面,本发明提供了一种数据处理装置,所述装置包括用于执行如上第一方面或第一方面的任意可能的实施方式中所描述的方法的功能模块或单元。
55.第三方面,本发明提供了一种用于raid控制流程的计算机程序,当其在raid控制器上运行时,使得控制器执行上述各方面所述的方法。
56.与现有技术相比较,本发明的有益效果在于:
57.(1)能够实现独立的raid控制功能,实现存储阵列的多介质并行访问和数据冗余保护功能。
58.(2)主机数据传输采用专用接口单元进行处理和自动数据重组,提升数据传输能力。
59.(3)各功能单元相互独立,适于硬件化实现。
60.(4)各处理单元能够通过处理器调度,实现流水线处理,提升系统处理效率。
附图说明
61.图1为本发明raid存储系统示意图。
62.图2为本发明raid指令处理流程示意图。
63.图3为本发明指令内容示意图。
64.图4为本发明存储器中的raid计算示意图。
65.图5为本发明raid存储示意图。
具体实施方式
66.为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
67.为解决上述技术问题,本发明提供一种基于raid控制器以实现计算性能提升的数据处理装置,所述数据处理装置包括:主机、raid控制器、存储设备;其中,主机为具有数据处理或计算能力的设备,其数据存储功能通过raid控制器连接存储设备;raid控制器包含处理器、主机传输接口、存储设备接口、存储器和raid计算单元,如图1所示;存储器包括至少一个存储介质;
68.所述raid控制器用于接收主机发起的数据访问指令并进行数据计算与处理,访问指令包括读取指令和写入指令;
69.如果访问指令是写入指令,所述数据处理装置的工作过程包括如下步骤:
70.步骤101:处理器调用主机传输接口将写入指令内容传输到存储器中,并进行指令解析,获得解析后的指令;
71.步骤102:处理器调用主机传输接口,根据解析后的指令内容将待写入的主机数据传输到已分配的存储器空间中;
72.步骤103:处理器完成raid阵列数据空间的计算,确定raid模式并配置raid计算单元;
73.步骤104:raid计算单元根据当前raid模式配置,读取存储器中的主机数据;
74.步骤105:raid计算单元对主机数据进行冗余校验数据的计算;
75.步骤106:raid计算单元将冗余校验数据写入存储器中,在存储器中组合成全部存储阵列数据;
76.步骤107:处理器配置存储设备接口对全部存储阵列数据进行拆分,分别写入存储设备中的各存储介质中进行存储;
77.步骤108:处理器完成当前写入指令的处理;
78.如果访问指令是读出指令,所述数据处理装置的工作过程包括如下步骤:
79.步骤201:处理器调用主机传输接口将读取指令内容传输到存储器中,并进行指令解析,获得解析后的指令;
80.步骤202:处理器根据解析后的指令内容,得到对应的存储设备各存储介质中所需读取数据的位置;
81.步骤203:存储设备接口将存储介质中的数据分别读出到存储器空间中;
82.步骤204:处理器根据raid阵列状态,判断下一步处理步骤,如果raid阵列处于正常状态,则进入步骤208;当raid阵列处于降级状态时,则进入步骤205;
83.步骤205:raid计算单元读取存储器中已有的数据;
84.步骤206:raid计算单元按照raid算法进行计算,得到缺失数据;
85.步骤207:raid计算单元将缺失数据写回存储器中,在存储器中组合成全部待读出数据;
86.步骤208:处理器按照读取指令要求,调用主机传输接口将所需数据传输到主机内存的对应位置;
87.步骤209:处理器完成当前指令处理。
88.其中,所述步骤204中,raid阵列处于降级状态的情况包括:raid 5模式下1个存储介质无法正常读取的情况。
89.其中,所述raid控制器中各功能单元的功能相互独立,各单元在处理流程中采用流水线方式处理,如图2所示;对于主机发送多个访问指令的情况下,所述多个访问指令按时序分为指令1、指令2、指令3
……

90.其中,主机传输接口接收到指令1的指令,上报处理器完成指令解析,并根据指令内容将写入数据传输到控制器的存储空间中,而后启动raid计算单元进行raid计算,即所述步骤101、步骤102、步骤103;在所述步骤104、步骤105、步骤106的计算过程中,主机传输接口即可以接收指令2的指令,并进行所述步骤101、步骤102、步骤103的解析、传输处理操作;
91.在指令1的raid冗余校验数据计算完成后,处理器启动存储设备的写入操作,即所述步骤107及步骤108;此时指令2对应的写入数据已经传输到存储空间中,从而启动指令2的raid计算,即所述步骤104、步骤105、步骤106,而同时,主机传输接口也可以接受指令3的指令,并进行解析、传输处理操作,即所述步骤101、步骤102、步骤103;
92.由此,raid控制器能够实现多条主机指令的同时处理,以提升控制器的整体处理效率。
93.其中,在实际应用中,数据在主机内存中的位置不一定是连续的,而是可能分散在内存不同位置;其中,一种可能的情况是步骤101所述的raid控制器对应的指令按照链表的方式保存指令信息,如图3所示;
94.主机在内存中按照程序功能执行的顺序,会生成多个存储访问的指令,以指令1为例;指令1地址中的内容为指令1描述符的首地址,指令1描述符包括指令1的参数信息、数据块列表地址以及数据块总数量m的信息;指令1参数信息包含指令类型、逻辑硬盘中的逻辑地址lba以及数据长度信息;数据块列表中分别包含m个数据块的地址和长度。
95.其中,raid控制器接收到指令1后,在步骤102中,处理器调用主机传输接口,首先按照指令格式将指令列表的全部指令内容传输到raid控制器的存储器的存储空间中,而后根据指令内容完成主机内存传输与raid控制器的存储器之间的数据传输;
96.主机传输接口使用直接内存存取(direct memory access,dma)方式来读取数据;例如,当raid控制器发送写指令时,主机传输接口根据指令类型判断将数据应从主机内存传输到raid控制器的存储器,根据数据总长度在存储器中分配对应的存储空间;首先获取到数据块1的地址和长度,将对应位置的数据传输到存储器;传输完成后,自动读取数据块2的地址和长度,将对应位置的数据继续传输到存储器;当遍历所有的数据块m后,完成全部的数据传输操作;此方法可以减少raid控制器的计算负担,提升传输效率;读指令与上述操作方向相反,此处不再赘述。
97.其中,按照raid阵列格式规定,连续的数据块被分割成多个条带进行存储,每个条带中按照raid数据介质的数量分成多个数据单元,如图4所示;步骤104中raid计算单元按照既定raid格式读取数据单元内容,步骤105计算raid冗余数据,然后步骤106将冗余数据1写回图中条带中的设定位置;条带2/3/4依次操作,最终完成全部冗余数据的生成操作;以raid5格式为例,如果包含3个数据盘空间和1个冗余校验盘空间,则计算公式如下:
98.冗余数据1=数据单元1xor数据单元2xor数据单元3。
99.其中,当写入数据和冗余数据准备好后,根据raid格式要求,冗余数据需要分散到不同的存储介质上,这样可以避免单个存储介质的访问量显著增大;继续以raid5格式为例,步骤107中按照轮转循环的方式,将冗余数据1写入存储介质4中,冗余数据2写入存储介质3中,冗余数据3写入存储介质2中,冗余数据4写入存储介质1中,其他数据单元按照正常顺序放在各存储介质中,如下图5所示;确定写入对应关系后,处理器调用存储设备接口,执行存储介质的数据写入操作,完成raid控制器的写入指令。
100.其中,在实际应用中,所述raid控制器包括的各个单元具体可由硬件或软件代码实现;
101.例如,图示中raid控制器的各单元的实现方式包括:通过专用集成电路(application specific integrated circuit,asic)实现,或通过可编程逻辑器件(programmable logic device,pld)实现;
102.其中,所述pld的实现方式包括复杂程序逻辑器件(complex programmable logical device,cpld)、现场可编程门阵列(field

programmable gate array,fpga)、通用阵列逻辑(generic array logic,gal)或其任意组合。
103.同时,也可以通过软件实现raid控制器的相关功能,该raid控制器及其各个单元也可为软件单元。
104.其中,所述存储器可能是高速缓存或者片外随机存储器;
105.所述存储介质是指存储数据的载体,其包括固态硬盘或机械硬盘;硬盘接口类型包括串行连接的小型计算机系统接口(serial attached small computer system interface,sas)硬盘、串行高级技术附件(serial advanced technology attachment,sata)硬盘。
106.其中,所述主机与raid控制器之间采用高速传输接口协议实现通信,包括pci、pcie、nvme、sata、sas、以太网或者无线传输接口。
107.此外,本发明还提供一种用于存储阵列控制器的数据处理方法所述数据处理方法基于数据处理装置来实施,所述数据处理装置包括:主机、raid控制器、存储设备;其中,主机为具有数据处理或计算能力的设备,其数据存储功能通过raid控制器连接存储设备;raid控制器包含处理器、主机传输接口、存储设备接口、存储器和raid计算单元,如图1所示;存储器包括至少一个存储介质;
108.所述raid控制器用于接收主机发起的数据访问指令并进行数据计算与处理,访问指令包括读取指令和写入指令;
109.如果访问指令是写入指令,所述数据处理方法按照以下步骤进行处理:
110.步骤101:处理器调用主机传输接口将写入指令内容传输到存储器中,并进行指令解析,获得解析后的指令;
111.步骤102:处理器调用主机传输接口,根据解析后的指令内容将待写入的主机数据传输到已分配的存储器空间中;
112.步骤103:处理器完成raid阵列数据空间的计算,确定raid模式并配置raid计算单元;
113.步骤104:raid计算单元根据当前raid模式配置,读取存储器中的主机数据;
114.步骤105:raid计算单元对主机数据进行冗余校验数据的计算;
115.步骤106:raid计算单元将冗余校验数据写入存储器中,在存储器中组合成全部存储阵列数据;
116.步骤107:处理器配置存储设备接口对全部存储阵列数据进行拆分,分别写入存储设备中的各存储介质中进行存储;
117.步骤108:处理器完成当前写入指令的处理;
118.如果访问指令是读出指令,所述数据处理方法按照以下步骤进行处理:
119.步骤201:处理器调用主机传输接口将读取指令内容传输到存储器中,并进行指令解析,获得解析后的指令;
120.步骤202:处理器根据解析后的指令内容,得到对应的存储设备各存储介质中所需读取数据的位置;
121.步骤203:存储设备接口将存储介质中的数据分别读出到存储器空间中;
122.步骤204:处理器根据raid阵列状态,判断下一步处理步骤,如果raid阵列处于正常状态,则进入步骤208;当raid阵列处于降级状态时,则进入步骤205;
123.步骤205:raid计算单元读取存储器中已有的数据;
124.步骤206:raid计算单元按照raid算法进行计算,得到缺失数据;
125.步骤207:raid计算单元将缺失数据写回存储器中,在存储器中组合成全部待读出数据;
126.步骤208:处理器按照读取指令要求,调用主机传输接口将所需数据传输到主机内存的对应位置;
127.步骤209:处理器完成当前指令处理。
128.其中,所述步骤204中,raid阵列处于降级状态的情况包括:raid 5模式下1个存储介质无法正常读取的情况。
129.其中,所述raid控制器中各功能单元的功能相互独立,各单元在处理流程中采用流水线方式处理,如图2所示;对于主机发送多个访问指令的情况下,所述多个访问指令按时序分为指令1、指令2、指令3
……

130.其中,主机传输接口接收到指令1的指令,上报处理器完成指令解析,并根据指令内容将写入数据传输到控制器的存储空间中,而后启动raid计算单元进行raid计算,即所述步骤101、步骤102、步骤103;在所述步骤104、步骤105、步骤106的计算过程中,主机传输接口即可以接收指令2的指令,并进行所述步骤101、步骤102、步骤103的解析、传输处理操作;
131.在指令1的raid冗余校验数据计算完成后,处理器启动存储设备的写入操作,即所述步骤107及步骤108;此时指令2对应的写入数据已经传输到存储空间中,从而启动指令2的raid计算,即所述步骤104、步骤105、步骤106,而同时,主机传输接口也可以接受指令3的指令,并进行解析、传输处理操作,即所述步骤101、步骤102、步骤103;
132.由此,raid控制器能够实现多条主机指令的同时处理,以提升控制器的整体处理效率。
133.其中,在实际应用中,数据在主机内存中的位置不一定是连续的,而是可能分散在内存不同位置;一种可能的情况是步骤101所述的raid控制器对应的指令按照链表的方式保存指令信息,如图3所示;
interface,sas)硬盘、串行高级技术附件(serial advanced technology attachment,sata)硬盘。
146.其中,所述主机与raid控制器之间采用高速传输接口协议实现通信,包括pci、pcie、nvme、sata、sas、以太网或者无线传输接口。
147.实施例1
148.本实施例中,主机为具有数据处理或计算能力的设备,其数据存储功能通过raid控制器连接存储设备。raid控制器包含处理器、主机传输接口、存储设备接口、存储器和raid计算单元,如图1所示。存储器可能是高速缓存或者片外随机存储器。
149.存储设备包括至少一个存储介质。存储介质是指存储数据的载体,其可包括但不限于固态硬盘或机械硬盘。硬盘接口类型包括串行连接的小型计算机系统接口(serial attached small computer system interface,sas)硬盘、串行高级技术附件(serial advanced technology attachment,sata)硬盘等。
150.主机与raid控制器之间通常采用高速传输接口协议实现通信,包括pci、pcie、nvme等,也不限于sata、sas、以太网或者无线传输接口等。
151.raid控制器能够接收主机发起的数据访问指令并进行数据计算与处理,访问指令包括读取和写入指令。
152.如果是写入指令,按照以下步骤进行处理:
153.步骤101:处理器调用主机传输接口将写入指令内容传输到存储器中,并进行指令解析,获得解析后的指令;
154.步骤102:处理器调用主机传输接口,根据解析后的指令内容将待写入的主机数据传输到已分配的存储器空间中;
155.步骤103:处理器完成raid阵列数据空间的计算,确定raid模式并配置raid计算单元;
156.步骤104:raid计算单元根据当前raid模式配置,读取存储器中的主机数据;
157.步骤105:raid计算单元对主机数据进行冗余校验数据的计算;
158.步骤106:raid计算单元将冗余校验数据写入存储器中,在存储器中组合成全部存储阵列数据;
159.步骤107:处理器配置存储设备接口对全部存储阵列数据进行拆分,分别写入存储设备中的各存储介质中进行存储;
160.步骤108:处理器完成当前写入指令的处理。
161.如果是读出指令,按照以下步骤进行处理:
162.步骤201:处理器调用主机传输接口将读取指令内容传输到存储器中,并进行指令解析,获得解析后的指令;
163.步骤202:处理器根据解析后的指令内容,得到对应的存储设备各存储介质中所需读取数据的位置;
164.步骤203:存储设备接口将存储介质中的数据分别读出到存储器空间中;
165.步骤204:处理器根据raid阵列状态,判断下一步处理步骤,如果raid阵列处于正常状态,则进入步骤208;当raid阵列处于降级状态时,例如raid 5模式下1个存储介质无法正常读取,则进入步骤205;
166.步骤205:raid计算单元读取存储器中已有的数据;
167.步骤206:raid计算单元按照raid算法进行计算,得到缺失数据;
168.步骤207:raid计算单元将缺失数据写回存储器中,在存储器中组合成全部待读出数据;
169.步骤208:处理器按照读取指令要求,调用主机传输接口将所需数据传输到主机内存的对应位置;
170.步骤209:处理器完成当前指令处理。
171.raid控制器中各功能单元的功能相互独立,各单元在处理流程中采用流水线方式处理,如图2所示。主机传输接口接收到指令1的指令,上报处理器完成指令解析,并根据指令内容将写入数据传输到控制器的存储空间中,而后启动raid计算单元进行raid计算,即步骤101、步骤102、步骤103;在步骤104、步骤105、步骤106的计算过程中,主机传输接口即可以接收指令2的指令,并进行步骤101、步骤102、步骤103的解析、传输处理操作;
172.在指令1的raid冗余校验数据计算完成后,处理器启动存储设备的写入操作,即步骤107及步骤108;此时指令2对应的写入数据已经传输到存储空间中,从而启动指令2的raid计算,即步骤104、步骤105、步骤106,而主机传输接口也可以接受指令3的指令,并进行解析、传输处理操作,即步骤101、步骤102、步骤103;raid控制器能够实现多条主机指令的同时处理,以提升控制器的整体处理效率;
173.在实际应用中,数据在主机内存中的位置不一定是连续的,而是可能分散在内存不同位置;一种可能的情况是步骤101所述的raid控制器对应的指令按照链表的方式保存指令信息,如图3所示;
174.主机在内存中按照程序功能执行的顺序,会生成多个存储访问的指令,以指令1为例;指令1地址中的内容为指令1描述符的首地址,指令1描述符包括指令1的参数信息、数据块列表地址以及数据块总数量m的信息;指令1参数信息包含指令类型、逻辑硬盘中的逻辑地址lba以及数据长度信息;数据块列表中分别包含m个数据块的地址和长度;
175.raid控制器接收到指令1后,在步骤102中,处理器调用主机传输接口,首先按照指令格式将指令列表的全部指令内容传输到raid控制器的存储器的存储空间中,而后根据指令内容完成主机内存传输与raid控制器的存储器之间的数据传输;
176.主机传输接口使用直接内存存取(direct memory access,dma)方式来读取数据。例如,当raid控制器发送写指令时,主机传输接口根据指令类型判断将数据应从主机内存传输到raid控制器的存储器,根据数据总长度在存储器中分配对应的存储空间。首先获取到数据块1的地址和长度,将对应位置的数据传输到存储器。传输完成后,自动读取数据块2的地址和长度,将对应位置的数据继续传输到存储器。当遍历所有的数据块m后,完成全部的数据传输操作。此方法可以减少raid控制器的计算负担,提升传输效率。读指令与上述操作方向相反,此处不再赘述。
177.按照raid阵列格式规定,连续的数据块被分割成多个条带进行存储,每个条带中按照raid数据介质的数量分成多个数据单元,如图4所示。步骤104中raid计算单元按照既定raid格式读取数据单元内容,步骤105计算raid冗余数据,然后步骤106将冗余数据1写回图中的位置。条带2/3/4依次操作,最终完成全部冗余数据的生成操作。以raid5格式为例,如果包含3个数据盘空间和1个冗余校验盘空间,则计算公式如下:
178.冗余数据1=数据单元1xor数据单元2xor数据单元3
179.当写入数据和冗余数据准备好后,根据raid格式要求,冗余数据需要分散到不同的存储介质上,这样可以避免单个存储介质的访问量显著增大。继续以上述为例,步骤107中按照轮转循环的方式,将冗余数据1写入存储介质4中,冗余数据2写入存储介质3中,冗余数据3写入存储介质2中,冗余数据4写入存储介质1中,其他数据单元按照正常顺序放在各存储介质中,如图5所示。确定写入对应关系后,处理器调用存储设备接口,执行存储介质的数据写入操作,完成raid控制器的写入指令。
180.在实际应用中,raid控制器包括的各个单元具体可由硬件或软件代码实现。例如,图示中raid控制器的各单元可通过专用集成电路(application specific integrated circuit,asic)实现,或可编程逻辑器件(programmable logic device,pld)实现,上述pld可以是复杂程序逻辑器件(complex programmable logical device,cpld),现场可编程门阵列(field

programmable gate array,fpga),通用阵列逻辑(generic array logic,gal)或其任意组合。也可以通过软件实现raid控制器的相关功能,该raid控制器及其各个单元也可为软件单元。
181.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1