一种RAID数据存储系统及方法与流程

文档序号:16916503发布日期:2019-02-19 19:00阅读:282来源:国知局
一种RAID数据存储系统及方法与流程

本发明涉及数据存储技术领域,尤其涉及一种raid数据存储系统及方法。



背景技术:

固态硬盘(solidstatedrives,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校验值和主机校验值依照被分配的物理地址写入多个物理页中,随后退出。

以上对本发明的具体实施例进行了详细描述,但其只是作为范例,本发明并不限制于以上描述的具体实施例。对于本领域技术人员而言,任何对本发明进行的等同修改和替代也都在本发明的范畴之中。因此,在不脱离本发明的精神和范围下所作的均等变换和修改,都应涵盖在本发明的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1