首页> 中国专利> 一种基于FPGA实现硬RAID卡功能的方法

一种基于FPGA实现硬RAID卡功能的方法

摘要

本发明公开了一种基于FPGA实现硬RAID卡功能的方法,应用于基于FPGA实现硬RAID卡功能的系统;所述系统包括FPGA芯片、存储盘和应用设备;所述FPGA芯片的PS端包括软核处理器和内存单元,所述FPGA芯片的PL端包括RAID阵列控制器;所述存储盘包括主力盘、备用盘和临时盘;至少3个所述主力盘均通信连接于所述FPGA芯片以形成RAID阵列;本发明提出的基于FPGA实现硬RAID卡功能的方法,不再需要网络管理人员来人工进行RAID阵列的恢复操作,大大缩减了RAID阵列的恢复时长,减少了因RAID阵列出现故障而延误数据存储的进度的不利影响,降低了整个存储系统的数据丢失风险。

著录项

  • 公开/公告号CN113238991A

    专利类型发明专利

  • 公开/公告日2021-08-10

    原文格式PDF

  • 申请/专利权人 湖南博匠信息科技有限公司;

    申请/专利号CN202110784563.4

  • 发明设计人 谢启友;

    申请日2021-07-12

  • 分类号G06F15/78(20060101);G06F11/10(20060101);G06F3/06(20060101);

  • 代理机构43254 长沙智勤知识产权代理事务所(普通合伙);

  • 代理人彭凤琴

  • 地址 410000 湖南省长沙市岳麓区麓景路2号长沙生产力促进中心

  • 入库时间 2023-06-19 12:10:19

说明书

技术领域

本发明涉及磁盘阵列技术领域,具体涉及一种基于FPGA实现硬RAID卡功能的方法。

背景技术

RAID是英文Redundant Array of Independent Disks的缩写,翻译成中文即为独立磁盘冗余阵列,或简称磁盘阵列。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据冗余的技术;组成磁盘阵列的不同方式为RAID级别(RAID Levels)。

磁盘阵列可以对数据进行冗余保护的。根据RAID级别的不同,可以容忍出现故障的盘数也不同;以RAID5为例,磁盘阵列中每块磁盘都存储数据和校验值,任意一块磁盘出现故障后,可以基于存储数据和效验值对故障磁盘的内容进行复原。

但是,虽然故障磁盘的内容可以复原,但是在某些实际应用中(例如视频监控),磁盘阵列经常是不间断在进行数据存储,所以需要及时更换故障磁盘,以保证磁盘阵列的正常工作。

目前,更换故障磁盘通常是由网络管理人员来人工操作;需找到故障磁盘,并拔出故障磁盘,插入新磁盘,然后对新插入的磁盘进行磁盘阵列配置,操作步骤比较复杂,且比较费时,不仅会延误数据存储的进度,更会增加整个存储系统的数据丢失风险。

发明内容

本发明的主要目的是提供一种基于FPGA实现硬RAID卡功能的方法,旨在解决目前的RAID技术中,更换故障磁盘通常是由网络管理人员来人工操作,操作步骤比较复杂,且比较费时,不仅会延误数据存储的进度,更会增加整个存储系统的数据丢失风险的问题。

本发明提出的技术方案为:

一种基于FPGA实现硬RAID卡功能的方法,应用于基于FPGA实现硬RAID卡功能的系统;所述系统包括FPGA芯片、存储盘和应用设备;所述FPGA芯片的PS端包括软核处理器和内存单元,所述FPGA芯片的PL端包括RAID阵列控制器;所述存储盘包括主力盘、备用盘和临时盘;至少3个所述主力盘均通信连接于所述FPGA芯片以形成RAID阵列;所述临时盘通信连接于所述FPGA芯片;所述软核处理器和应用设备通信连接;所述软核处理器用于运行操作系统;所述方法,包括:

所述FPGA芯片获取每个所述主力盘在所述RAID阵列对应的存储区块,并获取每个所述存储区块关联的所述备用盘;

所述FPGA芯片将通过所述软核处理器实时获取的来自应用设备的外部数据实时缓存至所述内存单元,并打包形成具有不同数据名称的数据存储包;

所述FPGA芯片通过所述RAID阵列控制器将所述内存单元中的数据存储包按照设定的存储规则存储至指定的存储区块;

所述FPGA芯片根据所述指定的存储区块是否能检索到所述数据存储包的数据名称,确定是否自动更新RAID阵列。

优选的,所述FPGA芯片根据所述指定的存储区块是否能检索到所述数据存储包的数据名称,确定是否更新RAID阵列的步骤,包括:

当所述指定的存储区块未能检索到所述数据存储包的数据名称时,所述FPGA芯片通过所述RAID阵列控制器向所述指定的存储区块存储测试数据;

所述FPGA芯片侦测所述指定的存储区块是否成功存储所述测试数据;

若否,所述FPGA芯片将侦测到所述指定的存储区块未成功存储所述测试数据的时刻标记为故障时刻,并将所述指定的存储区块对应的所述主力盘标记为故障盘;

所述FPGA芯片自所述故障时刻起将所述指定的存储区块对应的所述备用盘与所述FPGA芯片建立通信连接,并将所述备用盘标记为目标盘;

所述FPGA芯片通过所述RAID阵列控制器将所述目标盘和正常的所述主力盘配置形成新的RAID阵列;

所述基于FPGA实现硬RAID卡功能的方法,还包括:

所述FPGA芯片将新的RAID阵列的形成时刻标记为完成时刻;

将未成功存储至所述指定的存储区块的数据存储包,以及自所述故障时刻起直至所述完成时刻的时间段内的待存入所述指定的存储区块的所述外部数据,在所述FPGA芯片的控制下,从所述内存单元存储至所述临时盘中;

在所述完成时刻后,所述FPGA芯片将所述内存单元中的所述外部数据采用RAID方式通过所述RAID阵列控制器存储至新的RAID阵列中。

优选的,所述RAID方式为RAID5;所述方法,还包括:

所述FPGA芯片基于新的RAID阵列在过去预设天数内的数据存储情况预测新的RAID阵列的存储低谷时间段;

在所述预设天数后的第一个所述存储低谷时间段内,所述FPGA芯片基于RAID5技术将所述故障盘中的数据还原至所述临时盘,并将还原的数据标记为还原数据;

所述FPGA芯片将所述还原数据转移至所述目标盘;

所述FPGA芯片将所述目标盘标记为所述主力盘。

优选的,还包括:

所述FPGA芯片基于新的RAID阵列在过去预设天数内的数据存储情况预测新的RAID阵列的存储低谷时间段;

在所述预设天数后的第一个所述存储低谷时间段内,所述FPGA芯片将自所述故障时刻起直至所述完成时刻的时间段内,存储至所述临时盘中的所述外部数据标记为临时数据;

所述FPGA芯片将所述临时数据采用RAID方式通过所述RAID阵列控制器存储至新的RAID阵列中;

所述FPGA芯片将所述临时数据于所述临时盘中删除。

优选的,所述FPGA芯片基于新的RAID阵列在过去预设天数内的数据存储情况预测新的RAID阵列的存储低谷时间段,包括:

所述FPGA芯片获取过去预设天数内,每天的每个第一预设周期中存储至所述新的RAID阵列中的数据量,并标记为第一目标数据量;

所述FPGA芯片获取预设数据量;

所述FPGA芯片将小于所述预设数据量的所述第一目标数据量标记为第二目标数据量;

所述FPGA芯片标记第一目标周期,其中,所述第一目标周期大于预设时长,且所述第一目标周期由所述第二目标数据量对应的连续的所述第一预设周期组合形成;

所述FPGA芯片判断过去预设天数内每天中是否存在至少1个所述第一目标周期;

若是,所述FPGA芯片判断过去预设天数内每天中是否存在多个所述第一目标周期;

若存在多个所述第一目标周期,所述FPGA芯片减小所述预设数据量,并再次执行所述FPGA芯片获取预设数据量,及之后的步骤;

若不存在多个所述第一目标周期,所述FPGA芯片将各所述第一目标周期彼此共同对应的时间段标记为预选时间段;

若否,所述FPGA芯片增大所述预设数据量,并再次执行所述FPGA芯片获取预设数据量,及之后的步骤;

所述FPGA芯片将所述预选时间段作为所述存储低谷时间段。

优选的,还包括:

所述FPGA芯片基于各所述主力盘当前所存储的数据的大小和所述FPGA芯片的运算能力,得到所述FPGA芯片基于RAID5技术将所述故障盘中的数据还原至所述临时盘的第一预估时长;

所述FPGA芯片基于所述还原数据的大小,和所述备用盘的读写速度,得到将所述还原数据转移至所述目标盘的第二预估时长;

若不存在多个所述第一目标周期,所述FPGA芯片将各所述第一目标周期彼此共同对应的时间段标记为预选时间段,之后还包括:

所述FPGA芯片判断所述预选时间段是否大于所述第一预估时长和所述第二预估时长之和;

若是,执行所述在所述预设天数后的第一个所述存储低谷时间段内,所述FPGA芯片基于RAID5技术将所述故障盘中的数据还原至所述临时盘,并将还原的数据标记为还原数据,及之后的步骤;

若否,所述FPGA芯片增大所述预设数据量,并再次执行所述FPGA芯片获取预设数据量,及之后的步骤。

优选的,所述存储盘为使用SATA接口的固态硬盘;所述备用盘的SATA接头和所述FPGA芯片的SATA接口之间设置有连接装置;所述连接装置包括第一接头、第一接口、第二接头、第二接口和控制部件;所述第一接头和所述第一接口通信连接;所述第一接头用于嵌入所述FPGA芯片的SATA接口;所述第二接头和所述第二接口通信连接;所述第二接口用于连接所述备用盘的SATA接头;所述FPGA芯片用于通过所述控制部件控制所述第一接口和第二接头之间是否建立通信连接;所述FPGA芯片自所述故障时刻起将所述指定的存储区块对应的所述备用盘与所述FPGA芯片建立通信连接,并将所述备用盘标记为目标盘,包括:

自所述故障时刻起,所述FPGA芯片通过所述控制部件控制所述第一接口和第二接头建立通信连接,以使所述指定的存储区块对应的所述备用盘与所述FPGA芯片建立通信连接。

优选的,所述连接装置还包括包容腔、第一固定柱、第二固定柱、限位杆和限位套;

所述包容腔包括彼此相对且平行的第一壁和第二壁;所述第一固定柱设置于所述第一壁,第二固定柱设置于所述第二壁;所述第一接头设置于所述第一固定柱的远离所述包容腔的一端,所述第一接口设置于所述第一壁的内壁;

所述第二接口设置于所述第二固定柱的远离所述包容腔的一端;所述第二接头活动设置于所述包容腔内;所述限位杆连接于所述第一壁和所述第二壁之间;所述第二接头设置有限位套;所述限位套配合滑动套设于所述限位杆,以使所述第二接头能沿所述限位杆滑动;所述第二接头能滑动至嵌入所述第一接口中;所述控制部件用于控制所述第二接头分别处于断开状态和连接状态,以控制所述第一接口和第二接头之间是否建立通信连接。

优选的,所述控制部件包括第一弹簧、固定套、移动杆、挡板、第二弹簧、吸合板和电磁铁;

所述第一弹簧套设于所述限位杆;所述第一弹簧的一端连接于所述限位套,所述第一弹簧的另一端连接于所述第二壁;所述第一弹簧呈压缩状态;所述第一弹簧的弹力使所述第二接头具有配合插入所述第一接口中的趋势;

所述限位杆垂直于所述第二壁;所述第一壁和所述第二壁之间设置有第三壁;所述固定套固定穿设于所述第三壁;所述移动杆配合滑动穿设于所述固定套;所述移动杆的远离所述包容腔的一端设置有挡板;所述挡板和所述固定套之间设置有第二弹簧;

所述移动杆上固定有铁质的吸合板;所述电磁铁设置于所述第三壁的内壁;所述电磁铁与所述吸合板正相对;当所述第二接头处于所述断开状态时,所述第二弹簧的弹力使所述移动杆具有靠近所述限位套的趋势,且所述移动杆与所述限位套的背离所述第二壁的一侧面接触;当所述第二接头处于连接状态时,所述电磁铁与所述吸合板吸和,所述移动杆不与所述限位套接触,所述第二接头在所述第一弹簧的作用下配合插入所述第一接口中;所述FPGA 芯片用于控制所述电磁铁的启停。

优选的,所述主力盘均通过所述连接装置与所述FPGA芯片通信连接;所述FPGA芯片自所述故障时刻起将所述指定的存储区块对应的所述备用盘与所述FPGA芯片建立通信连接,并将所述备用盘标记为目标盘,之后还包括:

将所述故障盘对应的所述连接装置标记为目标装置;

待拆下所述故障盘后,所述FPGA芯片控制所述目标装置的所述电磁铁上电,以使所述吸合板和所述电磁铁吸合;

待所述目标装置的所述第二接头拔出于所述第一接口,且所述目标装置的所述第二接头移动至靠近所述第二壁后,所述FPGA芯片控制所述目标装置的所述电磁铁失电,以使所述目标装置的所述移动杆与所述限位套的背离所述第二壁的一侧接触;

待新的存储盘的SATA接头插入与所述目标装置的所述第二接口后,所述FPGA芯片将所述新的存储盘标记为所述备用盘。

通过上述技术方案,能实现以下有益效果:

本发明提出的基于FPGA实现硬RAID卡功能的方法,FPGA芯片根据指定的存储区块是否能检索到数据存储包的数据名称。来判断RAID阵列是否出现故障,当RAID阵列出现故障时,则自动更新RAID阵列,使得RAID阵列的及时恢复正常的存储功能,不再需要网络管理人员来人工进行RAID阵列的恢复操作,大大缩减了RAID阵列的恢复时长,减少了因RAID阵列出现故障而延误数据存储的进度的不利影响,降低了整个存储系统的数据丢失风险。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。

图1为本发明提出的一种基于FPGA实现硬RAID卡功能的方法第一实施例的流程图;

图2为本发明提出的一种基于FPGA实现硬RAID卡功能的方法中的连接装置的结构示意图。

附图标记说明:

110-第一接头、120-第一固定柱、130-第一接口、140-第二接头、150-第二固定柱、160-第二接口、170-第一壁、180-第二壁、190-第三壁、210-限位杆、220-限位套、230-第一弹簧、240-固定套、250-移动杆、260-挡板、270-第二弹簧、280-电磁铁、290-吸合板。

具体实施方式

应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

本发明提出一种基于FPGA实现硬RAID卡功能的方法。

如附图1所示,在本发明提出的一种基于FPGA实现硬RAID卡功能的方法的第一实施例中,本方法应用于基于FPGA实现硬RAID卡功能的系统;所述系统包括FPGA芯片、存储盘和应用设备;所述FPGA芯片的PS端包括软核处理器和内存单元,所述FPGA芯片的PL端包括RAID阵列控制器;所述存储盘包括主力盘、备用盘和临时盘;至少3个所述主力盘均通信连接于所述FPGA芯片以形成RAID阵列;所述临时盘通信连接于所述FPGA芯片;所述软核处理器和应用设备通信连接;所述软核处理器用于运行操作系统(优选为Linux操作系统);本实施例包括如下步骤:

步骤S110:所述FPGA芯片获取每个所述主力盘在所述RAID阵列对应的存储区块,并获取每个所述存储区块关联的所述备用盘。

具体的,本实施例中为了成本考虑,备用盘为1个,即各个存储区块均对应于同一备用盘。

步骤S120:所述FPGA芯片将通过所述软核处理器实时获取的来自应用设备的外部数据实时缓存至所述内存单元,并打包形成具有不同数据名称的数据存储包。

具体的,本实施例中,RAID阵列的实际应用为连续存储的实际应用(如RAID阵列作为视频监控的存储方案,即应用设备为监控摄像头),FPGA芯片将通过软核处理器实时获取的来自应用设备的外部数据实时缓存至所述内存单元,然后在内存单元将外部数据打包形成具有不同数据名称的数据存储包;即将外部数据按照时间长度进行打包,即每个数据存储包包括不同的时间段对应的外部数据。

步骤S130:所述FPGA芯片通过所述RAID阵列控制器将所述内存单元中的数据存储包按照设定的存储规则存储至指定的存储区块。

具体的,这里的预设存储规则为将数据存储包进行平均分配并与存储区块建立对应的关系,各数据存储包对应的存储区块即为其指定的存储区块;同时,这里的存储规则也可以是按照数据存储包的重要程度来分配存储区块。

步骤S140:所述FPGA芯片根据所述指定的存储区块是否能检索到所述数据存储包的数据名称,确定是否自动更新RAID阵列。

具体的,所述FPGA芯片根据所述指定的存储区块是否能检索到所述数据存储包的数据名称,若能够检索到,说明数据存储包成功存储至指定的存储区块内,从而说明RAID阵列是正常工作的;反之,若不能检索到,则说明数据存储包未能成功存储至指定的存储区块内,从而说明RAID阵列出现了故障,则自动更新RAID阵列,以及时恢复RAID阵列的存储功能。

本发明提出的基于FPGA实现硬RAID卡功能的方法,FPGA芯片根据指定的存储区块是否能检索到数据存储包的数据名称。来判断RAID阵列是否出现故障,当RAID阵列出现故障时,则自动更新RAID阵列,使得RAID阵列的及时恢复正常的存储功能,不再需要网络管理人员来人工进行RAID阵列的恢复操作,大大缩减了RAID阵列的恢复时长,减少了因RAID阵列出现故障而延误数据存储的进度的不利影响,降低了整个存储系统的数据丢失风险。其中,不能正常进行存储的存储区块通过本发明的自动更新RAID阵列的方式,将故障盘替换为对应的备用盘,以使对应的备用盘和正常盘形成新的RAID阵列。对于其他能正常进行存储的存储区块,由于其在新的RAID阵列中对应的存储区块不变,因此,在存在故障盘时,其他正常主力盘仍能继续存储,以提高存储的稳定性。

在本发明提出的一种基于FPGA实现硬RAID卡功能的方法的第二实施例中,正常状况下,备用盘不与FPGA芯片通信连接;基于第一实施例,步骤S140,包括如下步骤:

步骤S210:当所述指定的存储区块未能检索到所述数据存储包的数据名称时,所述FPGA芯片通过所述RAID阵列控制器向所述指定的存储区块存储测试数据。

具体的,当当所述指定的存储区块未能检索到所述数据存储包的数据名称时,还需要进一步对RAID阵列进行分析,以判断RAID阵列是否确实出现了故障,故所述FPGA芯片通过所述RAID阵列控制器向所述指定的存储区块存储测试数据。

步骤S220:所述FPGA芯片侦测所述指定的存储区块是否成功存储所述测试数据。

若否,执行步骤S230:所述FPGA芯片将侦测到所述指定的存储区块未成功存储所述测试数据的时刻标记为故障时刻,并将所述指定的存储区块对应的所述主力盘标记为故障盘。

具体的,若FPGA芯片侦测所述指定的存储区块没有成功存储所述测试数据,则说明RAID阵列确实出现了故障,即指定的存储区块对应的主力盘出现了故障,无法再进行数据存储和读写。

故FPGA芯片将侦测到所述指定的存储区块未成功存储所述测试数据的时刻标记为故障时刻(即指定的存储区块对应的主力盘出现故障的时刻),并将所述指定的存储区块对应的所述主力盘标记为故障盘。

步骤S240:所述FPGA芯片自所述故障时刻起将所述指定的存储区块对应的所述备用盘与所述FPGA芯片建立通信连接,并将所述备用盘标记为目标盘。

具体的,因指定的存储区块对应的主力盘出现了故障,则直接将指定的存储区块对应的所述备用盘与所述FPGA芯片建立通信连接,并将备用盘标记为目标盘;

步骤S250:所述FPGA芯片通过所述RAID阵列控制器将所述目标盘和正常的所述主力盘配置形成新的RAID阵列。

具体的,即将与FPGA芯片建立通信连接的备用盘和未发送故障的主力盘进行配置,以形成新的RAID阵列。

本实施例,还包括如下步骤:

步骤S260:所述FPGA芯片将新的RAID阵列的形成时刻标记为完成时刻。

步骤S270:将未成功存储至所述指定的存储区块的数据存储包,以及自所述故障时刻起直至所述完成时刻的时间段内的待存入所述指定的存储区块的所述外部数据,在所述FPGA芯片的控制下,从所述内存单元存储至所述临时盘中。

具体的,这里的未成功存储至所述指定的存储区块的数据存储包是指当RAID阵列出现故障后至FPGA芯片进行判断以确定RAID阵列出现故障之间的时间段中,未能成功存储至出现故障的主力盘对应的存储区块的数据存储包。

将上述数据存储包连同自所述故障时刻起直至所述完成时刻的时间段内的待存入所述指定的存储区块的所述外部数据,存储至临时盘中,即临时盘起到了临时存储的作用,以保证应用设备产生的外部数据可以不间断进行实时存储,避免出现数据丢失;这里的临时存储的对象是当RAID阵列出现故障后,不能正常存储的数据存储包。

步骤S280:在所述完成时刻后,所述FPGA芯片将所述内存单元中的所述外部数据采用RAID方式通过所述RAID阵列控制器存储至新的RAID阵列中。

具体的,在完成时刻后,已经配置好了新的RAID阵列,故不再需要进行临时存储,直接将内存单元中的所述外部数据采用RAID方式通过所述RAID阵列控制器存储至新的RAID阵列中即可。

在本发明提出的一种基于FPGA实现硬RAID卡功能的方法的第三实施例中,基于第二实施例,所述RAID方式为RAID5;本实施例还包括如下步骤:

步骤S310:所述FPGA芯片基于新的RAID阵列在过去预设天数内的数据存储情况预测新的RAID阵列的存储低谷时间段。

具体的,配置好新的RAID阵列后,还需要进行数据还原,即将出现故障的主力盘中存储数据进行还原,并把还原的数据存入目标盘中,以保证新的RAID阵列的数据完整性,便于管理人员进行数据读取。

而进行数据还原所需要的时间较长,且会占用FPGA芯片的运算能力,故可以将还原任务于新的RAID阵列的存储低谷时间段进行,这样不会对新的RAID阵列正常数据存储造成任务挤压,FPGA芯片不会超载运行,有利于新的RAID阵列的长期稳定运行。

而事实上,数据存储一般具有明显的周期性,以本发明的发明应用于视频摄像头为例,其数据采集具有明显的周期性,且周期为自然日,即每天的数据存储量都会呈一定的周期性变化,具体为白天存储量大,夜间存储量小。

故我们需要先基于新的RAID阵列在过去预设天数(例如3天)内的数据存储情况预测新的RAID阵列的存储低谷时间段,即确定存储低谷时间段。

步骤S320:在所述预设天数后的第一个所述存储低谷时间段内,所述FPGA芯片基于RAID5技术将所述故障盘中的数据还原至所述临时盘,并将还原的数据标记为还原数据。

具体的,当RAID方式为RAID5时,任意一个主力盘出现了故障,均可以通过效验值以及其他主力盘中的存储数据对出现了故障的主力盘进行数据还原,此乃现有技术,这里不再赘述。

步骤S330:所述FPGA芯片将所述还原数据转移至所述目标盘。

具体的,因目标盘就是刚刚与FPGA芯片建立通信连接,而替代原故障盘的存储盘,故直接将还原数据转移至目标盘。

步骤S340:所述FPGA芯片将所述目标盘标记为所述主力盘。

具体的,目标盘在接收了还原数据后,从其保存的数据上来将就和原来的出现了故障的主力盘没有差别了,故直接目标盘标记为主力盘。

在本发明提出的一种基于FPGA实现硬RAID卡功能的方法的第四实施例中,基于第二实施例,本实施例还包括如下步骤:

步骤S410:所述FPGA芯片基于新的RAID阵列在过去预设天数内的数据存储情况预测新的RAID阵列的存储低谷时间段。

这个步骤和第三实施例中的步骤S310具有相同的含义,只是在本实施例中,这里的存储低谷时间段是用于将自故障时刻起直至完成时刻的时间段内,存储至临时盘中的外部数据(即临时数据)转存至新的RAID阵列中,以保证数据的完整性。

步骤S420:在所述预设天数后的第一个所述存储低谷时间段内,所述FPGA芯片将自所述故障时刻起直至所述完成时刻的时间段内,存储至所述临时盘中的所述外部数据标记为临时数据。

步骤S430:所述FPGA芯片将所述临时数据采用RAID方式通过所述RAID阵列控制器存储至新的RAID阵列中。

步骤S440:所述FPGA芯片将所述临时数据于所述临时盘中删除。

具体的,临时盘中的临时数据被转存至新的RAID阵列中后,即可将存储于临时盘中的临时数据进行删除,一是为了保证临时盘的空间始终充足,以便于当下次出现故障后仍能够存储临时数据,二是为了保证数据的唯一性,防止出现数据泄漏。

在本发明提出的一种基于FPGA实现硬RAID卡功能的方法的第五实施例中,基于第三实施例,步骤S310,包括如下步骤:

步骤S510:所述FPGA芯片获取过去预设天数内,每天的每个第一预设周期中存储至所述新的RAID阵列中的数据量,并标记为第一目标数据量。

具体的,FPGA芯片获取过去预设天数(例如3天)内,每天的每个第一预设周期(优选为1分钟)中存储至新的RAID阵列中的数据量(即数据的大小,单位为GB),并标记为第一目标数据量,即这里的第一目标数据量为过去3天内,每天的每分钟内存储至新的RAID阵列中的数据量。

步骤S520:所述FPGA芯片获取预设数据量。

具体的,这里的预设数据量优选为过去预设天数内,1分钟内存储至新的RAID阵列中的最大数据量的30%,其意义在于,若某一分钟存储至新的RAID阵列中的数据量低于预设数据量,则说明该分钟处于存储低谷时间段内。

步骤S530:所述FPGA芯片将小于所述预设数据量的所述第一目标数据量标记为第二目标数据量。

具体的,即第二目标数据量为小于预设数据量的第一目标数据量。

步骤S540:所述FPGA芯片标记第一目标周期,其中,所述第一目标周期大于预设时长,且所述第一目标周期由所述第二目标数据量对应的连续的所述第一预设周期组合形成。

具体的,这里的预设时长为1小时;这里的第一目标周期即是由多个连续的第一预设周期组成的总时长大于1小时的时间区间;且第一目标周期内各分钟对应的数据存储量均小于预设数据量。

步骤S550:所述FPGA芯片判断过去预设天数内每天中是否存在至少1个所述第一目标周期。

具体的,这个步骤是用于判断过去3天内,每天中是否存在至少1个第一目标周期(可以是多个)。

若是,执行步骤S560:所述FPGA芯片判断过去预设天数内每天中是否存在多个所述第一目标周期。

若是,说明过去过去3天内,每天中是否存在至少1个第一目标周期,但需要进一步判断第一目标周期的数量,因为我们的目的是最终使得每天的第一目标周期恰好为1个,这样得到的第一目标周期和每天的存储低谷时间段对应上了。

步骤S570:若存在多个所述第一目标周期,所述FPGA芯片减小所述预设数据量,并再次执行步骤S520,及之后的步骤。

具体的,若存在多个第一目标周期,则通过上述步骤得到的过去3天中每天的第一目标周期过多,需要减少第一目标周期的数量,那么就需要减少第二目标数据量的数量,故可以采用减小预设数据量的值的方式来进行,因若预设数据量的值变小,那么相应的第二目标数据量的数量肯定会变少,则相应的会使得过去3天中,每天的第一目标周期的数量减少;故将预设数据量减小后,再次执行上述步骤S520,及之后的步骤,直至最终达到步骤S580。

步骤S580:若不存在多个所述第一目标周期,所述FPGA芯片将各所述第一目标周期彼此共同对应的时间段标记为预选时间段。

具体的,这个步骤即是对应着我们最终需要的结果,即过去3天中,每天的第一目标周期只有1个,那么此时,FPGA芯片便将各第一目标周期彼此共同对应的时间段标记为预选时间段;举例说明,若过去的第一天的第一目标周期为晚上11点-凌晨3点,过去的第二天的第一目标周期为晚上12点-凌晨4点,过去的第一天的第一目标周期为晚上11点半-凌晨3点半;那么这里的预选时间段为晚上12点-凌晨3点,因这个预选时间段是各第一目标周期共同对应的,将其作为存储低谷时间段是最适宜的。

若否,执行步骤S590:所述FPGA芯片增大所述预设数据量,并再次步骤S520,及之后的步骤。

具体的,若否,说明过去3天中,至少有一天的第一目标周期的数量为0,即有一天不存在第一目标周期,此时,说明过去3天中每天的第一目标周期过少,需要增加第一目标周期的数量,那么就需要增加第二目标数据量的数量;故可以采用增大预设数据量的值的方式来进行,因若预设数据量的值变大,那么相应的第二目标数据量的数量肯定会变多,则相应的会使得过去3天中,每天的第一目标周期的数量增加;故将预设数据量增大后,再次执行上述步骤S520,及之后的步骤,直至最终达到步骤S580。

步骤S591:所述FPGA芯片将所述预选时间段作为所述存储低谷时间段。

具体的,上述步骤运行后,最终的结果是步骤S580,即得到了预选时间段,那么FPGA芯片将预选时间段作为存储低谷时间段。本实施例的目的在于给出了如何预测存储低谷时间段的具体方案。

在本发明提出的一种基于FPGA实现硬RAID卡功能的方法的第六实施例中,基于第五实施例,本实施例还包括如下步骤:

步骤S610:所述FPGA芯片基于各所述主力盘当前所存储的数据的大小和所述FPGA芯片的运算能力,得到所述FPGA芯片基于RAID5技术将所述故障盘中的数据还原至所述临时盘的第一预估时长。

具体的,因将故障盘中的数据进行还原,需要用到其他正常的主力盘中的数据,故FPGA芯片基于各主力盘当前所存储的数据的大小和FPGA芯片的运算能力,得到FPGA芯片基于RAID5技术将故障盘中的数据还原至临时盘的第一预估时长。

步骤S620:所述FPGA芯片基于所述还原数据的大小,和所述备用盘的读写速度,得到将所述还原数据转移至所述目标盘的第二预估时长。

步骤S580,之后还包括如下步骤:

步骤S630:所述FPGA芯片判断所述预选时间段是否大于所述第一预估时长和所述第二预估时长之和。

具体的,这里将预选时间段和第一预估时长和第二预估时长进行比较,是为了能够使得数据还原和转移至目标盘的操作步骤能够在一个预选时间段内完成,这样就不用在第二天再继续进行数据还原和转移,更加简洁,也能降低在还原和转移过程中数据出现丢失的概率。

若是,执行步骤S320,即之后的步骤。

具体的,若是,说明数据还原和转移至目标盘的操作步骤能够在一个预选时间段内完成,故直接执行步骤S320,即之后的步骤(即步骤S330和步骤S340)。

若否,执行步骤S640:所述FPGA芯片增大所述预设数据量,并再次执行步骤S520,及之后的步骤。

具体的,若否,说明预选时间段的长度不足以完成数据还原和转移至目标盘的操作,为此,需要延长优选时间的时长,其实也就是需要增加第二目标数据量的数量;故可以采用增大预设数据量的值的方式来进行,因若预设数据量的值变大,那么相应的第二目标数据量的数量肯定会变多,则相应的会使得过去3天中,每天的第一目标周期的延续时长也会变长;故将预设数据量增大后,再次执行上述步骤S520,及之后的步骤,直至运行至执行步骤S320,即之后的步骤,即优选时长段能够满足数据还原和转移至目标盘的操作步骤。

请参考附图2,在本发明提出的一种基于FPGA实现硬RAID卡功能的方法的第七实施例中,基于第二实施例,所述存储盘为使用SATA接口的固态硬盘;所述备用盘的SATA接头和所述FPGA芯片的SATA接口之间设置有连接装置;所述连接装置包括第一接头110、第一接口130、第二接头140、第二接口160和控制部件;所述第一接头110和所述第一接口130通信连接;所述第一接头110用于嵌入所述FPGA芯片的SATA接口;所述第二接头140和所述第二接口160通信连接;所述第二接口160用于连接所述备用盘的SATA接头;所述FPGA芯片用于通过所述控制部件控制所述第一接口130和第二接头140之间是否建立通信连接;步骤S240,包括如下步骤:

步骤S710:自所述故障时刻起,所述FPGA芯片通过所述控制部件控制所述第一接口130和第二接头140建立通信连接,以使所述指定的存储区块对应的所述备用盘与所述FPGA芯片建立通信连接。

请参考附图2,正常情况下,备用盘和FPGA芯片之间是未建立通信连接的,当出现故障盘后,则通过控制部件控制第一接口130和第二接头140建立通信连接,以使指定的存储区块对应的备用盘与FPGA芯片建立通信连接,以便于进行后续的通过RAID阵列控制器将目标盘和正常的主力盘配置形成新的RAID阵列的步骤,以便于形成新的RAID阵列。

在本发明提出的一种基于FPGA实现硬RAID卡功能的方法的第八实施例中,基于第七实施例,所述连接装置还包括包容腔(未标号)、第一固定柱120、第二固定柱150、限位杆210和限位套220。

所述包容腔包括彼此相对且平行的第一壁170和第二壁180;所述第一固定柱120设置于所述第一壁170的背离所述第二壁180的一侧,第二固定柱150设置于所述第二壁180的背离所述第一壁170的一侧;所述第一接头110设置于所述第一固定柱120的远离所述包容腔的一端,所述第一接口130设置于所述第一壁170的内壁。

所述第二接口160设置于所述第二固定柱150的远离所述包容腔的一端;所述第二接头140活动设置于所述包容腔内;所述限位杆210连接于所述第一壁170和所述第二壁180之间;所述第二接头140设置有限位套220;所述限位套220配合滑动套设于所述限位杆210,以使所述第二接头140能沿所述限位杆210滑动;所述第二接头140能滑动至嵌入所述第一接口130中;所述控制部件用于控制所述第二接头140分别处于断开状态和连接状态,以控制所述第一接口130和第二接头140之间是否建立通信连接。

具体的,当第二接头140处于断开状态时,如附图2所述,第二接头140未与第一接口130连接,则备用盘和FPGA芯片之间未建立通信连接(此时对应着RAID阵列正常工作之时);当第二接头140处于连接状态时,第二接头140与第一接口130连接,则备用盘和FPGA芯片建立通信连接(此时对应着出现故障盘之时)。

在本发明提出的一种基于FPGA实现硬RAID卡功能的方法的第九实施例中,基于第八实施例,所述控制部件包括第一弹簧230、固定套240、移动杆250、挡板260、第二弹簧270、吸合板290和电磁铁280。

所述第一弹簧230套设于所述限位杆210;所述第一弹簧230的一端连接于所述限位套220,所述第一弹簧230的另一端连接于所述第二壁180;所述第一弹簧230呈压缩状态;所述第一弹簧230的弹力使所述第二接头140具有配合插入所述第一接口130中的趋势。

所述限位杆210垂直于所述第二壁180;所述第一壁170和所述第二壁180之间设置有第三壁190;所述固定套240固定穿设于所述第三壁190;所述移动杆250配合滑动穿设于所述固定套240;所述移动杆250的远离所述包容腔的一端设置有挡板260;所述挡板260和所述固定套240之间设置有第二弹簧270。

所述移动杆250上固定有铁质的吸合板290;所述电磁铁280设置于所述第三壁190的内壁;所述电磁铁280与所述吸合板290正相对;当所述第二接头140处于所述断开状态时,所述第二弹簧270的弹力使所述移动杆250具有靠近所述限位套220的趋势,且所述移动杆250与所述限位套220的背离所述第二壁180的一侧面接触(以阻止第二接头140嵌入第一接口130中);当所述第二接头140处于连接状态时,所述电磁铁280与所述吸合板290吸和,所述移动杆250不与所述限位套220接触,所述第二接头140在所述第一弹簧230的作用下配合插入所述第一接口130中;所述FPGA 芯片用于控制所述电磁铁280的启停。

通过上述技术方案,完善了整个连接装置的结构,即FPGA 芯片通过控制电磁铁280的启停,即可控制第二接头140和第一接口130之间的通断,从而实现控制备用盘和FPGA芯片之间是否建立通信连接。

在本发明提出的一种基于FPGA实现硬RAID卡功能的方法的第十实施例中,基于第九实施例,所述主力盘均通过所述连接装置与所述FPGA芯片通信连接;步骤S240,之后还包括如下步骤:

步骤S1010:将所述故障盘对应的所述连接装置标记为目标装置。

步骤S1020:待拆下所述故障盘后,所述FPGA芯片控制所述目标装置的所述电磁铁280上电,以使所述吸合板290和所述电磁铁280吸合。

具体的,出现故障盘后,需要拆除故障盘,并装上新的存储盘,故待工作人员拆下故障盘后,FPGA芯片控制目标装置的电磁铁280上电,以使目标装置的吸合板290和电磁铁280吸合,从而使得移动杆250不再挡住限位套220,以便于工作人员将目标装置的第二接头140拔出于第一接口130中,从而使得第一接口130和第二接头140断开连接。

步骤S1030:待所述目标装置的所述第二接头140拔出于所述第一接口130,且所述目标装置的所述第二接头140移动至靠近所述第二壁180后,所述FPGA芯片控制所述目标装置的所述电磁铁280失电,以使所述故障盘的所述移动杆250与所述限位套220的背离所述第二壁180的一侧接触。

具体的,待工作人员将目标装置的第二接头140拔出于所述第一接口130,且手动将目标装置的第二接头140移动至靠近第二壁180后,FPGA芯片控制目标装置的电磁铁280失电,以使目标装置的移动杆250与限位套220的背离第二壁180的一侧接触,从而使得移动杆250挡住限位套220,从而使得第二接头140处于断开状态。

步骤S1040:待新的存储盘的SATA接头插入与所述目标装置的所述第二接口160后,所述FPGA芯片将所述新的存储盘标记为所述备用盘。

具体的,待工作人员将新的存储盘的SATA接头插入与目标装置的第二接口160后,FPGA芯片将新的存储盘标记为备用盘,即此时新插入的存储盘成为了备用盘,而原本的备用盘则已经成为了主力盘。

本实施例的步骤即是工作人员通过连接装置更好故障盘的方案,通过本实施例的技术方案,使得新更换的存储盘可作为备用盘,以顶替已经成为了主力盘的原备用盘;本实施例中的更换存储盘的步骤可以是在出现故障盘之后任一时刻进行(因为通过前述的技术方案,已经能够及时配置新的RAID阵列,以降低对正常的数据存储的影响),不再需要工作人员及时更换故障盘。

在本发明提出的一种基于FPGA实现硬RAID卡功能的方法的第十一实施例中,基于第一实施例,所述FPGA芯片还通信连接有与云服务器,本实施例还包括如下步骤:

步骤S1101:所述FPGA芯片对所有的所述主力盘设置唯一的且连续的标号。

步骤S1102:所述FPGA芯片每隔预设时间段按照所述主力盘的所述标号的顺序选择一个所述主力盘标记为轮值盘,将剩余的所述主力盘标记为轮空盘。

具体的,这里的预设时间段优选为一个月。

步骤S1103:所述FPGA芯片将存储于所述轮值盘中的所述外部数据通过所述FPGA芯片发送至所述云服务器进行存储。

具体的,FPGA芯片将存储于轮值盘中的外部数据通过FPGA芯片发送至云服务器进行存储,以实现冗余备份。

步骤S1104:所述云服务当接收到新的所述轮值盘中的所述外部数据时,将上一个所述轮值盘中的所述外部数据删除。

具体的,将上一个轮值盘中的外部数据删除,以降低云服务器的存储负担。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号