数据迁移的方法、主机、及固态存储设备

文档序号:1845426 发布日期:2021-11-16 浏览:3次 >En<

阅读说明:本技术 数据迁移的方法、主机、及固态存储设备 (Data migration method, host and solid-state storage device ) 是由 杜阁 胡瑜 侯建岑 于 2016-11-26 设计创作,主要内容包括:本发明实施例涉及一种数据迁移方法、主机、及SSD。存储系统的主机连接有多个SSD,且所述多个SSD互相连通,每个SSD上配置有迁移缓存,每个SSD对应一个访问信息,所述数据迁移方法包括:获取源SSD中待迁移数据的迁移数据信息并确定目标SSD,根据所述目标SSD对应的访问信息及所述迁移数据信息生成读指令,以指示所述源SSD将所述源SSD闪存中的所述读指令对应的数据块读取至所述目标SSD的迁移缓存;在接收到所述源SSD发送的读取完成的反馈指令后,发送写指令指示所述目标SSD将自身缓存中的所述数据块写入自身的闪存中。如此,在进行SSD间数据迁移时,数据不经过主机内存,从而降低了对存储系统的性能影响,且保障了数据迁移的速度。(The embodiment of the invention relates to a data migration method, a host and an SSD. The host of the storage system is connected with a plurality of SSDs which are mutually communicated, each SSD is provided with a migration cache, and each SSD corresponds to one piece of access information, and the data migration method comprises the following steps: acquiring migration data information of data to be migrated in a source SSD, determining a destination SSD, and generating a read instruction according to access information corresponding to the destination SSD and the migration data information so as to instruct the source SSD to read a data block corresponding to the read instruction in a source SSD flash memory to a migration cache of the destination SSD; and after receiving a read-completed feedback instruction sent by the source SSD, sending a write instruction to instruct the destination SSD to write the data block in the cache of the destination SSD into a flash memory of the destination SSD. Therefore, when data migration between SSDs is carried out, the data do not pass through a host memory, so that the performance influence on the storage system is reduced, and the data migration speed is guaranteed.)

数据迁移的方法、主机、及固态存储设备

技术领域

本发明涉及存储技术领域,特别涉及存储设备间的数据迁移的方法。

背景技术

随着固态存储设备(Solid Static Disk,SSD)成本不断下降与非易失存储器标准(Non-Volatile Memory Express,NVMe)的发展,目前基于NVMe标准的SSD盘,以其高性能、低时延的特性逐渐代替传统的机械硬盘成为存储系统中的主要存储介质。

实际应用中,经常需要在存储系统的SSD之间进行数据迁移。例如,在存储系统中,由于SSD盘的数量及容量巨大,出故障的概率也会比较大,为了避免出现数据丢失,需要预先识别出即将失效的SSD,即预失效SSD,然后将所述预失效SSD中的数据迁移到其他SSD中进行备份。

现有技术中,在进行SSD间数据迁移时,需要先在存储系统的主机内存中分配一段专用于数据迁移的内存空间,然后再由主机的中央处理器(Central Processing Unit)将源SSD(数据迁出的SSD,例如侦测到的预先效SSD)中的数据先读取到所述内存空间中,再将所述内存空间中的数据写入目标SSD(数据迁入的SSD)中。可见,现有技术中,在SSD间进行数据迁移时,所迁移的数据必须由主机的CPU控制数据的传输过程,因而会占用主机的CPU的带宽,如此则会对其他SSD中的数据的正常访问产生影响,从而影响整个存储系统的性能。为了减少SSD间数据迁移对存储系统性能影响,一般会限制SSD间数据迁移时所占用的主机CPU的带宽,这就会导致SSD间数据迁移的时间过长,增加数据丢失的风险。另外,即使限制SSD间数据迁移的带宽,也还是会影响存储系统的性能。

发明内容

本发明实施例提供在SSD间进行数据迁移的方法,在数据迁移时,不占用主机CPU的带宽,从而不影响存储系统的性能,且保障数据迁移的速度。

本发明实施例第一方面提供一种数据迁移方法,所述数据迁移方法应用于主机。所述主机连接有多个SSD,且所述多个SSD互相连通。每个SSD上配置有迁移缓存,且主机上记录有每个SSD的迁移缓存的访问信息,所述主机或者连接至所述主机的其他SSD根据所述访问信息访问每个SSD的迁移缓存。例如,连接至所述主机的SSD有SSD0~SSD24,则对于任意一个SSD(例如SSD0)所提供的缓存,则主机和其他SSD(SSD1~SSD224)都可以根据所述访问信息进行访问。

所述数据迁移方法包括:

获取源SSD中待迁移数据的迁移数据信息并确定目标SSD,根据所述目标SSD对应的访问信息及所述迁移数据信息生成读指令,并将所述读指令发送至所述源SSD,所述读指令用于指示所述源SSD将所述源SSD闪存中的所述读指令对应的数据块读取至所述目标SSD的迁移缓存;

在接收到所述源SSD发送的读取完成的反馈指令后,发送写指令至所述目标SSD,指示所述目标SSD将自身缓存中的所述数据块写入自身的闪存中。

这样,通过将存储系统中的SSD的缓存作为数据迁移过程中的数据缓存,从而在迁移数据时,所迁移的数据不经过主机传输,使迁移数据不占用主机CPU的带宽,大大降低了对存储系统的性能影响,且保障了数据迁移的速度。

可选地,每个SSD的控制器的寄存器中设置有为每个SSD配置的迁移缓存信息,这样,在所述主机启动时,就可以从每个SSD的控制器的寄存器中读取每个SSD的迁移缓存信息,然后就可以根据所读取的迁移缓存信息为每个SSD的迁移缓存分配所述访问信息,并记录所述访问信息,实现对每个SSD的迁移缓存的配置。

通过上述方案,可以使SSD将自身的缓存作为迁移缓存,这样,在数据迁移的过程中,所迁移的数据不需要使用主机内存。

生成读指令的方式有两种,第一种为根据所述目标SSD的访问信息中所述目标SSD的迁移缓存的长度及所述迁移数据信息中所述待迁移数据的数据量将所述待迁移数据切分成多个数据块,根据所切分的数据块的迁移数据信息及所述目标SSD对应的访问信息生成所述读指令。

基于上述第一种方式,在所述读指令所迁移的数据块迁移至目标SSD后,所述目标SSD会发送写完成指令至所述主机,所述主机接收到所述写完成反馈指令后,判断之前切分的数据块是否迁移完,若未迁移完,则从尚未迁移的数据块中确定一个数据块,并针对所确定的数据块生成新的读指令,以对所确定的数据块进行迁移,直到之前所切分的数据块都迁移至所述目标SSD。

通过上述第一种方式,可以将源SSD中的待迁移数据迁切分成数据块,这样,在生成读指令时,直接获取切分好的数据块以生成读指令,以读取所获取的数据块进行迁移。

第二种为根据所述目标SSD的访问信息中的所述目标SSD的迁移缓存的长度及所述迁移数据信息中的所述待迁移数据的数据量获取本次迁移至所述目标SSD的数据块的迁移数据信息,根据所获取的数据块的迁移数据信息及所述目标SSD对应的访问信息生成所述读指令。

基于上述第二种方式,在所述读指令所迁移的数据块迁移至目标SSD后,所述目标SSD会发送写完成指令至所述主机,所述主机在接收到所述目标SSD发送的写完成反馈指令后,判断是否还有未迁移的待迁移数据,若还有未迁移的待迁移数据,则根据未迁移的待迁移数据的迁移数据信息获取一个数据块的迁移数据信息,根据所获取的数据块的迁移数据信息生成新的读指令,以对所获取的数据块进行迁移,直到所有的待迁移数据都迁移至所述目标SSD。

通过上述第二种方式,可以在生成读指令的时候,再从待迁移数据中切分出读指令要迁移的数据块。

在上述各种实现方式中,每个读指令包括源地址及目的地址,所述源地址为每个读指令所读取的数据块的逻辑地址,所述目的地址为所述目标SSD的迁移缓存的访问首地址。

这样,所述源SSD即可根据读指令中的源地址信息获取待迁移的数据块,并把所读取的数据块待迁移的数据块先暂存至所述目的地址所指示的迁移缓存中。

在上述各种实现方式中,所述目标SSD可以为多个,在生成读指令时,针对每个目标SSD,生成一个读指令,并将所生成的多个读指令发送至所述源SSD。

这样,可以将源SSD中的待迁移数据同时迁移至多个目标SSD,从而加快了源SSD中的待迁移数据的迁移速率。

另外,在上述各种实现方式中,在获取所述源SSD中待迁移数据的迁移数据信息之前,所述方法还可以包括:

侦测预设的数据迁移条件;

在侦测到预设的数据迁移条件时,获取所述源SSD中待迁移数据的迁移数据信息。

所述预设的迁移条件可以为侦测到所述源SSD发生预失效故障,或者是接收到数据迁移命令。

本发明实施例第二方面提供另外一种数据迁移方法,第二方面所提供的数据迁移方法也应用于主机,所述主机与SSD的连接关系与第一方面提供的数据迁移方法相同,每个SSD也配置有迁移缓存。

第二方面的所提供的数据迁移方法与第一方面提供的数据迁移方法的主要区别在于,在第二方面提供的数据迁移方法中,所述主机会发送读指令至所述源SSD,指示所述SSD将所述源SSD中的所述读指令所对应的数据块迁移至所述源SSD的迁移缓存中,然后再发送写指令至所述目标SSD,指示所述目标SSD将所述源SSD的迁移缓存中的数据块迁移至所述目标SSD的闪存中。

由于第二方面所提供的数据迁移方法是将待迁移的数据块先迁移至所述源SSD的迁移缓存中,所以所述主机在生成读指令时,将所述读指令的目标地址设置为所述源SSD的迁移缓存的访问信息,而在生成写指令时,将所述写指令的源地址设置为所述源SSD的迁移缓存的访问信息,这样,所述源SSD即可根据所述读指令将所述读指令对应的数据块迁移至所述源SSD的迁移缓存,所述目标SSD可以根据所述写指令将所述所述源SSD的迁移缓存中的数据块写入自身的闪存。

另外,在进行数据切分时,也是根据所述源SSD的迁移缓存的长度进行数据的切分。

其他与第一方面所提供的数据迁移方法相同,可参考相关描述,在此不再赘述。

本发明实施例第三方面提供另外一种数据迁移方法,第三方面所提供的数据迁移方法也应用于主机,所述主机与SSD的连接关系与第一方面提供的数据迁移方法相同,每个SSD也配置有迁移缓存。

第三方面的所提供的数据迁移方法与第一方面提供的数据迁移方法的主要区别在于,主机在确定了目标SSD之后,将目标SSD的访问信息携带在数据迁移指令中,并发送至源SSD,指示源SSD将所述源SSD中的待迁移数据迁移至目标SSD的迁移缓存中,所述源SSD再发送写请求至目标SSD,指示所述目标SSD将自身迁移缓存中的数据写入自身的闪存中。在源SSD将源SSD中的待迁移数据迁移完成之后,再发送一个迁移完成的反馈指令给主机。这样,主机不但不需要对数据进行搬移,也不参与数据搬移过程中的数据的读写控制,则进一步减少了数据迁移过程中占用的CPU的带宽,也进一步减少了对存储系统的性能的影响。

本发明实施例第四方面提供另外一种数据迁移方法,第四方面所提供的数据迁移方法也应用于主机,所述主机与SSD的连接关系与第一方面提供的数据迁移方法相同,每个SSD也配置有迁移缓存。

第四方面的所提供的数据迁移方法与第三方面提供的数据迁移方法的主要区别在于,主机在在数据迁移指令中携带的为源SSD的迁移缓存的访问信息及目标SSD信息,以指示所述源SSD将所述源SSD中的待迁移数据迁移至源SSD的迁移缓存中,所述源SSD再发送写请求至目标SSD,指示所述目标SSD将所述源SSD的迁移缓存中的数据写入自身的闪存中。

本发明实施例第五方面提供另外一种数据迁移方法,第五方面所提供的数据迁移方法应用于SSD,所述SSD与主机的连接关系与第一方面提供的数据迁移方法相同,所述SSD也配置有迁移缓存。

所述第五方面提供的数据迁移方法与第三方面提供的数据迁移方法对应,即在接收到主机发送的携带有目标SSD的访问信息的数据迁移指令后,即对源SSD中的待迁移数据进行迁移。源SSD对数据进行迁移的方式与第一方面所提供的数据迁移方法相同,区别仅在于在第五方面的实现方式中,读指令的生成和执行都由源SSD完成,另外,在源SSD根据读指令将读指令对应的数据块读取至目标SSD的迁移缓存后,会将目标SSD的访问信息携带在写请求中发送给目标SSD,以使所述目标SSD根据所述写请求将自身迁移缓存中的数据块写入自身的闪存中。

本发明实施例第六方面提供另外一种数据迁移方法,第六方面所提供的数据迁移方法应用于SSD,所述SSD与主机的连接关系与第一方面提供的数据迁移方法相同,所述SSD也配置有迁移缓存。

所述第六方面提供的数据迁移方法与第四方面提供的数据迁移方法对应,即在接收到主机发送的携带有源SSD的访问信息及目标SSD信息的数据迁移指令后,即对源SSD中的待迁移数据进行迁移。源SSD对数据进行迁移的方式与第二方面所提供的数据迁移方法相同,区别仅在于在第六方面的实现方式中,读指令的生成和执行都由源SSD完成,另外,在源SSD根据读指令将读指令对应的数据块读取至源SSD的迁移缓存后,会将源SSD的访问信息携带在写请求中发送给目标SSD,以使所述目标SSD根据所述写请求将源SSD的迁移缓存中的数据块写入自身的闪存中。

本发明实施例第七方面提供另外一种数据迁移方法,第六方面所提供的数据迁移方法应用于SSD,所述SSD与主机的连接关系与第一方面提供的数据迁移方法相同,但在第七方面的实现方式中,所述SSD没有配置迁移缓存,在数据迁移过程中,主要是利用SSD的控制器的寄存器进行数据的迁移。

第七方面提供的数据迁移方法与第三方面提供的数据迁移方法类似,区别仅在于,主机发送迁移指令至源SSD时,所述迁移指令中携带的是目标SSD的控制器的寄存器的访问信息。在所述源SSD根据迁移指令生成读指令时,为根据所述目标SSD的控制器的寄存器的长度切分数据数据,所生成的读指令的目的地址为所述目标SSD的控制器的寄存器的访问信息,发送至所述目标SSD的写请求中所携带的也是所述目标SSD的控制器的寄存器的访问信息,这样,所述源SSD通过执行所述读指令可将所述源SSD中的所述读指令对应的数据块读取至所述目标SSD的控制器的寄存器中,所述目标SSD可以根据所述写请求将自身的控制器的寄存器中的数据块读入到自身的闪存中。

本发明实施例第八方面提供一种主机,所述主机所述主机连接有多个SSD,且所述多个SSD互相连通。每个SSD上配置有迁移缓存,且主机上记录有每个SSD的迁移缓存的访问信息,所述主机或者连接至所述主机的其他SSD根据所述访问信息访问每个SSD的迁移缓存。

所述主机包括读指示模块及写指示模块,所述读指示模块用于获取源SSD中待迁移数据的迁移数据信息并确定目标SSD,根据所述目标SSD对应的访问信息及所述迁移数据信息生成读指令,并将所述读指令发送至所述源SSD,所述读指令用于指示所述源SSD将所述源SSD闪存中的所述读指令对应的数据块读取至所述目标SSD的迁移缓存,所述写指示模块用于在接收到所述源SSD发送的读取完成的反馈指令后,发送写指令至所述目标SSD,指示所述目标SSD将自身缓存中的所述数据块写入自身的闪存中。

在第八方面的第一种可能的实现方式中,所述主机还包括分配模块,所述分配模块用于为所述主机相连的SSD所提供的迁移缓存分配访问信息,具体的分配方式可参考第一方面的第一种可能的实现方式中的描述。

所述读指示模块在生成读指令时,也包括两种方式,相应的生成新的读指令的方式也包括两种,具体请参考第一方面关于生成读指令及新的读指令的两种方式的描述。

所述度指示模块所生成的读指令的结构也与第一方面中的读指令的结构相同,在此不再赘述。

同样地,所述目标SSD为也可以为多个,在所述读指示模块生成读指令时,针对每个目标SSD,生成一个读指令,并将所生成的多个读指令发送至所述源SSD。

本发明实施例第九方面也提供一个主机,所述主机与SSD的连接关系与第八方面的主机相同,每个SSD也配置有迁移缓存。

第九方面的的主机与第八方面的主机的主要区别在于,在第八方面的主机的读指示模块发送给所述源SSD读指令,会指示所述源SSD将所述源SSD中的所述读指令所对应的数据块迁移至所述源SSD的迁移缓存中,所述写指示模块会发送写指令至所述目标SSD,指示所述目标SSD将所述源SSD的迁移缓存中的数据块迁移至所述目标SSD的闪存中。

由于第八方面的主机是将待迁移的数据块先迁移至所述源SSD的迁移缓存中,所以所述主机在生成读指令时,将所述读指令的目标地址设置为所述源SSD的迁移缓存的访问信息,而在生成写指令时,将所述写指令的源地址设置为所述源SSD的迁移缓存的访问信息,这样,所述源SSD即可根据所述读指令将所述读指令对应的数据块迁移至所述源SSD的迁移缓存,所述目标SSD可以根据所述写指令将所述所述源SSD的迁移缓存中的数据块写入自身的闪存。

另外,所述读指示模块在进行待迁移数据切分时,也是根据所述源SSD的迁移缓存的长度进行数据的切分。

其他与第八方面所提供的主机各模块所执行功能相同,可参考相关描述,在此不再赘述。

本发明实施例第十方面提供另外一个主机,所述主机与SSD的连接关系与第八方面的主机相同,每个SSD也配置有迁移缓存。

第十方面的主机与第八方面的主机的主要区别在于,所述主机包括迁移指示模块,所述迁移指示模块在确定了目标SSD之后,将目标SSD的访问信息携带在数据迁移指令中,并发送至源SSD,而第八方面的读指示模块、写指示模块及判断模块所执行的功能在第十方面都由源SSD来执行。这样,主机不但不需要对数据进行搬移,也不参与数据搬移过程中的数据的读写控制,则进一步减少了数据迁移过程中占用的CPU的带宽,也进一步减少了对存储系统的性能的影响。

本发明实施例第十一方面提供还提供一种主机,所述主机与SSD的连接关系与第一方面的主机相同,每个SSD也配置有迁移缓存。

第十一方面的主机与第十方面的主机的主要区别在于,主机的迁移指示模块在数据迁移指令中携带的为源SSD的迁移缓存的访问信息及目标SSD信息,以指示所述源SSD将所述源SSD中的待迁移数据迁移至源SSD的迁移缓存中,所述源SSD再发送写请求至目标SSD,指示所述目标SSD将所述源SSD的迁移缓存中的数据写入自身的闪存中。

本发明实施例第十二方面提供一种SSD,所述SSD与主机的连接关系与第一方面的主机与SSD的连接关系相同,所述SSD也配置有迁移缓存。

所述第十二方面提供的SSD与第十方面提供的主机对应,所述SSD包括读指示模块、读取模块、写指示模块,在所述度指示模块接收到主机发送的携带有目标SSD的访问信息的数据迁移指令后,即生成读指令,并通过读取模块执行所述读指令以对所述源SSD中的待迁移数据进行迁移。源SSD对数据进行迁移的方式与第八方面所提供的数据迁移方法相同,区别仅在于在第八方面的实现方式中,读指令的生成和执行是由源SSD的读指示模块和读取模块完成,在读取模块根据读指令将读指令对应的数据块读取至目标SSD的迁移缓存后,会通过写指令模块将目标SSD的访问信息携带在写请求中发送给目标SSD,以使所述目标SSD根据所述写请求将自身迁移缓存中的数据块写入自身的闪存中。

本发明实施例第十三方面提供另外一种SSD,所述SSD与主机的连接关系与第一方面的主机与SSD的连接关系相同,所述SSD也配置有迁移缓存。

所述第十三方面的SSD与第十一方面提供的主机对应,所述SSD也包括读指示模块、读取模块、写指示模块。在所述读指示模块接收到主机发送的携带有源SSD的访问信息及目标SSD信息的数据迁移指令后,即通过读取模块对源SSD中的待迁移数据进行迁移。源SSD对数据进行迁移的方式与第九方面所提供的数据迁移方式相同,区别仅在于在第十三方面的实现方式中,读指令的生成和执行由源SSD的读指示模块和读取模块完成,另外,在读取模块根据读指令将读指令对应的数据块读取至源SSD的迁移缓存后,写指示模块会将源SSD的访问信息携带在写请求中发送给目标SSD,以使所述目标SSD根据所述写请求将源SSD的迁移缓存中的数据块写入自身的闪存中。

本发明实施例第十四方面提供另外一种SSD,所述SSD与主机的连接关系与第一方面的主机和SSD的连接关系相同,在第十四方面,所述SSD没有配置迁移缓存,在数据迁移过程中,主要是利用SSD的控制器的寄存器进行数据的迁移。

第十四方面的SSD也包括读指示模块、读取模块、及写指示模块。各模块执行的功能与第五方面的SSD的各模块执行的功能相似,区别仅在于,主机发送迁移指令至源SSD时,所述迁移指令中携带的是目标SSD的控制器的寄存器的访问信息。在所述读指示模块根据迁移指令生成读指令时,为根据所述目标SSD的控制器的寄存器的长度切分数据数据,所生成的读指令的目的地址为所述目标SSD的控制器的寄存器的访问信息,所述写指示模块发送至所述目标SSD的写请求中所携带的也是所述目标SSD的控制器的寄存器的访问信息,这样,所述源SSD的读取模块通过执行所述读指令可将所述源SSD中的所述读指令对应的数据块读取至所述目标SSD的控制器的寄存器中,所述目标SSD可以根据所述写请求将自身的控制器的寄存器中的数据块读入到自身的闪存中。

通过本发明的上述实施例中的各种实现方式,可以将存储系统中的SSD的缓存或者寄存器作为数据迁移过程中的数据缓存,从而在迁移数据时,所迁移的数据不经过主机传输,使迁移数据不占用主机CPU的带宽,大大降低了对存储系统的性能影响,且保障了数据迁移的速度。

附图说明

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

图1为存储系统的架构图。

图2为现有技术中在SSD间进行数据迁移的方法的流程图。

图3为本发明第一实施例中的存储系统的架构图。

图4为本发明第一实施例中为SSD配置迁移缓存的方法的流程图。

图5为本发明第一实施例中进行数据迁移的方法的流程图。

图6为存储系统中与第一实施例中的数据迁移方法对应的主机及SSD的功能模块图。

图7为本发明第二实施例中进行数据迁移的方法的流程图。

图8为本发明第三实施例中进行数据迁移的方法的流程图。

图9为存储系统中与第三实施例中的数据迁移方法对应的主机及SSD的功能模块图。

图10为本发明第四实施例中进行数据迁移的方法的流程图。

图11为本发明第五实施例中存储系统的主机及SSD的功能模块图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,为存储系统的架构图,所述存储系统包括主机10,及与主机10通过高速外围组件互连标准(Peripheral component interconnection express,PCIe)交换机11连接的多个SSD(即SSD0至SSD24)。所述主机10包括CPU101及内存102。

在实际的应用中,经常需要在两个SSD之间进行数据的迁移,例如,在主机10侦测到预失效SSD时,就需要将预失效的SSD中的数据迁移到其他SSD,以免所述预失效SSD失效后,造成数据的丢失。在此,将数据迁出的SSD盘作为源SSD,将数据迁入的盘作为目标SSD。如图1所示,在需要将SSD2中的数据迁入SSD24时,SSD2即为源SSD,SSD24即为目标SSD。下面将结合图2说明现有技术中将源SSD中的数据迁入目标SSD的方法。

如图2所示,在步骤S201中,当所述CPU10侦测到SSD2中的数据需要迁出时,例如,侦测到SSD2中的数据即将失效,则在其他SSD中选择一个目标SSD,即SSD24,以将SSD2中的数据迁入SSD24。

步骤S202,所述CPU101在内存102中申请一段专门用于数据迁移的迁移内存空间,并获取待迁移数据的数据量。

步骤S203,所述CPU101根据所述迁移内存空间的长度及所获取的待迁移数据的数据量,生成读指令,并将所述读指令发送至SSD2。

步骤S204,所述SSD2根据所述读指令将SSD2中所述读指令对应的数据块读取至所述迁移内存空间。

步骤S205,在所述读指令执行完成后,所述所述SSD2发送读取完成反馈指令至所述主机10。

步骤S206,所述CPU101根据所述读取完成反馈指令发送写指令至所述SSD24。

步骤S207,所述SSD24根据接收到的数据写指令,将所述迁移内存空间中的数据块写入所述SSD24中。

步骤S208,所述SSD24发送写完成反馈指令至所述主机10。

步骤S209,所述CPU101在接收到SSD24发送的写完成反馈指令后,判断所述SSD2中的待迁移数据是否全部迁移完成,如果没有完成,则返回步骤S203,生成新的读指令,继续对SSD2中的待迁移数据进行迁移,如果完成,则结束数据迁移的流程。

在上述数据迁移方法中可以看出,现有技术在将源SSD中的数据迁移至目标SSD时,数据迁移的过程必需由主机10控制,并经过内存102进行迁移,这样,即使限制数据迁移时所占用的主机10的CPU101的带宽,也还是会对存储系统的性能产生影响,而且受CPU带宽的限制,甚至限制数据迁移的带宽会使数据迁移的速度非常慢,增加迁移数据丢失的风险,从而影响存储系统的可靠性。

本发明实施例提出数据迁移方法,在源SSD和目标SSD之间迁移数据的时候,数据在迁移过程中不经过主机的内存,而是通过PCIE交换机的接口直接传输,不占用主机CPU的带宽,因而不会影响存储系统的性能,另外,数据迁移的速率也不受主机CPU的带宽限制,从而提高了数据迁移的速率。下面将通过多个实施例对本发明所提供的数据迁移方法进行描述。

第一实施例

如图3所示,为本发明第一实施例中的存储系统的架构图。第一实施例中的存储系统的架构图与图1中现有技术中的存储系统的架构基本相同,包括主机30、PCIe交换机31、SSD0~SSD24,所述SSD1至SSD24通过所述PCIe交换机31互相连通。

所述主机30包括CPU301及内存302,所述CPU301用于运行内存中的应用程序303,以实现主机30所提供的一些功能,例如控制SSD0~SSD24中数据的访存及迁移。所述内存302中还存储有SSD0~SSD24的元数据304,所述元数据304记录有每个SSD中所存储的数据的信息,例如所存储数据的数据量,以及所存储数据的逻辑地址信息等。

所述SSD0~SSD24的结构基本相同,下面以SSD2为例来说明每个SSD的结构。如图3所示,所述SSD2包括主控制器221、直接内存访问(Direct Memory Access,DMA)控制器224、缓存223、及闪存225。所述主控制器221用于接收所述主机30发送的数据访存命令,以根据主机30的访存命令控制闪存225中的数据的存取。所述DMA控制器224可以直接访问其他设备的内存,例如主机30的内存,或者其他SSD的缓存。所述缓存223存储主控制器221或者DMA控制器224运行时所需要的程序指令,及暂存从闪存225读取的或者写入闪存225中的数据。闪存是所述SSD的主要存储元件,用于存储写入所述SSD的数据226。

本实施例中,每个SSD可提供一段缓存供主机30及其他SSD访问。每个SSD提供缓存给主机30及其他SSD访问的方法可参考图4所示的流程图,下文中将每个SSD提供给主机及其他SSD访问的缓存称为迁移缓存。

步骤S401,每个SSD在自己的控制器221的寄存器222中设置迁移缓存的缓存信息,本实施例中,所述缓存信息包括迁移缓存的大小。每个SSD的迁移缓存的大小可根据具体的应用环境确定,例如存储系统的性能、SSD的缓存的大小,SSD的接口带宽等因素确定。每个SSD的迁移缓存的大小可以相同,也可以不同,当有些SSD不需要提供缓存供主机及其他SSD使用时,也可以在所述寄存器222中将所述缓存的大小设置为0。

步骤S402,在所述主机30的BIOS启动阶段,从每个SSD的主控制器221的寄存器222中读取每个SSD的迁移缓存信息,并根据所读取的迁移缓存信息分别为每个SSD的迁移缓存分配访问信息,将为每个SSD分配的访问信息记录在每个SSD的元数据204中,所述访问信息包括访问首地址及SSD的迁移缓存的长度。所述访问首地址即为主机内存中的一个地址信息,这个地址信息对应SSD的迁移缓存的起始地址信息,在主机需要访问SSD的缓存时,首先需要在内存302中找到所述访问首地址,根据该访问首地址访问SSD的迁移缓存。

步骤S403,主机30将为每个SSD的迁移缓存分配的访问信息分别写入每个SSD的寄存器中。在具体实现时,可以只写入所述访问首地址。

步骤S404,每个SSD在缓存223中选择一段与所在所设置的缓存大小相同的缓存空间,作为迁移缓存,并建立所述访问信息与所述迁移缓存之间的映射关系。

如此,所述主机30或者处所述每个SSD之外的其他SSD即可通过所述访问信息访问每个SSD的迁移缓存。例如,如果通过上述方法为SSD0设置了迁移缓存,则主机或者SSD1~SSD24都可以通过所述访问信息访问所述迁移缓存。

在确定了每个SSD的迁移缓存后,即可利用所述迁移缓存进行SSD间的数据迁移。具体迁移方法如图5所示。

步骤S501,主机侦测预设的进行数据迁移的条件。

所述预设的迁移条件可以为确定所述存储系统中的某个SSD即将失效,或者接收到数据迁移请求时,所述迁移请求来自于应用,或者其他设备。

步骤S502,当侦测到预设的进行数据迁移的条件时,所述主机获取源SSD中待迁移数据的迁移数据信息,并确定目标SSD。

主机30从内存302中存储的所述源SSD的元数据中获取所述源SSD中的待迁移数据的迁移数据信息,所述迁移数据信息包括待迁移数据的数据量及逻辑地址。

所述目标SSD可以由用户确定,也可以是预先为所述源SSD设置的备份盘。所述目标SSD的个数可以是一个,也可以是多个,具体数量可以根据数据迁移的速度要求决定。

用户在确定目标SSD时,可以根据每个SSD存储的数据量及忙闲程度进行选择,即可选择存储的数据量比较小且当前比较空闲的SSD作为目标SSD。

步骤S503,根据所述目标SSD对应的访问信息及所述迁移数据信息生成读指令。

本实施方式中,提供两种生成读指令的方式,第一种方式为:首先根据所述目标SSD的访问信息中所述目标SSD所提供的迁移缓存的长度及所述迁移数据信息中所述待迁移数据的数据量将所述待迁移数据切分成多个数据块,每个数据块的长度小于等于所述迁移缓存的长度,通常,每个数据块的长度与所述迁移缓存的长度相等,且每个数据块的逻辑地址可以根据所述待迁移数据的逻辑地址及所切分的数据块的长度确定,并针对每个目标SSD获取一个数据块,生成一个读指令。

第二种方式为:在生成读指令时,不对所有的待迁移数据进行切分,而是只针对一个目标SSD切分出一个数据块,所切分的数据块的长度小于等于所述迁移缓存的长度,通常,所切分的数据块的长度与所述迁移缓存的长度相等,然后确定所切分数据块的逻辑地址,并针对所切分出的数据块生成读指令。

所述读指令包括源地址及目的地址,所述源地址即为所述读指令所读取的数据块的逻辑地址,所述目的地址即为所述目标SSD的迁移缓存的访问首地址。在所确定的目标SSD为多个时,则根据待迁移数据的逻辑地址从低到高的顺序分别针对每个目标SSD获取一个数据块,以生成多个读指令。

步骤S504,所述主机30将所述读指令发送至所述源SSD。

在主机30根据多个目标SSD生成多个读指令时,则将所述多个读指令按照生成顺序依次发送至所述源SSD。

步骤S505,所述源SSD在接收到所述读指令时,将所述源SSD闪存225中的所述读指令对应的数据块读取至所述目标SSD的迁移缓存。

本实施方式中,在所述源SSD的主控制器接收到所述读指令后,通知所述DMA控制器224根据所述读指令中的源地址,从所述源SSD的闪存中找到所述源地址所对应的数据块,然后根据所述目的地址,将所述数据块写入所述目地地址所指示的目标SSD的缓存中。在所述DMA控制器224在将所述数据块写入所述目标SSD的缓存时,首先将所述数据块及所述目的地址通过所述PCIe交换机传输至所述目的地址所指示的目标SSD,所述目标SSD再根据所述目的地址中的访问首地址找到所述访问首地址对应的迁移缓存的物理地址,然后将所述数据块存储至所述迁移缓存。

步骤S506,当所述数据块全部被读取至所述SSD的迁移缓存后,所述源SSD发送一个读取完成反馈指令至所述主机30。

步骤S507,所述主机30在接收到所述源SSD发送的读取完成的反馈指令后,发送写指令至所述目标SSD,所述写指令包括源地址及目的地址,所述写指令的源地址为所述目标SSD的迁移缓存的访问信息,所述写指令的目的地址为所述目标SSD的闪存中存储所述数据块的存储空间对应的逻辑地址。

步骤S508,所述目标SSD根据所述写指令中的源地址从所述目标SSD的迁移缓存中读取所述数据块,并根据所述目的地址将所述迁移缓存中的数据块写入所述目标SSD的闪存中。

步骤S509,在所述目标SSD将所述数据块写入完成后,所述目标SSD发送写入完成反馈指令至所述主机30。

步骤S510,在接收到所述写入完成的反馈指令后,所述主机30判断所述源SSD中的待迁移数据是否迁移完成。

步骤S511,若未迁移完,则生成新的读指令,然后返回步骤S504,如果迁移完成,则结束数据迁移的流程。所生成的新的读指令的目的地址即为发送所述反馈指令的目标SSD迁移缓存的访问信息。所述主机30在接收到多个反馈指令时,则针对每个反馈指令生成一个新的读指令。

如果步骤S503中生成读指令的方式为上述第一种方式,则在步骤S511中,从尚未迁移的数据块中确定一个数据块,并针对所确定的数据块生成新的读指令。

如果步骤S503中生成读指令的方式为上述第二种方式,则在步骤511中,从未迁移的待迁移数据中切分出一个数据块,根据新切分的数据块生成新的读指令。

通过上述实施例提供的方法,即可将源SSD中的数据不经过主机30的内存直接传输至目标SSD中,从而不占用主机30的CPU的带宽,且提高了SSD间数据迁移的速率。

如图6所示,为本实施例中图3所示存储系统中主机30和SSD的功能模块图(图中只示出了进行数据迁移的源SSD及目标SSD的模块图)。所述主机30包括分配模块601、读指示模块602、写指示模块603及判断模块604。所述SSD包括设置模块605、映射模块606、读取模块607及写入模块608。图中,所有SSD所包括的功能模块相同,但在实际应用中,当SSD作为数据迁出方的源SSD时,不执行所述写入模块608所执行的功能,当SSD作为数据的迁入方的目的SSD时,不执行读取模块607所执行的功能。

下面将根据数据迁移的过程介绍主机及SSD的各个模块所执行的功能。

所述每个SSD的设置模块605与所述主机30的分配模块601相互配合,实现提供SSD中的迁移缓存供主机及其他SSD访问的功能,与图4所示的SSD提供缓存供主机访问的方法对应。具体地,所述SSD的设置模块605用于在SSD的控制器221的寄存器222中设置迁移缓存的缓存信息,具体设置的方式请参考步骤S401的描述。

所述主机30的分配模块601用于在主机30的BIOS启动阶段,从每个SSD的主控制器221的寄存器222中读取每个SSD的迁移缓存信息,并根据所读取的迁移缓存信息分别为每个SSD的迁移缓存分配访问信息,将为每个SSD分配的访问信息记录在每个SSD的元数据204中,同时,将每个SSD的迁移缓存分配的访问信息分别写入每个SSD的寄存器中。具体分配方式请看考步骤S402的描述。

所述映射模块606用于在缓存223中选择一段与所设置的缓存大小相同的缓存空间,作为迁移缓存,并建立所述访问信息与所述迁移缓存之间的映射关系,与步骤S404对应。

所述SSD的读指示模块602用于侦测预设的进行数据迁移的条件,当侦测到预设的进行数据迁移的条件时,获取源SSD中待迁移数据的迁移数据信息,并确定目标SSD,然后根据目标SSD对应的访问信息及所述迁移数据信息生成读指令,并将所生成的读指令发送至源SSD。所述读指示模块602所执行的功能对应步骤S501-S504,生成读指令的两种方式也与步骤S503中的相同,在此不再赘述。

所述源SSD的在接收到所述读指令后,将所述源SSD闪存中的所述读指令对应的数据块读取至所述目标SSD的迁移缓存,当所述数据块全部被读取至所述SSD的迁移缓存后,所述源SSD发送一个读取完成反馈指令至所述主机30,从源SSD的闪存读取数据的过程请参考步骤S505和S506的描述。

在接收到所述源SSD发送的读取完成的反馈指令后,所述主机的写指令模块603发送写指令至所述目标SSD。所述写指示模块603执行的功能对应步骤S507。

所述目标SSD的写入模块608根据所述写指令将所述目标SSD中的缓存地址写入所述目标SSD的闪存中,并在写完后,发送写入完成的反馈指令至所述主机30。

所述主机30的判断模块604判断所述源SSD中的待迁移数据是否迁移完成,如果没有迁移完成,则生成新的读指令,并将所述新的读指令发送至所述源SSD。如果完成,则结束数据的迁移过程。生成新指令的方式请参考步骤S511中的相关描述。

第二实施例

第二实施例与第一实施例区别仅在于,在第二实施例中,源SSD中的待迁移数据首先被读取至本地的迁移缓存,然后将本地迁移缓存中的数据再写入目标SSD。下面将结合流程图说明第二实施例中的数据迁移方法。

在第二实施例中,存储系统的架构与图3相同,所述存储系统中的SSD也会提供缓存供主机及其他SSD访问,所以在下面的描述中,还是会用图3的架构描述第二实施例。另外,所述SSD提供缓存给主机及其他SSD访问的方法与第一实施例中方式相同,具体请参考图4的描述,在此不再赘述。

下面将结合图6描述在第二实施例中将源SSD中的待迁移数据迁移至目标SSD的方法。

步骤S701为侦测主机侦测预设的进行数据迁移的条件,这个步骤与第一实施例的步骤S501相同,在此不再赘述。

步骤S702,当侦测到预设的进行数据迁移的条件时,所述主机确定目标SSD,确定目标SSD的方式也与第一实施例中步骤S502相同,在此也不再赘述。

由于第二实施例是需要将源SSD中的待迁移数据读取至源SSD的缓存的迁移缓存中,所以,在步骤S703中,是根据所述源SSD的访问信息及所述迁移数据信息生成读指令。

在根据所述源SSD的访问信息及所述迁移数据信息生成读指令的方式也同样有两种。

第一种为,根据所述源SSD的访问信息中所述源SSD的迁移缓存的长度及所述迁移数据信息中所述待迁移数据的数据量将所述待迁移数据切分成多个数据块,根据所切分的数据块的迁移数据信息及所述源SSD对应的访问信息生成所述读指令。

第二种为,根据所述源SSD的访问信息中的所述源SSD的迁移缓存的长度及所述迁移数据信息中的所述待迁移数据的数据量获取本次迁移至所述目标SSD的数据块的迁移数据信息,根据所获取的数据块的迁移数据信息及所述源SSD对应的访问信息生成所述读指令。

所述读指令的源地址为所述源SSD所读取数据块的逻辑地址,而所述目的地址为所述源SSD的迁移缓存的访问首地址。

所述读指令在经过步骤604发送至源SSD后,在步骤S605中,所述源SSD根据所述读指令将所述源SSD闪存中的所述读指令对应的数据块读取至所述源SSD的迁移缓存中。

在将所述数据块全部读取至所述源SSD的迁移缓存中后,所述源SSD在步骤S706中,也会产生一个读取完成反馈指令至所述主机。

在步骤S707中,所述主机在接收到所述读取完成反馈指令后,会发送写指令至所述目标SSD。所述写指令的源地址为所述读指令所读取的数据块的逻辑地址,所述目的地址为所述目的地址为所述目标SSD的闪存中用于存储所述数据块的存储空间的逻辑地址。

步骤S708,所述目标SSD根据所述写指令将所述源SSD的迁移缓存中的所述数据块写入所述目标SSD中。

具体地,所述目标SSD在接收到所述写指令后,则通知所述目标SSD的所述DMA控制器通过DMA的方式,将所述源SSD的迁移缓存中所存储的所述数据块经过所述PCIe交换机写入所述目标SSD的缓存中。

在所述DMA控制器通过DMA的方式获取源SSD的迁移缓存中的所述数据块时,所述DMA控制器将所述源SSD的访问首地址传输至所述源SSD,所述源SSD根据所述访问首地址获取存储在所述SSD的迁移缓存中的所述数据块,然后将所述数据块再通过所述PCIe交换机写入所述目标SSD的闪存中。

步骤S709,在所述目标SSD将所述数据块写入完成后,所述目标SSD发送写入完成反馈指令至所述主机。

步骤S710,在接收到所述写入完成的反馈指令后,所述主机判断所述源SSD中的待迁移数据是否迁移完成。

步骤S711,若未迁移完,则生成新的读指令,然后返回步骤S604,如果迁移完成,则结束数据迁移的流程。

如果步骤S703中生成读指令的方式为上述第一种方式,则在步骤S611中,从尚未迁移的数据块中确定一个数据块,并针对所确定的数据块生成新的读指令。

如果步骤S703中生成读指令的方式为上述第二种方式,则在步骤711中,从未迁移的待迁移数据中切分出一个数据块,根据新切分的数据块生成新的读指令。

在第二实施例中,主机和SSD的功能模块图与第一实施例中的主机和SSD所包括的功能模块相同,但部分功能模块执行的功能不同。

其中,主机的分配模块601、SSD中的设置模块605及映射模块606所执行的功能与第一实施例中的相同,在此不再赘述。

由于本实施例是将源SSD的闪存中的数据先迁入源SSD的迁移缓存中,所以在所述读指示模块602生成读指令时,所生成的读指令的目的地址为所述源SSD的迁移缓存的访问信息。这样,所述源SSD的读取模块607会根据所述读指令将所述读指令对应的数据块读到所述源SSD的迁移缓存中。所述主机的写指示模块603所发送的写指令的源地址即为所述源SSD的迁移缓存的访问信息。所述目标SSD的写入模块会根据所述写指令将所述源SSD的迁移缓存中的所述数据块迁移至自身的闪存中。

其他部分与第一实施例相同,在此不再赘述。

第三实施例

第三实施例与第一实施例区别在于,在第三实施例中,主机SSD在侦测到需要对源SSD中的数据进行迁移时,只需要发送迁移命令至源SSD,源SSD根据所述迁移命令即可将自身闪存中的待迁移数据迁移至目标SSD,在源SSD将自身缓存中的数据迁移完成之后,再发送迁移完成的反馈指令给主机即可。这样,在整个数据迁移的过程中,主机只需要与源SSD发生两次命令交互,而不参与数据迁移的过程,从而进一步减少了SSD间数据迁移时所占用的主机带宽。下面将结合流程图说明第三实施例中的数据迁移方法。

在第三实施例中,存储系统的架构与图3相同,所述存储系统中的SSD也会提供迁移缓存供主机及其他SSD访问,所以在下面的描述中,还是会基于图3的架构描述第三实施例。另外,所述SSD提供迁移缓存给主机及其他SSD访问的方法与第一实施例中的方法相同,具体请参考图4的描述,在此不再赘述。

下面将结合图8描述在第三实施例中将源SSD中的待迁移数据迁移至目标SSD的方法。

步骤S801为侦测主机侦测预设的进行数据迁移的条件,这个步骤与第一实施例的步骤S501相同,在此不再赘述。

步骤S802,当侦测到预设的进行数据迁移的条件时,所述主机确定目标SSD,确定目标SSD的方式也与第一实施例中步骤S502相同,在此也不再赘述。

步骤S803,所述主机发送数据迁移指令至源SSD,所述数据迁移指令携带目标SSD对应的访问信息。

步骤S804,所述源SSD根据所接收到的迁移指令中携带的目标SSD对应的访问信息及所述源SSD中的待迁移数据生成读指令。

本实施例中,所述源SSD生成读指令的方式也包括两种,第一种为:根据所述目标SSD的访问信息中所述目标SSD所提供的迁移缓存的长度及所述源SSD中所述待迁移数据的数据量将所述待迁移数据切分成多个数据块,每个数据块的长度与所述迁移缓存的长度相等,且每个数据块的存储地址可以根据所述待迁移数据的存储地址及所切分的数据块的长度确定,并针对每个目标SSD获取一个数据块,生成一个读指令。需要说明的是,这里的存储地址为数据在SSD中的逻辑地址,根据SSD中数据的逻辑地址与物理地址的映射关系,可以找到SSD中存储的数据。

第二种方式为:在生成读指令时,不对所有的待迁移数据进行切分,而是只针对一个目标SSD切分出一个数据块,并确定所切分数据块的存储地址,然后针对所切分出的数据块生成读指令。

所述读指令包括源地址及目的地址,所述源地址即为所述读指令所读取的数据块的存储地址,所述目的地址即为所述目标SSD的迁移缓存的访问首地址。在所确定的目标SSD为多个时,则根据待迁移数据的存储地址从低到高的顺序分别针对每个目标SSD获取一个数据块,以生成多个读指令。

步骤S805,所述源SSD执行所述读指令,将所述源SSD闪存中的所述读指令对应的数据块读取至所述目标SSD的迁移缓存。

本实施例中,也是通过源SSD中的DMA控制器将所述源SSD的闪存中的所述读指令对应的数据块读取至目标SSD的迁移缓存,所述DMA读取所述数据块的过程与第一实施例相同,具体请参考第一实施例的步骤S505中的相关描述。

步骤S806,在所述读指令执行完成后,所述源SSD发送写请求至所述目标SSD,所述写请求包括所述目的SSD的迁移缓存的访问信息。

步骤S807,所述目标SSD根据所述写请求生成写指令。所述写指令包括源地址及目的地址,所述写指令的源地址为所述目标SSD的迁移缓存的访问信息,所述写指令的目的地址为所述目标SSD的闪存中存储所述数据块的存储地址。

步骤S808,通过执行所述写指令将所述目的SSD的迁移缓存中的所述数据块写入所述目的SSD的闪存中。

步骤S809,所述目标SSD在写入完成后,发送一写完成反馈指令至所述源SSD。

步骤S810,在接收到所述写入完成的反馈指令后,所述源SSD判断所述待迁移数据是否迁移完成,如果未迁移完成,则执行步骤S811,如果迁移完成,在执行步骤S812。

步骤S811,生成新的读指令,然后返回步骤S805,如果步骤S804中生成读指令的方式为上述第一种方式,则在步骤S811中,所述源SSD从尚未迁移的数据块中确定一个数据块,并针对所确定的数据块生成新的读指令。

如果步骤S804中生成读指令的方式为上述第二种方式,则在步骤S811中,所述源SSD从未迁移的待迁移数据中切分出一个数据块,根据新切分的数据块生成新的读指令。

步骤S812,所述源SSD发送迁移完成反馈指令至主机,主机接收到所述迁移完成的反馈指令后,即可结束所述数据迁移方法。

如图9所示,为第二实施例中,所述主机及所述SSD的模块图。所述主机包括分配模块901及迁移指示模块902。所述SSD包括设置模块903、映射模块904、读指示模块905、读取模块906、写指示模块907、写入模块908、及判断模块909。本实施例中,主机的分配模块901、SSD中的设置模块903及映射模块904所执行的功能与第一实施例中分配模块601、设置模块605及映射模块606的相同,在此不再赘述。

所述主机的迁移指示模块902用于在侦测到预设的进行数据迁移的条件时,确定目标SSD,发送数据迁移指令至源SSD,所述数据迁移指令携带目标SSD对应的访问信息。

所述源SSD的读指示模块905用于根据所接收到的迁移指令中携带的目标SSD对应的访问信息及所述源SSD中的待迁移数据生成读指令。生成读指令的两种方式请参考步骤S804的描述。

所述源SSD的读取模块906用于执行所述读指令,将所述源SSD闪存中的所述读指令对应的数据块读取至所述目标SSD的迁移缓存,与步骤805对应。

在所述读指令执行完成后,所述源SSD的写指示模块907发送写请求至所述目标SSD,所述写请求包括所述目标SSD的迁移缓存的访问信息。

所述目标SSD的写入模块908根据所述写请求生成写指令。所述写指令包括源地址及目的地址,所述写指令的源地址为所述目标SSD的迁移缓存的访问信息,所述写指令的目的地址为所述目标SSD的闪存中存储所述数据块的存储地址,根据所述写指令将所述目的SSD的迁移缓存中的所述数据块写入所述目的SSD的闪存中,并在写入完成后,发送一写完成反馈指令至所述源SSD。

所述源SSD的判断模块909在接收到所述写入完成的反馈指令后,判断所述待迁移数据是否迁移完成,如果没有完成,则生成新的读指令,生成新指令的方式与步骤S811中相同,在此不再赘述,如果完成,则发送迁移完成反馈指令至主机,以使主机结束数据的迁移。

第四实施例

第四实施例与第三实施例类似,其不同仅在于,在将源SSD中的待迁移数据迁移至目标SSD时,首先将所述源SSD中的待迁移数据迁移至所述源SSD的迁移缓存中,然后在将所述源SSD的迁移缓存中的数据迁移至所述目标SSD的闪存中。

在第三实施例中,存储系统的架构与图3相同,所述存储系统中的SSD也会提供缓存供主机访问,所以在下面的描述中,还是会基于图3的架构描述第三实施例。另外,所述SSD提供缓存给主机使用的方法与第一实施例中的方法相同,具体请参考图4的描述,在此不再赘述。

下面将结合图10描述在第四实施例中将源SSD中的待迁移数据迁移至目标SSD的方法。

步骤S1001为侦测主机侦测预设的进行数据迁移的条件,这个步骤与第一实施例的步骤S501相同,在此不再赘述。

步骤S1002,当侦测到预设的进行数据迁移的条件时,所述主机确定目标SSD,确定目标SSD的方式也与第一实施例中步骤S502相同,在此也不再赘述。

步骤S1003,所述主机发送数据迁移指令至源SSD,所述数据迁移指令携带源SSD对应的访问信息及目标SSD信息。

步骤S1004,所述SSD根据所接收到的迁移指令中携带的源SSD对应的访问信息及所述源SSD中的待迁移数据生成读指令。

所述源SSD生成读指令的方式与第三实施例中源SSD生成读指令的两种方式类似,其不同之处仅在于,所生成的读指令的目的地址为所述源SSD对应的访问信息。

步骤S1005,所述源SSD执行所述读指令,将所述源SSD闪存中的所述读指令对应的数据块读取至所述源SSD的迁移缓存。

步骤S1006,所述源SSD在执行完所述读指令后,发送写请求至所述目标SSD信息对应的目标SSD中,所述写请求中携带所述源SSD的迁移缓存的访问信息。

步骤S1007,所述目标SSD根据所述写请求生成写指令,所述写指令的源地址为所述源SSD对应的访问信息,所述写指令的目的地址为所述目的SSD的闪存中用于存储所述源SSD的迁移缓存中的所述数据块的地址。

步骤S1008,所述目标SSD执行所述写指令,将所述源SSD的迁移缓存中的所述数据块迁移至所述SSD的闪存中。

步骤S1009,在所述目标SSD执行完所述写指令后,发送写完成反馈指令至所述源SSD。

步骤S1010,在接收到所述写入完成的反馈指令后,所述源SSD判断所述待迁移数据是否迁移完成,如果未迁移完成,则执行步骤S1011,如果迁移完成,在执行步骤S1012。

步骤S1011,生成新的读指令,然后返回步骤S1005,如果步骤S1004中生成读指令的方式为上述第一种方式,则在步骤S1011中,所述源SSD从尚未迁移的数据块中确定一个数据块,并针对所确定的数据块生成新的读指令。

如果步骤S1004中生成读指令的方式为上述第二种方式,则在步骤S1011中,所述源SSD从未迁移的待迁移数据中切分出一个数据块,根据新切分的数据块生成新的读指令。

步骤S1012,所述源SSD发送迁移完成反馈指令至主机,主机接收到所述迁移完成的反馈指令后,即可结束所述数据迁移方法。

在第四实施例中,主机和SSD的功能模块图与第一实施例中的主机和SSD所包括的功能模块相同,但部分功能模块执行的功能不同。

其中,主机的分配模块901、SSD中的设置模块903及映射模块904所执行的功能与第一实施例中主机的分配模块601、SSD中的设置模块605及映射模块606相同,在此不再赘述。

由于本实施例是将源SSD的闪存中的数据先迁入源SSD的迁移缓存中,所以在所述读指示模块905在生成读指令时,所生成的读指令的目的地址为所述源SSD的迁移缓存的访问信息。这样,所述源SSD的读取模块607会根据所述读指令将所述读指令对应的数据块读到所述源SSD的迁移缓存中。所述写指示模块907所发送的写请求信息中携带的是所述源SSD的迁移缓存的访问信息。所述目标SSD的写入模块会根据所述写请求生成写指令,并执行所述写指令将所述源SSD的迁移缓存中的所述数据块迁移至所述SSD的闪存中。所述写指令的源地址为所述源SSD对应的访问信息,所述写指令的目的地址为所述目的SSD的闪存中用于存储所述源SSD的迁移缓存中的所述数据块的地址。

其他部分与第三实施例中的主机及SSD所包括的各模块的功能相同,在此不再赘述。

第五实施例

在第五实施例中,存储系统中的SSD不需要提供缓存供主机及其他SSD访问,而是利用SSD中的控制器的寄存器进行SSD间的数据迁移。

存储系统的架构与图3的架构相同,利用SSD的控制器的寄存器进行SSD间数据迁移的方法与第三实施例所提供的数据迁移方法类似,其不同点仅在于,目标SSD对应的访问信息为目标SSD的控制器的寄存器的信息,所述寄存器信息包括所述寄存器的访问首地址及寄存器的长度。由于现有技术中,所述寄存器的访问信息中已经记录在主机中,所以主机可以直接获取所述目标SSD的控制器的寄存器信息下面参考图8所示的第三实施例的数据迁移方法说明本实施例中数据迁移方法。由于本实施例中SSD对应的访问信息为SSD的控制器的寄存器的信息,所以,所述主机发送的迁移指令中所携带的目标SSD对应的信息为目标SSD的控制器的寄存器信息(对应图8的步骤S804)。这样,在生成读指令的步骤中(对应图8的步骤S804),为根据所述目标SSD的控制器的寄存器的信息,例如寄存器长度,切分读取的数据块,所生成的读指令的目的地址为所述目标SSD的控制器的寄存器的访问信息。相应的,在本实施例中,在执行读指令的步骤(对应图8的步骤S805)中,所述源SSD将所述源SSD的闪存中的所述读指令对应的数据块读取至所述目标SSD的控制器的寄存器中。另外,在发送写请求的步骤(对应图8的步骤S806)中,写请求中携带的也是所述目标SSD的控制器的寄存器的访问信息,所述目标SSD所生成的写指令的源地址即为所述寄存器的访问信息,如此,所述目标SSD即可根据所述写指令将自身控制器的寄存器中的数据块写入自身的闪存中了。其他步骤与第三实施例基本相同,具体请参考图8的相关描述。

图11为第五实施例中的主机及SSD的模块图。在第五实施例中,由于SSD不需要提供迁移缓存给主机及其他SSD访问,所以,没有设置模块及映射模块,相应的主机也没有分配模块。具体如图11所示,所述主机包括迁移指示模块1101,所述SSD(包括源SSD和目标SSD)包括读指示模块1102、读取模块1103、写指示模块1104、写入模块1105、及判断模块1106。

由于本实施例中SSD对应的访问信息为SSD的控制器的寄存器的信息,所以所述主机的迁移指示模块1101发送的迁移指令中所携带的目标SSD对应的信息为目标SSD的控制器的寄存器信息。在所述读指示模块1102生成读指令时,为根据所述目标SSD的控制器的寄存器的信息,例如寄存器长度,切分读取的数据块,所生成的读指令的目的地址为所述目标SSD的控制器的寄存器的访问信息。相应的,所述源SSD的读取模块1103将所述源SSD的闪存中的所述读指令对应的数据块读取至所述目标SSD的控制器的寄存器中。另外,在所述源SSD的写指示模块1104在发送写请求时,写请求中携带的也是所述目标SSD的控制器的寄存器的访问信息。所述目标SSD的写指示模块1105所生成的写指令的源地址即为所述寄存器的访问信息,如此,所述目标SSD的写入模块1106即可根据所述写指令将自身控制器的寄存器中的数据块写入自身的闪存中了。其他模块所实现的功能与第三实施例中相应的模块所执行的功能基本相同,具体请参考图9的相关模块的描述,在此不再赘述。

以上对本发明实施例所提供的计算机设备启动时,IO设备注册的技术进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

32页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种mmu和ifu读取memory中数据的实现方法及系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类