一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

固态硬盘的数据迁移方法、装置、电子设备及存储介质与流程

2023-01-15 21:11:03 来源:中国专利 TAG:


1.本发明涉及信息处理技术领域,特别是涉及一种固态硬盘的数据迁移方法、一种固态硬盘的数据迁移装置、一种电子设备以及一种计算机可读存储介质。


背景技术:

2.随着计算机技术的高速发展,人们所能接触到的信息数量日益庞大,从而对数据存储的要求也越来越高,对于可以存储数据的硬盘,人们除了需要考虑硬盘在存取过程中的安全性之外,还希望硬盘可以具有较快的存取速度,其中,ssd(solid state disk或solid state drive,固态硬盘)作为目前较为主流的硬盘,相较于传统硬盘,因其采用闪存作为存储介质,读写速度更快,且ssd内部不存在任何机械部件,防震抗摔性更好,同时具备功耗更低、噪音更小、更轻便等优点,受到众多青睐。对于ssd的写入过程,一般先把数据进行拆分,再将拆分后的多段数据从主机host迁移到sram(static random access memory,静态随机存取存储器)中,然后从sram向dram(dynamic random access memory,动态随机存取存储器)中传送数据以作备份,最后从sram将数据写入nand(nand flash memory,非易失性存储介质)中,采用上述方法,在数据迁移过程中,因无法保证每次数据传输均能成功,从而容易造成数据乱序问题,且整个过程需要多次访问sram以及dram,大大降低了数据迁移的效率。


技术实现要素:

3.本发明实施例是提供一种固态硬盘的数据迁移方法、装置、电子设备以及计算机可读存储介质,以解决或部分解决固态硬盘的数据迁移过程中数据乱序以及数据迁移效率低下的问题。
4.本发明实施例公开了一种固态硬盘的数据迁移方法,所述固态硬盘包括动态缓存区、静态缓存区、闪存以及字线描述符,所述方法包括:获取主机发送的待迁移数据以及所述待迁移数据对应的数据量;根据所述待迁移数据对应的数据量,从所述固态硬盘中提取若干个目标字线描述符,并确定多个目标静态缓存区,以及各个所述目标静态缓存区对应的第一地址信息,每个所述目标字线描述符对应一个目标动态缓存区;获取各个所述目标动态缓存区对应的第二地址信息;将所述待迁移数据按照各个所述第一地址信息,迁移至对应的目标静态缓存区;根据各个所述第一地址信息,确定各个所述目标静态缓存区对应的数据拷贝次数,并根据各个所述目标静态缓存区对应的数据拷贝次数以及各个所述第二地址信息,将所述待迁移数据从各个所述目标静态缓存区,迁移至各个所述目标动态缓存区;若检测到所述待迁移数据迁移成功,则将所述待迁移数据从各个所述目标静态缓存区迁移至所述固态硬盘的闪存。
5.可选地,所述第一地址信息包括目标静态缓存区的起始地址以及地址长度,所述
将所述待迁移数据按照各个所述第一地址信息,迁移至对应的目标静态缓存区,包括:根据各个所述目标静态缓存区的起始地址以及地址长度,将所述待迁移数据并行迁移至与所述起始地址对应的目标静态缓存区。
6.可选地,所述目标静态缓存区地址为一整段连续的地址,或,两段不连续的地址,所述根据各个所述第一地址信息,确定各个所述目标静态缓存区对应的数据拷贝次数,包括:若所述目标静态缓存区地址为一整段连续的地址,则确定所述目标静态缓存区对应的数据拷贝次数为1次;若所述目标静态缓存区地址为两段不连续的地址,则确定所述目标静态缓存区对应的数据拷贝次数为2次。
7.可选地,所述根据各个所述目标静态缓存区对应的数据拷贝次数以及各个所述第二地址信息,将所述待迁移数据从各个所述目标静态缓存区,迁移至各个所述目标动态缓存区,包括:若所述数据拷贝次数为1次,则将所述目标静态缓存区中的待迁移数据,迁移至与所述第二地址信息对应的目标动态缓存区。
8.可选地,所述固态硬盘中包括拷贝数据等待队列,所述拷贝数据等待队列用于暂存发送失败的待迁移数据所对应的字线描述符,所述根据各个所述目标静态缓存区对应的数据拷贝次数以及各个所述第二地址信息,将所述待迁移数据从各个所述目标静态缓存区,迁移至各个所述目标动态缓存区,包括:若检测到数据迁移失败,则将与所述目标静态缓存区中的待迁移数据对应的目标字线描述符标识为第一标识字线描述符,并将所述第一标识字线描述符添加至拷贝数据等待队列;当检测到空闲的迁移硬件单元,从所述拷贝数据等待队列提取出所述第一标识字线描述符,并将所述第一标识字线描述符对应的迁移失败数据,再次发送至对应的目标动态缓存区,所述迁移硬件单元用于数据迁移。
9.可选地,所述若检测到所述待迁移数据迁移成功,则将所述待迁移数据从各个所述目标静态缓存区迁移至所述固态硬盘的闪存,包括:若检测到数据迁移成功,则将迁移成功的数据从所述目标静态缓存区迁移至所述固态硬盘的闪存。
10.可选地,所述根据各个所述目标静态缓存区对应的数据拷贝次数以及各个所述第二地址信息,将所述待迁移数据从各个所述目标静态缓存区,迁移至各个所述目标动态缓存区,包括:若所述数据拷贝次数为2次,则按照所述目标静态缓存区中两段地址对应的地址长度,将所述目标静态缓存区中的待迁移数据划分为第一段待迁移数据以及第二段待迁移数据;将所述第一段待迁移数据以及所述第二段待迁移数据,依次迁移至与所述第二地址信息对应的目标动态缓存区。
11.可选地,所述将所述第一段待迁移数据以及所述第二段待迁移数据,依次迁移至与所述第二地址信息对应的目标动态缓存区,包括:
将所述第一段待迁移数据迁移至与所述第二地址信息对应的目标动态缓存区;若检测到所述第一段待迁移数据迁移成功,则将所述第二段待迁移数据迁移至与所述第二地址信息对应的目标动态缓存区。
12.可选地,所述固态硬盘中包括拷贝数据等待队列,所述拷贝数据等待队列用于暂存发送失败的待迁移数据所对应的字线描述符,所述方法包括:若检测到所述第一段待迁移数据迁移失败,则将与所述第一段待迁移数据对应的目标字线描述符标识为第二标识字线描述符,并将所述第二标识字线描述符添加至拷贝数据等待队列;当检测到空闲的迁移硬件单元,从所述拷贝数据等待队列提取出所述第二标识字线描述符,并将所述第二标识字线描述符对应的第一段待迁移数据,再次发送至与所述第二地址信息对应的目标动态缓存区,所述迁移硬件单元用于数据迁移;若检测到所述第一段待迁移数据二次迁移成功,则将所述第二段待迁移数据迁移至与所述第二地址信息对应的目标动态缓存区。
13.可选地,所述若检测到所述第一段待迁移数据二次迁移成功,则将所述第二段待迁移数据迁移至与所述第二地址信息对应的目标动态缓存区,包括:若检测到所述第一段待迁移数据二次迁移成功,则将所述第二标识字线描述符再次添加至所述拷贝数据等待队列;从所述拷贝数据等待队列提取出所述第二标识字线描述符,并将所述第二标识字线描述符对应的第二段待迁移数据,发送至与所述第二地址信息对应的目标动态缓存区。
14.可选地,所述若检测到所述待迁移数据迁移成功,则将所述待迁移数据从各个所述目标静态缓存区迁移至所述固态硬盘的闪存,包括:若检测到所述第一段待迁移数据以及所述第二段待迁移数据均迁移成功,则将所述第一段待迁移数据以及所述第二段待迁移数据从所述目标静态缓存区迁移至所述固态硬盘的闪存。
15.可选地,所述固态硬盘包括dma控制器,所述dma控制器用于从所述主机接收待迁移数据,并将所述待迁移数据迁移至所述目标静态缓存区,所述方法还包括:响应于针对dma控制器的配置操作,采用各个所述目标静态缓存区对应的第一地址信息对所述dma控制器进行配置,并根据配置结果,将所述待迁移数据迁移至对应的目标静态缓存区。
16.可选地,所述第一地址信息包括目标静态缓存区的起始地址,所述采用各个所述目标静态缓存区对应的第一地址信息对所述dma控制器进行配置,并根据配置结果,将所述待迁移数据迁移至对应的目标静态缓存区,包括:接收所述主机发送的并行冗余协议地址,并将所述并行冗余协议地址作为所述dma控制器的源地址;将所述目标静态缓存区对应的起始地址确定为所述dma控制器的目的地址,并根据所述源地址以及所述目的地址,接收所述主机发送的待迁移数据,并将所述待迁移数据迁移至对应的目标静态缓存区。
17.可选地,在所述获取主机发送的待迁移数据以及所述待迁移数据对应的数据量之前,所述方法还包括:
响应于针对所述固态硬盘的初始化操作,生成多个字线描述符,并针对每个字线描述符配置对应的动态缓存区。
18.可选地,所述根据所述待迁移数据对应的数据量,从所述固态硬盘中提取若干个目标字线描述符,并确定多个目标静态缓存区,以及各个所述目标静态缓存区对应的第一地址信息,包括:采用所述待迁移数据对应的数据量与第一预设数据量进行计算,获得与所述待迁移数据对应的目标字线描述符数量,并从所述固态硬盘中提取对应数量的目标字线描述符;采用所述待迁移数据对应的数据量与第二预设数据量进行计算,获得与所述待迁移数据对应的目标静态缓存区数量,并确定对应数量的目标静态缓存区。
19.可选地,在所述获取各个所述目标动态缓存区对应的第二地址信息之后,所述方法还包括:按照预设记录规则,将各个所述目标静态缓存区对应的第一地址信息,以及各个所述目标动态缓存区对应的第二地址信息,记入所述目标字线描述符。
20.可选地,所述固态硬盘中包括用于数据迁移的迁移硬件单元,所述目标字线描述符包括与所述目标字线描述符对应的待迁移数据的源地址、目标地址以及数据长度,所述方法还包括:遍历各个所述目标字线描述符,根据与所述目标字线描述符对应的待迁移数据的源地址、目标地址以及数据长度,对所述迁移硬件单元进行配置。
21.可选地,在所述根据各个所述目标静态缓存区对应的数据拷贝次数以及各个所述第二地址信息,将所述待迁移数据从各个所述目标静态缓存区,迁移至各个所述目标动态缓存区之后,所述方法还包括:记录各个所述目标静态缓存区中符合预设记录需求的元数据,并对各个所述目标静态缓存区对应的数据记录表进行更新。
22.本发明实施例还公开了一种固态硬盘的数据迁移装置,所述固态硬盘包括动态缓存区、静态缓存区、闪存以及字线描述符,所述装置包括:待迁移数据获取模块,用于获取主机发送的待迁移数据以及所述待迁移数据对应的数据量;目标字线描述符提取模块,用于根据所述待迁移数据对应的数据量,从所述固态硬盘中提取若干个目标字线描述符,并确定多个目标静态缓存区,以及各个所述目标静态缓存区对应的第一地址信息,每个所述目标字线描述符对应一个目标动态缓存区;第二地址信息获取模块,用于获取各个所述目标动态缓存区对应的第二地址信息;目标静态缓存区数据迁移模块,用于将所述待迁移数据按照各个所述第一地址信息,迁移至对应的目标静态缓存区;目标动态缓存区数据迁移模块,用于根据各个所述第一地址信息,确定各个所述目标静态缓存区对应的数据拷贝次数,并根据各个所述目标静态缓存区对应的数据拷贝次数以及各个所述第二地址信息,将所述待迁移数据从各个所述目标静态缓存区,迁移至各个所述目标动态缓存区;
闪存数据迁移模块,用于若检测到所述待迁移数据迁移成功,则将所述待迁移数据从各个所述目标静态缓存区迁移至所述固态硬盘的闪存。
23.可选地,所述第一地址信息包括目标静态缓存区的起始地址以及地址长度,所述目标静态缓存区数据迁移模块具体用于:根据各个所述目标静态缓存区的起始地址以及地址长度,将所述待迁移数据并行迁移至与所述起始地址对应的目标静态缓存区。
24.可选地,所述目标静态缓存区地址为一整段连续的地址,或,两段不连续的地址,所述目标动态缓存区数据迁移模块包括数据拷贝次数确定子模块,所述数据拷贝次数确定子模块具体用于:若所述目标静态缓存区地址为一整段连续的地址,则确定所述目标静态缓存区对应的数据拷贝次数为1次;若所述目标静态缓存区地址为两段不连续的地址,则确定所述目标静态缓存区对应的数据拷贝次数为2次。
25.可选地,所述目标动态缓存区数据迁移模块包括:连续数据迁移子模块,用于若所述数据拷贝次数为1次,则将所述目标静态缓存区中的待迁移数据,迁移至与所述第二地址信息对应的目标动态缓存区。
26.可选地,所述固态硬盘中包括拷贝数据等待队列,所述拷贝数据等待队列用于暂存发送失败的待迁移数据所对应的字线描述符,所述目标动态缓存区数据迁移模块包括:第一标识字线描述符标识模块,用于若检测到数据迁移失败,则将与所述目标静态缓存区中的待迁移数据对应的目标字线描述符标识为第一标识字线描述符,并将所述第一标识字线描述符添加至拷贝数据等待队列;连续数据二次迁移子模块,用于当检测到空闲的迁移硬件单元,从所述拷贝数据等待队列提取出所述第一标识字线描述符,并将所述第一标识字线描述符对应的迁移失败数据,再次发送至对应的目标动态缓存区,所述迁移硬件单元用于数据迁移。
27.可选地,所述闪存数据迁移模块具体用于:若检测到数据迁移成功,则将迁移成功的数据从所述目标静态缓存区迁移至所述固态硬盘的闪存。
28.可选地,所述目标动态缓存区数据迁移模块包括:待迁移数据划分划分模块,用于若所述数据拷贝次数为2次,则按照所述目标静态缓存区中两段地址对应的地址长度,将所述目标静态缓存区中的待迁移数据划分为第一段待迁移数据以及第二段待迁移数据;非连续数据迁移子模块,用于将所述第一段待迁移数据以及所述第二段待迁移数据,依次迁移至与所述第二地址信息对应的目标动态缓存区。
29.可选地,所述非连续数据迁移子模块包括:第一段待迁移数据迁移模块,用于将所述第一段待迁移数据迁移至与所述第二地址信息对应的目标动态缓存区;第二段待迁移数据迁移模块,用于若检测到所述第一段待迁移数据迁移成功,则将所述第二段待迁移数据迁移至与所述第二地址信息对应的目标动态缓存区。
30.可选地,所述固态硬盘中包括拷贝数据等待队列,所述拷贝数据等待队列用于暂
存发送失败的待迁移数据所对应的字线描述符,所述装置包括:第二标识字线描述符标识模块,用于若检测到所述第一段待迁移数据迁移失败,则将与所述第一段待迁移数据对应的目标字线描述符标识为第二标识字线描述符,并将所述第二标识字线描述符添加至拷贝数据等待队列;第一段待迁移数据二次迁移模块,用于当检测到空闲的迁移硬件单元,从所述拷贝数据等待队列提取出所述第二标识字线描述符,并将所述第二标识字线描述符对应的第一段待迁移数据,再次发送至与所述第二地址信息对应的目标动态缓存区,所述迁移硬件单元用于数据迁移;第二段待迁移数据迁移子模块,用于若检测到所述第一段待迁移数据二次迁移成功,则将所述第二段待迁移数据迁移至与所述第二地址信息对应的目标动态缓存区。
31.可选地,所述第二段待迁移数据迁移子模块具体用于:若检测到所述第一段待迁移数据二次迁移成功,则将所述第二标识字线描述符再次添加至所述拷贝数据等待队列;从所述拷贝数据等待队列提取出所述第二标识字线描述符,并将所述第二标识字线描述符对应的第二段待迁移数据,发送至与所述第二地址信息对应的目标动态缓存区。
32.可选地,所述闪存数据迁移模块具体用于:若检测到所述第一段待迁移数据以及所述第二段待迁移数据均迁移成功,则将所述第一段待迁移数据以及所述第二段待迁移数据从所述目标静态缓存区迁移至所述固态硬盘的闪存。
33.可选地,所述固态硬盘包括dma控制器,所述dma控制器用于从所述主机接收待迁移数据,并将所述待迁移数据迁移至所述目标静态缓存区,所述装置还包括:dma控制器配置模块,用于响应于针对dma控制器的配置操作,采用各个所述目标静态缓存区对应的第一地址信息对所述dma控制器进行配置,并根据配置结果,将所述待迁移数据迁移至对应的目标静态缓存区。
34.可选地,所述第一地址信息包括目标静态缓存区的起始地址,所述dma控制器配置模块包括:dma控制器源地址确认模块,用于接收所述主机发送的并行冗余协议地址,并将所述并行冗余协议地址作为所述dma控制器的源地址;dma控制器目标地址确认模块,用于将所述目标静态缓存区对应的起始地址确定为所述dma控制器的目的地址,并根据所述源地址以及所述目的地址,接收所述主机发送的待迁移数据,并将所述待迁移数据迁移至对应的目标静态缓存区。
35.可选地,所述装置还包括:字线描述符生成模块,用于响应于针对所述固态硬盘的初始化操作,生成多个字线描述符,并针对每个字线描述符配置对应的动态缓存区。
36.可选地,所述目标字线描述符提取模块包括:目标字线描述符提取子模块,用于采用所述待迁移数据对应的数据量与第一预设数据量进行计算,获得与所述待迁移数据对应的目标字线描述符数量,并从所述固态硬盘中提取对应数量的目标字线描述符;目标静态缓存区确定模块,用于采用所述待迁移数据对应的数据量与第二预设数
据量进行计算,获得与所述待迁移数据对应的目标静态缓存区数量,并确定对应数量的目标静态缓存区。
37.可选地,所述装置还包括:地址信息记录模块,用于按照预设记录规则,将各个所述目标静态缓存区对应的第一地址信息,以及各个所述目标动态缓存区对应的第二地址信息,记入所述目标字线描述符。
38.可选地,所述固态硬盘中包括用于数据迁移的迁移硬件单元,所述目标字线描述符包括与所述目标字线描述符对应的待迁移数据的源地址、目标地址以及数据长度,所述装置还包括:迁移硬件单元配置模块,用于遍历各个所述目标字线描述符,根据与所述目标字线描述符对应的待迁移数据的源地址、目标地址以及数据长度,对所述迁移硬件单元进行配置。
39.可选地,所述装置还包括:元数据记录模块,用于记录各个所述目标静态缓存区中符合预设记录需求的元数据,并对各个所述目标静态缓存区对应的数据记录表进行更新。
40.本发明实施例还公开了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信;所述存储器,用于存放计算机程序;所述处理器,用于执行存储器上所存放的程序时,实现如本发明实施例所述的方法。
41.本发明实施例还公开了一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如本发明实施例所述的方法。
42.本发明实施例包括以下优点:在本发明实施例中,针对固态硬盘的数据迁移过程,首先根据待迁移数据对应的数据量,先行确定需要用到的目标字线描述符、目标静态缓存区以及目标动态缓存区,从而在后续迁移时无需重复计算,简化了数据迁移流程,接着通过各个目标静态缓存区对应的第一地址信息,可以实现一次性将待迁移数据直接迁移至对应的目标静态缓存区,减少了迁移次数,也减少了对静态缓存区的访问,大大提高了迁移效率,接着根据目标静态缓存区对应的数据拷贝次数以及目标动态缓存区对应的第二地址信息,实现将待迁移数据按顺序从各个目标静态缓存区准确迁移至各个目标动态缓存区,减少了对静态缓存区的访问,同时避免了迁移后的数据乱序问题,并在检测到待迁移数据迁移成功时,可以将待迁移数据从各个目标静态缓存区迁移至固态硬盘的闪存,成功完成数据迁移。
附图说明
43.图1是本发明实施例中提供的一种固态硬盘的数据迁移方法的步骤流程图;图2是本发明实施例中提供的另一种固态硬盘的数据迁移方法的步骤流程图;图3是本发明实施例中提供的一种固态硬盘的数据迁移装置的结构框图;图4是本发明实施例中提供的一种计算机可读介质的示意图;
图5是本发明实施例中提供的一种电子设备的框图。
具体实施方式
44.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
45.为了使本领域技术人员更好地理解本发明实施例中的技术方案,下面对本发明实施例中涉及的部分技术特征进行解释、说明:ssd(solid state disk或solid state drive,固态硬盘)作为目前主流的硬盘,相较于传统硬盘,具有如下优点:读写速度快:采用闪存作为存储介质,读取速度相对机械硬盘更快。
46.防震抗摔性:传统硬盘都是磁碟型硬盘,数据储存在磁碟扇区,而ssd使用闪存颗粒制作而成,因此ssd内部不存在任何机械部件,从而即使在高速移动甚至伴随翻转倾斜的情况下也不会影响到正常使用,并且在发生碰撞和震荡时能够将数据丢失的可能性降到最小,在防震抗摔方面,相较于传统硬盘,ssd占有绝对优势。
47.低功耗:ssd功耗低于传统硬盘,且由于ssd采用无机械部件的闪存芯片,所以同时具有发热量小、散热快等特点。
48.无噪音:ssd不存在机械马达和风扇,工作时噪音值为0分贝,且基于闪存的ssd在工作状态下能耗和发热量一般较低。
49.工作温度范围大:典型的硬盘驱动器只能在5~55℃范围内工作,而大多数ssd可在-10~70℃工作。
50.轻便:ssd比同容量机械硬盘体积小、重量轻,与常规1.8英寸硬盘相比,重量轻20-30克。
51.静态缓存区:即sram(static random access memory,静态随机存取存储器)缓存区,sram是随机存取存储器的一种,“静态”指该种存储器只要保持通电,里面存储的数据就可以恒常保持,本发明中采用sram缓存区存储从主机迁移的数据。
52.动态缓存区:即dram(dynamic random access memory,动态随机存取存储器)缓存区,dram也是随机存取存储器的一种,与sram不同的是,dram里存储的数据需要周期性地更新,本发明中采用dram缓存区接收从sram缓存区迁移的数据以作备份。
53.闪存:即nand(nand flash memory,非易失性存储介质),nand是一种非易失性存储技术,即断电后仍能保存数据,本发明采用nand作为闪存,接收并存储从sram缓存区迁移的数据。
54.主机(host):指多机系统中起主要作用和控制作用的计算机,主机还可以为其他计算机准备程序,并对其他系统所用的程序进行编译、编辑、连接和测试。
55.字线(word line,wl):字线指将一定数量(2的n次方)的存储单元的控制端连接起来,字线表示行地址,其作用为可以确定读取哪一行数据。
56.字线描述符:在数据迁移过程中,有多个地方需用到字线描述符,为方便说明,本发明中可以采用字线描述符记录静态缓存区、动态缓存区以及待迁移数据的地址信息,且一个字线描述符可以对应一个动态缓存区。
57.dma(direct memory access,直接存储器访问)控制器:指一种在系统内部转移数
据的独特外设,可以将其视为一种能够通过一组专用总线将内部和外部存储器与每个具有dma能力的外设连接起来的控制器,本发明中采用dma控制器从主机接收待迁移数据,并将待迁移数据迁移至目标静态缓存区。
58.迁移硬件单元:可以采用迁移硬件单元将待迁移数据从静态缓存区迁移至动态缓存区。
59.并行冗余协议地址(parallel redundancy protocol,prp):并行冗余协议提供独特的冗余机制进行网络链路的冗余备份,在数据热交换时,若某个子网出现故障,可以实现零恢复延时,不丢失数据,且支持实时应用场景的数据传输,从而可以采用并行冗余协议地址对dma控制器进行配置,作为数据迁移的源地址,在数据传输过程中,即使出现故障,也可以保证顺利接收从主机传来的待迁移数据。
60.作为一种示例,随着计算机技术的高速发展,人们所能接触的信息数量日益庞大,从而对数据存储的要求也越来越高,对于可以存储数据的硬盘,人们除了需要考虑硬盘在存取过程中的安全性之外,还希望硬盘具有较快的存取速度,ssd作为目前较为主流的硬盘,相较于传统硬盘,因其采用闪存作为存储介质,读写速度更快,且ssd内部不存在任何机械部件,防震抗摔性更好,同时具备功耗更低、噪音更小、更轻便等优点,受到众多青睐。
61.对于ssd的写入过程,通常要求对主机host下发的数据按规律进行排布,且在存入nand闪存的过程中不能乱序,目前采用的数据迁移方法是先把数据进行拆分,即先把需存入固态硬盘的数据拆分成多段4k大小的数据,并按照指令中的数据顺序对每一段4k大小的数据确定对应的sram缓存区以及dram缓存区,并将sram缓存区以及dram缓存区的地址信息记录在字线描述符中,接着先采用dma控制器从主机host接收拆分后的4k大小的数据并迁移至sram中,然后从sram向对应的dram中传送数据以作备份,最后从sram将数据写入nand中,接着再采用上述方法继续处理下一个4k大小的数据,从而如果采用上述方法进行固态硬盘中的数据迁移,每一个4k大小的数据均需访问3次sram以及1次dram,如对于一个128k大小的数据,意味着需要访问96次sram,32次dram,即整个数据迁移过程需要多次访问sram以及dram,且在数据迁移过程中,因无法保证每次数据传输均能成功,从而容易造成数据乱序问题,大大降低了数据迁移的效率。
62.对此,本发明实施例的核心发明点之一在于:针对固态硬盘的数据迁移过程,首先根据待迁移数据对应的数据量,可以先行确定需要用到的目标字线描述符、目标静态缓存区以及目标动态缓存区,从而在后续迁移时无需重复计算,可以简化数据迁移流程,接着通过各个目标静态缓存区对应的第一地址信息,可以实现一次性将待迁移数据直接迁移至对应的目标静态缓存区,减少迁移次数,也可以减少对静态缓存区的访问,从而大大提高迁移效率,接着根据目标静态缓存区对应的数据拷贝次数以及目标动态缓存区对应的第二地址信息,实现将待迁移数据按顺序从各个目标静态缓存区准确迁移至各个目标动态缓存区,减少对静态缓存区的访问,同时可以避免迁移后的数据乱序问题,并在检测到待迁移数据迁移成功时,可以将待迁移数据从各个目标静态缓存区迁移至固态硬盘的闪存,成功完成数据迁移。
63.参照图1,示出了本发明实施例中提供的一种固态硬盘的数据迁移方法的步骤流程图,其中,所述固态硬盘包括动态缓存区、静态缓存区、闪存以及字线描述符,所述方法具体可以包括如下步骤:
步骤101,获取主机发送的待迁移数据以及所述待迁移数据对应的数据量;具体地,可以先获取主机发送的待迁移数据以及待迁移数据对应的数据量,以便可以根据待迁移数据的数据量计算出需要用到的字线描述符、静态缓存区以及动态缓存区的数量。
64.其中,关于一次待迁移数据的数据量,最小不能低于一个lba(logical block addressing,逻辑块寻址模式)的数据量,如对于4k格式的固态硬盘,最小不能小于4096字节,如对于512格式的固态硬盘,最小不能小于512字节,最大则可由固态硬盘的mdts(modular data transaction system,模块式数据事务系统)控制,一般是128k或者256k,为了方便说明,本发明所有实施例中主机发送的待迁移数据的数据量大小为128k,可以理解的是,本发明对此不作限制。
65.步骤102,根据所述待迁移数据对应的数据量,从所述固态硬盘中提取若干个目标字线描述符,并确定多个目标静态缓存区,以及各个所述目标静态缓存区对应的第一地址信息,每个所述目标字线描述符对应一个目标动态缓存区;在获取待迁移数据及待迁移数据对应的数据量之后,可以根据待迁移数据的数据量,计算需要用到的字线描述符数量,以及需要用到的静态缓存区数量,并根据计算的数量从固态硬盘中提取对应数量的字线描述符以及静态缓存区,在具体的实现中,可以根据待迁移数据对应的数据量,从固态硬盘中提取若干个目标字线描述符,并确定多个目标静态缓存区,以及各个目标静态缓存区对应的第一地址信息,每个目标字线描述符对应一个目标动态缓存区,通过待迁移数据量可以先行确定整个数据迁移过程需要用到的字线描述符以及缓存区,在后续迁移时无需重复计算,从而可以简化数据迁移流程,提高迁移效率。
66.步骤103,获取各个所述目标动态缓存区对应的第二地址信息;确定需要的目标字线描述符之后,可以同时确定与各个目标字线描述符对应的目标动态缓存区,则可以获取各个目标动态缓存区对应的第二地址信息,接着还可以将各个目标静态缓存区对应的第一地址信息,以及各个目标动态缓存区对应的地址信息按顺序记入目标字线描述符,以便后续数据迁移时可以按照目标字线描述符中的地址信息进行顺序数据迁移。
67.步骤104,将所述待迁移数据按照各个所述第一地址信息,迁移至对应的目标静态缓存区;接着可以将待迁移数据按照各个第一地址信息,一次性迁移至对应的目标静态缓存区,如将128k待迁移数据的1~4k数据存入第1个目标静态缓存区,同时将5~8k数据存入第2个目标静态缓存区,以此类推,直至将第121~128k数据存入第32个目标静态缓存区,从而通过各个目标静态缓存区对应的地址信息,可以一次性将待迁移数据直接迁移至对应的目标静态缓存区,减少了迁移次数,也减少了对静态缓存区的访问,大大提高迁移效率。
68.步骤105,根据各个所述第一地址信息,确定各个所述目标静态缓存区对应的数据拷贝次数,并根据各个所述目标静态缓存区对应的数据拷贝次数以及各个所述第二地址信息,将所述待迁移数据从各个所述目标静态缓存区,迁移至各个所述目标动态缓存区;具体地,可以根据各个第一地址信息,确定各个目标静态缓存区对应的数据拷贝次数,并根据各个目标静态缓存区对应的数据拷贝次数以及各个第二地址信息,将待迁移数据从各个目标静态缓存区,迁移至各个目标动态缓存区。
69.针对各个目标静态缓存区对应的数据拷贝次数的确定,作为一种示例,每个目标静态缓存区可以对应一个第一地址信息,假设此次数据迁移需用到4个目标静态缓存区,分别为目标静态缓存区a、目标静态缓存区b、目标静态缓存区c、目标静态缓存区d,各自对应的第一地址信息分别为第一地址信息a、第一地址信息b、第一地址信息c、第一地址信息d,则可以根据第一地址信息a确定目标静态缓存区a对应的数据拷贝次数,以此类推,根据第一地址信息d确定目标静态缓存区d对应的数据拷贝次数,从而通过各个第一地址信息,可以确定与各个第一地址信息对应的目标静态缓存区的数据拷贝次数,以在后续数据拷贝过程中,可以根据各个静态缓存区对应的数据拷贝次数,实现更高效的数据迁移,其中,为方便进行解释说明,示例中的目标静态缓存区个数以及编号设置均仅作为一种示例,可以理解的是,本发明对此不作限制。
70.在将待迁移数据一次性迁移至至各个目标静态缓存区之后,可以将待迁移数据从各个目标静态缓存区迁移至各个目标动态缓存区,以进行数据备份,由前述内容可知,一个字线描述符对应有3个页面page,每个页面page可以记录16k的数据信息,则每个页面page实际可以对应一个16k大小的缓存区空间,但由于硬件限制,该空间可能是16k连续的,也有可能是不连续的,从而对于每个目标静态缓存区,可以采用特定的缓存区管理方式,确保确定的目标静态缓存区是全连续的,或者最多有一个地方是不连续的,而在不连续情况下,该目标静态缓存区相当于被分成了两段地址空间,从而对应的第一地址信息实际上是有两段地址信息组成,则可以通过目标静态缓存区对应的第一地址信息判断目标静态缓存区对应的地址是否为连续的地址,并根据判断结果确定拷贝次数是1次还是2次,并根据确定的拷贝次数,以及目标动态缓存区对应的第二地址信息,将待迁移数据按照第一地址信息从目标静态缓存区迁出,并按照第二地址信息迁移至与第二地址信息对应的目标动态缓存区,从而通过上述方式可以将待迁移数据从各个目标静态缓存区中顺利迁移至对应的各个目标动态缓存区,以实现待迁移数据的数据备份。
71.步骤106,若检测到所述待迁移数据迁移成功,则将所述待迁移数据从各个所述目标静态缓存区迁移至所述固态硬盘的闪存。
72.当检测到待迁移数据迁移成功,则可以将迁移成功的待迁移数据从目标静态缓存区迁移至固态硬盘的闪存,因1个目标动态缓存区可以备份48k大小的数据,从而可以在1个目标动态缓存区成功备份满数据之后,将已经完成备份的待迁移数据从多个对应的目标静态缓存区(即12个目标静态缓存区)迁移至固态硬欧盘的闪存,从而实现整个数据迁移过程中待迁移数据的成功迁移。
73.对于从目标静态缓存区到闪存的数据迁移,除了上述方式,还可以在每迁移成功1个目标静态缓存区的待迁移数据(即4k大小的数据)之后,将完成备份的待迁移数据从目标静态缓存区迁移至固态硬欧盘的闪存,本发明对此不作限制。
74.需要说明的是,本发明实施例包括但不限于上述示例,可以理解的是,本领域技术人员在本发明实施例的思想指导下,还可以根据实际需求进行设置,本发明对此不作限制。
75.在本发明实施例中,针对固态硬盘的数据迁移过程,首先根据待迁移数据对应的数据量,先行确定需要用到的目标字线描述符、目标静态缓存区以及目标动态缓存区,从而在后续迁移时无需重复计算,简化了数据迁移流程,接着通过各个目标静态缓存区对应的第一地址信息,可以实现一次性将待迁移数据直接迁移至对应的目标静态缓存区,减少了
迁移次数,也减少了对静态缓存区的访问,大大提高了迁移效率,接着根据目标静态缓存区对应的数据拷贝次数以及目标动态缓存区对应的第二地址信息,实现将待迁移数据按顺序从各个目标静态缓存区准确迁移至各个目标动态缓存区,减少了对静态缓存区的访问,同时避免了迁移后的数据乱序问题,并在检测到待迁移数据迁移成功时,可以将待迁移数据从各个目标静态缓存区迁移至固态硬盘的闪存,成功完成数据迁移。
76.参照图2,示出了本发明实施例中提供的另一种固态硬盘的数据迁移方法的步骤流程图,其中,所述固态硬盘包括动态缓存区、静态缓存区、闪存以及字线描述符,所述方法具体可以包括如下步骤:步骤201,获取主机发送的待迁移数据以及所述待迁移数据对应的数据量;具体地,可以先获取主机发送的待迁移数据以及待迁移数据对应的数据量,以便可以根据待迁移数据的数据量计算出需要用到的字线描述符、静态缓存区以及动态缓存区的数量。
77.作为一种可选实施例,在获取主机发送的待迁移数据以及待迁移数据对应的数据量之前,还可以响应于针对固态硬盘的初始化操作,生成多个字线描述符,并针对每个字线描述符静态配置对应的动态缓存区,从而在数据迁移时,可以根据待迁移数据计算出需要的目标字线描述符数量,并直接提取对应数量的目标字线描述符,以及直接确定对应的目标动态缓存区,进一步地,还可以从生成的字线描述符中预留两个字线描述符用于记录各项需要记录的内容,如可以记录后续数据迁移过程中的静态缓存区对应的起始地址以及地址长度等等。
78.步骤202,根据所述待迁移数据对应的数据量,从所述固态硬盘中提取若干个目标字线描述符,并确定多个目标静态缓存区,以及各个所述目标静态缓存区对应的第一地址信息,每个所述目标字线描述符对应一个目标动态缓存区;具体地,可以根据待迁移数据对应的数据量,从固态硬盘中提取若干个目标字线描述符,并确定多个目标静态缓存区,以及各个目标静态缓存区对应的第一地址信息,每个目标字线描述符对应一个目标动态缓存区,则通过待迁移数据量可以先行确定整个数据迁移过程需要用到的字线描述符以及缓存区,在后续迁移时无需重复计算,从而可以简化数据迁移流程,提高迁移效率。
79.作为一种可选实施例,可以根据待迁移数据的数据量,计算需要用到的字线描述符数量,以及需要用到的静态缓存区数量,并根据计算的数量从固态硬盘中提取对应数量的字线描述符以及静态缓存区,则根据待迁移数据对应的数据量,从固态硬盘中提取若干个目标字线描述符,并确定多个目标静态缓存区,以及各个目标静态缓存区对应的第一地址信息,具体可以为:先采用待迁移数据对应的数据量与第一预设数据量进行计算,获得与待迁移数据对应的目标字线描述符数量,并从固态硬盘中提取对应数量的目标字线描述符,再采用待迁移数据对应的数据量与第二预设数据量进行计算,获得与待迁移数据对应的目标静态缓存区数量,并确定对应数量的目标静态缓存区,从而通过具体计算可以确定待迁移数据对应的目标字线描述符以及静态/动态缓存区的数量,并进一步根据对应数量从固态硬盘中进行相应确定及提取,在后续迁移时无需重复计算,从而可以简化数据迁移流程,提高迁移效率。
80.作为一种示例,假设待迁移数据的数据量大小为128k,可知一个字线描述符可以
记录48k数据的相关信息(一个字线描述符对应有3个页面page,每个页面page可以记录16k的数据信息,从而一个字线描述符可以对应记录48k的数据信息),从而第一预设数据量可以为48k,则可以根据128k/48k计算出约为2.66667,取整数则可以确定128k数据需要3个字线描述符,同理,一个静态缓存区可以存储4k的数据,从而第二预设数据量可以为4k,则可以根据128k/4k可以计算出需要32个静态缓存区,接着从固态硬盘中提取出3个目标字线描述符,其中,每个目标字线描述符对应一个目标动态缓存区,同时可以确定32个目标静态缓存区,并获取32个目标静态缓存区对应的第一地址信息。
81.步骤203,获取各个所述目标动态缓存区对应的第二地址信息;确定需要的目标字线描述符之后,可以同时确定与目标字线描述符对应的目标动态缓存区,则可以获取各个目标动态缓存区对应的第二地址信息,接着还可以将各个目标静态缓存区对应的第一地址信息,以及各个目标动态缓存区对应的地址信息按顺序记入目标字线描述符,以便后续数据迁移时可以按照目标字线描述符中的地址信息进行顺序数据迁移,则在获取各个目标动态缓存区对应的第二地址信息之后,还可以按照预设记录规则,将目标静态缓存区对应的第一地址信息,以及目标动态缓存区对应的第二地址信息,记入目标字线描述符。
82.接上述示例,可以将32个目标静态缓存区对应的地址信息顺序存入3个目标字线描述符中,如将第1~12个目标静态缓存区对应的地址信息存入第1个目标字线描述符,将第13~24个目标静态缓存区对应的地址信息存入第2个目标字线描述符,将第25~32个目标静态缓存区对应的地址信息存入第3个目标字线描述符,也可以以缓存区为记录单位反过来进行记录,如将第25~32个目标静态缓存区对应的地址信息存入第1个目标字线描述符等,能够确保32个目标静态缓存区的地址信息均存入目标字线描述符即可,而对于目标动态缓存区,则可以将第1~3个目标动态缓存区对应的地址信息按顺序对应存入第1~3个目标字线描述符,等等,需要说明的是,对于地址信息的预设记录规则,本领域技术人员可以根据实际情况进行设定,本发明对此不作限制。
83.作为一种可选实施例,在进行目标静态缓存区与目标动态缓存区间的数据迁移时,可以采用迁移硬件单元将待迁移数据从各个静态缓存区迁移至各个动态缓存区,示例性地,可以采用xor engine(异或运算引擎)或者move engine(移动引擎)作为迁移硬件单元,则固态硬盘中可以包括用于数据迁移的迁移硬件单元,其中,目标字线描述符包括与目标字线描述符对应的待迁移数据的源地址、目标地址以及数据长度,则可以根据目标字线描述符中对应的待迁移数据的信息,对迁移硬件单元进行配置,以确保待迁移数据的准确迁移,进一步地,对迁移硬件单元的配置过程具体可以为:遍历各个目标字线描述符,根据与各个目标字线描述符对应的待迁移数据的源地址、目标地址以及数据长度,对迁移硬件单元进行配置。
84.步骤204,将所述待迁移数据按照各个所述第一地址信息,迁移至对应的目标静态缓存区;接着可以将待迁移数据按照各个第一地址信息,一次性迁移至对应的目标静态缓存区,如将128k待迁移数据的1~4k数据存入第1个目标静态缓存区,同时将5~8k数据存入第2个目标静态缓存区,以此类推,直至将第121~128k数据存入第32个目标静态缓存区,从而通过各个目标静态缓存区对应的地址信息,可以一次性将待迁移数据直接迁移至对应的目
标静态缓存区,减少了迁移次数,也减少了对静态缓存区的访问,大大提高迁移效率。
85.作为一种可选实施例,第一地址信息可以包括目标静态缓存区的起始地址以及地址长度,则将待迁移数据按照各个第一地址信息,迁移至对应的目标静态缓存区,具体可以为:根据各个目标静态缓存区的起始地址以及地址长度,将待迁移数据并行迁移至与各个起始地址对应的目标静态缓存区,从而通过各个目标静态缓存区对应的起始地址以及地址长度,可以顺利将待迁移数据一次性并行迁移至对应的目标静态缓存区,减少了迁移次数,也减少了对静态缓存区的访问,大大提高迁移效率。
86.作为一种可选实施例,固态硬盘可以包括dma控制器,其中,dma控制器用于从主机接收待迁移数据,并将待迁移数据迁移至各个目标静态缓存区,则在将待迁移数据迁移至各个目标静态缓存区之前,还可以对起到数据迁移作用的dma控制器进行配置,具体地,可以响应于针对dma控制器的配置操作,采用各个目标静态缓存区对应的第一地址信息对dma控制器进行配置,并根据配置结果,将待迁移数据迁移至对应的目标静态缓存区,从而通过针对dma控制器采用目标静态缓存区的地址信息进行配置,可以实现数据的准确迁移,避免将数据迁移至其他区块,以及避免了数据的重复迁移。
87.进一步地,第一地址信息包括目标静态缓存区的起始地址,则采用各个目标静态缓存区对应的第一地址信息对dma控制器进行配置,并根据配置结果,将待迁移数据迁移至对应的目标静态缓存区,具体可以为:接收主机发送的并行冗余协议地址,并将并行冗余协议地址作为dma控制器的源地址,将各个目标静态缓存区对应的起始地址确定为dma控制器的目的地址,并根据源地址以及各个目的地址,接收主机发送的待迁移数据,并将待迁移数据迁移至对应的目标静态缓存区,从而通过将主机发送的并行冗余协议地址配置为dma控制器的源地址,将目标静态缓存区的起始地址配置为dma控制器的目标地址,进一步确保数据的准确接收与迁移,且采用并行冗余协议地址对dma控制器进行配置,作为数据迁移的源地址,在数据传输过程中,即使出现故障,也可以保证顺利接收从主机传来的待迁移数据。
88.步骤205,根据各个所述第一地址信息,确定各个所述目标静态缓存区对应的数据拷贝次数,若所述目标静态缓存区对应的数据拷贝次数为1次,则将所述目标静态缓存区中的待迁移数据,迁移至与所述第二地址信息对应的目标动态缓存区;在进行数据迁移前,可以根据各个第一地址信息,确定各个目标静态缓存区对应的数据拷贝次数,并根据各个目标静态缓存区对应的数据拷贝次数以及各个第二地址信息,将待迁移数据从各个目标静态缓存区,迁移至各个目标动态缓存区,因前述实施例对各个目标静态缓存区所对应的数据拷贝次数的确定进行了详细说明,此处不再赘述。
89.具体地,在将待迁移数据一次性迁移至至各个目标静态缓存区之后,可以将待迁移数据从各个目标静态缓存区迁移至各个目标动态缓存区,以进行数据备份,由前述内容可知,一个字线描述符对应有3个页面page,每个页面page可以记录16k的数据信息,则每个页面page实际可以对应一个16k大小的缓存区空间,但由于硬件限制,该空间可能是16k连续的,也有可能是不连续的,从而对于每一个目标静态缓存区,可以采用特定的缓存区管理方式,确保确定的目标静态缓存区是全连续的,或者最多有一个地方是不连续的,而在不连续情况下,该目标静态缓存区相当于被分成了两段地址空间,从而对应的第一地址信息实际上是有两段地址信息组成,则可以通过第一地址信息判断目标静态缓存区对应的地址是否为连续的地址,并根据判断结果确定拷贝次数是1次还是2次,并根据确定的拷贝次数,以
及目标动态缓存区对应的第二地址信息,将待迁移数据按照第一地址信息从目标静态缓存区迁出,并按照第二地址信息迁移至与第二地址信息对应的目标动态缓存区,从而通过上述方式可以将待迁移数据从各个目标静态缓存区中顺利迁移至对应的各个目标动态缓存区,以实现待迁移数据的数据备份。
90.在具体的实现中,目标静态缓存区地址可以为一整段连续的地址,或,两段不连续的地址,则根据各个第一地址信息,确定各个目标静态缓存区对应的数据拷贝次数,具体可以为:若目标静态缓存区地址为一整段连续的地址,则确定目标静态缓存区对应的数据拷贝次数为1次,若目标静态缓存区地址为两段不连续的地址,则确定目标静态缓存区对应的数据拷贝次数为2次,进一步地,若数据拷贝次数为1次,则将对应的目标静态缓存区中的待迁移数据,直接整个迁移至与第二地址信息对应的目标动态缓存区,如第5个目标静态缓存区地址为一整段连续地址,则可以确定该目标静态缓存区对应的数据拷贝次数为1次,此时可以直接将第5个目标静态缓存区中的待迁移数据,迁移至与第二地址信息对应的目标动态缓存区中,以作数据备份。
91.作为一种可选实施例,在数据迁移过程中,可能会出现数据迁移失败的情况,则可以预先设置一个拷贝数据等待队列,以缓存迁移失败的数据所对应的字线描述符,并在检测到有空闲的用于数据迁移的迁移硬件单元时,再次根据字线描述符进行数据迁移。
92.具体地,固态硬盘中可以包括拷贝数据等待队列,其中,拷贝数据等待队列可以用于暂存发送失败的待迁移数据所对应的字线描述符,则根据数据拷贝次数以及第二地址信息,将待迁移数据从各个目标静态缓存区,迁移至各个目标动态缓存区,具体可以为:若检测到数据迁移失败,则将与目标静态缓存区中的待迁移数据对应的目标字线描述符标识为第一标识字线描述符,并将第一标识字线描述符添加至拷贝数据等待队列,当检测到空闲的迁移硬件单元,从拷贝数据等待队列提取出第一标识字线描述符,并将第一标识字线描述符对应的迁移失败数据,再次发送至对应的目标动态缓存区,从而通过针对迁移失败的数据设置拷贝数据等待队列,以及对迁移失败的数据对应的字线描述符进行标识,保证了即使出现数据迁移失败情况,也能将迁移失败的数据进行再次迁移,确保数据迁移成功。
93.步骤206,若所述目标静态缓存区对应的数据拷贝次数为2次,则按照所述目标静态缓存区中两段地址对应的地址长度,将所述目标静态缓存区中的待迁移数据划分为第一段待迁移数据以及第二段待迁移数据;具体地,目标静态缓存区对应的拷贝次数可能为2次,则若数据拷贝次数为2次,则按照目标静态缓存区中两段地址对应的地址长度,将目标静态缓存区中的待迁移数据划分为第一段待迁移数据以及第二段待迁移数据,从而在后续数据迁移过程中,可以将待迁移数据进行分段发送。
94.步骤207,将所述第一段待迁移数据以及所述第二段待迁移数据,依次迁移至与所述第二地址信息对应的目标动态缓存区;具体地,在将地址不连续的目标静态缓存区中待迁移数据,按照第二地址信息进行划分之后,可以将第一段待迁移数据以及第二段待迁移数据,依次迁移至与第二地址信息对应的目标动态缓存区,从而通过采用分段迁移数据的方式,即使在目标静态缓存区地址不连续的情况下,也可以保证目标静态缓存区中的待迁移数据能够完整迁移。
95.作为一种可选实施例,将第一段待迁移数据以及第二段待迁移数据,依次迁移至
与第二地址信息对应的目标动态缓存区,具体可以为:先将第一段待迁移数据迁移至与第二地址信息对应的目标动态缓存区,若检测到第一段待迁移数据迁移成功,则将第二段待迁移数据迁移至与第二地址信息对应的目标动态缓存区,在确保第一段数据成功迁移的情况下,再对第二段数据进行迁移,从而避免了迁移后的数据乱序问题。
96.由前述内容可知,在数据迁移过程中,可能会出现数据迁移失败的情况,则固态硬盘中可以包括拷贝数据等待队列,拷贝数据等待队列用于暂存发送失败的待迁移数据所对应的字线描述符,从而若检测到第一段待迁移数据迁移失败,则将与第一段待迁移数据对应的目标字线描述符标识为第二标识字线描述符,并将第二标识字线描述符添加至拷贝数据等待队列,当检测到空闲的用于数据迁移的迁移硬件单元时,可以从拷贝数据等待队列提取出第二标识字线描述符,并将第二标识字线描述符对应的第一段待迁移数据,再次发送至与第二地址信息对应的目标动态缓存区,若检测到第一段待迁移数据二次迁移成功,则将第二段待迁移数据迁移至与第二地址信息对应的目标动态缓存区。
97.进一步地,若检测到第一段待迁移数据二次迁移成功,则将第二段待迁移数据迁移至与第二地址信息对应的目标动态缓存区,具体可以为:若检测到第一段待迁移数据二次迁移成功,则将第二标识字线描述符再次添加至拷贝数据等待队列,从拷贝数据等待队列提取出第二标识字线描述符,并将第二标识字线描述符对应的第二段待迁移数据,发送至与第二地址信息对应的目标动态缓存区,从而在分段数据迁移过程中,即使第一段数据迁移失败,也可以再次实现迁移,并在第一段数据迁移成功之后,紧接着将第二段数据进行顺序迁移,确保了数据的成功迁移,同时避免了迁移后的数据乱序问题。
98.作为一种可选实施例,在根据各个目标静态缓存区对应的数据拷贝次数以及各个第二地址信息,将待迁移数据从各个目标静态缓存区,迁移至各个目标动态缓存区之后,可以按要求对成功迁移的数据进行处理,如可以对某些符合预设记录需求的元数据进行记录,则记录过程具体可以为:记录各个目标静态缓存区中符合预设记录需求的元数据,并对各个目标静态缓存区对应的数据记录表进行更新,其中,预设记录需求可以为是否为重点关注数据,或者是否会对目标静态缓存区造成某种影响等等,可以理解的是,本发明对此不作限制。
99.步骤208,若检测到所述待迁移数据迁移成功,则将所述待迁移数据从各个所述目标静态缓存区迁移至所述固态硬盘的闪存。
100.当检测到待迁移数据迁移成功,则可以将迁移成功的待迁移数据从各个目标静态缓存区迁移至固态硬盘的闪存,因1个目标动态缓存区可以备份48k大小的数据,从而可以在1个目标动态缓存区成功备份满数据之后,将已经完成备份的待迁移数据从多个对应的目标静态缓存区(即12个目标静态缓存区)迁移至固态硬欧盘的闪存,从而实现整个数据迁移过程中待迁移数据的成功迁移。
101.针对目标静态缓存区地址为连续地址情况,若检测到待迁移数据迁移成功,则将待迁移数据从各个目标静态缓存区迁移至固态硬盘的闪存,具体可以为:若检测到数据迁移成功,则将迁移成功的数据从目标静态缓存区迁移至固态硬盘的闪存。
102.同时,针对目标静态缓存区地址为不连续地址情况,若检测到待迁移数据迁移成功,则将待迁移数据从各个目标静态缓存区迁移至固态硬盘的闪存,具体可以为:若检测到第一段待迁移数据以及第二段待迁移数据均迁移成功,则将第一段待迁移数据以及第二段
待迁移数据从目标静态缓存区迁移至固态硬盘的闪存。
103.对于从目标静态缓存区到闪存的数据迁移,除了上述方式,还可以在每迁移成功1个目标静态缓存区的待迁移数据(即4k大小的数据)之后,将完成备份的待迁移数据从目标静态缓存区迁移至固态硬欧盘的闪存,本发明对此不作限制。
104.需要说明的是,本发明实施例包括但不限于上述示例,可以理解的是,本领域技术人员在本发明实施例的思想指导下,还可以根据实际需求进行设置,本发明对此不作限制。
105.在本发明实施例中,针对固态硬盘的数据迁移过程,首先根据待迁移数据对应的数据量,先行确定需要用到的目标字线描述符、目标静态缓存区以及目标动态缓存区,从而在后续迁移时无需重复计算,简化了数据迁移流程,接着通过各个目标静态缓存区对应的第一地址信息,可以实现一次性将待迁移数据直接迁移至对应的目标静态缓存区,减少了迁移次数,也减少了对静态缓存区的访问,大大提高了迁移效率,接着根据目标静态缓存区对应的数据拷贝次数以及目标动态缓存区对应的第二地址信息,实现将待迁移数据按顺序从各个目标静态缓存区准确迁移至各个目标动态缓存区,减少了对静态缓存区的访问,同时避免了迁移后的数据乱序问题,并在检测到待迁移数据迁移成功时,可以将待迁移数据从各个目标静态缓存区迁移至固态硬盘的闪存,成功完成数据迁移。
106.需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
107.参照图3,示出了本发明实施例中提供的一种固态硬盘的数据迁移装置的结构框图,所述固态硬盘包括动态缓存区、静态缓存区、闪存以及字线描述符,所述装置具体可以包括如下模块:待迁移数据获取模块301,用于获取主机发送的待迁移数据以及所述待迁移数据对应的数据量;目标字线描述符提取模块302,用于根据所述待迁移数据对应的数据量,从所述固态硬盘中提取若干个目标字线描述符,并确定多个目标静态缓存区,以及各个所述目标静态缓存区对应的第一地址信息,每个所述目标字线描述符对应一个目标动态缓存区;第二地址信息获取模块303,用于获取各个所述目标动态缓存区对应的第二地址信息;目标静态缓存区数据迁移模块304,用于将所述待迁移数据按照各个所述第一地址信息,迁移至对应的目标静态缓存区;目标动态缓存区数据迁移模块305,用于根据各个所述第一地址信息,确定各个所述目标静态缓存区对应的数据拷贝次数,并根据各个所述目标静态缓存区对应的数据拷贝次数以及各个所述第二地址信息,将所述待迁移数据从各个所述目标静态缓存区,迁移至各个所述目标动态缓存区;闪存数据迁移模块306,用于若检测到所述待迁移数据迁移成功,则将所述待迁移数据从各个所述目标静态缓存区迁移至所述固态硬盘的闪存。
108.在一种可选实施例中,所述第一地址信息包括目标静态缓存区的起始地址以及地
址长度,所述目标静态缓存区数据迁移模块304具体用于:根据各个所述目标静态缓存区的起始地址以及地址长度,将所述待迁移数据并行迁移至与所述起始地址对应的目标静态缓存区。
109.在一种可选实施例中,所述目标静态缓存区地址为一整段连续的地址,或,两段不连续的地址,所述目标动态缓存区数据迁移模块305包括数据拷贝次数确定子模块,所述数据拷贝次数确定子模块具体用于:若所述目标静态缓存区地址为一整段连续的地址,则确定所述目标静态缓存区对应的数据拷贝次数为1次;若所述目标静态缓存区地址为两段不连续的地址,则确定所述目标静态缓存区对应的数据拷贝次数为2次。
110.在一种可选实施例中,所述目标动态缓存区数据迁移模块305包括:连续数据迁移子模块,用于若所述数据拷贝次数为1次,则将所述目标静态缓存区中的待迁移数据,迁移至与所述第二地址信息对应的目标动态缓存区。
111.在一种可选实施例中,所述固态硬盘中包括拷贝数据等待队列,所述拷贝数据等待队列用于暂存发送失败的待迁移数据所对应的字线描述符,所述目标动态缓存区数据迁移模块305包括:第一标识字线描述符标识模块,用于若检测到数据迁移失败,则将与所述目标静态缓存区中的待迁移数据对应的目标字线描述符标识为第一标识字线描述符,并将所述第一标识字线描述符添加至拷贝数据等待队列;连续数据二次迁移子模块,用于当检测到空闲的迁移硬件单元,从所述拷贝数据等待队列提取出所述第一标识字线描述符,并将所述第一标识字线描述符对应的迁移失败数据,再次发送至对应的目标动态缓存区,所述迁移硬件单元用于数据迁移。
112.在一种可选实施例中,所述闪存数据迁移模块306具体用于:若检测到数据迁移成功,则将迁移成功的数据从所述目标静态缓存区迁移至所述固态硬盘的闪存。
113.在一种可选实施例中,所述目标动态缓存区数据迁移模块305包括:待迁移数据划分划分模块,用于若所述数据拷贝次数为2次,则按照所述目标静态缓存区中两段地址对应的地址长度,将所述目标静态缓存区中的待迁移数据划分为第一段待迁移数据以及第二段待迁移数据;非连续数据迁移子模块,用于将所述第一段待迁移数据以及所述第二段待迁移数据,依次迁移至与所述第二地址信息对应的目标动态缓存区。
114.在一种可选实施例中,所述非连续数据迁移子模块包括:第一段待迁移数据迁移模块,用于将所述第一段待迁移数据迁移至与所述第二地址信息对应的目标动态缓存区;第二段待迁移数据迁移模块,用于若检测到所述第一段待迁移数据迁移成功,则将所述第二段待迁移数据迁移至与所述第二地址信息对应的目标动态缓存区。
115.在一种可选实施例中,所述固态硬盘中包括拷贝数据等待队列,所述拷贝数据等待队列用于暂存发送失败的待迁移数据所对应的字线描述符,所述装置包括:第二标识字线描述符标识模块,用于若检测到所述第一段待迁移数据迁移失败,
则将与所述第一段待迁移数据对应的目标字线描述符标识为第二标识字线描述符,并将所述第二标识字线描述符添加至拷贝数据等待队列;第一段待迁移数据二次迁移模块,用于当检测到空闲的迁移硬件单元,从所述拷贝数据等待队列提取出所述第二标识字线描述符,并将所述第二标识字线描述符对应的第一段待迁移数据,再次发送至与所述第二地址信息对应的目标动态缓存区,所述迁移硬件单元用于数据迁移;第二段待迁移数据迁移子模块,用于若检测到所述第一段待迁移数据二次迁移成功,则将所述第二段待迁移数据迁移至与所述第二地址信息对应的目标动态缓存区。
116.在一种可选实施例中,所述第二段待迁移数据迁移子模块具体用于:若检测到所述第一段待迁移数据二次迁移成功,则将所述第二标识字线描述符再次添加至所述拷贝数据等待队列;从所述拷贝数据等待队列提取出所述第二标识字线描述符,并将所述第二标识字线描述符对应的第二段待迁移数据,发送至与所述第二地址信息对应的目标动态缓存区。
117.在一种可选实施例中,所述闪存数据迁移模块306具体用于:若检测到所述第一段待迁移数据以及所述第二段待迁移数据均迁移成功,则将所述第一段待迁移数据以及所述第二段待迁移数据从所述目标静态缓存区迁移至所述固态硬盘的闪存。
118.在一种可选实施例中,所述固态硬盘包括dma控制器,所述dma控制器用于从所述主机接收待迁移数据,并将所述待迁移数据迁移至所述目标静态缓存区,所述装置还包括:dma控制器配置模块,用于响应于针对dma控制器的配置操作,采用各个所述目标静态缓存区对应的第一地址信息对所述dma控制器进行配置,并根据配置结果,将所述待迁移数据迁移至对应的目标静态缓存区。
119.在一种可选实施例中,所述第一地址信息包括目标静态缓存区的起始地址,所述dma控制器配置模块包括:dma控制器源地址确认模块,用于接收所述主机发送的并行冗余协议地址,并将所述并行冗余协议地址作为所述dma控制器的源地址;dma控制器目标地址确认模块,用于将所述目标静态缓存区对应的起始地址确定为所述dma控制器的目的地址,并根据所述源地址以及所述目的地址,接收所述主机发送的待迁移数据,并将所述待迁移数据迁移至对应的目标静态缓存区。
120.在一种可选实施例中,所述装置还包括:字线描述符生成模块,用于响应于针对所述固态硬盘的初始化操作,生成多个字线描述符,并针对每个字线描述符配置对应的动态缓存区。
121.在一种可选实施例中,所述目标字线描述符提取模块302包括:目标字线描述符提取子模块,用于采用所述待迁移数据对应的数据量与第一预设数据量进行计算,获得与所述待迁移数据对应的目标字线描述符数量,并从所述固态硬盘中提取对应数量的目标字线描述符;目标静态缓存区确定模块,用于采用所述待迁移数据对应的数据量与第二预设数据量进行计算,获得与所述待迁移数据对应的目标静态缓存区数量,并确定对应数量的目标静态缓存区。
122.在一种可选实施例中,所述装置还包括:地址信息记录模块,用于按照预设记录规则,将各个所述目标静态缓存区对应的第一地址信息,以及各个所述目标动态缓存区对应的第二地址信息,记入所述目标字线描述符。
123.在一种可选实施例中,所述固态硬盘中包括用于数据迁移的迁移硬件单元,所述目标字线描述符包括与所述目标字线描述符对应的待迁移数据的源地址、目标地址以及数据长度,所述装置还包括:迁移硬件单元配置模块,用于遍历各个所述目标字线描述符,根据与所述目标字线描述符对应的待迁移数据的源地址、目标地址以及数据长度,对所述迁移硬件单元进行配置。
124.在一种可选实施例中,所述装置还包括:元数据记录模块,用于记录各个所述目标静态缓存区中符合预设记录需求的元数据,并对各个所述目标静态缓存区对应的数据记录表进行更新。
125.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
126.另外,本发明实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述固态硬盘的数据迁移方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
127.如图4所示,本发明实施例还提供了一种计算机可读存储介质401,计算机可读存储介质401上存储有计算机程序,计算机程序被处理器执行时实现上述固态硬盘的数据迁移方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质401,如只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等。
128.图5为实现本发明各个实施例的一种电子设备的硬件结构示意图。
129.该电子设备500包括但不限于:射频单元501、网络模块502、音频输出单元503、输入单元504、传感器505、显示单元506、用户输入单元507、接口单元508、存储器509、处理器510、以及电源511等部件。本领域技术人员可以理解,本发明实施例中所涉及的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。在本发明实施例中,电子设备包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、车载终端、可穿戴设备、以及计步器等。
130.应理解的是,本发明实施例中,射频单元501可用于收发信息或通话过程中,信号的接收和发送,具体的,将来自基站的下行数据接收后,给处理器510处理;另外,将上行的数据发送给基站。通常,射频单元501包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元501还可以通过无线通信系统与网络和其他设备通信。
131.电子设备通过网络模块502为用户提供了无线的宽带互联网访问,如帮助用户收发电子邮件、浏览网页和访问流式媒体等。
132.音频输出单元503可以将射频单元501或网络模块502接收的或者在存储器509中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元503还可以提供与电
子设备500执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元503包括扬声器、蜂鸣器以及受话器等。
133.输入单元504用于接收音频或视频信号。输入单元504可以包括图形处理器(graphics processing unit,gpu)5041和麦克风5042,图形处理器5041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元506上。经图形处理器5041处理后的图像帧可以存储在存储器509(或其它存储介质)中或者经由射频单元501或网络模块502进行发送。麦克风5042可以接收声音,并且能够将这样的声音处理为音频数据。处理后的音频数据可以在电话通话模式的情况下转换为可经由射频单元501发送到移动通信基站的格式输出。
134.电子设备500还包括至少一种传感器505,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板5061的亮度,接近传感器可在电子设备500移动到耳边时,关闭显示面板5061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别电子设备姿态(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;传感器505还可以包括指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等,在此不再赘述。
135.显示单元506用于显示由用户输入的信息或提供给用户的信息。显示单元506可包括显示面板5061,可以采用液晶显示器(liquid crystal display,lcd)、有机发光二极管(organic light-emitting diode, oled)等形式来配置显示面板5061。
136.用户输入单元507可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元507包括触控面板5071以及其他输入设备5072。触控面板5071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板5071上或在触控面板5071附近的操作)。触控面板5071可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器510,接收处理器510发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板5071。除了触控面板5071,用户输入单元507还可以包括其他输入设备5072。具体地,其他输入设备5072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
137.进一步地,触控面板5071可覆盖在显示面板5061上,当触控面板5071检测到在其上或附近的触摸操作后,传送给处理器510以确定触摸事件的类型,随后处理器510根据触摸事件的类型在显示面板5061上提供相应的视觉输出。可以理解的是,在一种实施例中,触控面板5071与显示面板5061是作为两个独立的部件来实现电子设备的输入和输出功能,但是在某些实施例中,可以将触控面板5071与显示面板5061集成而实现电子设备的输入和输出功能,具体此处不做限定。
138.接口单元508为外部装置与电子设备500连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端
口、用于连接具有识别模块的装置的端口、音频输入/输出(i/o)端口、视频i/o端口、耳机端口等等。接口单元508可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到电子设备500内的一个或多个元件或者可以用于在电子设备500和外部装置之间传输数据。
139.存储器509可用于存储软件程序以及各种数据。存储器509可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器509可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
140.处理器510是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器509内的软件程序和/或模块,以及调用存储在存储器509内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。处理器510可包括一个或多个处理单元;优选的,处理器510可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器510中。
141.电子设备500还可以包括给各个部件供电的电源511(比如电池),优选的,电源511可以通过电源管理系统与处理器510逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
142.另外,电子设备500包括一些未示出的功能模块,在此不再赘述。
143.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
144.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
145.上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
146.本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
147.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
148.在本技术所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
149.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
150.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
151.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
152.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献