RAID初始化的方法及装置与流程

文档序号:12747730阅读:1372来源:国知局
RAID初始化的方法及装置与流程
本发明涉及通信
技术领域
,尤其涉及一种RAID(RedundantArraysofIndependentDisks,磁盘阵列)初始化的方法及装置。
背景技术
:为了保证数据的可用性以及后续应用访问的性能,RAID在使用之前通常需要进行初始化。以软件RAID为例,在相关技术中,软件RAID在初始化时可以根据配置客户端下发的配置命令构造数据,并根据构造的数据查找目标硬盘,然后,软件RAID可以将目标硬盘除超级块和位图之外的所有数据清零以完成初始化。在相关技术中,软件RAID发出的数据必须要经过操作系统才能传递到硬盘,在数据发出之后,软件RAID需要等待硬盘回应,并在接收到硬盘回应的数据后对回应数据进行处理。大部分情况下硬盘会返回操作成功的命令,但是接收回应并分析以便进行错误处理这一步骤并不能省略。因此,在软件RAID初始化的过程中,操作系统需要占用较多的CPU资源和内存资源。故,操作系统在上述过程中的负担较重。技术实现要素:有鉴于此,本发明提供一种RAID初始化的方法,应用于存储设备,所述存储设备的主板包括CPU以及基于FPGA的初始化模块;所述基于FPGA的初始化模块与所述CPU以及所述存储设备的若干物理磁盘分别相连接;所述方法包括:步骤A、所述CPU接收配置客户端发送的RAID创建命令;所述RAID创建命令携带用于创建RAID的若干目标磁盘的标识信息;步骤B、所述CPU基于所述若干目标磁盘的标识信息确定所述若干目标磁盘,并基于所述若干目标磁盘的硬件信息为所述若干目标磁盘分别构造对应的初始化命令;其中,所述若干目标磁盘的硬件信息包括所述若干目标磁盘的物理地址以及磁盘容量;步骤C、所述CPU将所述初始化命令下发至所述基于FPGA的初始化模块;步骤D、所述基于FPGA的初始化模块接收所述CPU下发的所述初始化命令,并基于所述初始化命令构造对应的初始帧;步骤E、所述基于FPGA的初始化模块将所述初始帧分别发送至所述若干目标磁盘,以使所述若干目标磁盘基于所述初始帧完成初始化。可选的,所述步骤B具体包括:分别判断所述若干目标磁盘是否支持WRITESAME命令;在完成判断后,针对所述若干目标磁盘中支持WRITESAME命令的磁盘使用WRITESAME命令构造对应的初始化命令;以及针对所述若干目标磁盘中不支持WRITESAME命令的磁盘使用WRITE命令构造对应的初始化命令。可选的,所述目标磁盘包括若干块存储空间,并基于所述若干块存储空间完成初始化;所述步骤E进一步包括:接收所述目标磁盘返回的针对当前存储空间的执行结果;基于所述执行结果判断所述存储空间是否正常初始化;当所述存储空间未正常初始化时,向所述目标磁盘重新发送所述初始帧或发送重新构造的初始帧;当所述存储空间正常初始化时,基于预设的偏移量修改对应的初始帧的磁盘地址,并将修改后的初始帧发送至对应的目标磁盘。可选的,所述步骤E进一步包括:在所述若干目标磁盘成功完成初始化后,生成并向所述CPU发送完成指令,以使所述CPU将所述完成指令转发至所述配置客户端,完成所述RAID的初始化。本发明同时提供一种磁盘阵列RAID初始化的装置,应用于存储设备,所述存储设备的主板包括CPU以及基于FPGA的初始化模块;所述基于FPGA的初始化模块与所述CPU以及所述存储设备的若干物理磁盘分别相连接;所述装置包括:所述CPU模块,用于接收配置客户端发送的RAID创建命令;所述RAID创建命令携带用于创建RAID的若干目标磁盘的标识信息;所述CPU模块进一步基于所述若干目标磁盘的标识信息确定所述若干目标磁盘,并基于所述若干目标磁盘的硬件信息为所述若干目标磁盘分别构造对应的初始化命令;其中,所述若干目标磁盘的硬件信息包括所述若干目标磁盘的物理地址以及磁盘容量;所述CPU模块进一步将所述初始化命令下发至所述基于FPGA的初始化模块;所述基于FPGA的初始化模块,用于接收所述CPU下发的所述初始化命令,并基于所述初始化命令构造对应的初始帧;所述基于FPGA的初始化模块进一步将所述初始帧分别发送至所述若干目标磁盘,以使所述若干目标磁盘基于所述初始帧完成初始化。可选的,所述CPU模块进一步用于:分别判断所述若干目标磁盘是否支持WRITESAME命令;在完成判断后,针对所述若干目标磁盘中支持WRITESAME命令的磁盘使用WRITESAME命令构造对应的初始化命令;以及针对所述若干目标磁盘中不支持WRITESAME命令的磁盘使用WRITE命令构造对应的初始化命令。可选的,所述目标磁盘包括若干块存储空间,并基于所述若干块存储空间完成初始化;所述基于FPGA的初始化模块进一步用于:接收所述目标磁盘返回的针对当前存储空间的执行结果;基于所述执行结果判断所述存储空间是否正常初始化;当所述存储空间未正常初始化时,向所述目标磁盘重新发送所述初始帧或发送重新构造的初始帧;当所述存储空间正常初始化时,基于预设的偏移量修改对应的初始帧的磁盘地址,并将修改后的初始帧发送至对应的目标磁盘。可选的,所述基于FPGA的初始化模块进一步用于:在所述若干目标磁盘成功完成初始化后,生成并向所述CPU发送完成指令,以使所述CPU将所述完成指令转发至所述配置客户端,完成所述RAID的初始化。在本发明中,存储设备上的CPU可以接收配置客户端发送的RAID创建命令,并基于该创建命令中的若干目标磁盘的标识信息确定若干目标磁盘,在确定上述若干目标磁盘后,CPU可以基于该若干目标磁盘的硬件信息为该若干目标磁盘分别构造对应的初始化命令,然后,CPU可以将上述初始化命令下发至基于FPGA的初始化模块,基于FPGA的初始化模块在接收到上述初始化命令后,可以生成对应的初始帧,并将对应的初始帧分别发送至上述若干目标磁盘,以使上述若干目标磁盘可以基于对应的初始帧完成初始化。在本发明中,基于FPGA的初始化模块可以直接与磁盘交互,从而可以降低大部分操作系统内的IO操作,减轻操作系统的负担,同时,由于基于FPGA的初始化模块承载了大部分的IO操作以及磁盘响应的处理,节省了传输到操作系统的时间,因此,本发明同时可以提高软件RAID的初始化速度。附图说明图1是本发明一实施例示出的一种RAID初始化的方法的流程图;图2是本发明RAID初始化的装置所在设备的一种硬件结构图;图3是本发明RAID初始化的装置的一个实施例框图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。请参见图1,为本发明一实施例示出的一种RAID初始化的方法的流程图。该实施例应用于存储设备,包括以下步骤:步骤101:所述CPU接收配置客户端发送的RAID创建命令;所述RAID创建命令携带用于创建RAID的若干目标磁盘的标识信息。在本发明中,上述存储设备的主板可以包括CPU以及基于FPGA的初始化模块,其中,基于FPGA的初始化模块可以与上述CPU以及上述存储设备的若干物理磁盘分别相连接。在本发明中,上述CPU可以接收配置客户端发送的RAID创建命令,其中,该RAID创建命令可以携带用于创建RAID的若干目标磁盘的标识信息。具体地,上述若干目标磁盘可以为构成RAID的若干物理磁盘,上述若干目标磁盘的标识信息可以为该若干物理磁盘的基本信息,例如,磁盘容量、条带规格等。在示出的一个实施例中,上述若干目标磁盘的标识信息可以如表1所示:Name(名称)RAID_Volume1RAIDLevel(RAID级别)RAID0(Stripe)StripeSize(条带规格)128KBCapacity(容量)149.0GB表1在一个实施例中,用户可以通过配置客户端输入RAID创建命令,其中,该RAID创建命令可以包括RAID创建参数,该RAID创建参数可以与上述若干物理磁盘的基本信息相对应,在该RAID创建命令输入完成后,配置客户端可以经操作系统把该RAID创建命令发送至CPU。需要说明的是,由于RAID创建命令通常为一个字节较短的数据,因此,在配置客户端经操作系统将上述RAID创建命令发送至CPU的过程中,占用的操作系统的资源较低。步骤102:所述CPU基于所述若干目标磁盘的标识信息确定所述若干目标磁盘,并基于所述若干目标磁盘的硬件信息为所述若干目标磁盘分别构造对应的初始化命令;其中,所述若干目标磁盘的硬件信息包括所述若干目标磁盘的物理地址以及磁盘容量。在本发明中,上述CPU在接收到配置客户端下发的RAID创建命令后,可以基于该命令中的若干目标磁盘的标识信息确定若干目标磁盘。在一个实施例中,上述CPU在接收到配置客户端下发的RAID创建命令后,可以根据该命令中若干目标磁盘的标识信息从本地预设的对应关系中确定对应的目标磁盘,其中,本地预设的对应关系可以包括上述存储设备中的磁盘的ID与磁盘的标识信息的对应关系。在示出的一个实施例中,上述预设的对应关系的部分表项可以如表2所示:IDSize(规格)574.5GB630.0GB774.5GB880.5GB表2由表1和表2可知,当上述CPU根据如表1所示的目标磁盘的标识信息从如表2所示的对应关系中确定目标磁盘时,可以确定磁盘5和磁盘7为目标磁盘。上述CPU在确定若干目标磁盘后,可以基于该若干目标磁盘从预存的磁盘硬件信息表中获取该若干目标磁盘的硬件信息。其中,该硬件信息可以包括该若干目标磁盘的物理地址以及磁盘容量。需要说明的是,上述磁盘硬件信息表可以包括上述存储设备中的磁盘的ID与磁盘的标识信息的对应关系。上述CPU在获取到该若干目标磁盘的硬件信息后,可以基于该硬件信息为该若干目标磁盘分别构造对应的初始化命令。在本发明中,上述CPU在为该若干目标磁盘分别构造对应的初始化命令的过程中,可以先分别判断该若干目标磁盘是否支持WRITESAME命令。具体地,上述CPU可以针对该若干目标磁盘分别构造若干对应的WRITESAME命令,然后,可以将该若干WRITESAME命令分别发送至对应的目标磁盘。该若干目标磁盘接收到对应的WRITESAME命令后可以执行该命令,并将执行结果返回至上述CPU,上述CPU接收到该若干目标磁盘返回的针对WRITESAME命令的执行结果后,可以根据该执行结果判断对应的目标磁盘是否支持WRITESAME命令。在示出的一个实施例中,可以假设上述CPU针对表2所示的磁盘5以及磁盘7分别构造并发送了对应的WRITESAME命令,假设磁盘5在接收并执行对应的WRITESAME命令后,向上述CPU返回的执行结果为done。则上述CPU可以在接收到该执行结果后判断磁盘5为支持WRITESAME命令的磁盘;类似地,可以假设磁盘7在接收并执行对应的WRITESAME命令后,向上述CPU返回的执行结果为fail。则上述CPU可以在接收到该执行结果后判断磁盘7为不支持WRITESAME命令的磁盘。需要说明的是,上述的执行结果仅为示例使用,在实际应用中,上述执行结果可以包括success、finish、error等,本发明对此不做限制。在完成上述判断后,如果该若干目标磁盘中存在支持WRITESAME命令的磁盘,则上述CPU可以针对该磁盘使用WRITESAME命令构造对应的初始化命令;如果该若干目标磁盘中存在不支持WRITESAME命令的磁盘,则上述CPU可以针对该磁盘使用WRITE命令构造对应的初始化命令。在示出的一个实施例中,可以假设上述磁盘5支持WRITESAME命令,则上述CPU可以使用WRITESAME命令构造与磁盘5对应的初始化命令;类似地,可以假设上述磁盘7不支持WRITESAME命令,则上述CPU可以使用WRITE命令构造与磁盘7对应的初始化命令。由于使用WRITESAME命令以及WRITE命令基于磁盘的硬件信息构造初始化命令的技术为现有技术,故本发明在此不再赘述。步骤103:所述CPU将所述初始化命令下发至所述基于FPGA的初始化模块。步骤104:所述基于FPGA的初始化模块接收所述CPU下发的所述初始化命令,并基于所述初始化命令构造对应的初始帧。步骤105:所述基于FPGA的初始化模块将所述初始帧分别发送至所述若干目标磁盘,以使所述若干目标磁盘基于所述初始帧完成初始化。在本发明中,在构造了对应的初始化命令后,上述CPU可以通过PCIE总线将上述初始化命令发送至基于FPGA的初始化模块。在本发明中,基于FPGA的初始化模块接收到上述CPU下发的初始化命令后,可以基于该初始化命令构造对应的初始帧。然后,基于FPGA的初始化模块可以将构造的初始帧分别发送至若干目标磁盘,以使该若干目标磁盘可以基于上述初始帧完成初始化。在本发明中,上述若干目标磁盘可以包括若干块存储空间,并可以基于该若干块存储空间完成初始化。其中,该若干块存储空间可以为连续的存储空间。在接收到对应的初始帧后,上述若干目标磁盘可以分别基于对应的初始帧进行初始化。在初始化的过程中,该若干目标磁盘可以在完成每块连续的存储空间的初始化后,向基于FPGA的初始化模块返回执行结果。基于FPGA的初始化模块在接收到执行结果后,可以基于该执行结果判断对应的存储空间是否正常初始化,当该对应的存储空间未正常初始化时,基于FPGA的初始化模块可以向对应的目标磁盘重新发送初始帧或发送基于该执行结果重新构造的初始帧,以使该对应的存储空间基于接收到的初始帧重新初始化;当该对应的存储空间正常初始化时,基于FPGA的初始化模块可以基于预设的偏移量修改对应的初始帧的磁盘地址,并将修改后的初始帧发送至对应的目标磁盘,以使对应的目标磁盘的下一个存储空间可以基于该修改后的初始帧完成初始化。其中,上述预设的偏移量可以由用户通过上述配置客户端来设置,也可以为上述配置客户端下发至上述基于FPGA的初始化模块的默认值。当然,当基于FPGA的初始化模块基于接收到的执行结果判断若干个存储空间正常初始化时,可以同时修改该若干个对应的初始帧的磁盘地址,并将修改后的初始帧分别发送至对应的目标磁盘。需要说明的是,基于FPGA的初始化模块接收到上述执行结果后,可以基于上述执行结果生成初始化进度信息,并将该初始化进度信息经上述CPU发送至上述配置客户端,以使用户可以基于上述配置客户端查看当前的RAID初始化进度。在本发明中,当上述若干目标磁盘均成功完成初始化时,基于FPGA的初始化模块可以生成完成指令,并将该完成指令发送至上述CPU,上述CPU在接收到该完成指令后,可以将该完成指令转发至上述配置客户端,以完成RAID的初始化。在本发明中,存储设备上的CPU可以接收配置客户端发送的RAID创建命令,并基于该创建命令中的若干目标磁盘的标识信息确定若干目标磁盘,在确定上述若干目标磁盘后,CPU可以基于该若干目标磁盘的硬件信息为该若干目标磁盘分别构造对应的初始化命令,然后,CPU可以将上述初始化命令下发至基于FPGA的初始化模块,基于FPGA的初始化模块在接收到上述初始化命令后,可以生成对应的初始帧,并将对应的初始帧分别发送至上述若干目标磁盘,以使上述若干目标磁盘可以基于对应的初始帧完成初始化。在本发明中,基于FPGA的初始化模块可以直接与磁盘交互,从而可以降低大部分操作系统内的IO操作,减轻操作系统的负担,同时,由于基于FPGA的初始化模块承载了大部分的IO操作以及磁盘响应的处理,节省了传输到操作系统的时间,因此,本发明同时可以提高软件RAID的初始化速度。与前述RAID初始化的方法的实施例相对应,本发明还提供了RAID初始化的装置的实施例。本发明RAID初始化的装置的实施例可以应用在存储服务器上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图2所示,为本发明RAID初始化的装置所在设备的一种硬件结构图,除了图2所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。请参考图3,是本发明RAID初始化的装置的一个实施例框图。该装置可以包括:CPU模块310以及基于FPGA的初始化模块320。所述CPU模块310,用于接收配置客户端发送的RAID创建命令;所述RAID创建命令携带用于创建RAID的若干目标磁盘的标识信息;所述CPU模块310进一步基于所述若干目标磁盘的标识信息确定所述若干目标磁盘,并基于所述若干目标磁盘的硬件信息为所述若干目标磁盘分别构造对应的初始化命令;其中,所述若干目标磁盘的硬件信息包括所述若干目标磁盘的物理地址以及磁盘容量;所述CPU模块310进一步将所述初始化命令下发至所述基于FPGA的初始化模块;所述基于FPGA的初始化模块320,用于接收所述CPU下发的所述初始化命令,并基于所述初始化命令构造对应的初始帧;所述基于FPGA的初始化模块320进一步将所述初始帧分别发送至所述若干目标磁盘,以使所述若干目标磁盘基于所述初始帧完成初始化。在一个可选的实施方式中,所述CPU模块310可以进一步用于:分别判断所述若干目标磁盘是否支持WRITESAME命令;在完成判断后,针对所述若干目标磁盘中支持WRITESAME命令的磁盘使用WRITESAME命令构造对应的初始化命令;以及针对所述若干目标磁盘中不支持WRITESAME命令的磁盘使用WRITE命令构造对应的初始化命令。在另一个可选的实施方式中,所述目标磁盘包括若干块存储空间,并基于所述若干块存储空间完成初始化;所述基于FPGA的初始化模块320可以进一步用于:接收所述目标磁盘返回的针对当前存储空间的执行结果;基于所述执行结果判断所述存储空间是否正常初始化;当所述存储空间未正常初始化时,向所述目标磁盘重新发送所述初始帧或发送重新构造的初始帧;当所述存储空间正常初始化时,基于预设的偏移量修改对应的初始帧的磁盘地址,并将修改后的初始帧发送至对应的目标磁盘。在一个可选的实施方式中,所述基于FPGA的初始化模块320可以进一步用于:在所述若干目标磁盘成功完成初始化后,生成并向所述CPU发送完成指令,以使所述CPU将所述完成指令转发至所述配置客户端,完成所述RAID的初始化。在本发明中,存储设备上的CPU可以接收配置客户端发送的RAID创建命令,并基于该创建命令中的若干目标磁盘的标识信息确定若干目标磁盘,在确定上述若干目标磁盘后,CPU可以基于该若干目标磁盘的硬件信息为该若干目标磁盘分别构造对应的初始化命令,然后,CPU可以将上述初始化命令下发至基于FPGA的初始化模块,基于FPGA的初始化模块在接收到上述初始化命令后,可以生成对应的初始帧,并将对应的初始帧分别发送至上述若干目标磁盘,以使上述若干目标磁盘可以基于对应的初始帧完成初始化。在本发明中,基于FPGA的初始化模块可以直接与磁盘交互,从而可以降低大部分操作系统内的IO操作,减轻操作系统的负担,同时,由于基于FPGA的初始化模块承载了大部分的IO操作以及磁盘响应的处理,节省了传输到操作系统的时间,因此,本发明同时可以提高软件RAID的初始化速度。上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1