本发明涉及存储技术领域,特别是涉及一种数据迁移方法、装置、设备及计算机可读存储介质。
背景技术:
分级存储功能是利用存储系统中固态硬盘(ssd)、nvme固态硬盘或者因特尔固态硬盘(inteloptanessd)等高速存储介质作为机械硬盘(hdd)的缓存,整体提高存储系统的读写性能。等到数据冷却后,再把数据迁移到机械硬盘。
现有的数据迁移方式为将每个数据对象划分为多个条带数据块,如图1所示,将数据对象a划分为a-1,a-2,a-3,a-4,a-5五个条带数据块,将各条带数据块全部写入到固态硬盘中,并将每个条带数据块的名字记录在一个对象标识符文件的数据结构(omap)中,等到数据冷却后,根据对象标识符文件中记录的条带名字,将各条带数据块迁移到机械硬盘中。数据迁移时会把对象标识符文件中的各条带名字全部读取出来保存在计算机内存中,然后依次根据条带名字迁移条带数据块,进而实现对各数据对象的迁移。但是当数据量很大时,每次从对象标识符文件把全部条带名字读取出来会耗时很多,并且会使计算机内存消耗过大,易导致程序崩溃。
综上所述,如何有效地解决现有的数据迁移方式耗时多,计算机内存消耗过大,易导致程序崩溃等问题,是目前本领域技术人员急需解决的问题。
技术实现要素:
本发明的目的是提供一种数据迁移方法,该方法较大地释放了计算机内存,提升了系统性能,较大地节省了条带名读取时间,提高了数据迁移效率;本发明的另一目的是提供一种数据迁移装置、设备及计算机可读存储介质。
为解决上述技术问题,本发明提供如下技术方案:
一种数据迁移方法,包括:
当接收到数据迁移请求时,从对象标识符文件中分别获取各待迁移的目标数据对象对应的头条带名;
从固态硬盘中查找各所述头条带名分别对应的头条带数据块;其中,各所述头条带数据块中封装有所属目标数据对象包含的除所述头条带数据块之外的其他尾条带数据块对应的尾条带名;
分别对各所述头条带数据块进行解析,得到各所述尾条带名;
从所述固态硬盘中查找各所述尾条带名分别对应的尾条带数据块;
将各所述头条带数据块和各所述尾条带数据块迁移到机械硬盘中。
在本发明的一种具体实施方式中,从对象标识符文件中分别获取各待迁移的目标数据对象对应的头条带名,包括:
从各对象存储网关分别对应的对象标识符文件中获取各所述目标数据对象分别对应的头条带名。
在本发明的一种具体实施方式中,在从各对象存储网关分别对应的对象标识符文件中获取各所述目标数据对象分别对应的头条带名之后,还包括:
对获取到的各所述头条带名在对应对象标识符文件中的位置进行记录。
在本发明的一种具体实施方式中,在从对象标识符文件中分别获取各待迁移的目标数据对象对应的头条带名,及分别对各所述头条带数据块进行解析,得到各所述尾条带名之后,还包括:
将各所述头条带名和各所述尾条带名分别缓存到对应计算机内存中预创建的字典文件内;
判断是否存在缓存的条带名数量达到第一预设值的字典文件;
若是,则暂停对相应对象标识符文件中各所述头条带名的获取动作。
在本发明的一种具体实施方式中,在将各所述头条带数据块和各所述尾条带数据块迁移到机械硬盘中之后,还包括:
将迁移成功的各所述目标数据对象对应的头条带名及各尾条带名从对应的字典文件中删除;
当检测到处于暂停接收头条带名状态的字典文件中的条带名数量小于第二预设值时,恢复对相应对象标识符文件中各所述头条带名的获取动作。
一种数据迁移装置,包括:
头条带名获取模块,用于当接收到数据迁移请求时,从对象标识符文件中分别获取各待迁移的目标数据对象对应的头条带名;
头条带查找模块,用于从固态硬盘中查找各所述头条带名分别对应的头条带数据块;其中,各所述头条带数据块中封装有所属目标数据对象包含的除所述头条带数据块之外的其他尾条带数据块对应的尾条带名;
尾条带名获得模块,用于分别对各所述头条带数据块进行解析,得到各所述尾条带名;
尾条带查找模块,用于从所述固态硬盘中查找各所述尾条带名分别对应的尾条带数据块;
数据块迁移模块,用于将各所述头条带数据块和各所述尾条带数据块迁移到机械硬盘中。
在本发明的一种具体实施方式中,所述头条带名获取模块具体为从各对象存储网关分别对应的对象标识符文件中获取各所述目标数据对象分别对应的头条带名的模块。
在本发明的一种具体实施方式中,还包括:
位置记录模块,用于在从各对象存储网关分别对应的对象标识符文件中获取各所述目标数据对象分别对应的头条带名之后,对获取到的各所述头条带名在对应对象标识符文件中的位置进行记录。
一种数据迁移设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如前所述数据迁移方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前所述数据迁移方法的步骤。
应用本发明实施例所提供的方法,当接收到数据迁移请求时,从对象标识符文件中分别获取各待迁移的目标数据对象对应的头条带名;从固态硬盘中查找各头条带名分别对应的头条带数据块;其中,各头条带数据块中封装有所属目标数据对象包含的除头条带数据块之外的其他尾条带数据块对应的尾条带名;分别对各头条带数据块进行解析,得到各尾条带名;从固态硬盘中查找各尾条带名分别对应的尾条带数据块;将各头条带数据块和各尾条带数据块迁移到机械硬盘中。通过在头条带数据块中封装目标数据对象包含的除头条带数据块之外的其他尾条带数据块对应的尾条带名,使得对象标识符文件中仅需要存储各目标数据对象的头条带名,根据头条带名即可获取其他尾条带数据块的尾条带名,从而实现对数据对象的迁移,本发明相对于现有的对各条带名称均读取到计算机内存的方式,较大地释放了计算机内存,提升了系统性能,较大地节省了条带名读取时间,提高了数据迁移效率。
相应的,本发明实施例还提供了与上述数据迁移方法相对应的数据迁移装置、设备和计算机可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种数据对象的数据结构示意图;
图2为本发明实施例中数据迁移方法的一种实施流程图;
图3为本发明实施例中数据迁移方法的另一种实施流程图;
图4为本发明实施例中一种数据迁移装置的结构框图;
图5为本发明实施例中一种数据迁移设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
参见图2,图2为本发明实施例中数据迁移方法的一种实施流程图,该方法可以包括以下步骤:
s201:当接收到数据迁移请求时,从对象标识符文件中分别获取各待迁移的目标数据对象对应的头条带名。
当需要将固态硬盘中冷却后的数据对象迁移到机械硬盘时,生成数据迁移请求,并向数据迁移中心发送数据迁移请求。预先在固态硬盘中部署对象标识符文件,对象标识符文件中存储有各目标数据对象分别对应的头条带名。当数据迁移中心接收到数据迁移请求时,从对象标识符文件中分别获取各待迁移的目标数据对象对应的头条带名。
s202:从固态硬盘中查找各头条带名分别对应的头条带数据块。
其中,各头条带数据块中封装有所属目标数据对象包含的除头条带数据块之外的其他尾条带数据块对应的尾条带名。
在获取到各待迁移的目标数据对象分别对应的头条带名之后,从固态硬盘中查找各头条带名分别对应的头条带数据块。每个目标数据对象由一个头条带数据块和除头条带数据块之外的其他尾条带数据块构成,如图1所示,a-1为数据对象a的头条带数据块,a-2,a-3,a-4,a-5均为尾条带数据块。各头条带数据块中封装有所属目标数据对象包含的除头条带数据块之外的其他尾条带数据块对应的尾条带名。
s203:分别对各头条带数据块进行解析,得到各尾条带名。
在查找到各头条带名分别对应的头条带数据块之后,分别对各头条带数据块进行解析,得到各尾条带名。
s204:从固态硬盘中查找各尾条带名分别对应的尾条带数据块。
在解析得到各目标数据对象包含的除头条带数据块之外的其他尾条带数据块对应的尾条带名之后,从固态硬盘中查找各尾条带名分别对应的尾条带数据块。
s205:将各头条带数据块和各尾条带数据块迁移到机械硬盘中。
在从固态硬盘中查找到各数据对象分别对应的各头条带数据块和各尾条带数据块之后,将各头条带数据块和各尾条带数据块迁移到机械硬盘中,从而完成对各目标数据对象的迁移。通过在头条带数据块中封装目标数据对象包含的除头条带数据块之外的其他尾条带数据块对应的尾条带名,使得对象标识符文件中仅需要存储各目标数据对象的头条带名,根据头条带名即可获取其他尾条带数据块的尾条带名,从而实现对数据对象的迁移,本发明相对于现有的对各条带名称均读取到计算机内存的方式,较大地减少了读取到计算机内存中的条带名数量,较大地释放了计算机内存,提升了系统性能,较大地节省了条带名读取时间,提高了数据迁移效率,提高了系统稳定性。
应用本发明实施例所提供的方法,当接收到数据迁移请求时,从对象标识符文件中分别获取各待迁移的目标数据对象对应的头条带名;从固态硬盘中查找各头条带名分别对应的头条带数据块;其中,各头条带数据块中封装有所属目标数据对象包含的除头条带数据块之外的其他尾条带数据块对应的尾条带名;分别对各头条带数据块进行解析,得到各尾条带名;从固态硬盘中查找各尾条带名分别对应的尾条带数据块;将各头条带数据块和各尾条带数据块迁移到机械硬盘中。通过在头条带数据块中封装目标数据对象包含的除头条带数据块之外的其他尾条带数据块对应的尾条带名,使得对象标识符文件中仅需要存储各目标数据对象的头条带名,根据头条带名即可获取其他尾条带数据块的尾条带名,从而实现对数据对象的迁移,本发明相对于现有的对各条带名称均读取到计算机内存的方式,较大地释放了计算机内存,提升了系统性能,较大地节省了条带名读取时间,提高了数据迁移效率。
需要说明的是,基于上述实施例一,本发明实施例还提供了相应的改进方案。在后续实施例中涉及与上述实施例一中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在下文的改进实施例中不再一一赘述。
实施例二:
参见图3,图3为本发明实施例中数据迁移方法的另一种实施流程图,该方法可以包括以下步骤:
s301:当接收到数据迁移请求时,从各对象存储网关分别对应的对象标识符文件中获取各目标数据对象分别对应的头条带名。
根据存储集群中对象存储(rgw)网关的个数,预先在每个对象存储网关对应的服务器内分别设置对应的对象标识符文件,从而使得每个对象存储网关对应一个对象标识符文件。当接收到数据迁移请求时,从各对象存储网关分别对应的对象标识符文件中获取各目标数据对象分别对应的头条带名。通过在每个对象存储网关对应的服务器内分别设置对应的对象标识符文件,从而减少了各对象标识符文件的数据结构omap中记录的条带名数量,进而缩短了读取各条带名的耗时,缓解了程序崩溃现象,进一步提高了系统性能。
s302:对获取到的各头条带名在对应对象标识符文件中的位置进行记录。
在从各对象存储网关分别对应的对象标识符文件中获取到各目标数据对象分别对应的头条带名之后,对获取到的各头条带名在对应对象标识符文件中的位置进行记录。方便在后续根据接收到的数据迁移请求进行头条带名获取时从记录的位置开始获取,缩短了头条带名获取耗时,提升了数据迁移效率。
s303:从固态硬盘中查找各头条带名分别对应的头条带数据块。
其中,各头条带数据块中封装有所属目标数据对象包含的除头条带数据块之外的其他尾条带数据块对应的尾条带名。
s304:分别对各头条带数据块进行解析,得到各尾条带名。
s305:将各头条带名和各尾条带名分别缓存到对应计算机内存中预创建的字典文件内。
预先在各计算机内存中分别创建相应的字典文件,将各头条带名和各尾条带名分别缓存到对应计算机内存中预创建的字典文件内。
s306:判断是否存在缓存的条带名数量达到第一预设值的字典文件,若是,则执行步骤s307,若否,则跳过s307直接执行s308。
预先设置字典文件能够接收的条带名数量阈值,即第一预设值。在将读取到的各头条带名和各尾条带名分别缓存到对应计算机内存中预创建的字典文件内之后,判断是否存在缓存的条带名数量达到第一预设值的字典文件,若是,则说明缓存的条带名数量达到第一预设值的字典文件消耗的计算机内存较多,在这种情况下,则执行步骤s307,若各字典文件当前缓存的条带名数量均未达到第一预设值,在这种情况下,跳过s307直接执行s308。
s307:暂停对相应对象标识符文件中各头条带名的获取动作。
当确定存在缓存的条带名数量达到第一预设值的字典文件时,暂停对相应对象标识符文件中各头条带名的获取动作,从而使得相应字典文件中的条带名数量暂时不再增加。
s308:从固态硬盘中查找各尾条带名分别对应的尾条带数据块。
s309:将各头条带数据块和各尾条带数据块迁移到机械硬盘中。
s310:将迁移成功的各目标数据对象对应的头条带名及各尾条带名从对应的字典文件中删除。
在将各头条带数据块和各尾条带数据块迁移到机械硬盘中之后,将迁移成功的各目标数据对象对应的头条带名及各尾条带名从对应的字典文件中删除。从而使得相应字典文件中存储的条带名数量减少,使得相应的计算机内存得到释放。
s311:当检测到处于暂停接收头条带名状态的字典文件中的条带名数量小于第二预设值时,恢复对相应对象标识符文件中各头条带名的获取动作。
当检测到处于暂停接收头条带名状态的字典文件中的条带名数量小于第二预设值时,恢复对相应对象标识符文件中各头条带名的获取动作。通过根据字典文件中条带名数量对相应对象标识符文件中各头条带名的获取动作进行控制,保证了各字典文件不会消耗过多的计算机内存,较大地提高了数据对象的迁移效率。
相应于上面的方法实施例,本发明实施例还提供了一种数据迁移装置,下文描述的数据迁移装置与上文描述的数据迁移方法可相互对应参照。
参见图4,图4为本发明实施例中一种数据迁移装置的结构框图,该装置可以包括:
头条带名获取模块41,用于当接收到数据迁移请求时,从对象标识符文件中分别获取各待迁移的目标数据对象对应的头条带名;
头条带查找模块42,用于从固态硬盘中查找各头条带名分别对应的头条带数据块;其中,各头条带数据块中封装有所属目标数据对象包含的除头条带数据块之外的其他尾条带数据块对应的尾条带名;
尾条带名获得模块43,用于分别对各头条带数据块进行解析,得到各尾条带名;
尾条带查找模块44,用于从固态硬盘中查找各尾条带名分别对应的尾条带数据块;
数据块迁移模块45,用于将各头条带数据块和各尾条带数据块迁移到机械硬盘中。
应用本发明实施例所提供的装置,当接收到数据迁移请求时,从对象标识符文件中分别获取各待迁移的目标数据对象对应的头条带名;从固态硬盘中查找各头条带名分别对应的头条带数据块;其中,各头条带数据块中封装有所属目标数据对象包含的除头条带数据块之外的其他尾条带数据块对应的尾条带名;分别对各头条带数据块进行解析,得到各尾条带名;从固态硬盘中查找各尾条带名分别对应的尾条带数据块;将各头条带数据块和各尾条带数据块迁移到机械硬盘中。通过在头条带数据块中封装目标数据对象包含的除头条带数据块之外的其他尾条带数据块对应的尾条带名,使得对象标识符文件中仅需要存储各目标数据对象的头条带名,根据头条带名即可获取其他尾条带数据块的尾条带名,从而实现对数据对象的迁移,本发明相对于现有的对各条带名称均读取到计算机内存的方式,较大地释放了计算机内存,提升了系统性能,较大地节省了条带名读取时间,提高了数据迁移效率。
在本发明的一种具体实施方式中,头条带名获取模块41具体为从各对象存储网关分别对应的对象标识符文件中获取各目标数据对象分别对应的头条带名的模块。
在本发明的一种具体实施方式中,该装置还可以包括:
位置记录模块,用于在从各对象存储网关分别对应的对象标识符文件中获取各目标数据对象分别对应的头条带名之后,对获取到的各头条带名在对应对象标识符文件中的位置进行记录。
在本发明的一种具体实施方式中,该装置还可以包括:
条带名缓存模块,用于在从对象标识符文件中分别获取各待迁移的目标数据对象对应的头条带名,及分别对各头条带数据块进行解析,得到各尾条带名之后,将各头条带名和各尾条带名分别缓存到对应计算机内存中预创建的字典文件内;
判断模块,用于判断是否存在缓存的条带名数量达到第一预设值的字典文件;
暂停模块,用于当确定存在缓存的条带名数量达到第一预设值的字典文件时,暂停对相应对象标识符文件中各头条带名的获取动作。
在本发明的一种具体实施方式中,该装置还可以包括:
条带名删除模块,用于在将各头条带数据块和各尾条带数据块迁移到机械硬盘中之后,将迁移成功的各目标数据对象对应的头条带名及各尾条带名从对应的字典文件中删除;
动作恢复模块,用于当检测到处于暂停接收头条带名状态的字典文件中的条带名数量小于第二预设值时,恢复对相应对象标识符文件中各头条带名的获取动作。
相应于上面的方法实施例,参见图5,图5为本发明所提供的数据迁移设备的示意图,该设备可以包括:
存储器51,用于存储计算机程序;
处理器52,用于执行上述存储器51存储的计算机程序时可实现如下步骤:
当接收到数据迁移请求时,从对象标识符文件中分别获取各待迁移的目标数据对象对应的头条带名;从固态硬盘中查找各头条带名分别对应的头条带数据块;其中,各头条带数据块中封装有所属目标数据对象包含的除头条带数据块之外的其他尾条带数据块对应的尾条带名;分别对各头条带数据块进行解析,得到各尾条带名;从固态硬盘中查找各尾条带名分别对应的尾条带数据块;将各头条带数据块和各尾条带数据块迁移到机械硬盘中。
对于本发明提供的设备的介绍请参照上述方法实施例,本发明在此不做赘述。
相应于上面的方法实施例,本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下步骤:
当接收到数据迁移请求时,从对象标识符文件中分别获取各待迁移的目标数据对象对应的头条带名;从固态硬盘中查找各头条带名分别对应的头条带数据块;其中,各头条带数据块中封装有所属目标数据对象包含的除头条带数据块之外的其他尾条带数据块对应的尾条带名;分别对各头条带数据块进行解析,得到各尾条带名;从固态硬盘中查找各尾条带名分别对应的尾条带数据块;将各头条带数据块和各尾条带数据块迁移到机械硬盘中。
该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本发明提供的计算机可读存储介质的介绍请参照上述方法实施例,本发明在此不做赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置、设备及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。