掌桥专利:专业的专利平台
掌桥专利
首页

RAID阵列巡检方法、巡检装置和电子设备

文献发布时间:2023-06-19 19:07:35


RAID阵列巡检方法、巡检装置和电子设备

技术领域

本申请实施例涉及存储系统数据安全领域,具体而言,涉及一种RAID阵列巡检方法、巡检装置、存储系统、计算机可读存储介质和电子设备。

背景技术

RAID磁盘阵列由大量的存储单元(硬盘)组成,存储系统中把多个磁盘组成一个阵列,当作单一磁盘使用,它将数据以分条的方式储存在不同的磁盘中,在存取数据时,阵列中的相关磁盘一起动作,在大幅降低数据的存取时间的同时,还有更佳的空间利用率。

在满足性能、容量等的需求的同时,必须要保证RAID磁盘阵列能够满足最基本的要求即保证数据的安全性。由于组成磁盘阵列所需磁盘数量较多,而随着时间的推移,磁盘会由于磁性减弱和介质损坏造成的静默或者扇区损坏等现象从而影响数据安全;除去正常使用中的条带数据不一致导致数据丢失的情况,在容错处理的数据重构过程中也依赖条带数据的一致性,否则也会出现恢复错误数据的情况,也会严重影响数据安全。存储系统为保证数据的安全性,需要定期进行RAID巡检来及时隔离和修复坏扇区,即对用户写入的数据需要定时进行检查,一方面防止出现不可预计的数据损失,另一方面一旦出现问题,在可接受期限内提醒用户进行数据恢复或采取其他有效手段,从而避免对用户的数据造成不必要的损失,提升数据的安全性。

为保证存储业务的性能,RAID将巡检设计为优先级最低的后台任务,在没有其他任务执行时,巡检才会进行工作。巡检是一种循环性的队列处理流程,队列中包含阵列所有的条带,在预设周期内,按照一定的速度对全盘进行巡检任务。巡检过程中有以下几个重要元素:巡检周期、巡检范围、巡检运行时机、巡检调度方式以及速度。传统的巡检方式会循环的对阵列中所有硬盘的全部区域进行读取,采用周期内下发读取硬盘条带数据并异或校验计算的方式进行检验,这种巡检方式有几个弊端:抢占了前台业务的带宽,一定程度上影响了存储系统的性能;另外传统的全盘巡检的方式最大限度地增加了硬盘的使用率,这样就无形中加大了硬盘的损坏概率。由此可知,传统的巡检方式会影响存储系统中数据的安全性。

因此,亟需一种能够提升RAID磁盘阵列中数据安全性的巡检方法。

发明内容

本申请实施例提供了一种RAID阵列巡检方法、巡检装置、存储系统、计算机可读存储介质和电子设备,以至少缓解相关技术中RAID阵列巡检方法会影响数据安全性的问题。

根据本申请的一个实施例,提供了一种RAID阵列巡检方法,包括:建立有效区域位图,其中,所述有效区域位图的内容包括RAID中所有条带的物理地址和状态代码,所述状态代码表示所述物理地址中的数据有效或者无效,所述RAID表示磁盘阵列;在所述RAID中存在数据写入或者数据删除的情况下,更新所述有效区域位图,并建立第一巡检位图,其中,所述第一巡检位图的内容包括更新后的所述有效区域位图中所述状态代码为有效的数据对应的物理地址;获取巡检周期,并建立第一巡检任务,在所述巡检周期内,至少按照所述第一巡检位图执行所述第一巡检任务,其中,所述第一巡检任务为对所述RAID进行巡检的任务,所述巡检周期为所述第一巡检任务开始至下一巡检任务开始之间的时间。

在一个示例性实施例中,建立有效区域位图,包括:在所述RAID阵列创建完成之后,且在所述RAID中尚未存储数据的情况下,根据所述RAID阵列中所有条带的物理地址,构建初始队列,得到有效区域位图,其中,所述初始队列的内容包括所述RAID中所有条带的物理地址和状态代码,所述状态代码均为无效且表示所述RAID中所有条带的物理地址都不存在有效数据。

在一个示例性实施例中,更新所述有效区域位图,包括:在所述RAID中存在数据写入且写入所述RAID中的数据的物理地址对应的状态代码为无效的情况下,将写入所述RAID中的数据的物理地址对应的状态代码由无效更新为有效。

在一个示例性实施例中,更新所述有效区域位图,包括:在所述RAID中存在一个物理地址对应的所有数据均被删除的情况下,将删除物理地址对应的状态代码由有效更新为无效,其中,所述删除物理地址为所述RAID中删除的数据的物理地址。

在一个示例性实施例中,在所述RAID中存在数据写入且写入所述RAID中的数据的物理地址对应的状态代码为有效的情况下,不更新写入所述RAID中的数据的物理地址对应的状态代码。

在一个示例性实施例中,在所述RAID中存在一个物理地址对应的所有数据未被全部删除的情况下,不更新从所述RAID中删除的数据的物理地址对应的状态代码。

在一个示例性实施例中,在更新所述有效区域位图之后,还包括:判断当前是否存在第二巡检任务,其中,所述第二巡检任务表示在所述第一巡检任务开始之前对所述RAID阵列执行的巡检任务;在当前存在所述第二巡检任务的情况下,将写入所述RAID中的数据的物理地址和状态代码存储至目标队列,检测删除物理地址是否位于所述目标队列中,在位于所述目标队列的情况下,删除所述目标队列中的所述删除物理地址,其中,所述目标队列形成于所述RAID上次数据写入或者数据删除之后且用于存储写入所述RAID中的数据的物理地址和状态代码,所述删除物理地址为所述RAID中删除的数据的物理地址。

在一个示例性实施例中,在将写入所述RAID中的数据的物理地址和状态代码存储至目标队列之后,还包括:在所述第二巡检任务按照第二巡检位图对所述RAID阵列进行巡检完成之后,对所述目标队列中的物理地址进行巡检,其中,所述第二巡检位图包括所述第二巡检任务中所需巡检的物理地址。

在一个示例性实施例中,判断当前是否存在第二巡检任务,包括:检测存储系统当前是否存在第二巡检位图,在存在所述第二巡检位图的情况下,确定当前存在第二巡检任务,在不存在所述第二巡检位图的情况下,确定当前不存在第二巡检任务,其中,所述存储系统用于存储数据和执行巡检任务,所述第二巡检位图包括所述第二巡检任务中所需巡检的物理地址。

在一个示例性实施例中,建立第一巡检位图,包括:复制更新后的所述有效区域位图中所述状态代码为有效的数据对应的物理地址,得到第一巡检位图。

在一个示例性实施例中,至少按照所述第一巡检位图执行所述第一巡检任务,包括:计算所述第一巡检位图中所述物理地址的数量与所述巡检周期的比值,得到预设巡检速度;按照所述第一巡检位图和所述预设巡检速度执行所述第一巡检任务。

在一个示例性实施例中,在按照所述第一巡检位图和所述预设巡检速度执行所述第一巡检任务之后,还包括:在所述第一巡检任务按照所述第一巡检位图进行巡检完成之后,对在第一巡检任务执行过程中生成的目标队列中的物理地址进行巡检,其中,所述目标队列形成于所述RAID上次数据写入或者数据删除之后且用于存储写入所述RAID中的数据的物理地址和状态代码。

在一个示例性实施例中,执行所述第一巡检任务,包括:将所述第一巡检位图所包含的物理地址中的多个目标数据进行异或计算,得到异或结果,比较所述异或结果与初始异或结果是否相同,其中,所述初始异或结果为在将多个所述目标数据存储至所述RAID阵列之前,对多个所述目标数据进行异或计算得到的异或结果;在所述异或结果与所述初始异或结果相同的情况下,确定多个所述目标数据正确,在所述异或结果与所述初始异或结果不同的情况下,确定多个所述目标数据存在错误。

在一个示例性实施例中,在至少按照所述第一巡检位图执行所述第一巡检任务之后,还包括:检测存储系统是否存在其余任务,在存在其余任务的情况下,结束巡检,在不存在其余任务的情况下,进行下一巡检任务,其中,所述存储系统用于存储数据和执行所述巡检任务,所述其余任务表示所述存储系统中除所述巡检任务之外的任务。

根据本申请的又一个实施例,还提供了一种RAID阵列巡检装置,包括:第一建立模块,用于建立有效区域位图,其中,所述有效区域位图的内容包括RAID中所有条带的物理地址和状态代码,所述状态代码表示所述物理地址中的数据有效或者无效,所述RAID表示磁盘阵列;第二建立模块,用于在所述RAID中存在数据写入或者数据删除的情况下,更新所述有效区域位图,并建立第一巡检位图,其中,所述第一巡检位图的内容包括更新后的所述有效区域位图中所述状态代码为有效的数据对应的物理地址;执行模块,用于获取巡检周期,并建立第一巡检任务,在所述巡检周期内,至少按照所述第一巡检位图执行所述第一巡检任务,其中,所述第一巡检任务为对所述RAID进行巡检的任务,所述巡检周期为所述第一巡检任务开始至下一巡检任务开始之间的时间。

根据本申请的又一个实施例,还提供了一种存储系统,包括RAID模块、存储上层模块和存储下层模块及硬盘,所述存储系统与主机进行业务交互,用于执行上述任一种方法实施例中的步骤。

根据本申请的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一种方法实施例中的步骤。

根据本申请的又一个实施例,还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一种方法实施例中的步骤。

通过本申请,首先,根据RAID磁盘阵列中数据所在的物理地址和状态代码建立有效区域位图,在存在数据写入或者数据删除的情况下,更新有效区域位图,根据有效区域位图中状态代码为有效的数据对应的物理地址建立第一巡检位图,并至少按照第一巡检位图对RAID磁盘阵列进行巡检。与现有技术中,对RAID阵列中所有物理地址的数据进行巡检的方法相比,本申请根据有效区域位图中状态代码为有效的物理地址,建立第一巡检位图,即只对包含有效数据的物理地址对应的数据进行巡检,降低了RAID磁盘阵列的使用频率,提升了磁盘的稳定性,进而提升了数据的安全性,因此,可以缓解现有RAID阵列巡检方法会影响数据安全性的问题,达到降低对数据安全性造成影响的目的。

附图说明

图1是本申请实施例的一种RAID阵列巡检方法的移动终端的硬件结构框图;

图2是本申请实施例的一种RAID阵列巡检方法的流程图;

图3是本申请实施例的一种RAID阵列巡检方法应用的存储系统架构示意图;

图4是本申请实施例的一种具体的RAID阵列巡检方法的流程图;

图5是本申请实施例的另一种具体的RAID阵列巡检方法的流程图;

图6是本申请实施例的一种RAID阵列巡检装置的结构框图。

其中,上述附图包括以下附图标记:

102、处理器;104、存储器;106、传输设备;108、输入输出设备。

具体实施方式

下文中将参考附图并结合实施例来详细说明本申请的实施例。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本申请实施例的一种RAID阵列巡检方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的RAID阵列巡检方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。

现有技术中,RAID阵列创建完成后,在没有其他后台任务(如重构)的情况下,阵列根据所有条带创建一个元数据管理的队列,其中,元数据管理的队列包含所有条带对应的磁盘上的物理地址;巡检任务根据队列中的物理地址开始执行任务,将每一次的调度按照分块的粒度封装成多个读IO(输入输出接口)下发到硬盘,读取条带对应的所有分块上的数据,然后异或计算读取数据的一致性,即检查是否Data(异或)Data(异或)...Data=Parity(校验位),若数据正常,进行下一巡检任务;否则报告警提示此区域存在问题;当巡检过程中有其他后台任务发生时,巡检任务暂时挂起,等待可以继续进行时,再按照上次的进度继续向后巡检,完成一轮巡检任务后,直接进行下一轮巡检。正如背景技术中所提到的,现有RAID阵列巡检方法存在以下问题:全盘巡检的方式最大限度地增加了硬盘的使用率,这样就无形中加大了硬盘的损坏概率,硬盘损害会造成数据的丢失,从而引起数据的安全性问题。因此,本申请提供了一种RAID阵列巡检方法、装置、计算机可读存储介质和电子设备,以至少缓解相关技术中RAID阵列巡检方法会影响数据安全性的问题。

在本实施例中提供了一种运行于上述移动终端的RAID阵列巡检方法,图2是本申请实施例的一种RAID阵列巡检方法的流程图,如图2所示,该流程包括如下步骤:

步骤S202,建立有效区域位图,其中,上述有效区域位图的内容包括RAID中所有条带的物理地址和状态代码,上述状态代码表示上述物理地址中的数据有效或者无效,上述RAID表示磁盘阵列;

具体地,RAID(磁盘阵列,Redundant Arrays of Independent Disks,简称RAID)分为硬RAID(基于硬件RAID卡,集成某钟特定RAID算法)与软RAID(软件实现RAID)之分,本申请应用于软RAID。在RAID的使用过程中,文件的占用和释放决定了阵列在极端场景下才会占用所有硬盘空间,因此无需每次巡检都对全部空间进行一次检查,只需要对存在有效数据的空间巡检即可,因此本申请建立有效区域位图,即将磁盘阵列中的物理地址和表示上述物理地址中是否包含有效数据的状态代码存储至有效区域位图中,状态代码为1的情况下,表示对应的物理地址中包含有效数据,状态代码为0的情况下,表示对应的物理地址中不包含有效数据,即在后续的巡检过程中只需对状态代码为1的物理地址进行巡检。

步骤S204,在上述RAID中存在数据写入或者数据删除的情况下,更新上述有效区域位图,并建立第一巡检位图,其中,上述第一巡检位图的内容包括更新后的上述有效区域位图中上述状态代码为有效的数据对应的物理地址;

具体地,在实际应用过程中,随时会存在数据写入RAID阵列或者将数据从RAID中删除的情况,因此在巡检之前需要更新上述有效区域位图,以防止遗漏需要进行数据巡检的物理地址或者对已经删除的数据的物理地址进行重复巡检,提升巡检的时效性。根据更新后的有效区域位图建立第一巡检位图,第一巡检位图只包括更新后的有效区域位图中状态代码为有效的数据对应的物理地址,从而使后续巡检过程按照第一巡检位图进行巡检,本申请通过改变巡检的范围,极大减少了对RAID磁盘阵列的额外损耗。

步骤S206,获取巡检周期,建立第一巡检任务,在上述巡检周期内,至少按照上述第一巡检位图执行上述第一巡检任务,其中,上述第一巡检任务为对上述RAID进行巡检的任务,上述巡检周期为上述第一巡检任务开始至下一巡检任务开始之间的时间。

具体地,巡检周期可以根据实际应用场景进行设置,例如:巡检周期为五分钟,即每五分钟至少按照第一巡检位图对RAID阵列进行数据巡检,通过优化巡检方式,优化了巡检带来的持续性的性能影响,提升了存储系统的局部性能。上述巡检周期可以根据具体地应用场景进行设置,即本申请并不对上述巡检周期的具体值进行限制。

通过上述步骤,首先,根据RAID磁盘阵列中数据所在的物理地址和状态代码建立有效区域位图,在存在数据写入或者数据删除的情况下,更新有效区域位图,根据有效区域位图中状态代码为有效的数据对应的物理地址建立第一巡检位图,并至少按照第一巡检位图对RAID磁盘阵列进行巡检。与现有技术中,对RAID阵列中所有物理地址的数据进行巡检的方法相比,本申请根据有效区域位图中状态代码为有效的物理地址,建立第一巡检位图,即只对包含有效数据的物理地址对应的数据进行巡检,降低了RAID磁盘阵列的使用频率,降低了磁盘的损坏概率,提升了磁盘的稳定性,进而提升了数据的安全性,缓解了现有技术中RAID阵列巡检方法会影响数据安全性的问题,降低了由于磁盘损坏引起数据丢失的问题,提高了数据的安全性。

其中,上述步骤的执行主体可以为服务器、终端等,但不限于此。

本申请的一些实施例中,建立有效区域位图,包括:在上述RAID阵列创建完成之后,且在上述RAID中尚未存储数据的情况下,根据上述RAID阵列中所有条带的物理地址,构建初始队列,得到有效区域位图,其中,上述初始队列的内容包括上述RAID中所有条带的物理地址和状态代码,上述状态代码均为无效且表示上述RAID中所有条带的物理地址都不存在有效数据。通过该方法,在上述RAID中尚未存储数据的情况下,首先构建包含RAID阵列中所有条带的物理地址的初始队列,且由于RAID阵列中还未存储数据,因此初始队列中的物理地址的状态代码均为无效,由初始队列得到有效区域位图,这样可以在后续执行巡检任务时,对RAID所有物理地址的状态代码进行更新,以区分物理地址是否包含有效数据。

具体地,在上述RAID阵列创建完成之后且尚未存储数据的情况下,上述RAID阵列处于初始状态,此时,RAID阵列中所有条带的物理地址中均不存在有效数据,状态代码均为无效即所有物理地址的状态代码均为0。根据所有的物理地址和对应的状态代码,构建初始队列,得到有效区域位图,需要说明的是,此时的有效区域位图处于初始状态,即还未使用此时的有效区域位图执行巡检任务,有效区域位图在后续执行巡检任务的过程中会按照巡检周期对物理地址对应的状态代码进行更新,以表示存在数据写入或者删除,有效区域位图的更新方法将在下文进行说明。

本申请的一些实施例中,更新上述有效区域位图,包括:在上述RAID中存在数据写入且写入上述RAID中的数据的物理地址对应的状态代码为无效的情况下,将写入上述RAID中的数据的物理地址对应的状态代码由无效更新为有效。通过该方法,将无效的物理地址对应的状态代码更新为有效,这样可以保证能够及时更新有效区域位图。

具体地,RAID中数据的写入以及数据的删除是随时都在发生的,有效区域位图需要随着数据的写入与数据的删除实时变化。在存在数据写入的情况下,表示状态代码为无效的物理地址转变为有效,因此将删除数据的物理地址对应的状态代码由0更新为1。

本申请的一些实施例中,在上述RAID中存在一个物理地址对应的所有数据均被删除的情况下,将删除物理地址对应的状态代码由有效更新为无效,其中,上述删除物理地址为上述RAID中删除的数据的物理地址。通过该方法,将有效的物理地址对应的状态代码更新为无效,这样也可以保证能够及时更新有效区域位图。

具体地,如上文所说,RAID中数据的写入以及数据的删除是随时都在发生的,有效区域位图需要随着数据的写入与数据的删除实时变化。在存在数据删除的情况下,表示状态代码为有效的物理地址转变为无效,因此将删除数据的物理地址对应的状态代码由1更新为0。

本申请的一些实施例中,在上述上述RAID中存在数据写入且写入上述上述RAID中的数据的物理地址对应的状态代码为有效的情况下,不更新写入上述上述RAID中的数据的物理地址对应的状态代码。通过该方法,对本来存在数据的物理地址的状态代码不进行更新,这样可以避免对原本有效的状态代码进行重复操作,以简化操作步骤,提升方法的灵活性。

具体地,在实际应用过程中,可能会存在数据写入状态代码为有效的物理地址中,即该物理地址已经存在有效数据,即有效区域位图中该物理地址对应的状态代码为有效,此时,数据的写入并没有改变物理地址中有效数据的状态,即不存在物理地址的状态从有效变为无效或者从无效变为有效,所以不需要更新上述有效区域位图。

本申请的一些实施例中,在上述RAID中存在一个物理地址对应的所有数据未被全部删除的情况下,不更新从上述RAID中删除的数据的物理地址对应的状态代码。通过该方法,对物理地址中的数据并未全部删除的状态代码也不进行更新,这样可以避免删除还存在有效数据的有效物理地址,以免造成物理地址的遗漏。

具体地,在实际应用过程中,还可能会存在某一物理地址中的数据只被删除了一部分并没有被完全删除的情况,此时有效区域位图中的物理地址的有效状态也并未改变,因此,在这种情况下也不需要更新有效区域位图。

本申请的一些实施例中,在更新上述有效区域位图之后,还包括:判断当前是否存在第二巡检任务,其中,上述第二巡检任务表示在上述第一巡检任务开始之前对上述RAID阵列执行的巡检任务;在当前存在上述第二巡检任务的情况下,将写入上述RAID中的数据的物理地址和状态代码存储至目标队列,检测删除物理地址是否位于上述目标队列中,在位于上述目标队列的情况下,删除上述目标队列中的上述删除物理地址,其中,上述目标队列形成于上述RAID上次数据写入或者数据删除之后且用于存储写入上述RAID中的数据的物理地址和状态代码,上述删除物理地址为上述RAID中删除的数据的物理地址。通过上述步骤,在存在第二巡检任务的情况下,将存入数据的物理地址和状态代码存储至目标队列,这样可以对在第二巡检任务执行的期间存入的数据或者删除的数据进行及时地识别与更新。

具体地,在检测到存在第二巡检任务的情况下,即当前存在正在执行巡检的第二巡检任务,若存在数据正在写入磁盘阵列,则将写入数据对应的物理地址存储至目标队列,第二巡检任务执行完成之后,对目标队列中保存的物理地址进行巡检,在实际应用过程中,也会存在数据写入至已经包含有效数据的物理地址中,此时可以首先判断数据写入的物理地址是否已经存在于第二巡检任务对应的巡检位图中(即下文中的第二巡检位图),当存在于第二巡检任务对应的巡检位图中,就无需将数据写入的物理地址存储至目标队列,因此,上述步骤可以根据实际应用场景进行调整。若存在数据正在从磁盘阵列中删除,需要判断删除物理地址的位置,即判断删除物理地址位于目标队列中还是位于第二巡检任务对应的巡检位图中,若位于目标队列中,则从目标队列中将删除物理地址进行删除,若位于第二巡检任务对应的巡检位图中,由于第二巡检任务正在按照第二巡检任务对应的巡检位图进行巡检,因此在正在执行的第二巡检任务对应的巡检位图中删除的物理地址不进行删除。

需要说明的是,在不存在第二巡检任务且存在数据写入或者数据删除的情况下,只需要按照上一实施例中的步骤更新上述有效区域位图中写入数据或者删除数据的物理地址对应的状态代码即可。

本申请的一些实施例中,在将写入上述RAID中的数据的物理地址和状态代码存储至目标队列之后,还包括:在上述第二巡检任务按照第二巡检位图对上述RAID阵列进行巡检完成之后,对上述目标队列中的物理地址进行巡检,其中,上述第二巡检位图包括上述第二巡检任务中所需巡检的物理地址。通过上述步骤,可以对随时写入的数据或删除的数据进行及时地更新与巡检。

具体地,由于第二巡检任务是当前正在执行的巡检任务,因此在第二巡检任务正在执行时形成的目标队列需要在第二巡检任务按照第二巡检位图执行完成之后,对目标队列中的物理地址进行数据巡检,对目标队列进行巡检完成之后才表示第二巡检任务完成。需要说明的是,第二巡检位图是在第二巡检任务中被巡检,在第二巡检位图被巡检完成之后,第二巡检任务继续对目标队列中的物理地址进行巡检,目标队列中的物理地址被巡检完成之后,第二巡检任务才完成。因此,在每个巡检任务的执行过程中,巡检的步骤是相同的,即都需要首先对每个巡检任务对应的巡检位图巡检进行巡检,之后,还需要巡检目标队列中的物理地址,整个巡检任务才算完成。也就是说,在第一巡检任务中,首先按照第一巡检位图进行巡检,然后按照目标队列进行巡检。本申请的一些实施例中,判断当前是否存在第二巡检任务,包括:检测存储系统当前是否存在第二巡检位图,在存在上述第二巡检位图的情况下,确定当前存在第二巡检任务,在不存在上述第二巡检位图的情况下,确定当前不存在第二巡检任务,其中,上述存储系统用于存储数据和执行巡检任务,上述第二巡检位图包括上述第二巡检任务中所需巡检的物理地址。

具体地,在实际应用中,存储系统会自动识别有无任务正在运行,判断有无巡检任务正在运行是通过检测有无巡检位图,即第二巡检任务正在执行时,可以识别到存储系统中存在第二巡检位图,从而确定存在第二巡检任务。

本申请的一些实施例中,建立第一巡检位图,包括:复制更新后的上述有效区域位图中上述状态代码为有效的数据对应的物理地址,得到第一巡检位图。通过上述步骤,只对数据的状态代码为有效的物理地址进行巡检,这样即可以达到对RAID进行巡检的目的,又可以减少对磁盘不必要的使用,进一步提升了数据的安全性。

具体地,由于本申请只对包含有效数据的物理地址进行数据巡检,因此将有效区域位图中状态代码为有效的数据对应的物理地址复制,生成第一巡检位图,后续按照第一巡检位图对RAID进行阵列巡检,并在按照第一巡检位图进行巡检的过程中,保持第一巡检位图不变。

本申请的一些实施例中,至少按照上述第一巡检位图执行上述第一巡检任务,包括:计算上述第一巡检位图中上述物理地址的数量与上述巡检周期的比值,得到预设巡检速度;按照上述第一巡检位图和上述预设巡检速度执行上述第一巡检任务。通过上述步骤,按照包含有效数据的物理地址的数量即第一巡检位图中物理地址的数量与巡检周期的比值计算预设巡检速度,这样可以使巡检的速度适应于第一巡检位图。

具体地,由于现有技术按照RAID阵列中所有的物理地址进行巡检,巡检速度为阵列中所有物理地址的数量与巡检周期的比值,即设定巡检周期后,计算物理地址总数与巡检周期的比值,得到单位时间内需要进行巡检的物理地址数量,如果中间有其他任务(例如:重构任务)将巡检任务打断时,巡检任务的速度不变,仍然按照巡检速度进行巡检。因此,上述巡检速度的计算方法不再适用于本申请的基于有效区域位图与第一巡检位图的巡检方式,本申请的预设巡检速度为第一巡检位图中物理地址的数量与巡检周期的比值,即按照第一巡检位图中物理地址总数/巡检周期(s)的方式计算出单位时间内需要巡检的物理地址的数量。例如:预设巡检速度为40个/s,巡检周期为5分钟,计算得到5分钟需要巡检40*5*60=12000个物理地址,根据实际系统的带宽,将12000个物理地址分配到5分钟内,巡检完成之后,停止巡检,直到下一个5分钟定时器重新触发下一个12000个物理地址的巡检。

本申请的一些实施例中,在至少按照上述第一巡检位图执行上述第一巡检任务之后,还包括:检测存储系统是否存在其余任务,在存在其余任务的情况下,结束巡检,在不存在其余任务的情况下,进行下一巡检任务,其中,上述存储系统用于存储数据和执行上述巡检任务,上述其余任务表示上述存储系统中除上述巡检任务之外的任务。通过上述步骤,在第一巡检任务完成之后,检测到存在其余任务时,优先执行其余任务,这样可以避免由于巡检造成的影响其余任务的运行。

具体地,在第一巡检任务完成之后,检测存储系统是否存在其余任务,例如:重构任务,若存在其余任务,则优先执行其余任务,若不存在其余任务,则重新按照本申请的步骤执行下一巡检任务。

本申请的一些实施例中,在按照上述第一巡检位图和上述预设巡检速度执行上述第一巡检任务之后,还包括:在上述第一巡检任务按照上述第一巡检位图进行巡检完成之后,对在第一巡检任务执行过程中生成的目标队列中的物理地址进行巡检,其中,上述目标队列形成于上述RAID上次数据写入或者数据删除之后且用于存储写入上述RAID中的数据的物理地址和状态代码。通过上述步骤,在第一巡检任务的执行过程中,存在数据写入或者删除的情况下,在第一巡检任务完成执行完成之后,继续对目标队列中的物理地址进行巡检,这样可以保证存在有效数据的物理地址不被遗漏。

具体地,在每一个巡检周期之内,都需要按照上文中的首先按照巡检位图进行巡检,然后对该巡检周期内的目标队列进行巡检。因此,在第一巡检周期内,在第一巡检任务按照第一巡检位图进行巡检的过程中,存在数据写入的情况下,将写入数据的物理地址存储至目标队列,存在数据删除的情况下,判断被删除的数据的物理地址是否存在于目标队列中,在存在的情况下,删除该物理地址,在不存在的情况下,目标队列和有效区域位图均不进行删除。在第一巡检任务按照第一巡检位图进行巡检完成之后,再巡检目标队列中的物理地址,从而保证不会遗漏存在有效数据的物理地址。

本申请的一些实施例中,执行 上述第一巡检任务,包括:将上述第一巡检位图所包含的物理地址中的多个目标数据进行异或计算,得到异或结果,比较上述异或结果与初始异或结果是否相同,其中,上述初始异或结果为在将多个上述目标数据存储至上述RAID阵列之前,对多个上述目标数据进行异或计算得到的异或结果;在上述异或结果与上述初始异或结果相同的情况下,确定多个上述目标数据正确,在上述异或结果与上述初始异或结果不同的情况下,确定多个上述目标数据存在错误。通过上述步骤,通过异或的方法判断被巡检的物理地址中的数据是否存在错误,这样可以方便、有效地定位存在错误数据的物理地址。

具体地,在RAID阵列生成之后,目标数据在存储至RAID阵列之前,将多个目标数据进行异或计算,例如:目标数据分别为D1、D2、D3,在存储至RAID阵列之前进行异或计算,得到异或结果即初始异或结果,将初始异或结果存储至校验分块,然后将目标数据D1、D2、D3存储至同一物理地址,该物理地址包含有校验分块。在执行巡检任务的时候,读取该物理地址中的目标数据D1、D2、D3,重新进行异或计算,得到新的异或结果,将校验分块中的初始异或结果与新的异或结果进行比较,若相同,表明目标数据D1、D2、D3不存在错误,若不同,表明目标数据D1、D2、D3中至少有一个目标数据存在错误,从而定位得到存在错误数据的物理地址,以进行及时隔离和修复。

图3是本申请实施例的一种RAID阵列巡检方法应用的存储系统架构示意图,如图3所示,主机与存储系统之间进行业务交互io(输入与输出),存储系统分为存储上层模块、Raid(RAID)模块和存储下层模块及硬盘,存储上层模块与Raid(RAID)模块之间进行业务交互io(输入与输出),Raid(RAID)模块与存储下层模块及硬盘之间进行业务交互io(输入与输出),Raid(RAID)巡检任务与存储下层模块及硬盘之间进行巡检读io(输入与输出),巡检任务对Raid(RAID)进行巡检io(输入与输出)。该存储系统用于执行上述一种RAID阵列巡检方法。

为了使得本领域技术人员能够更加清楚地了解本申请的技术方案,以下将结合具体的实施例对本申请的RAID阵列巡检方法的实现过程进行详细说明。

本实施例涉及一种具体的RAID阵列巡检方法,如图4和图5所示,包括如下步骤:

步骤S1:建立有效区域位图,有效区域位图中的内容包括RAID中所有条带的物理地址和状态代码;

步骤S2:在存在主机数据写入的情况下,判断是否存在巡检任务(第二巡检任务),在存在第二巡检任务的情况下,更新有效区域位图及最近写入队列(目标队列),即更新有效区域位图中写入数据对应的物理地址对应的状态代码,从无效(0)更新为有效(1),并将写入数据对应的物理地址储存至目标队列,在不存在第二巡检任务的情况下,更新有效区域位图,即更新有效区域位图中写入数据对应的物理地址对应的状态代码,从无效(0)更新为有效(1);

步骤S3:在存在数据删除的情况下,判断是否存在巡检任务(第二巡检任务),在不存在第二巡检任务的情况下,更新有效区域位图,即更新有效区域位图中删除数据对应的物理地址对应的状态代码,从有效(0)更新为无效(0),在存在第二巡检任务的情况下,检测删除区域(删除物理地址)是否在最近写入队列(目标队列),在删除物理地址位于目标队列的情况下,更新有效区域位图,删除最近写入队列(目标队列)中相关记录(删除物理地址),在删除物理地址不位于目标队列的情况下,直接更新有效区域位图;

步骤S4:通过有效区域位图,准备巡检位图(第一巡检位图),根据位图数据量(第一巡检位图中物理地址的数量)及巡检周期,计算单位时间巡检条带(物理地址)数(即预设巡检速度),开始进行巡检,巡检位图(第一巡检位图)巡检完成,定时器触发遍历最近写入队列(目标队列),队列遍历并巡检完成,巡检停止;

步骤S5:检测是否有其他任务(其余任务),在有其他任务(其余任务)的情况下,巡检结束,开启其他任务(其余任务),在没有其他任务(其余任务)的情况下,重置巡检位图(第一巡检位图),开始进行下次巡检任务。

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

在本实施例中还提供了一种RAID阵列巡检装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图6是本申请实施例的一种RAID阵列巡检装置的结构框图,如图6所示,该装置包括:

第一建立模块22,用于建立有效区域位图,其中,上述有效区域位图的内容包括RAID中所有条带的物理地址和状态代码,上述状态代码表示上述物理地址中的数据有效或者无效,上述RAID表示磁盘阵列;

具体地,RAID(磁盘阵列,Redundant Arrays of Independent Disks,简称RAID)分为硬RAID(基于硬件RAID卡,集成某钟特定RAID算法)与软RAID(软件实现RAID)之分,本申请应用于软RAID。在RAID的使用过程中,文件的占用和释放决定了阵列在极端场景下才会占用所有硬盘空间,因此无需每次巡检都对全部空间进行一次检查,只需要对存在有效数据的空间巡检即可,因此本申请建立有效区域位图,即将磁盘阵列中的物理地址和表示上述物理地址中是否包含有效数据的状态代码存储至有效区域位图中,状态代码为1的情况下,表示对应的物理地址中包含有效数据,状态代码为0的情况下,表示对应的物理地址中不包含有效数据,即在后续的巡检过程中只需对状态代码为1的物理地址进行巡检。

第二建立模块24,用于在上述RAID中存在数据写入或者数据删除的情况下,更新上述有效区域位图,并建立第一巡检位图,其中,上述第一巡检位图的内容包括更新后的上述有效区域位图中上述状态代码为有效的数据对应的物理地址;

具体地,在实际应用过程中,随时会存在数据写入RAID阵列或者将数据从RAID中删除的情况,因此在巡检之前需要更新上述有效区域位图,以防止遗漏需要进行数据巡检的物理地址或者对已经删除的数据的物理地址进行重复巡检,提升巡检的时效性。根据更新后的有效区域位图建立第一巡检位图,第一巡检位图只包括更新后的有效区域位图中状态代码为有效的数据对应的物理地址,从而使后续巡检过程按照第一巡检位图进行巡检,本申请通过改变巡检的范围,极大减少了对RAID磁盘阵列的额外损耗。

执行模块26,用于获取巡检周期,建立第一巡检任务,在上述巡检周期内,至少按照上述第一巡检位图执行上述第一巡检任务,其中,上述第一巡检任务为对上述RAID进行巡检的任务,上述巡检周期为上述第一巡检任务开始至下一巡检任务开始之间的时间。

具体地,巡检周期可以根据实际应用场景进行设置,例如:巡检周期为五分钟,即每五分钟至少按照第一巡检位图对RAID阵列进行数据巡检,通过优化巡检方式,优化了巡检带来的持续性的性能影响,提升了存储系统的局部性能。上述巡检周期可以根据具体地应用场景进行设置,即本申请并不对上述巡检周期的具体值进行限制。

通过上述装置,根据RAID磁盘阵列中数据所在的物理地址和状态代码建立有效区域位图,在存在数据写入或者数据删除的情况下,更新有效区域位图,根据有效区域位图中状态代码为有效的数据对应的物理地址建立第一巡检位图,并至少按照第一巡检位图对RAID磁盘阵列进行巡检。与现有技术中,对RAID阵列中所有物理地址的数据进行巡检的装置相比,本申请根据有效区域位图中状态代码为有效的物理地址,建立第一巡检位图,即只对包含有效数据的物理地址对应的数据进行巡检,降低了RAID磁盘阵列的使用频率,降低了磁盘的损坏概率,提升了磁盘的稳定性,进而提升了数据的安全性,缓解了现有RAID阵列巡检装置会影响数据安全性的问题,降低了由于磁盘损坏引起数据丢失的问题,提高了数据的安全性。

本申请的一些实施例中,第一建立模块包括构建子模块,用于在上述RAID阵列创建完成之后,且在上述RAID中尚未存储数据的情况下,根据上述RAID阵列中所有条带的物理地址,构建初始队列,得到有效区域位图,其中,上述初始队列的内容包括上述RAID中所有条带的物理地址和状态代码,上述状态代码均为无效且表示上述RAID中所有条带的物理地址都不存在有效数据。通过该方法,在上述RAID中尚未存储数据的情况下,首先构建包含RAID阵列中所有条带的物理地址的初始队列,且由于RAID阵列中还未存储数据,因此初始队列中的物理地址的状态代码均为无效,由初始队列得到有效区域位图,这样可以在后续执行巡检任务时,对RAID所有物理地址的状态代码进行更新,以区分物理地址是否包含有效数据。

具体地,在上述RAID阵列创建完成之后且尚未存储数据的情况下,上述RAID阵列处于初始状态,此时,RAID阵列中所有条带的物理地址中均不存在有效数据,状态代码均为无效即所有物理地址的状态代码均为0。根据所有的物理地址和对应的状态代码,构建初始队列,得到有效区域位图,需要说明的是,此时的有效区域位图处于初始状态,即还未使用此时的有效区域位图执行巡检任务,有效区域位图在后续执行巡检任务的过程中会按照巡检周期对物理地址对应的状态代码进行更新,以表示存在数据写入或者删除,有效区域位图的更新方法将在下文进行说明。

本申请的一些实施例中,第二建立模块,包括:第一更新子模块和第二更新子模块,其中,第一更新子模块,用于在上述RAID中存在数据写入且写入上述RAID中的数据的物理地址对应的状态代码为无效的情况下,将写入上述RAID中的数据的物理地址对应的状态代码由无效更新为有效;第二更新子模块,用于在上述RAID中存在一个物理地址对应的所有数据均被删除的情况下,将删除物理地址对应的状态代码由有效更新为无效,其中,上述删除物理地址为上述RAID中删除的数据的物理地址。通过上述装置,可以及时地对存入数据的物理地址或者被删除数据的物理地址对应的数据状态进行更新,避免出现遗漏以及重复巡检的情况。

具体地,RAID中数据的写入以及数据的删除是随时都在发生的,有效区域位图需要随着数据的写入与数据的删除实时变化。在存在数据写入的情况下,表示状态代码为无效的物理地址转变为有效,因此将写入数据的物理地址对应的状态代码由0更新为1;在存在数据删除的情况下,表示状态代码为有效的物理地址转变为无效,因此将删除数据的物理地址对应的状态代码由1更新为0。

本申请的一些实施例中,上述装置还包括第一执行子模块,用于在上述RAID中存在数据写入且写入上述RAID中的数据的物理地址对应的状态代码为有效的情况下,不更新写入上述RAID中的数据的物理地址对应的状态代码。通过该方法,对本来存在数据的物理地址的状态代码不进行更新,这样可以避免对原本有效的状态代码进行重复操作,以简化操作步骤,提升方法的灵活性。

具体地,在实际应用过程中,可能会存在数据写入状态代码为有效的物理地址中,即该物理地址已经存在有效数据,即有效区域位图中该物理地址对应的状态代码为有效,此时,数据的写入并没有改变物理地址中有效数据的状态,即不存在物理地址的状态从有效变为无效或者从无效变为有效,所以不需要更新上述有效区域位图。

本申请的一些实施例中,上述装置还包括第二执行子模块,用于在上述RAID中存在一个物理地址对应的所有数据未被全部删除的情况下,不更新从上述RAID中删除的数据的物理地址对应的状态代码。通过该方法,对物理地址中的数据并未全部删除的状态代码也不进行更新,这样可以避免删除还存在有效数据的有效物理地址,以免造成物理地址的遗漏。

具体地,在实际应用过程中,还可能会存在某一物理地址中的数据只被删除了一部分并没有被完全删除的情况,此时有效区域位图中的物理地址的有效状态也并未改变,因此,在这种情况下也不需要更新有效区域位图。

本申请的一些实施例中,上述装置还包括判断模块和删除模块,其中,判断模块,用于判断当前是否存在第二巡检任务,其中,上述第二巡检任务表示在上述第一巡检任务开始之前对上述RAID阵列执行的巡检任务;删除模块,用于在当前存在上述第二巡检任务的情况下,将写入上述RAID中的数据的物理地址和状态代码存储至目标队列,检测删除物理地址是否位于上述目标队列中,在位于上述目标队列的情况下,删除上述目标队列中的上述删除物理地址,其中,上述目标队列形成于上述RAID上次数据写入或者数据删除之后且用于存储写入上述RAID中的数据的物理地址和状态代码,上述删除物理地址为上述RAID中删除的数据的物理地址。通过上述装置,在存在第二巡检任务的情况下,将存入数据的物理地址和状态代码存储至目标队列,这样可以对在第二巡检任务执行的期间存入的数据或者删除的数据进行及时地识别与更新。

具体地,在检测到存在第二巡检任务的情况下,即当前存在正在执行巡检的第二巡检任务,若存在数据正在写入磁盘阵列,则将写入数据对应的物理地址存储至目标队列,第二巡检任务执行完成之后,对目标队列中保存的物理地址进行巡检,在实际应用过程中,也会存在数据写入至已经包含有效数据的物理地址中,此时可以首先判断数据写入的物理地址是否已经存在于第二巡检任务对应的巡检位图中(即下文中的第二巡检位图),当存在于第二巡检任务对应的巡检位图中,就无需将数据写入的物理地址存储至目标队列,因此,上述装置可以根据实际应用场景进行调整。若存在数据正在从磁盘阵列中删除,需要判断删除物理地址的位置,即判断删除物理地址位于目标队列中还是位于第二巡检任务对应的巡检位图中,若位于目标队列中,则从目标队列中将删除物理地址进行删除,若位于第二巡检任务对应的巡检位图中,由于第二巡检任务正在按照第二巡检任务对应的巡检位图进行巡检,因此在正在执行的第二巡检任务对应的巡检位图中删除的物理地址不进行删除。

需要说明的是,在不存在第二巡检任务且存在数据写入或者数据删除的情况下,只需要按照上一实施例中的装置更新上述有效区域位图中写入数据或者删除数据的物理地址对应的状态代码即可。

本申请的一些实施例中,上述装置还包括:巡检模块,用于在上述第二巡检任务按照第二巡检位图对上述RAID阵列进行巡检完成之后,对上述目标队列中的物理地址进行巡检,其中,上述第二巡检位图包括上述第二巡检任务中所需巡检的物理地址。通过上述装置,可以对随时写入的数据或删除的数据进行及时地更新与巡检。

具体地,由于第二巡检任务是当前正在执行的巡检任务,因此在第二巡检任务正在执行时形成的目标队列需要在第二巡检任务按照第二巡检位图执行完成之后,对目标队列中的物理地址进行数据巡检,对目标队列进行巡检完成之后才表示第二巡检任务完成。

本申请的一些实施例中,判断模块,包括:确定子模块,用于检测存储系统是否存在第二巡检位图,在存在上述第二巡检位图的情况下,确定存在第二巡检任务,在不存在上述第二巡检位图的情况下,确定不存在第二巡检任务,其中,上述存储系统用于存储数据和执行上述RAID阵列巡检,上述第二巡检位图包括上述第二巡检任务中所需巡检的物理地址。通过上述装置,可以方便地判断是否存在第二巡检任务。

具体地,在实际应用中,存储系统会自动识别有无任务正在运行,判断有无巡检任务正在运行是通过检测有无巡检位图,即第二巡检任务正在执行时,可以识别到存储系统中存在第二巡检位图,从而确定存在第二巡检任务。

本申请的一些实施例中,第二建立模块,包括:复制子模块,用于复制更新后的上述有效区域位图中上述状态代码为有效的数据对应的物理地址,得到第一巡检位图。通过上述装置,只对数据的状态代码为有效的物理地址进行巡检,这样即可以达到对RAID进行巡检的目的,又可以减少对磁盘不必要的使用,进一步提升了数据的安全性。

具体地,由于本申请只对包含有效数据的物理地址进行数据巡检,因此将有效区域位图中状态代码为有效的数据对应的物理地址复制,生成第一巡检位图,后续按照第一巡检位图对RAID进行阵列巡检,并在按照第一巡检位图进行巡检的过程中,保持第一巡检位图不变。

本申请的一些实施例中,执行模块,包括:计算子模块和执行子模块,其中,计算子模块,用于计算上述第一巡检位图中上述物理地址的数量与上述巡检周期的比值,得到预设巡检速度;执行子模块,用于按照上述第一巡检位图和上述预设巡检速度执行上述第一巡检任务。通过上述装置,按照包含有效数据的物理地址的数量即第一巡检位图中物理地址的数量与巡检周期的比值计算预设巡检速度,这样可以使巡检的速度适应于第一巡检位图。

具体地,由于现有技术按照RAID阵列中所有的物理地址进行巡检,巡检速度为阵列中所有物理地址的数量与巡检周期的比值,即设定巡检周期后,计算物理地址总数与巡检周期的比值,得到单位时间内需要进行巡检的物理地址数量,如果中间有其他任务(例如:重构任务)将巡检任务打断时,巡检任务的速度不变,仍然按照巡检速度进行巡检。因此,上述巡检速度的计算装置不再适用于本申请的基于有效区域位图与第一巡检位图的巡检方式,本申请的预设巡检速度为第一巡检位图中物理地址的数量与巡检周期的比值,即按照第一巡检位图中物理地址总数/巡检周期(s)的方式计算出单位时间内需要巡检的物理地址的数量。例如:预设巡检速度为40个/s,巡检周期为5分钟,计算得到5分钟需要巡检40*5*60=12000个物理地址,根据实际系统的带宽,将12000个物理地址分配到5分钟内,巡检完成之后,停止巡检,直到下一个5分钟定时器重新触发下一个12000个物理地址的巡检。

本申请的一些实施例中,上述装置还包括:检测模块,用于检测存储系统是否存在其余任务,在存在其余任务的情况下,结束巡检,在不存在其余任务的情况下,进行下一巡检任务,其中,上述存储系统用于存储数据和执行上述巡检任务,上述其余任务表示上述存储系统中除上述巡检任务之外的任务。通过上述装置,在第一巡检任务完成之后,检测到存在其余任务时,优先执行其余任务,这样可以避免由于巡检造成的影响其余任务的运行。

具体地,在第一巡检任务完成之后,检测存储系统是否存在其余任务,例如:重构任务,若存在其余任务,则优先执行其余任务,若不存在其余任务,则重新按照本申请的装置执行下一巡检任务。

本申请的一些实施例中,执行模块还包括巡检子模块,用于在上述第一巡检任务按照上述第一巡检位图进行巡检完成之后,对在第一巡检任务执行过程中生成的目标队列中的物理地址进行巡检,其中,上述目标队列形成于上述RAID上次数据写入或者数据删除之后且用于存储写入上述RAID中的数据的物理地址和状态代码。通过上述步骤,在第一巡检任务的执行过程中,存在数据写入或者删除的情况下,在第一巡检任务完成执行完成之后,继续对目标队列中的物理地址进行巡检,这样可以保证存在有效数据的物理地址不被遗漏。

具体地,在每一个巡检周期之内,都需要按照上文中的首先按照巡检位图进行巡检,然后对该巡检周期内的目标队列进行巡检。因此,在第一巡检周期内,在第一巡检任务按照第一巡检位图进行巡检的过程中,存在数据写入的情况下,将写入数据的物理地址存储至目标队列,存在数据删除的情况下,判断被删除的数据的物理地址是否存在于目标队列中,在存在的情况下,删除该物理地址,在不存在的情况下,目标队列和有效区域位图均不进行删除。在第一巡检任务按照第一巡检位图进行巡检完成之后,再巡检目标队列中的物理地址,从而保证不会遗漏存在有效数据的物理地址。

本申请的一些实施例中,执行子模块还包括比较子模块和确定子模块,其中,比较子模块用于将上述第一巡检位图所包含的物理地址中的多个目标数据进行异或计算,得到异或结果,比较上述异或结果与初始异或结果是否相同,其中,上述初始异或结果为在将多个上述目标数据存储至上述RAID阵列之前,对多个上述目标数据进行异或计算得到的异或结果;确定子模块用于在上述异或结果与上述初始异或结果相同的情况下,确定多个上述目标数据正确,在上述异或结果与上述初始异或结果不同的情况下,确定多个上述目标数据存在错误。通过上述步骤,通过异或的方法判断被巡检的物理地址中的数据是否存在错误,这样可以方便、有效地定位存在错误数据的物理地址。

具体地,在RAID阵列生成之后,目标数据在存储至RAID阵列之前,将多个目标数据进行异或计算,例如:目标数据分别为D1、D2、D3,在存储至RAID阵列之前进行异或计算,得到异或结果即初始异或结果,将初始异或结果存储至校验分块,然后将目标数据D1、D2、D3存储至同一物理地址,该物理地址包含有校验分块。在执行巡检任务的时候,读取该物理地址中的目标数据D1、D2、D3,重新进行异或计算,得到新的异或结果,将校验分块中的初始异或结果与新的异或结果进行比较,若相同,表明目标数据D1、D2、D3不存在错误,若不同,表明目标数据D1、D2、D3中至少有一个目标数据存在错误,从而定位得到存在错误数据的物理地址,以进行及时隔离和修复。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一种方法实施例中的装置。

在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。

本申请的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一种方法实施例中的装置。

在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本申请的各模块或各装置可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的装置,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或装置制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。

以上上述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 一种智能巡检方法、电子设备、智能巡检系统和存储介质
  • 机房巡检方法、装置、电子设备及计算机可读存储介质
  • 巡检路径规划方法、装置、电子设备及可读存储介质
  • 一种燃气管道无人机巡检装置及巡检方法
  • 设备巡检方法和巡检装置
  • 一种RAID阵列巡检方法、装置、设备及存储介质
  • 一种RAID阵列的巡检方法和装置
技术分类

06120115801564