CN117289871A - 一种基于fpga实现的raid存储系统及方法 - Google Patents
一种基于fpga实现的raid存储系统及方法 Download PDFInfo
- Publication number
- CN117289871A CN117289871A CN202311305529.XA CN202311305529A CN117289871A CN 117289871 A CN117289871 A CN 117289871A CN 202311305529 A CN202311305529 A CN 202311305529A CN 117289871 A CN117289871 A CN 117289871A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- algorithm processing
- storage
- processing module
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000012545 processing Methods 0.000 claims abstract description 132
- 239000007787 solid Substances 0.000 claims abstract description 82
- 230000003993 interaction Effects 0.000 claims description 34
- 238000011084 recovery Methods 0.000 claims description 15
- 238000012795 verification Methods 0.000 claims description 13
- 238000013500 data storage Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- 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
Abstract
本申请涉及一种基于FPGA实现的RAID存储系统及方法,涉及FPGA数据安全存储技术领域,其包括固态硬盘控制器,固态硬盘控制器上挂载有运行内存设备与存储内存设备。数据存储时,将数据输入到固态硬盘控制器中,数据经过固态硬盘控制器的处理后被写入到运行内存设备中,待运行内存设备达到约定的数量级后,固态硬盘控制器将数据转存到存储内存设备中。本申请在数据的恢复时,RAID算法处理模块能够根据外部给出的RAID类型指示进行工作,大大减小了固态硬盘使用过程中的运行功耗。
Description
技术领域
本申请涉及FPGA数据安全存储技术领域,尤其是涉及一种基于FPGA实现的RAID存储系统及方法。
背景技术
目前,FPGA(可编程逻辑门阵列)是一种可编程的集成电路(IC)设备,具有丰富的逻辑和计算资源,并具备行执行程序的能力,可以实现高度的自由,定制芯片行为的能力。它可以在硬件级别上实现数字电路功能,与固定功能的硬件电路不同,FPGA允许用户根据其需求重新配置其内部逻辑门阵列,从而实现不同的数字电路功能。
FPGA包含大量的可编程逻辑资源,例如逻辑门、寄存器和算术逻辑单元,以及可用于内部连接的可编程连线和互连资源。这些资源可以根据特定的应用需求进行配置,从而创建各种不同的数字电路,如处理器、信号处理器、加密算法、通信接口、图像处理器等。
RAID(冗余阵列独立磁盘)是一种用于数据存储的技术,它将多个硬盘驱动器组合在一起,以提高数据存储的性能、可用性和/或容错性。RAID技术通过将数据分布存储在多个磁盘上,实现了数据冗余、负载均衡和数据备份,从而改善了存储系统的可靠性。
不同的RAID级别(通常标识为RAID 0、RAID 1、RAID 5、RAID 6等)采用不同的数据存储和冗余策略。
RAID算法作为业内通用的存储算法,确保了各种使用场景下,不同的数据安全等级的存储要求。
在当前的RAID算法的实现主要有两种方式:一个是基于CPU上软件程序实现的算法,另一种是基于专门的RAID芯片实现。
针对上述中的相关技术,发明人认为将上述RAID算法运用到损坏存储芯片的数据恢复中时,基于CPUC软件程序实现的算法,由于进行了大量的“异或”运算,导致功耗及CPU负载较高,算法效率数据处理速率也较低,不适用于低功耗场景下的高速存储,基于专门的RAID芯片实现,该方法定制化程度较高,成本较高,国产化程度较低。
发明内容
本发明所要解决的技术问题在于:提供一种基于FPGA实现的RAID存储系统及方法,它解决了在对损坏存储芯片数据恢复的过程中,RAID算法的实现基于CPU上软件程序以及基于专门的RAID芯片实现负载及成本较高的技术问题。
为实现上述目的,本发明提供了如下技术方案:
一种基于FPGA实现的RAID存储系统,包括一个基于FPGA的固态硬盘控制器,所述固态硬盘控制器内至少连接两个RAID算法处理模块,所述固态硬盘控制器上连接有接口FIFO模块以及数据交互模块;所述固态硬盘控制器上还挂载有运行内存设备以及存储内存设备,所述运行内存设备内安装有若干个运行内存模块,所述存储内存设备内安装有若干个存储内存模块;接口FIFO模块,按照先进先出的原则将数据导入到固态硬盘控制器内;RAID算法处理模块,根据固态硬盘控制器收到的外部RAID类型的指示后,对应RAID算法处理模块对导入的数据进行处理;数据交互模块,实现RAID算法处理模块与运行内存设备、存储内存设备之间的数据交互;运行内存模块,用于数据的缓存及不同存储内存模块数据的区分;存储内存模块,对运行内存模块内的数据进行存储。
通过上述技术方案,在进行数据存储时,将数据通过接口FIFO模块导入到固态硬盘控制器内,然后固态硬盘控制器内的RAID算法处理模块,根据固态硬盘控制器收到的外部RAID类型的指示后,对应RAID算法处理模块对导入的数据进行处理,之后处理后的数据通过数据交互模块写入到运行内存模块,当一个运行内存模块达到约定数量级后,固态硬盘控制器通过数据交互模块将运行内存模块中的数据储存到存储内存模块中。将此方法用于数据的恢复时,RAID算法处理模块能够根据外部给出的RAID类型指示进行工作,大大减小了固态硬盘使用过程中的运行功耗。
在进行数据回放时,固态硬盘控制器读取存储内存模块中的数据,并将数据写入到运行内存模块中,然后RAID算法处理模块将数据从运行内存模块中取出,之后对取出的数据进行整合,进而完成数据的恢复。使得在使用RAID算法运用到损坏存储芯片的数据恢复中时,RAID算法处理模块能够根据固态硬盘控制器收到的外部RAID类型的指示进行工作,省去了基于CPUC软件程序实现的算法以及基于专门的RAID芯片实现,使得运算过程中的功耗降低,提升了数据处理速率,成本较低。
进一步的,所述固态硬盘控制器包括RAID0算法处理模块、RAID1算法处理模块、RAID5算法处理模块、RAID01算法处理模块以及RAID10算法处理模块。
通过上述技术方案,使得固态硬盘控制器能够具有多种RAID算法处理方式,大大提升了存储芯片修复的便捷性。
进一步的,所述接口FIFO模块的数据位宽为64bit。
通过上述技术方案,使得固态硬盘控制器的兼容性得以提升,使得数据在进行存储时能够更加稳定。
进一步的,所述运行内存模块为n个,所述存储内存模块为n个,且所述运行内存模块与所述存储内存模块一一对应。
通过上述技术方案,将运行内存模块与存储内存模块分为若干个,一方面提升数据的缓存的效率,另一方面使得不同存储内存模块存储的数据能够得到区分。
进一步的,所述RAID0算法处理模块下:数据储存时,所述RAID0算法处理模块通过数据交互模块将数据依次放入对应的运行内存模块,如此往复,待其中一个运行内存模块达到约定的数量级后,所述RAID0算法处理模块将所述运行内存模块内的数据分发到对应的所述存储内存模块进行存储;数据回放时,所述固态硬盘控制器读取存储内存设备,然后通过数据交互模块写入运行内存模块,之后RAID0算法处理模块将数据从运行内存模块内取出,完成数据的恢复。
通过上述技术方案,RAID0算法处理模块将存储内存模块内存储的数据写入到运行内存模块中,然后再对运行内存模块中的数据进行组合恢复。
进一步的,所述RAID1算法处理模块下:数据储存时,所述RAID1算法处理模块将数据复制若干个放入所述运行内存设备内的若干个运行内存模块内,待其中一个运行内存模块达到约定的数量级后,所述RAID1算法处理模块将所述运行内存模块内的数据分发到对应的所述存储内存模块进行存储;数据回放时,所述固态硬盘控制器读取存储内存设备,然后通过数据交互模块写入运行内存模块,之后选择一个运行内存模块内的数据进行恢复。
通过上述技术方案,当数据回放时,出现某个或某几个存储内存模块损坏的情况,其他任一通路数据均可恢复为源数据。
进一步的,所述RAID5算法处理模块下:数据储存时,每次根据所述存储内存设备中存储内存模块的数量将数据从接口FIFO中取出并进行就校验,然后将校验得到的数据依次写入到运行内存模块中,待其中一个运行内存模块达到约定的数量级后,所述RAID5算法处理模块将所述运行内存模块内的数据分发到对应的所述存储内存模块进行存储;数据回放时,所述固态硬盘控制器读取存储内存设备,然后通过数据交互模块写入运行内存模块,之后根据储存时的校验位对数据进行恢复。
通过上述技术方案,当数据回放时,出现某个存储内存模块损坏的情况,RAID5算法处理模块,依据校验位存放的位置,通过奇偶校验算法,重新恢复该通路的数据,完成数据恢复。
进一步的,所述RAID01算法处理模块下:数据储存时,所述RAID01算法处理模块对数据的转换,获得实际操作的存储内存模块数量,所述RAID01算法处理模块每次从接口FIFO模块取出1/2倍存储内存模块数量的数据,然后将数据依次写入到运行内存模块中,待其中一个运行内存模块达到约定的数量级后,所述RAID1算法处理模块将所述运行内存模块内的数据分发到对应的所述存储内存模块进行存储;数据回放时,所述固态硬盘控制器读取存储内存设备,然后将前后两个所述存储内存模块的数据进行对比校验。
通过上述技术方案,当数据回放时,出现某个或者某几个存储内存模块的损坏情况,RAID01算法处理模块,依据损坏磁盘分布的位置,判断坏块是否存在于一个存储半区,如果是的话,上报正常数据半区的数据,如果否,则上报数据失效。
进一步的,所述RAID10算法处理模块下:数据储存时,所述RAID10算法处理模块对数据的转换,获得实际操作的存储内存模块数量,所述RAID10算法处理模块每次从接口FIFO模块取出2倍存储内存模块数量的数据,然后将数据依次写入到运行内存模块中,待其中一个运行内存模块达到约定的数量级后,所述RAID1算法处理模块将所述运行内存模块内的数据分发到对应的所述存储内存模块进行存储;数据回放时,所述固态硬盘控制器读取存储内存设备,然后将数据写入运行内存模块,之后将前后存储内存模块内的数据进行对比校验。
通过上述技术方案,当数据回放时,出现某个或者某几个磁盘损坏情况,RAID10算法处理模块,依据损坏磁盘分布的位置,判断是否有正确数据可以被读取,如果是的话,上报正常数据,如果否,则上报数据失效。
本申请还公开,一种基于FPGA实现的RAID存储方法,包括如下步骤:
步骤1,将数据通过接口FIFO模块导入到所述固态硬盘控制器内;
步骤2,固态硬盘控制器内的RAID算法处理模块,根据固态硬盘控制器收到的外部RAID类型的指示后,对应RAID算法处理模块对导入的数据进行处理;
步骤3,处理后的数据通过数据交互模块写入到运行内存模块;
步骤4,当一个运行内存模块达到约定数量级后,固态硬盘控制器通过数据交互模块将运行内存模块中的数据储存到存储内存模块中;
步骤5,固态硬盘控制器读取存储内存模块中的数据,并将数据写入到运行内存模块中;
步骤6,RAID算法处理模块将数据从运行内存模块中取出,比对取出的数据进行整合,进而完成数据的恢复。
综上所述,本申请包括以下至少一种基于FPGA实现的RAID存储系统及方法有益技术效果:
使用时,在进行数据存储时,将数据通过接口FIFO模块导入到固态硬盘控制器内,然后固态硬盘控制器内的RAID算法处理模块,根据固态硬盘控制器收到的外部RAID类型的指示后,对应RAID算法处理模块对导入的数据进行处理,之后处理后的数据通过数据交互模块写入到运行内存模块,当一个运行内存模块达到约定数量级后,固态硬盘控制器通过数据交互模块将运行内存模块中的数据储存到存储内存模块中。将此方法用于数据的恢复时,RAID算法处理模块能够根据外部给出的RAID类型指示进行工作,大大减小了固态硬盘使用过程中的运行功耗。
附图说明
图1是主要体现一种基于FPGA实现的RAID存储系统的结构框图;
图2是主要体现一种基于FPGA实现的RAID存储方法流程示意图。
附图标记:1、固态硬盘控制器;11、接口FIFO模块;12、RAID算法处理模块;13、数据交互模块;2、运行内存设备;21、运行内存模块;3、存储内存设备;31、存储内存模块。
具体实施方式
为了对本发明的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施例,进一步阐述本发明。
以下结合附图1-2对本申请作进一步详细说明。
本申请实施例公开一种基于FPGA实现的RAID存储系统及方法。
参照图1,一种基于FPGA实现的RAID存储系统,包括固态硬盘控制器1,固态硬盘控制器1上挂载有运行内存设备2与存储内存设备3。
数据存储时,将数据输入到固态硬盘控制器1中,数据经过固态硬盘控制器1的处理后被写入到运行内存设备2中,待运行内存设备2达到约定的数量级后,固态硬盘控制器1将数据转存到存储内存设备3中。
数据恢复时,固态硬盘控制器1读取存储内存设备3内存储的数据,然后将读取的数据写入到运行内存设备2中,最后固态硬盘控制器1将运行内存设备2中的数据取出并进行恢复。
固态硬盘控制器1包括接口FIFO模块11,且接口FIFO模块11的数据位宽为64bit。接口FIFO模块11其作用是按照先进先出的原则来管理数据的顺序。这意味着首先进入这个接口的数据会首先被处理或取出,而最后进入的数据或任务会在后面被处理或取出。同时,接口FIFO模块11的数据位宽为64bit,而数据位宽为64bit可以接受32bit、16bit以及8bit。使得固态硬盘在接受数据时的兼容性大大提升。如下将数据位宽设为X,而X可为1bit数据位宽、4bit数据位宽、8bit数据位宽、16bit数据位宽、32bit数据位宽以及64bit数据位宽。
进一步的,固态硬盘控制器1内安装有RAID算法处理模块12,RAID算法处理模块12包括RAID0算法处理模块、RAID1算法处理模块、RAID5算法处理模块、RAID01算法处理模块以及RAID10算法处理模块,当固态硬盘控制器1收到外部给出的RAID类型指示后,固态硬盘控制器1可以根据指示信号打开对应的RAID算法处理模块12进行使用。
此外,固态硬盘控制器1上安装有数据交互模块13,RAID0算法处理模块、RAID1算法处理模块、RAID5算法处理模块、RAID01算法处理模块以及RAID10算法处理模块均连接在数据交互模块13上。
使用时,运行内存设备2以及存储内存设备3通过固态硬盘控制器1上的数据交互模块13实现数据的交互。
进一步的,运行内存设备2包括运行内存模块21,运行内存模块21在运行内存设备2内设置有n个,存储内存设备3包括存储内存模块31,存储内存模块31在存储内存模块31内设置有n个,且运行内存模块21与存储内存模块31之间一一对应。
本申请中,运行内存设备2为DDR内存,现有技术中,DDR内存用于计算机系统中的随机存取存储器。DDR内存被分为n个DDR片区。本申请中,n个DDR片区即为n个运行内存模块21。
存储内存设备3为磁盘,磁盘分为n个磁盘,n个磁盘即为本申请中n个存储内存模块31。
此外,n个DDR片区与n个磁盘一一对应。
RAID0算法处理模块:
在使用RAID0算法处理模块进行数据存储时,RAID0算法处理模块将第一个从接口FIFO模块11输入的Xbit数据放入DDR内存的第一个片区,第二个Xbit数据放入DDR内存的第二个片区,以此类推。当DDR内存的第n的片区放置一个Xbit数据后,地址重新指向DDR内存的第一个片区。当DDR内存的其中一个片区存储数据量达到一个约定的数量级后,RAID0算法处理模块将数据从DDR内存内取出,并通过数据交互模块13分发到对应的磁盘进行存储。
在使用RAID0算法处理模块进行数据回放时,固态硬盘控制器1读取存储内存设备3中的数据,数据从磁盘1的0地质开始,按照Xbit的数据粒度,依次将数据写入DDR内存对应的片区之中。之后由RAID0算法处理模块将数据从DDR的第一1片区到n片区依次取出后,组包成串行数据,完成数据恢复。
在RAID0算法处理模块进行数据回放时,若出现某个磁盘损坏的情况,数据则无法恢复。
RAID1算法处理模块:
在使用RAID1算法处理模块进行数据存储时,RAID1算法处理模块将接口FIFO模块11输入的第一个Xbit数据复制n份,同时将n份Xbit数据并行放入DDR的所有片区内,第二个Xbit数据同样复制n份,同时将n份Xbit数据并行放入DDR的所有片区内,以此类推。当DDR的某个片区存储数据量达到一个约定的数量级,RAID1算法处理模块将数据从DDR片区内取出,通过数据交互模块13分发到存储内存设备3内的对应磁盘进行存储。
在使用RAID1算法处理模块进行数据回放时,固态硬盘控制器1读取存储内存设备3磁盘中的数据,从磁盘1的0地址开始,按照Xbit的数据粒度,依次将数据写入DDR对应的片区之中。然后由RAID1算法处理模块将数据从DDR内存的第一到n片区并行取出后,完成数据恢复,选取其中一路进行回放。不同通道间的数据进行异或运算,推定是否在某路上存在数据异常并上报告警信息。
在使用RAID1算法处理模块进行数据回放时,若出现某个或某几个磁盘损坏情况,其他任一通路磁盘的数据均可恢复为源数据。
RAID5算法处理模块:
在使用RAID5算法处理模块进行数据存储时,根据磁盘个数“n”,RAID5算法处理模块每次从接口FIFO模块11中取出n-1个Xbit数据,获取的n-1个Xbit数据相互之间按位进行奇偶校验,校验值生成第n个Xbit数据。
在存储进DDR片区的过程中,第一轮Xbit数据存储,校验Xbit数据存入第n个DDR内存片区。第二轮Xbit数据存储,校验Xbit数据存入第n-1个DDR内存片区,以此类推。当DDR的其中一个片区存储数据量达到一个约定的数量级,将数据从DDR内取出,分发到对应的磁盘进行存储。
在使用RAID5算法处理模块进行数据回放时,固态硬盘控制器1读取存储内存设备3磁盘中的数据,从磁盘1的0地址开始,按照Xbit的数据粒度,依次将数据写入DDR内存的片区之中。由RAID5算法处理模块将数据从DDR的第一个片区到n片区依次取出后,按照存储时候校验位的存储位置,重新进行校验并核对校验结果上报。
在使用RAID5算法处理模块进行数据回放时,若出现某个磁盘损坏的情况,在使用RAID1算法处理模块依据校验位存放的位置,通过奇偶校验算法,重新恢复该通路的数据,完成数据恢复。
RAID01算法处理模块:
在使用RAID01算法处理模块进行数据存储时,由于RAID01模式下需要磁盘个数为偶数个磁盘。因此,当磁盘个数“n”,FPGA获取数值“n”为二进制数据,将该数据的二进制数据最后一位强制转换为0即为操作的磁盘个数“m”。RAID01算法处理模块每次从接口FIFO模块11中取出m/2个Xbit数据,依次写入1到(m/2)号磁盘对应的DDR片区空间内,当DDR内存的某个片区存储数据量达到一个约定的数量级,RAID01算法处理模块将数据从DDR内存中取出,分发到存储内存设备3对应的磁盘进行存储;之后将这m/2个Xbit数据,依次写入(1+m/2)到m号磁盘对应的DDR内存空间内。当DDR片区的其中一个片区存储数据量达到一个约定的数量级,将数据从DDR内存取出,分发到存储内存设备3对应的磁盘进行存储。
在使用RAID01算法处理模块进行数据回放时,固态硬盘控制器1读取m磁盘中数据,从磁盘1的0地址开始,按照Xbit的数据粒度,依次将数据写入DDR内存的片区之中。将前m/2个磁盘的数据同后m/2个磁盘的数据进行异或运算进行比对校验,并核对校验结果上报。
在使用RAID01算法处理模块进行数据回放时,若出现某个或者某几个磁盘损坏的情况,RAID01算法处理模块依据损坏磁盘分布的位置,判断坏块是否存在于一个存储半区,若存在于一个存储半区,上报正常数据半区的数据,坏块不存在于一个存储半区,则上报数据失效。
RAID10算法处理模块:
在使用RAID10算法处理模块进行数据存储时,由于在RAID10模式下需要磁盘个数为偶数个磁盘,当磁盘个数为“n”时,FPGA获取数值“n”为二进制数据,将该数据的二进制数据最后一位强制转换为0即为操作的磁盘个数“m”。
每次RAID10算法处理模块从接口FIFO模块11中取出2个Xbit数据,将第一个Xbit数重复写入1到(m/2)号磁盘对应的DDR内存空间,当DDR内存的某个片区存储数据量达到一个约定的数量级,将数据从DDR内取出,分发到对应的磁盘进行存储。之后将第二个Xbit数据,重复写入到(1+m/2)到m号磁盘对应的DDR内存空间内,当DDR内存的某个片区存储数据量达到一个约定的数量级,将数据从DDR内取出,分发到对应的磁盘进行存储。
在使用RAID10算法处理模块进行数据回放时,固态硬盘控制器1读取m磁盘中数据,从磁盘1的0地址开始,按照Xbit的数据粒度,依次将数据写入DDR内存的片区之中。将前m/2个磁盘的数据之间异或比对校验;同时,后m/2个磁盘的数据进行异或比对校验,并核对校验结果上报。
在使用RAID10算法处理模块进行数据回放时,若出现某个或者某几个磁盘损坏情况,RAID10算法处理模块依据损坏磁盘分布的位置,判断是否有正确数据可以被读取,若有正确的数据可以被读取,上报正常数据,若没有正确的数据可以被读取,则上报数据失效。
参照图2,本申请还公开一种基于FPGA实现的RAID存储方法,包括如下步骤:
步骤1,将数据位宽小于64bit的数据通过接口FIFO模块11导入到固态硬盘控制器1内。在导入数据的同时,向固态硬盘控制器1内输入对应RAID类型。
步骤2,固态硬盘控制器1内的RAID算法处理模块12,根据固态硬盘控制器1收到的外部RAID类型的指示后,对应RAID算法处理模块12对导入的数据进行处理。
步骤3,处理后的数据通过数据交互模块13写入到运行内存设备2内的若干个DDR片区中。
步骤4,当其中一个DDR片区达到约定数量级后,固态硬盘控制器1通过数据交互模块13将DDR片区中的数据储存到存储内存设备3中的磁盘内。
步骤5,固态硬盘控制器1内对应的RAID算法处理模块12读取存储内存设备3中磁盘的数据,然后将读取到的数据写入到运行内存设备2对应的DDR片区内。
步骤6,RAID算法处理模块12将数据从运行内存设备2的DDR片区中取出,然后比对取出的数据进行整合,进而完成数据的恢复。
在进行数据的存储与数据的恢复时,将运行内存设备2与存储内存设备3插设在固态硬盘控制器1上,使运行内存设备2与存储内存设备3通过数据交互模块13与固态硬盘控制器1之间形成数据交互。
在步骤2中,RAID算法处理模块12包括RAID0算法处理模块、RAID1算法处理模块、RAID5算法处理模块、RAID01算法处理模块以及RAID10算法处理模块,当固态硬盘控制器1收到外部给出的RAID类型指示后,固态硬盘控制器1可以根据指示信号打开对应的RAID算法处理模块12进行使用。
以上均为本申请的较佳实施例,并非依此限制本申请的保护范围,故:凡依本申请的结构、形状、原理所做的等效变化,均应涵盖于本申请的保护范围之内。
Claims (10)
1.一种基于FPGA实现的RAID存储系统,其特征在于:包括一个基于FPGA的固态硬盘控制器(1),所述固态硬盘控制器(1)内至少连接两个RAID算法处理模块(12),所述固态硬盘控制器(1)上连接有接口FIFO模块(11)以及数据交互模块(13);所述固态硬盘控制器(1)上还挂载有运行内存设备(2)以及存储内存设备(3),所述运行内存设备(2)内安装有若干个运行内存模块(21),所述存储内存设备(3)内安装有若干个存储内存模块(31);
接口FIFO模块(11),按照先进先出的原则将数据导入到固态硬盘控制器(1)内;
RAID算法处理模块(12),根据固态硬盘控制器(1)收到的外部RAID类型的指示后,对应RAID算法处理模块(12)对导入的数据进行处理;
数据交互模块(13),实现RAID算法处理模块(12)与运行内存设备(2)、存储内存设备(3)之间的数据交互;
运行内存模块(21),用于数据的缓存及不同存储内存模块(31)数据的区分;
存储内存模块(31),对运行内存模块(21)内的数据进行存储。
2.根据权利要求1所述的一种基于FPGA实现的RAID存储系统,其特征在于:所述固态硬盘控制器(1)包括RAID0算法处理模块、RAID1算法处理模块、RAID5算法处理模块、RAID01算法处理模块以及RAID10算法处理模块。
3.根据权利要求1所述的一种基于FPGA实现的RAID存储系统,其特征在于:所述接口FIFO模块(11)的数据位宽为64bit。
4.根据权利要求1所述的一种基于FPGA实现的RAID存储系统,其特征在于:所述运行内存模块(21)为n个,所述存储内存模块(31)为n个,且所述运行内存模块(21)与所述存储内存模块(31)一一对应。
5.根据权利要求2所述的一种基于FPGA实现的RAID存储系统,其特征在于:所述RAID0算法处理模块下:
数据储存时,所述RAID0算法处理模块通过数据交互模块(13)将数据依次放入对应的运行内存模块(21),如此往复,待其中一个运行内存模块(21)达到约定的数量级后,所述RAID0算法处理模块将所述运行内存模块(21)内的数据分发到对应的所述存储内存模块(31)进行存储;
数据回放时,所述固态硬盘控制器(1)读取存储内存设备(3),然后通过数据交互模块(13)写入运行内存模块(21),之后RAID0算法处理模块将数据从运行内存模块(21)内取出,完成数据的恢复。
6.根据权利要求2所述的一种基于FPGA实现的RAID存储系统,其特征在于:所述RAID1算法处理模块下:
数据储存时,所述RAID1算法处理模块将数据复制若干个放入所述运行内存设备(2)内的若干个运行内存模块(21)内,待其中一个运行内存模块(21)达到约定的数量级后,所述RAID1算法处理模块将所述运行内存模块(21)内的数据分发到对应的所述存储内存模块(31)进行存储;
数据回放时,所述固态硬盘控制器(1)读取存储内存设备(3),然后通过数据交互模块(13)写入运行内存模块(21),之后选择一个运行内存模块(21)内的数据进行恢复。
7.根据权利要求2所述的一种基于FPGA实现的RAID存储系统,其特征在于:所述RAID5算法处理模块下:
数据储存时,每次根据所述存储内存设备(3)中存储内存模块(31)的数量将数据从接口FIFO中取出并进行就校验,然后将校验得到的数据依次写入到运行内存模块(21)中,待其中一个运行内存模块(21)达到约定的数量级后,所述RAID5算法处理模块将所述运行内存模块(21)内的数据分发到对应的所述存储内存模块(31)进行存储;
数据回放时,所述固态硬盘控制器(1)读取存储内存设备(3),然后通过数据交互模块(13)写入运行内存模块(21),之后根据储存时的校验位对数据进行恢复。
8.根据权利要求2所述的一种基于FPGA实现的RAID存储系统,其特征在于:所述RAID01算法处理模块下:
数据储存时,所述RAID01算法处理模块对数据的转换,获得实际操作的存储内存模块(31)数量,所述RAID01算法处理模块每次从接口FIFO模块(11)取出1/2倍存储内存模块(31)数量的数据,然后将数据依次写入到运行内存模块(21)中,待其中一个运行内存模块(21)达到约定的数量级后,所述RAID1算法处理模块将所述运行内存模块(21)内的数据分发到对应的所述存储内存模块(31)进行存储;
数据回放时,所述固态硬盘控制器(1)读取存储内存设备(3),然后将前后两个所述存储内存模块(31)的数据进行对比校验。
9.根据权利要求2所述的一种基于FPGA实现的RAID存储系统,其特征在于:所述RAID10算法处理模块下:
数据储存时,所述RAID10算法处理模块对数据的转换,获得实际操作的存储内存模块(31)数量,所述RAID10算法处理模块每次从接口FIFO模块(11)取出2倍存储内存模块(31)数量的数据,然后将数据依次写入到运行内存模块(21)中,待其中一个运行内存模块(21)达到约定的数量级后,所述RAID1算法处理模块将所述运行内存模块(21)内的数据分发到对应的所述存储内存模块(31)进行存储;
数据回放时,所述固态硬盘控制器(1)读取存储内存设备(3),然后将数据写入运行内存模块(21),之后将前后存储内存模块(31)内的数据进行对比校验。
10.根据权利要求1所述的一种基于FPGA实现的RAID存储方法,其特征在于:包括如下步骤:
步骤1,将数据通过接口FIFO模块(11)导入到所述固态硬盘控制器(1)内;
步骤2,固态硬盘控制器(1)内的RAID算法处理模块(12),根据固态硬盘控制器(1)收到的外部RAID类型的指示后,对应RAID算法处理模块(12)对导入的数据进行处理;
步骤3,处理后的数据通过数据交互模块(13)写入到运行内存模块(21);
步骤4,当一个运行内存模块(21)达到约定数量级后,固态硬盘控制器(1)通过数据交互模块(13)将运行内存模块(21)中的数据储存到存储内存模块(31)中;
步骤5,固态硬盘控制器(1)读取存储内存模块(31)中的数据,并将数据写入到运行内存模块(21)中;
步骤6,RAID算法处理模块(12)将数据从运行内存模块(21)中取出,比对取出的数据进行整合,进而完成数据的恢复。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311305529.XA CN117289871A (zh) | 2023-10-10 | 2023-10-10 | 一种基于fpga实现的raid存储系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311305529.XA CN117289871A (zh) | 2023-10-10 | 2023-10-10 | 一种基于fpga实现的raid存储系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117289871A true CN117289871A (zh) | 2023-12-26 |
Family
ID=89244247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311305529.XA Pending CN117289871A (zh) | 2023-10-10 | 2023-10-10 | 一种基于fpga实现的raid存储系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117289871A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117472288A (zh) * | 2023-12-27 | 2024-01-30 | 成都领目科技有限公司 | 一种基于raid0硬盘组的io写入方法及模型 |
-
2023
- 2023-10-10 CN CN202311305529.XA patent/CN117289871A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117472288A (zh) * | 2023-12-27 | 2024-01-30 | 成都领目科技有限公司 | 一种基于raid0硬盘组的io写入方法及模型 |
CN117472288B (zh) * | 2023-12-27 | 2024-04-16 | 成都领目科技有限公司 | 一种基于raid0硬盘组的io写入方法及模型 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10656993B2 (en) | Apparatus, system, and method to increase data integrity in a redundant storage system | |
US5826001A (en) | Reconstructing data blocks in a raid array data storage system having storage device metadata and raid set metadata | |
US5596708A (en) | Method and apparatus for the protection of write data in a disk array | |
US8495460B2 (en) | Apparatus, system, and method for reconfiguring an array of storage elements | |
JP3078972B2 (ja) | ディスクアレイ装置 | |
EP0768606A2 (en) | RAID array data storage system with storage device metadata and RAIDset metadata | |
EP0936534A2 (en) | Recording device | |
US6298415B1 (en) | Method and system for minimizing writes and reducing parity updates in a raid system | |
JP2001005736A (ja) | メモリ誤り訂正装置 | |
US5933592A (en) | Promoting device level error to raidset level error to restore redundacy in a raid array data storage system | |
CN103793182A (zh) | 可扩展存储保护 | |
KR20110050404A (ko) | 결함 있는 데이터 저장소를 검출하고 교체하는 장치, 시스템 및 프로그램 제품 | |
JPH054699B2 (zh) | ||
JPH081617B2 (ja) | メモリフォルトマッピング装置、検出エラーのマッピング方法及びマルチパスメモリフォルトマッピング装置 | |
WO1992009952A1 (en) | Redundancy accumulator for disk drive array memory | |
US20100241900A1 (en) | System to determine fault tolerance in an integrated circuit and associated methods | |
CN117289871A (zh) | 一种基于fpga实现的raid存储系统及方法 | |
US20210141697A1 (en) | Mission-Critical AI Processor with Multi-Layer Fault Tolerance Support | |
CN112181304A (zh) | 一种星载NAND Flash存储管理系统 | |
KR100402638B1 (ko) | 리던던트 디바이스 초기화 방법 및 장치 | |
Esmaeeli et al. | A multi-bit error tolerant register file for a high reliable embedded processor | |
US7526714B2 (en) | Apparatus for checking data coherence, raid controller and storage system having the same, and method therefor | |
CN110532128A (zh) | 一种降低数据更新代价的纠删码编码及数据重构方法 | |
Lee et al. | ECMO: ECC Architecture Reusing Content-Addressable Memories for Obtaining High Reliability in DRAM | |
US7546513B2 (en) | Circuit and method for checking and recovering a disk array |
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 |