CN109358809B - 一种raid数据存储系统及方法 - Google Patents

一种raid数据存储系统及方法 Download PDF

Info

Publication number
CN109358809B
CN109358809B CN201811137431.7A CN201811137431A CN109358809B CN 109358809 B CN109358809 B CN 109358809B CN 201811137431 A CN201811137431 A CN 201811137431A CN 109358809 B CN109358809 B CN 109358809B
Authority
CN
China
Prior art keywords
verification
host
calculation unit
fpga
raid
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
Application number
CN201811137431.7A
Other languages
English (en)
Other versions
CN109358809A (zh
Inventor
赵占祥
张向前
陆施豪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fangyi Information Technology Shanghai Co ltd
Original Assignee
Fangyi Information Technology Shanghai Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fangyi Information Technology Shanghai Co ltd filed Critical Fangyi Information Technology Shanghai Co ltd
Priority to CN201811137431.7A priority Critical patent/CN109358809B/zh
Publication of CN109358809A publication Critical patent/CN109358809A/zh
Application granted granted Critical
Publication of CN109358809B publication Critical patent/CN109358809B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种RAID数据存储系统及方法,属于数据存储技术领域。系统包括一主机、由一个基于FPGA的固态硬盘控制器和至少一个RAID阵列组成的RAID数据存储设备,所述RAID数据存储设备设置于所述主机内;所述主机包括用于校验计算的主机校验计算单元;所述固态硬盘控制器连接至少一个RAID阵列,对所述RAID阵列进行访问控制;所述固态硬盘控制器包括用于校验计算的FPGA校验计算单元和用于向所述RAID阵列内被请求的条带进行写访问和读访问的读写控制单元。本技术方案利用主机CPU和FPGA芯片结合的计算能力对固态硬盘进行RAID校验和其他计算操作,根据用户需求灵活分配计算任务并完成,减少了校验值计算的时间,提升了固态硬盘的运算效率和读写性能。

Description

一种RAID数据存储系统及方法
技术领域
本发明涉及数据存储技术领域,尤其涉及一种RAID数据存储系统及方法。
背景技术
固态硬盘(Solid State Drives,SSD)作为一种新兴的存储介质,其相对于传统的机械硬盘而言,读写速度更快,防震抗摔性佳,功耗更低,工作噪音较小,工作温度范围较大,并且外形较传统的机械硬盘更轻薄。因此,随着存储技术的发展,越来越多的存储解决方案采用固态硬盘来实现。
现有的高端固态硬盘基本是基于闪存的固态硬盘,其通常由固态硬盘控制器和闪存芯片组成,多个闪存芯片组成固态硬盘的RAID存储阵列。数据文件进入RAID阵列后会被分割成多个小的数据块,然后被均匀分配到RAID阵列中的多个闪存芯片中进行保存。这样的一组小数据块就被称为一个条带。若条带中的数据所在的任何一个或者多个闪存芯片损坏,则可以通过条带中用户数据和校验数据来进行恢复,从而保障用户的数据安全。
RAID中包括以下技术定义:
条带:把连续的数据分割成等大小的数据块,把每个数据块的数据按照RAID算法写入到多个闪存芯片上。连续数据等长分割后的数据块成为条带,数据块大小成为条带大小。
条块:每个条带的数据分布到多个闪存芯片上,条带在每个闪存芯片上占用的空间大小成为条块。
数据单元:表示用于存放用户数据的条块。
校验单元:表示用于存放校验数据的条块。
校验组:一个条带中,由多个数据单元和至少一个校验单元组成的集合,校验单元中的校验数据由该条带中数据单元的用户数据通过RAID校验算法计算得到。
现有的基于闪存的固态硬盘技术中,通常是采用固态硬盘内部的固态硬盘控制器来执行RAID校验运算(异或运算)的,这样做存在以下几个缺点:
1)固态硬盘控制器的运算能力相对较弱,限制了RAID运算的性能,从而限制了固态硬盘的读写性能;
2)没有利用到主机闲置的运算能力,造成主机性能浪费。
3)无法灵活分配固态硬盘控制器和主机的计算任务,并行计算能力低。
发明内容
根据现有技术中存在的上述问题,现提供一种RAID数据存储系统及方法,利用主机CPU和FPGA芯片结合的计算能力对固态硬盘进行RAID校验和其他计算操作,根据用户需求灵活分配计算任务并完成,减少了校验值计算的时间,提升了固态硬盘的运算效率和读写性能。
上述技术方案具体包括:
一种RAID数据存储系统,包括一主机、由一个基于FPGA的固态硬盘控制器和至少一个RAID阵列组成的RAID数据存储设备,所述RAID数据存储设备设置于所述主机内;
所述主机包括:
主机校验计算单元,用于所述主机的CPU按照预先设置的校验算法对用户数据文件进行校验计算,生成主机校验值;
所述固态硬盘控制器连接至少一个RAID阵列,对所述RAID阵列进行访问控制;所述固态硬盘控制器包括:
FPGA校验计算单元,用于FPGA按照预先设置的校验算法对用户数据文件进行校验计算,生成FPGA校验值;
读写控制单元,连接所述FPGA校验计算单元、主机校验计算单元和至少一个RAID阵列,根据来自主机的访问请求,执行用户数据文件的逻辑地址和物理地址的映射处理,与所述FPGA校验计算单元、主机校验计算单元进行数据交互,以及执行向所述RAID阵列内被请求的条带的写访问和读访问。
优选地,所述RAID阵列划分为多个条带,每个条带中包括N个用于存储用户数据的数据单元和M个用于存储校验数据的校验单元,对应N+M个物理页,N为大于或等于2的正整数,M为大于或等于1的正整数。
优选地,所述FPGA校验计算单元和所述主机校验计算单元为可执行异或运算的逻辑单元。
优选地,所述读写控制单元包括:
存储模块,用于保存所述用户数据文件逻辑地址和所述物理地址之间进行映射的映射表;
写入分配模块,连接所述存储模块,对本次需要写入的所述用户数据文件分配所述RAID阵列中对应的多个物理页的物理地址,所述写入分配模块在分配好物理地址后,将所述用户数据文件的逻辑地址与物理地址之间的映射关系写入所述映射表中;
空间管理模块,将所述写入分配模块分别与所述FPGA校验计算单元和主机校验计算单元相连,评估FPGA校验计算单元和主机校验计算单元的空闲的计算资源,确定校验计算分配比例,并由此分配FPGA校验计算单元和主机校验计算单元的计算数量;
写入模块,连接所述FPGA校验计算单元、主机校验计算单元和所述存储模块,用于将经过校验处理的所述用户数据文件以及对应的所述FPGA校验值和/或主机校验值依照被分配的物理地址保存于多个物理页中;
读取模块,连接所述存储模块,于所述映射表中获取需要读取的所述用户数据文件的物理页的物理地址,并从所述物理地址中读取所述用户数据文件。
更优选地,所述空间管理模块包括:
第一判断模块,用于判断FPGA校验计算单元是否有空闲;
第二判断模块,连接所述第一判断模块,用于判断主机校验计算单元是否有空闲;
第一预设方式,连接所述第一判断模块,包括标记FPGA校验计算单元为忙碌状态;FPGA校验计算单元执行校验计算,生成FPGA校验值;读写控制单元将经过校验处理的所述用户数据文件以及对应的所述FPGA校验值依照被分配的物理地址写入多个物理页中;
第二预设方式,连接所述第二判断模块,包括标记主机校验计算单元为忙碌状态;主机校验计算单元执行校验计算,生成主机校验值;读写控制单元将经过校验处理的所述用户数据文件以及对应的所述主机校验值依照被分配的物理地址写入多个物理页中。
优选地,所述RAID数据存储系统还包括:
第一数据存储单元,位于所述FPGA内,连接所述FPGA校验计算单元和所述读写控制单元,用于缓存从所述读写控制单元读取的用户数据文件和从所述FPGA校验计算单元输出的所述FPGA校验值;
第二数据存储单元,位于所述主机内,连接所述主机校验计算单元和所述读写控制单元,用于缓存从所述读写控制单元读取的用户数据文件和从所述主机校验计算单元输出的所述主机校验值。
优选地,所述固态硬盘控制器还包括主机接口,用于所述RAID数据存储设备与所述主机之间的数据交互。
一种RAID数据存储方法,应用一种RAID数据存储系统,包括一主机、由一个基于FPGA的固态硬盘控制器和至少一个RAID阵列组成的RAID数据存储设备,所述RAID数据存储设备设置于所述主机内,所述方法包括:
步骤A1:RAID条带计算任务开始;
步骤A2:初始化RAID数据存储系统;
步骤A3:第一判断模块判断FPGA校验计算单元是否有空闲,如果判断FPGA校验计算单元有空闲,则按第一预设方式对用户数据文件进行处理,包括标记FPGA校验计算单元为忙碌状态;FPGA校验计算单元执行校验计算,生成FPGA校验值;读写控制单元将经过校验处理的所述用户数据文件以及对应的所述FPGA校验值依照被分配的物理地址写入多个物理页中;
如果判断FPGA校验计算单元无空闲,则第二判断模块判断主机校验计算单元是否有空闲,如果判断主机校验计算单元有空闲,则按第二预设方式对用户数据文件进行处理,包括标记主机校验计算单元为忙碌状态;主机校验计算单元执行校验计算,生成主机校验值;读写控制单元将经过校验处理的所述用户数据文件以及对应的所述主机校验值依照被分配的物理地址写入多个物理页中;
如果判断主机校验计算单元有无空闲,则判定为异常情况。
优选地,当主机校验计算单元无空闲判定为异常情况之后,退出任务。
优选地,FPGA校验计算单元生成FPGA校验值后,标记所述FPGA校验计算单元为空闲状态。
优选地,主机校验计算单元生成主机校验值后,标记所述主机校验计算单元为空闲状态。
优选地,所述步骤A2包括:
步骤A21:所述RAID阵列划分为多个条带,每个条带中包括N个用于存储数据的数据单元和M个用于存储校验数据的校验单元,对应N+M个物理页,N为大于或等于2的正整数,M为大于或等于1的正整数;
步骤A22:所述读写控制单元对本次需要写入的所述用户数据文件分配所述RAID阵列中对应的多个物理页的物理地址,在分配好物理地址后,将所述用户数据文件的逻辑地址与物理地址之间的映射关系写入所述映射表中。
优选地,所述步骤A2还包括:
评估所述FPGA校验计算单元和所述主机校验计算单元的空闲计算资源,确定校验计算分配比例,并由此分配所述FPGA校验计算单元和所述主机校验计算单元的校验计算数量。
优选地,所述方法还包括:在执行写入之前,将计算出的所述FPGA校验值缓存到第一数据存储单元,并/或将计算出的所述主机校验值缓存到第二数据存储单元,在完成预设数量或所有所述FPGA校验值和/或主机校验值缓存写入后,再批量将所述RAID校验处理的所述用户数据文件以及对应的所述FPGA校验值和/或主机校验值依照被分配的物理地址写入多个物理页中。
优选地,所述方法还包括:当所有所述FPGA校验值和/或主机校验值被取走后,所述第一数据存储单元和/或第二存储单元清零,开始下一个RAID条带的计算,直到所述用户数据文件处理完毕。
优选地,所述主机校验计算单元,位于所述主机内,用于所述主机的CPU按照预先设置的校验算法对用户数据文件进行校验计算,生成主机校验值。
优选地,所述固态硬盘控制器连接至少一个RAID阵列,对所述RAID阵列进行访问控制;所述固态硬盘控制器包括:
FPGA校验计算单元,用于FPGA按照预先设置的校验算法对用户数据文件进行校验计算,生成FPGA校验值;
读写控制单元,连接所述FPGA校验计算单元、主机校验计算单元和至少一个RAID阵列,根据来自主机的访问请求,执行用户数据文件的逻辑地址和物理地址的映射处理,与所述FPGA校验计算单元、主机校验计算单元进行数据交互,以及执行向所述RAID阵列内被请求的条带的写访问和读访问。
更优选地,所述FPGA校验计算单元和所述主机校验计算单元为可执行异或运算的逻辑单元。
更优选地,所述读写控制单元包括:
存储模块,用于保存所述用户数据文件逻辑地址和所述物理地址之间进行映射的映射表;
写入分配模块,连接所述存储模块,对本次需要写入的所述用户数据文件分配所述RAID阵列中对应的多个物理页的物理地址,所述写入分配模块在分配好物理地址后,将所述用户数据文件的逻辑地址与物理地址之间的映射关系写入所述映射表中;
空间管理模块,将所述写入分配模块分别与所述FPGA校验计算单元和主机校验计算单元相连,评估FPGA校验计算单元和主机校验计算单元的空闲的计算资源,确定校验计算分配比例,并由此分配FPGA校验计算单元和主机校验计算单元的计算数量;
写入模块,连接所述FPGA校验计算单元、主机校验计算单元和所述存储模块,用于将经过校验处理的所述用户数据文件以及对应的所述FPGA校验值和/或主机校验值依照被分配的物理地址保存于多个物理页中;
读取模块,连接所述存储模块,于所述映射表中获取需要读取的所述用户数据文件的物理页的物理地址,并从所述物理地址中读取所述用户数据文件。
进一步优选地,所述空间管理模块包括:
第一判断模块,用于判断FPGA校验计算单元是否有空闲;
第二判断模块,连接所述第一判断模块,用于判断主机校验计算单元是否有空闲;
第一预设方式,连接所述第一判断模块,包括标记FPGA校验计算单元为忙碌状态;FPGA校验计算单元执行校验计算,生成FPGA校验值;读写控制单元将经过校验处理的所述用户数据文件以及对应的所述FPGA校验值依照被分配的物理地址写入多个物理页中;
第二预设方式,连接所述第二判断模块,包括标记主机校验计算单元为忙碌状态;主机校验计算单元执行校验计算,生成主机校验值;读写控制单元将经过校验处理的所述用户数据文件以及对应的所述主机校验值依照被分配的物理地址写入多个物理页中。
优选地,所述RAID数据存储系统还包括:
第一数据存储单元,位于所述FPGA内,连接所述FPGA校验计算单元和所述读写控制单元,用于缓存从所述读写控制单元读取的用户数据文件和从所述FPGA校验计算单元输出的所述FPGA校验值;
第二数据存储单元,位于所述主机内,连接所述主机校验计算单元和所述读写控制单元,用于缓存从所述读写控制单元读取的用户数据文件和从所述主机校验计算单元输出的所述主机校验值。
优选地,所述固态硬盘控制器还包括主机接口,用于所述RAID数据存储设备与所述主机之间的数据交互。
与现有技术相比,本发明的技术方案具有以下有益效果:
1)提供一种RAID数据存储系统,能够利用主机CPU和FPGA芯片结合的计算能力对固态硬盘进行RAID校验和其他计算操作,根据用户需求灵活分配计算任务并完成,减少了计算校验值的时间,提升了固态硬盘的运算效率和读写性能。
2)提供一种RAID数据存储方法,能够支持上述RAID数据存储系统正常运行。
附图说明
图1是本发明的较佳实施例中,一种RAID数据存储系统的总体结构示意图;
图2是本发明的较佳实施例中,一种RAID条带内数据组织关系示意图;
图3是本发明的较佳实施例中,于图1的基础上,读写控制单元的具体结构示意图;
图4是本发明的较佳实施例中,于图3的基础上,空间管理模块的具体结构示意图;
图5是本发明的较佳实施例中,一种RAID数据存储方法的总体流程示意图;
图6是本发明的较佳实施例中,于图5的基础上,步骤A2的具体流程示意图。
具体实施方式
本发明提供一种RAID数据存储系统及方法,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
实施例一:
图1给出了一种RAID数据存储系统的总体结构示意图。
如图1所示,本实施例提供一种RAID数据存储系统,包括一主机2、由一个基于FPGA的固态硬盘控制器1和至少一个RAID阵列3组成的RAID数据存储设备4,所述RAID数据存储设备4设置于所述主机2内。
所述主机2包括:主机校验计算单元21,用于所述主机2的CPU按照预先设置的校验算法对用户数据文件进行校验计算,生成主机校验值。
所述固态硬盘控制器1连接至少一个RAID阵列3,对所述RAID阵列3进行访问控制。所述固态硬盘控制器包括:
FPGA校验计算单元11,用于FPGA按照预先设置的校验算法对用户数据文件进行校验计算,生成FPGA校验值;
读写控制单元12,连接所述FPGA校验计算单元11、主机校验计算单元21和至少一个RAID阵列3,根据来自主机2的访问请求,执行用户数据文件的逻辑地址和物理地址的映射处理,与所述FPGA校验计算单元11、主机校验计算单元21进行数据交互,以及执行向所述RAID阵列3内被请求的条带的写访问和读访问;
主机接口14,用于所述RAID数据存储设备4与所述主机2之间的数据交互。
此外,所述固态硬盘控制器1还包括第一数据存储单元13,连接所述FPGA校验计算单元11和所述读写控制单元12,用于缓存从所述读写控制单元12读取的用户数据文件和从所述FPGA校验计算单元11输出的所述FPGA校验值。
所述主机2还包括第二数据存储单元22,连接所述主机校验计算单元21和所述读写控制单元12,用于缓存从所述读写控制单元12读取的用户数据文件和从所述主机校验计算单元21输出的所述主机校验值。
其中,所述FPGA校验计算单元11和所述主机校验计算单元21为可执行异或运算的逻辑单元。
所述主机2可能是任意形式的计算机系统,比如服务器,或者专用的网络存储设备,或者是个人主机。
图2给出了一种RAID条带内数据组织关系示意图。
如图2所示,所述RAID阵列3包括N+M个闪存芯片,划分为多个条带,每个条带中包括N个用于存储用户数据文件的数据单元和M个用于存储校验数据的校验单元,对应N+M个物理页,N为大于或等于2的正整数,M为大于或等于1的正整数。例如,N为4,M为2,则每个条带包括4个数据单元和2个校验单元,对应6个物理页。
图3于图1的基础上,给出了读写控制单元12的具体结构示意图。
如图3所示,所述读写控制单元包括以下模块:
1)存储模块121,用于保存所述用户数据文件逻辑地址和所述物理地址之间进行映射的映射表。
2)写入分配模块122,连接所述存储模块121,对本次需要写入的所述用户数据文件分配所述RAID阵列3中对应的多个物理页的物理地址,所述写入分配模块122在分配好物理地址后,将所述用户数据文件的逻辑地址与物理地址之间的映射关系写入所述映射表中。
3)空间管理模块123,将所述写入分配模块122分别与所述FPGA校验计算单元11和主机校验计算单元21相连,评估FPGA校验计算单元11和主机校验计算单元21的空闲的计算资源,确定校验计算分配比例,并由此分配FPGA校验计算单元11和主机校验计算单元21的校验计算数量。
4)写入模块124,连接所述FPGA校验计算单元11、主机校验计算单元21和所述存储模块121,用于将经过校验处理的所述用户数据文件以及对应的所述FPGA校验值和/或主机校验值依照被分配的物理地址保存于多个物理页中。
5)读取模块125,连接所述存储模块121,于所述映射表中获取需要读取的所述用户数据文件的物理页的物理地址,并从所述物理地址中读取所述用户数据文件。
图4于图3的基础上,进一步给出了空间管理模块123的具体结构示意图。
如图4所示,所述空间管理模块123包括第一判断模块1231、第二判断模块1233、第一预设方式1232和第二预设方式1234,具体如下:
第一判断模块1231,用于判断FPGA校验计算单元11是否有空闲;
第二判断模块1233,连接所述第一判断模块1231,用于判断主机校验计算单元21是否有空闲;
第一预设方式1232,连接所述第一判断模块1231,包括标记FPGA校验计算单元11为忙碌状态;FPGA校验计算单元11执行校验计算,生成FPGA校验值;读写控制单元12将经过所述RAID校验处理的所述用户数据文件以及对应的所述FPGA校验值依照被分配的物理地址写入多个物理页中;
第二预设方式1234,连接所述第二判断模块1233,包括标记主机校验计算单元21为忙碌状态;主机校验计算单元21执行校验计算,生成主机校验值;读写控制单元12将经过所述RAID校验处理的所述用户数据文件以及对应的所述主机校验值依照被分配的物理地址写入多个物理页中。
实施例二:
图5给出了一种RAID数据存储方法的总体流程示意图。
如图5所示,本实施例提供了一种RAID数据存储方法,应用一种RAID数据存储系统,包括一主机2、由一个基于FPGA的固态硬盘控制器1和至少一个RAID阵列3组成的RAID数据存储设备4,所述RAID数据存储设备4设置于所述主机2内,所述方法包括:
步骤A1:RAID条带计算任务开始;
步骤A2:初始化RAID数据存储系统;
步骤A3:第一判断模块判断FPGA校验计算单元是否有空闲,如果判断FPGA校验计算单元有空闲,则按第一预设方式对用户数据文件进行处理,包括标记FPGA校验计算单元为忙碌状态;执行校验计算,生成FPGA校验值;读写控制单元将经过校验处理的所述用户数据文件以及对应的所述FPGA校验值依照被分配的物理地址写入多个物理页中;
如果判断FPGA校验计算单元无空闲,则第二判断模块判断主机校验计算单元是否有空闲,如果判断主机校验计算单元有空闲,则按第二预设方式对用户数据文件进行处理,包括标记主机校验计算单元为忙碌状态;执行校验计算,生成主机校验值;读写控制单元将经过校验处理的所述用户数据文件以及对应的所述主机校验值依照被分配的物理地址写入多个物理页中;
如果判断主机校验计算单元有无空闲,则判定为异常情况。
当主机校验计算单元无空闲判定为异常情况之后,退出任务。
FPGA校验计算单元生成FPGA校验值后,标记所述FPGA校验计算单元为空闲状态;主机校验计算单元生成主机校验值后,标记所述主机校验计算单元为空闲状态。
如图6所示,上述方法中,步骤A2包括:
步骤A21:所述RAID阵列划分为多个条带,每个条带中包括N个用于存储数据的数据单元和M个用于存储校验数据的校验单元,对应N+M个物理页,N为大于或等于2的正整数,M为大于或等于1的正整数;
步骤A22:所述读写控制单元对本次需要写入的所述用户数据文件分配所述RAID阵列中对应的多个物理页的物理地址,在分配好物理地址后,将所述用户数据文件的逻辑地址与物理地址之间的映射关系写入所述映射表中。
所述步骤A2还包括:评估所述FPGA校验计算单元和所述主机校验计算单元的空闲计算资源,确定校验计算分配比例,并由此分配所述FPGA校验计算单元和所述主机校验计算单元的校验计算数量。
除此之外,在执行写入之前,在执行写入之前,将计算出的所述FPGA校验值缓存到第一数据存储单元,并/或将计算出的所述主机校验值缓存到第二数据存储单元,在完成预设数量或所有所述FPGA校验值和/或主机校验值缓存写入后,再批量将所述RAID校验处理的所述用户数据文件以及对应的所述FPGA校验值和/或主机校验值依照被分配的物理地址写入多个物理页中。
当所有所述FPGA校验值和/或主机校验值被取走后,所述第一数据存储单元和/或第二存储单元清零,开始下一个RAID条带的计算,直到所述用户数据文件处理完毕。
本实施例的一种实现方式中,空间管理模块评估所述FPGA校验计算单元和所述主机校验计算单元的空闲计算资源。经评估,FPGA校验计算单元有空闲,且空余计算资源充足,优先分配所述FPGA校验计算单元进行校验计算。标记FPGA校验计算单元为忙碌状态;FPGA校验计算单元执行校验计算,生成FPGA校验值;计算完成后,标记FPGA校验计算单元为空闲状态。读写控制单元将经过所述FPGA校验计算单元校验处理后的所述用户数据文件以及对应的FPGA校验值依照被分配的物理地址写入多个物理页中,随后退出。
本实施例的另一种实现方式中,空间管理模块评估所述FPGA校验计算单元和所述主机校验计算单元的空闲计算资源。经评估,FPGA校验计算单元无空闲,主机校验计算单元有空闲且空余计算资源充足,分配所述主机校验计算单元进行校验计算。标记主机校验计算单元为忙碌状态;主机校验计算单元执行校验计算,生成主机校验值;计算完成后,标记主机校验计算单元为空闲状态。读写控制单元将经过所述主机校验计算单元校验处理后的所述用户数据文件以及对应的主机校验值依照被分配的物理地址写入多个物理页中,随后退出。
本实施例的再一种实现方式中,空间管理模块评估所述FPGA校验计算单元和所述主机校验计算单元的空闲计算资源。经评估,FPGA校验计算单元有空闲,但空余计算资源不足,主机校验计算单元有空闲且空余计算资源充足,确定FPGA空余计算资源和主机空余计算资源的校验计算,并由此分配FPGA校验计算单元和主机校验计算单元的计算数量,其中,FPGA空余计算资源优先分配计算数量。例如,校验计算总共需要P个空闲计算资源,P为大于或等于2的整数,FPGA校验计算单元空余计算资源为P0,P0小于P,主机校验计算单元空闲计算资源大于或等于(P-P0),则分配FPGA校验计算单元的计算数量为P0,分配主机校验计算单元的计算数量为(P-P0)。相应地,标记FPGA校验计算单元和主机校验计算单元均为忙碌状态;FPGA校验计算单元执行校验计算,生成FPGA校验值;主机校验计算单元执行校验计算,生成主机校验值。计算完成后,标记FPGA校验计算单元和主机校验计算单元均为空闲状态。读写控制单元将经过所述FPGA校验计算单元和主机校验值单元校验处理后的所述用户数据文件以及对应的FPGA校验值和主机校验值依照被分配的物理地址写入多个物理页中,随后退出。
以上对本发明的具体实施例进行了详细描述,但其只是作为范例,本发明并不限制于以上描述的具体实施例。对于本领域技术人员而言,任何对本发明进行的等同修改和替代也都在本发明的范畴之中。因此,在不脱离本发明的精神和范围下所作的均等变换和修改,都应涵盖在本发明的范围内。

Claims (9)

1.一种RAID数据存储系统,其特征在于:包括一主机、由一个基于FPGA的固态硬盘控制器和至少一个RAID阵列组成的RAID数据存储设备,所述RAID数据存储设备设置于所述主机内;
所述主机包括:
主机校验计算单元,用于所述主机的CPU按照预先设置的校验算法对用户数据文件进行校验计算,生成主机校验值;
所述固态硬盘控制器连接至少一个RAID阵列,对所述RAID阵列进行访问控制;所述固态硬盘控制器包括:
FPGA校验计算单元,用于FPGA按照预先设置的校验算法对用户数据文件进行校验计算,生成FPGA校验值;
读写控制单元,连接所述FPGA校验计算单元、主机校验计算单元和至少一个RAID阵列,根据来自主机的访问请求,执行用户数据文件的逻辑地址和物理地址的映射处理,与所述FPGA校验计算单元、主机校验计算单元进行数据交互,以及执行向所述RAID阵列内被请求的条带的写访问和读访问;
其中,所述读写控制单元包括:
存储模块,用于保存所述用户数据文件逻辑地址和所述物理地址之间进行映射的映射表;
写入分配模块,连接所述存储模块,对本次需要写入的所述用户数据文件分配所述RAID阵列中对应的多个物理页的物理地址,所述写入分配模块在分配好物理地址后,将所述用户数据文件的逻辑地址与物理地址之间的映射关系写入所述映射表中;
空间管理模块,将所述写入分配模块分别与所述FPGA校验计算单元和主机校验计算单元相连,评估FPGA校验计算单元和主机校验计算单元的空闲的计算资源,确定校验计算分配比例,并由此分配FPGA校验计算单元和主机校验计算单元的计算数量;
写入模块,连接所述FPGA校验计算单元、主机校验计算单元和所述存储模块,用于将经过校验处理的所述用户数据文件以及对应的所述FPGA校验值和/或主机校验值依照被分配的物理地址保存于多个物理页中;
读取模块,连接所述存储模块,于所述映射表中获取需要读取的所述用户数据文件的物理页的物理地址,并从所述物理地址中读取所述用户数据文件。
2.根据权利要求1所述的一种RAID数据存储系统,其特征在于:所述FPGA校验计算单元和所述主机校验计算单元为可执行异或运算的逻辑单元。
3.根据权利要求1所述的一种RAID数据存储系统,其特征在于:所述空间管理模块包括:
第一判断模块,用于判断FPGA校验计算单元是否有空闲;
第二判断模块,连接所述第一判断模块,用于判断主机校验计算单元是否有空闲;
第一预设方式,连接所述第一判断模块,包括标记FPGA校验计算单元为忙碌状态;FPGA校验计算单元执行校验计算,生成FPGA校验值;读写控制单元将经过校验处理的所述用户数据文件以及对应的所述FPGA校验值依照被分配的物理地址写入多个物理页中;
第二预设方式,连接所述第二判断模块,包括标记主机校验计算单元为忙碌状态;主机校验计算单元执行校验计算,生成主机校验值;读写控制单元将经过校验处理的所述用户数据文件以及对应的所述主机校验值依照被分配的物理地址写入多个物理页中。
4.根据权利要求1所述的一种RAID数据存储系统,其特征在于:所述RAID数据存储系统还包括:
第一数据存储单元,位于所述FPGA内,连接所述FPGA校验计算单元和所述读写控制单元,用于缓存从所述读写控制单元读取的用户数据文件和从所述FPGA校验计算单元输出的所述FPGA校验值;
第二数据存储单元,位于所述主机内,连接所述主机校验计算单元和所述读写控制单元,用于缓存从所述读写控制单元读取的用户数据文件和从所述主机校验计算单元输出的所述主机校验值。
5.根据权利要求1所述的一种RAID数据存储系统,其特征在于:所述固态硬盘控制器还包括主机接口,用于所述RAID数据存储设备与所述主机之间的数据交互。
6.一种RAID数据存储方法,应用一种RAID数据存储系统,包括一主机、由一个基于FPGA的固态硬盘控制器和至少一个RAID阵列组成的RAID数据存储设备,所述RAID数据存储设备设置于所述主机内,所述方法包括:
步骤A1:RAID条带计算任务开始;
步骤A2:初始化RAID数据存储系统;
步骤A3:第一判断模块判断FPGA校验计算单元是否有空闲,如果判断FPGA校验计算单元有空闲,则按第一预设方式对用户数据文件进行处理,包括标记FPGA校验计算单元为忙碌状态;FPGA校验计算单元执行校验计算,生成FPGA校验值;读写控制单元将经过校验处理的所述用户数据文件以及对应的所述FPGA校验值依照被分配的物理地址写入多个物理页中;
如果判断FPGA校验计算单元无空闲,则第二判断模块判断主机校验计算单元是否有空闲,如果判断主机校验计算单元有空闲,则按第二预设方式对用户数据文件进行处理,包括标记主机校验计算单元为忙碌状态;主机校验计算单元执行校验计算,生成主机校验值;读写控制单元将经过校验处理的所述用户数据文件以及对应的所述主机校验值依照被分配的物理地址写入多个物理页中;
如果判断主机校验计算单元有无空闲,则判定为异常情况。
7.根据权利要求6所述的一种RAID数据存储方法,其特征在于:所述FPGA校验计算单元生成FPGA校验值后,标记所述FPGA校验计算单元为空闲状态。
8.根据权利要求6所述的一种RAID数据存储方法,其特征在于:所述主机校验计算单元生成主机校验值后,标记所述主机校验计算单元为空闲状态。
9.根据权利要求6所述的一种RAID数据存储方法,其特征在于:所述步骤A2包括:
步骤A21:所述RAID阵列划分为多个条带,每个条带中包括N个用于存储数据的数据单元和M个用于存储校验数据的校验单元,对应N+M个物理页,N为大于或等于2的正整数,M为大于或等于1的正整数;
步骤A22:所述读写控制单元对本次需要写入的所述用户数据文件分配所述RAID阵列中对应的多个物理页的物理地址,在分配好物理地址后,将所述用户数据文件的逻辑地址与物理地址之间的映射关系写入映射表中。
CN201811137431.7A 2018-09-28 2018-09-28 一种raid数据存储系统及方法 Active CN109358809B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811137431.7A CN109358809B (zh) 2018-09-28 2018-09-28 一种raid数据存储系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811137431.7A CN109358809B (zh) 2018-09-28 2018-09-28 一种raid数据存储系统及方法

Publications (2)

Publication Number Publication Date
CN109358809A CN109358809A (zh) 2019-02-19
CN109358809B true CN109358809B (zh) 2020-07-24

Family

ID=65348078

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811137431.7A Active CN109358809B (zh) 2018-09-28 2018-09-28 一种raid数据存储系统及方法

Country Status (1)

Country Link
CN (1) CN109358809B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109800179B (zh) * 2019-01-31 2021-06-22 维沃移动通信有限公司 获取数据的方法、发送数据的方法、主机和内嵌式存储器
CN111625181B (zh) * 2019-02-28 2022-03-29 华为技术有限公司 数据处理方法、独立硬盘冗余阵列控制器和数据存储系统
CN110297601B (zh) * 2019-06-06 2020-06-23 清华大学 固态硬盘阵列构建方法、电子设备及存储介质
CN111007984A (zh) * 2019-10-22 2020-04-14 中国航空工业集团公司洛阳电光设备研究所 一种基于fpga的raid5存储系统及实现方法
CN112783684A (zh) * 2019-11-06 2021-05-11 华为技术有限公司 一种校验数据计算方法及装置
CN112286447A (zh) * 2020-10-14 2021-01-29 天津津航计算技术研究所 一种新型软件硬件协同raid改进系统
CN112230851A (zh) * 2020-10-14 2021-01-15 天津津航计算技术研究所 一种新型软件硬件协同raid改进方法
CN113703684B (zh) * 2021-08-31 2024-06-11 长江存储科技有限责任公司 基于raid的数据存储方法、数据读取方法及存储器系统
CN118069378A (zh) * 2024-04-22 2024-05-24 山东云海国创云计算装备产业创新中心有限公司 位置的确定方法及装置、存储介质、电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1019835B1 (en) * 1997-09-30 2002-08-07 Lsi Logic Corporation Segmented dma with xor buffer for storage subsystems
US6526477B1 (en) * 1999-09-03 2003-02-25 Adaptec, Inc. Host-memory based raid system, device, and method
CN1746854A (zh) * 2004-09-10 2006-03-15 富士通株式会社 用于控制存储的装置、方法和程序
CN103218270A (zh) * 2013-03-11 2013-07-24 北京忆恒创源科技有限公司 具有多个固态盘的计算机
CN103699494A (zh) * 2013-12-06 2014-04-02 北京奇虎科技有限公司 一种数据存储方法、数据存储设备和分布式存储系统
CN104216835B (zh) * 2014-08-25 2017-04-05 杨立群 一种实现内存融合的方法及装置
CN107450852A (zh) * 2017-07-31 2017-12-08 郑州云海信息技术有限公司 一种存储空间处理方法、装置和设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8438429B2 (en) * 2010-12-01 2013-05-07 Hitachi, Ltd. Storage control apparatus and storage control method
CN104077282B (zh) * 2013-03-25 2018-02-06 华为技术有限公司 处理数据的方法和装置
CN108205423B (zh) * 2016-12-20 2020-06-02 华为技术有限公司 一种物理硬盘磨损均衡方法、装置及系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1019835B1 (en) * 1997-09-30 2002-08-07 Lsi Logic Corporation Segmented dma with xor buffer for storage subsystems
US6526477B1 (en) * 1999-09-03 2003-02-25 Adaptec, Inc. Host-memory based raid system, device, and method
CN1746854A (zh) * 2004-09-10 2006-03-15 富士通株式会社 用于控制存储的装置、方法和程序
CN103218270A (zh) * 2013-03-11 2013-07-24 北京忆恒创源科技有限公司 具有多个固态盘的计算机
CN103699494A (zh) * 2013-12-06 2014-04-02 北京奇虎科技有限公司 一种数据存储方法、数据存储设备和分布式存储系统
CN104216835B (zh) * 2014-08-25 2017-04-05 杨立群 一种实现内存融合的方法及装置
CN107450852A (zh) * 2017-07-31 2017-12-08 郑州云海信息技术有限公司 一种存储空间处理方法、装置和设备

Also Published As

Publication number Publication date
CN109358809A (zh) 2019-02-19

Similar Documents

Publication Publication Date Title
CN109358809B (zh) 一种raid数据存储系统及方法
JP6300132B2 (ja) ガベージデータを収集するための方法及び記憶装置
US11243706B2 (en) Fragment management method and fragment management apparatus
CN102622189B (zh) 存储虚拟化的装置、数据存储方法及系统
US11157365B2 (en) Method for processing stripe in storage device and storage device
WO2022017002A1 (zh) 一种垃圾回收方法及装置
US9251059B2 (en) Storage system employing MRAM and redundant array of solid state disk
CN105573681A (zh) 一种ssd盘片内部raid组建方法及系统
CN111538460A (zh) Raid功能实现方法及相关装置
CN103150261A (zh) 用于同时访问多个固态盘的方法与装置
CN103176858A (zh) 具有多个固态盘的存储设备
WO2021139166A1 (zh) 基于三维闪存存储结构的错误页识别方法
CN115857790A (zh) 一种存储设备、数据存储方法及存储系统
CN108877862B (zh) 页条带的数据组织以及向页条带写入数据的方法与装置
CN103914391A (zh) 数据读取方法、存储器控制器与存储器存储装置
CN103544118A (zh) 存储器储存装置、其存储器控制器与数据写入方法
CN103218308B (zh) 缓冲存储器管理方法、存储器控制器与存储器储存装置
KR102425470B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
CN110968473A (zh) 存储器控制器和包括存储器控制器的存储装置
CN109491593B (zh) 一种数据存储管理系统及方法
Ma et al. Log-roc: Log structured raid on open-channel ssd
CN103064803B (zh) 一种NAND Flash存储设备的数据读写方法和装置
WO2016082504A1 (zh) 一种独立磁盘冗余阵列的实现方法及装置
CN203191968U (zh) 具有多个固态盘的存储设备
CN111124290A (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
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A RAID data storage system and method

Effective date of registration: 20230518

Granted publication date: 20200724

Pledgee: Jiangsu Bank Co.,Ltd. Shanghai Huinan Branch

Pledgor: FANGYI INFORMATION TECHNOLOGY (SHANGHAI) CO.,LTD.

Registration number: Y2023310000195

PE01 Entry into force of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Granted publication date: 20200724

Pledgee: Jiangsu Bank Co.,Ltd. Shanghai Huinan Branch

Pledgor: FANGYI INFORMATION TECHNOLOGY (SHANGHAI) CO.,LTD.

Registration number: Y2023310000195