数据迁移方法、装置及存储设备与流程

文档序号:16845498发布日期:2019-02-12 22:10阅读:254来源:国知局
数据迁移方法、装置及存储设备与流程
本申请实施例涉及通信
技术领域
,尤其涉及一种数据迁移方法、装置及存储设备。
背景技术
:一些电子设备中包括写入前需要首先擦除的存储介质,这些存储介质中包括多个存储区域。该存储区域内部采用追加写的方式写入数据。当该存储区域内的存储地址按照顺序被写满后,可能需要对该存储区域执行垃圾回收(garbagecollection,gc)过程。gc过程是指:当该存储区域内的存储地址按照顺序被写满后,如果删除了该存储区域内的一部分数据,则由于剩余的数据占据了存储空间导致删除了该一部分数据之后的存储空间不可用,因此,需要将该存储区域内的数据迁移,并重置该存储区域。现有技术中,通过元数据记录数据的存储地址信息,元数据的组织形式为树形结构。当执行上述gc过程之后,需要从被迁移的数据对应的叶子节点元数据开始,向上逐层修改元数据。但是,现有技术的方法会导致元数据管理效率低下。技术实现要素:本申请实施例提供一种数据迁移方法、装置及存储设备,用于解决现有技术中数据管理效率低下的问题。本申请实施例第一方面提供一种数据迁移方法,该方法应用于存储设备,该存储设备包括控制器和至少一个硬盘,该控制器用于对硬盘存储的数据进行管理。第一数据存储在第一存储地址,第一数据的元数据中记录有第一虚拟地址,该第一存储地址与第一虚拟地址之间有第一映射关系,该方法包括:存储设备将第一数据从上述第一存储地址迁移到第二存储地址,进而,存储设备将上述第一映射关系调整为第二映射关系,其中,该第二映射关系是上述第二存储地址与上述第一虚拟地址的对应关系。该方法中,第一数据的元数据中记录第一虚拟地址,在第一数据迁移前,存储设备中记录第一虚拟地址与存储第一数据的第一存储地址之间的第一映射关系,当第一数据从第一存储地址迁移到第二存储地址后,仅需要将第一映射关系修改为第一虚拟地址与第二存储地址的第二映射关系即可,从而无需修改第一数据的元数据,同时又能保证第一数据在迁移后仍然能正确的访问,因此,本实施例在保证数据被正确访问的同时极大减少了元数据的修改次数,从而极大提升了元数据的管理效率,减少了存储系统的负载。在一种可能的设计中,上述存储地址通过存储区域id以及存储区域内的存储偏移量共同确定。在一种可能的设计中,上述第一虚拟地址通过第一虚拟区域的标识以及第一虚拟偏移量共同标识。在一种可能的设计中,上述第一映射关系包括:上述第一虚拟区域的标识与第一存储区域的映射关系,以及,上述第一虚拟偏移量与第一存储偏移量的映射关系。上述第二映射关系包括:上述第一虚拟区域的标识与第二存储区域的映射关系,以及,上述第一虚拟偏移量与第二存储偏移量的映射关系。在一种可能的设计中,在存储设备将上述第一映射关系调整为第二映射关系之后,还可以执行下述过程:在存储设备将上述第一存储地址对应的存储区域中的数据全部迁移至上述第二存储地址对应的存储区域后,上述存储设备更新迁移标识,该迁移标识用于标识上述第一虚拟区域的迁移次数。在一种可能的设计中,上述方法还包括:为待存储的第二数据分配第二虚拟区域的标识以及分配用于存储所述第二数据的第三存储地址所对应的第三存储区域;为所述第二数据分配第三存储区域内的第三存储偏移量,所述第三存储区域和所述第三存储偏移量共同确定所述第三存储地址;根据所述第三存储偏移量以及所述迁移标识确定所述第二数据对应的第二虚拟偏移量;将所述第二数据写入所述第三存储地址,并在所述第二数据的元数据中记录所述第二虚拟区域的标识以及所述第二虚拟偏移量;建立第三映射关系,所述第三映射关系包括:所述第二虚拟区域的标识与第三存储区域的映射关系,以及,所述第二虚拟偏移量与第三存储偏移量的映射关系。该方法中,在确定待存储数据的存储位置时,结合迁移标识进行确定,可以使得数据发生迁移后,新写入的数据的虚拟偏移量不会与已写入的数据的虚拟偏移量出现重复,避免数据读写时发生错误。在一种可能的设计中,所述方法还包括:根据所述第一映射关系以及所述第一数据的元数据中所记录的第一虚拟地址,确定存储所述第一数据的所述第一存储地址;从所述第一存储地址读取所述第一数据。在一种可能的设计中,所述根据所述第一映射关系以及所述第一数据的元数据中所记录的第一虚拟地址,确定存储所述第一数据的所述第一存储地址,包括:根据所述第一虚拟区域的标识与第一存储区域的映射关系,得到所述第一存储地址对应的第一存储区域id;根据所述第一虚拟偏移量与第一存储偏移量的映射关系,得到所述第一存储地址对应的第一存储偏移量;其中,所述第一虚拟偏移量与第一存储偏移量的映射关系通过所述第一虚拟偏移量与所述第一存储偏移量的映射表进行标识,或者,通过预设的公式确定。本申请实施例第二方面提供一种数据迁移装置,应用于存储设备,该装置可以是存储设备中的控制器,或者是控制器的一部分。第一数据存储在第一存储地址,所述第一数据的元数据中记录有第一虚拟地址,所述第一存储地址与所述第一虚拟地址之间有第一映射关系。该装置可以实现上述第一方面中的功能。这些功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。在一种可能的设计中,该装置可以包括处理模块,该处理模块可以执行上述方法中的相应功能,例如:处理模块,用于将第一数据从所述第一存储地址迁移到第二存储地址;以及,将所述第一映射关系调整为第二映射关系,所述第二映射关系是所述第二存储地址与所述第一虚拟地址的对应关系。本申请实施例第三方面提供一种存储设备,该存储设备包括控制器和至少一个硬盘,该控制器用于对硬盘存储的数据进行管理,第一数据存储在第一存储地址,所述第一数据的元数据中记录有第一虚拟地址,所述第一存储地址与所述第一虚拟地址之间有第一映射关系,该控制器还用于执行上述第一方面所述的方法。本申请实施例第四方面提供一种计算机程序产品,所述计算机程序产品包括计算机程序代码,当所述计算机程序代码被计算机执行时,使得所述计算机执行第一方面所述的方法。本申请实施例第五方面提供一种计算机可读存储介质,所述计算机存储介质存储有计算机指令,当所述计算机指令被计算机执行时,使得所述计算机执行上述第一方面所述的方法。附图说明图1为该文件bb.doc在文件系统的树形结构中的存储结构;图2为本申请实施例提供的数据迁移方法实施例的流程示意图;图3为该文件bb.doc在文件系统的树形结构中的存储结构;图4为在存储设备中写入第二数据的流程示意图;图5为从存储设备中读取上述第一数据的流程示意图;图6为本申请实施例提供的一种数据迁移装置600的模块示意图;图7为本申请实施例提供的一种存储设备700的实体框图。具体实施方式存储设备可以通过文件系统组织文件,文件系统可以看作是存储设备的操作系统用于明确存储设备上的文件的方法和数据结构。在文件系统中,可以将数据分为数据文件和元数据,其中,数据文件是存储设备上所保存的文件。元数据可以看作是描述数据的数据,元数据中可以保存数据的属主、大小、权限、时间戳、链接以及数据在存储设备的磁盘上的存储地址等信息。文件系统可以采用树形结构进行管理。假设文件系统中保存了一个文件bb.doc,该文件bb.doc的存储位置为“/aa/bb.doc”,则图1为该文件bb.doc在文件系统的树形结构中的存储结构,如图1所示,树形结构的第一层,即根部,为“/”这个根目录的存储地址。进而,在树形结构的第二层,为根目录的存储地址中所存储的内容,该内容包括“aa”的元数据以及根目录下所包括的其他文件或目录的信息。根据第二层中所记录的“aa”的元数据,可以获知“aa”的存储地址,进而,在树形结构的第三层,为“aa”的存储地址中所存储的内容,该内容包括“bb.doc”的元数据以及“aa”这个目录下所包括的其他文件或目录的信息。根据第三层中所记录的“aa”的元数据,可以获知“bb.doc”的存储地址,进而,在树形结构的第四层,为“bb.doc”的存储地址中所存储的内容,即“bb.doc”这个文件对应的数据。由上述存储结构可知,文件系统中文件的存储地址通过元数据记录,并且按照树形的结构逐层记录。对于不同的硬盘类型,其存储地址的表示方式可能存在差异。以下以叠瓦式磁记录(shingledmagneticrecording,smr)和固态硬盘(solid-statedrive,ssd)为例进行说明,smr有时也称为smr盘或者smr硬盘。在smr硬盘中,通过“zone+offset”的方式表示数据的存储地址。在有必要的情况下(例如在读数据时),还可以用长度(length)参数描述数据的长度。其中,smr硬盘由多个zone(区域)组成,每个zone可以看作是smr硬盘内的一个存储区域。offset(偏移量)描述了在zone内的一个具体位置,例如(zone3,48kb)描述的是距离zone3的起始位置48kb的位置。理论上offset可以是大于0的任意数值,只要不超过zone的长度即可。在实际产品中,为了方便数据的管理,offset可以用48k字节的整数倍作为粒度。在ssd中,通过“page组+offset”的方式表示数据的存储地址,其中,ssd可以包括多个page,这些page(页)可以划分为多个page组,每个page组可以看作是ssd内的一个存储区域。在每个page组内可以划分为多个offset。offset可以以字节为单位,或者,也可以以page为单位。示例性的,如果offset以page为单位,则某个offset可以表示为某个page组内的“第2个page始,至第3个page结束”,或者,offset仅描述某个page组内“从第二个page作为起始page”,用额外的长度参数描述结束page。由以上对smr硬盘和ssd的介绍可以看出,这两种介质都可以使用“zone+offset”的方式描述数据的存储位置。以上述的smr硬盘为例,假设某存储设备的smr硬盘上存储有“bb.doc”这个文件,该文件在smr硬盘上的存储地址为“zone1+offset1”,即该文件的数据存储在smr硬盘上的zone1这个存储区域内的offset1上(换句话说,在zone1的offset1作为存储bb.doc的起始位置)。该文件在该存储设备的文件系统中的存储路径为上述图1对应描述中的路径,则在现有技术中,在文件系统的树形结构中,第三层中记录“zone1+offset1”这个存储地址,第二层中记录“aa”的存储地址,第一层中记录“/”的存储地址。在此基础上,如果“bb.doc”所在的zone1的数据进行了gc,zone1的有效数据进行了迁移,假设zone1的有效数据被迁移至zone2,并且“bb.doc”被迁移至了zone2中的offset2,则“bb.doc”的存储地址从迁移前的“zone1+offset1”变为“zone2+offset2”。在该技术中,需要首先修改第三层中记录的“bb.doc”的存储地址,将其值从“zone1+offset1”修改为“zone2+offset2”,进而,需要逐层向上修改第二层中记录的“aa”的存储地址以及第一层中记录的“/”的存储地址。而zone1中可能存储了大量的数据,当这些数据被迁移之后,这些数据的元数据均需要修改。因此,使用上述的方法,当硬盘执行了gc,文件系统中数据文件的存储位置变化之后,需要进行多次的元数据修改,从而导致硬盘的数据管理效率低下。本申请实施例的技术方案,可以解决上述问题。需要说明的是,本申请实施例所述的“存储地址”,是指操作系统层面上用来标识数据存储位置的地址,在具体实施过程中,该“存储地址”需要经过操作系统以下的底层软件进行进一步的转换后,得到硬盘上的实际物理地址。该转换的具体过程可以参照现有技术中的方法,本申请实施例对此不做具体限定。存储地址可以是上面所提到的zone+offset。图2为本申请实施例提供的数据迁移方法实施例的流程示意图,该方法的执行主体为上述存储设备,该存储设备可以是台式电脑、笔记本电脑、服务器、存储控制器+硬盘等具有数据存储功能的设备。该存储设备包括控制器和至少一个硬盘,该控制器用于对硬盘存储的数据进行管理。对于非专用存储设备,从功能上可以把处理器(或者处理器与其他辅助器件的组合,例如处理器和内存的组合)理解为存储控制器。为便于理解,本实施例以第一数据为对象说明数据迁移的过程。该第一数据可以是存储设备的硬盘中的任意一个数据。示例性的,该第一数据可以对应文件系统所管理的的一个文件。在进行数据迁移(例如进行gc所做的数据迁移,或者冷热数据分级存储所做的迁移,或者其他原因所做的数据迁移)之前,该第一数据存储在硬盘上的第一存储地址,而该第一数据的元数据中所记录的存储地址为第一虚拟地址,该第一存储地址与该第一虚拟地址之间具有一一对应关系,为了方便描述,我们称之为第一映射关系。可选的,上述第一虚拟地址并非一个存储地址,而是对存储地址进行了虚拟化,在第一数据的元数据中所记录的一个标识。该第一虚拟地址与第一存储地址之间具有第一映射关系,进而,通过元数据中所记录的第一虚拟地址以及该第一映射关系,可以获知第一数据的第一存储地址。本申请实施例中,引入了虚拟地址(虚拟化的存储地址),把在元数据中所记录的存储地址替换为在元数据中记录虚拟地址。因此,可以在数据的存储地址发生改变的情况下,只需要更新虚拟地址和存储地址之间的映射关系即可,元数据中的虚拟地址可保持不变。从而,避免了数据迁移所引起的元数据大量更新,提高了元数据管理效率,减少了存储系统的负载。如图2所示,该方法包括:s201、存储设备将第一数据从上述第一存储地址迁移到第二存储地址。可选的,在本步骤之前,存储设备已经确定第一数据所在的存储区域需要进行gc。进而,在本步骤中,存储设备将第一数据从第一存储地址迁移到第二存储地址。其中,上述“迁移”的过程具体可以为:首先,将第一数据写入第二存储地址。可选的,后续可以将第一存储地址上所存储的第一数据进行删除。s202、存储设备将上述第一映射关系调整为第二映射关系,该第二映射关系是上述第二存储地址与上述第一虚拟地址的对应关系。可选的,针对上述第一数据,当其保存至硬盘时,存储设备可以为该第一数据分配一个第一虚拟地址,并将该第一虚拟地址记录在第一数据的元数据中,进而,当第一数据从第一存储地址迁移到第二存储地址后,存储设备并不需要修改该第一虚拟地址,而仅修改第一数据对应的映射关系,即将第一映射关系修改为第二映射关系。由于第一数据的第一存储地址可以通过元数据中记录的第一虚拟地址和第一数据对应的映射关系得到,因此,当第一数据发生迁移后,通过元数据中记录的第一虚拟地址以及修改后的第二映射关系,仍然可以获知第一数据的存储地址,同时,在此过程中,并未对第一数据的元数据进行修改。需要说明的是,这个映射关系(例如第一映射关系、第二映射关系)可以记录在元数据中,也可以自己录在其他位置。只要能够被处理器或者存储控制器读出即可。可选的,上述第一映射关系和上述第二映射关系可以通过映射表的形式进行保存。示例性的,存储设备中可以保存一张数据的映射表,针对上述第一数据,在数据迁移之前,该映射表中记录第一映射关系,在数据迁移之后,该映射表中记录第二映射关系。下述表1为第一数据迁移之前的映射表的示例,下述表2为第一数据迁移之后的映射表的示例。表1虚拟地址存储地址第一虚拟地址第一存储地址表2虚拟地址存储地址第一虚拟地址第二存储地址在具体实施过程中,存储设备在运行过程中,可以首先在存储设备的内存中生成上述映射表,随着存储设备的硬盘上数据的读写变化,存储设备对上述映射表进行更新维护,当存储设备需要停止运行时,例如需要关机时,存储设备可以将上述映射表保存至存储设备的硬盘中。当存储设备下次再启动运行时,再将保存在硬盘中的映射表加载到内存中,进而基于该映射表继续进行读写,以及对该映射表进行更新维护。本实施例中,第一数据的元数据中记录第一虚拟地址,在第一数据迁移前,存储设备中记录第一虚拟地址与存储第一数据的第一存储地址之间的第一映射关系,当第一数据从第一存储地址迁移到第二存储地址后,仅需要将第一映射关系修改为第一虚拟地址与第二存储地址的第二映射关系即可,从而无需修改第一数据的元数据,同时又能保证第一数据在迁移后仍然能正确的访问,因此,本实施例在保证数据被正确访问的同时极大减少了元数据的修改次数,从而极大提升了元数据的管理效率,减少了存储系统的负载。对于不同的硬盘类型,其存储地址的表示方式可能存在差异。一种方式中,上述的smr硬盘和ssd所代表的一类硬盘中,其存储地址的表示方式可以看作是“存储区域+存储偏移量”的方式。在这类硬盘中,硬盘被划分为多个存储区域,在每个存储区域内,可以包括多个存储偏移量。例如,在smr硬盘中,一个zone表示一个存储区域,每个zone内的一个offset表示该zone内的一个存储偏移量。又例如,在ssd中,以一个page组表示一个存储区域,每个page组内的一个offset表示该page组内的一个存储偏移量。针对上述smr硬盘和ssd所代表的一类硬盘,其上的数据的存储地址可以通过存储区域id以及存储区域内的存储偏移量共同确定。smr硬盘和ssd所代表的一类硬盘可以通过顺序写的方式写入数据。smr硬盘和ssd所代表的一类硬盘中,新数据无法直接覆盖旧数据,需要通过垃圾回收才能把旧数据所占用的空间释放出来供新数据使用。示例性的,假设存储设备已经获知某个数据d存储在zone1的offset1中,该数据d的存储地址可以表示为:zone1offset1,即,数据d的存储地址通过zone1这个存储区域标识以及offset1这个存储偏移量来共同确定。在读取该数据d时,可以首先通过zone1这个标识寻址到数据d所在的存储区域,进而,再通过offset1这个偏移量寻址到数据d所在的存储位置,从这个存储位置按照数据d的长度(length)即可读出数据d,长度(length)可以记录在数据d的元数据中,和/或,记录在读取该数据d的读请求中。进而,可选的,数据的虚拟地址可以通过虚拟区域的标识和虚拟偏移量共同标识。具体的,针对上述第一数据,该第一数据的第一虚拟地址可以通过第一虚拟区域的标识和第一虚拟偏移量共同标识。示例性的,假设存储设备中存储了数据d,数据d的元数据中记录的虚拟地址可以为:vzone1voffset1。其中,vzone1表示数据d的虚拟区域的标识,voffset1表示数据d的虚拟偏移量。需要说明的是,上述的通过“vzone1+voffset1”表示虚拟地址的方式与存储地址的表示方式“zone1+offset1”的相似度高,因此具有易于被设备管理人员理解等优点。实际上,虚拟地址也可以有其他形式。例如,可以用16进制的数字,罗马字母表示,用英语字母来描述虚拟地址,或者多种符号的组合来来描述虚拟地址,只要能够表示“zone+offset”具有对应关系即可。示例性的,zone1的第一个48kb使用字母aaa1表示,zone1的第二个48kb使用字母aa2表示,zone1的第三个48kb使用字母aa3表示,依次类推。可选的,如果存储设备中数据的存储地址通过存储区域id以及存储区域内的存储偏移量共同确定,数据的虚拟地址通过虚拟区域的标识以及虚拟偏移量共同标识,则数据对应的映射关系可以通过虚拟区域的标识与存储区域的映射关系,以及虚拟偏移量与存储偏移量的映射关系来表示。具体的,针对上述第一数据,在该第一数据被迁移之前,该第一数据对应的第一映射关系可以包括:第一虚拟区域的标识与第一存储区域的映射关系,以及,第一虚拟偏移量与第一存储偏移量的映射关系。当该第一数据被迁移之后,该第一数据对应的映射关系被修改为第二映射关系,该第二映射关系可以包括:第一虚拟区域的标识与第二存储区域的映射关系,以及,第一虚拟偏移量与第二存储偏移量的映射关系。以下说明上述映射关系的可选实现方式。如上所述,数据对应的映射关系可以通过虚拟区域的标识与存储区域的映射关系,以及虚拟偏移量与存储偏移量的映射关系来表示,以下分别说明该两种映射关系的可选实现方式。1、虚拟区域的标识与存储区域的映射关系可选的,虚拟区域的标识与存储区域的映射关系可以通过映射表的形式进行保存。针对存储设备中的一个数据,当该数据被首次写入存储设备的硬盘时,存储设备为其分配虚拟区域的标识,该虚拟区域的标识可能为映射表中已经存在的虚拟区域标识,也可能为新的虚拟区域的标识。如果为已经存在的虚拟区域标识,则存储设备直接使用该已经存在的虚拟区域标识的映射关系即可。如果为新的虚拟区域的标识,则存储设备根据为该数据分配的存储区域,在上述映射表中增加该新的虚拟区域的标识与存储区域的映射关系。当该数据被迁移之后,存储设备在上述映射表中将虚拟区域的标识对应的存储区域修改为迁移后的存储区域。当需要读取该数据时,查询上述映射表可以得到数据的存储区域。以下以一个示例进行说明。假设存储设备中有一个待存储的数据d,存储设备为该数据d分配的虚拟区域的标识为vzone1,为该数据d分配的存储区域为zone1。则该数据d被保存后,上述映射表可以如下述表3所示。表3虚拟区域的标识存储区域vzone1zone1当数据d从zone1迁移到zone2之后,上述映射表被修改为下述表4所示的形式。表4虚拟区域的标识存储区域vzone1zone22、虚拟偏移量与存储偏移量的映射关系一种可选方式中,虚拟偏移量与存储偏移量的映射关系可以通过预设的公式确定。可选的,当存储设备为待存储的一个数据分配了虚拟区域、存储区域以及存储偏移量之后,可以通过预设的第一公式直接计算出该存储偏移量对应的虚拟偏移量。进而,在需要读取该数据时,可以通过预设的第二公式计算虚拟偏移量对应的存储偏移量,进而,从该存储偏移量对应位置读取到数据。一种示例中,上述第一公式可以为下述公式(1),上述第二公式可以为下述公式(2)。voffset=offset+gctimes*sizeof(zone)(1)其中,offset为存储设备为待存储的数据分配的存储偏移量,zone为存储设备为待存储的数据分配的存储区域的id,gctimes为存储设备为待存储的数据分配的虚拟区域的迁移次数。可选的,在存储设备中,存储设备已分配的每个虚拟区域可以对应一个迁移标识,该迁移标识用于标识虚拟区域的迁移次数,例如,第一虚拟区域对应的迁移标识用来标识第一虚拟区域的迁移次数。迁移标识的初始值可以为0,以第一虚拟区域为例,当存储设备将第一存储地址对应的存储区域中的数据全部迁移至第二存储地址对应的存储区域后,即第一虚拟区域进行过迁移后,存储设备可以更新迁移标识,例如,存储设备可以将原迁移标识的值加上1,作为新的迁移标识。本示例中,通过在上述公式(1)中加入迁移标识的值,可以使得数据发生迁移后,新写入的数据的虚拟偏移量不会与已写入的数据的虚拟偏移量出现重复,避免数据读写时发生错误。offset=voffset%sizeof(zone)(2)其中,voffset为数据的虚拟偏移量,zone为存储设备为待存储的数据分配的存储区域的id。在数据读取之前,可以首选根据数据的虚拟区域的标识查找数据的存储区域,进而,使用上述公式(2)确定数据的存储偏移量。另一种可选方式中,虚拟偏移量与存储偏移量的映射关系可以通过映射表的形式进行保存。针对存储设备中的一个数据,当该数据被首次写入存储设备的硬盘时,存储设备为其分配虚拟区域的标识、存储区域和存储偏移量,进而,存储设备确定该存储设备对应的虚拟偏移量,把并将该存储偏移量和虚拟偏移量的对应关系保存在映射表中。当数据被迁移之后,当该数据被迁移之后,存储设备在该映射表中将虚拟偏移量对应的存储偏移量修改为迁移后的存储偏移量。当需要读取该数据时,可以查询该映射表,得到该数据的存储偏移量。以下以一个示例进行说明。假设存储设备中有一个待存储的数据d,存储设备为该数据d分配的存储区域为zone1,虚拟偏移量为voffset1,为该数据d分配的存储偏移量为offset1。则该数据d被保存后,上述映射表可以如下述表5所示。表5虚拟区域的标识存储区域voffset1offset1之后,数据d从zone1的offset1迁移到zone2的offset2,则上述映射表被修改为下述表6所示的形式。表6虚拟区域的标识存储区域voffset1offset2需要说明的是,在具体实施过程中,上述两种可选方式可以单独实施,也可以结合起来实施。结合实施的过程为:当数据首次写入存储设备时,存储设备可以按照上述公式(1)确定数据的存储偏移量对应的虚拟偏移量,此时,存储偏移量和虚拟偏移量的对应关系可以看作是由该公式(1)来表示,存储设备中不需要额外记录二者的对应关系。当数据发生迁移之后,数据的虚拟偏移量所对应的存储偏移量发生变化,此时,可以将数据的虚拟偏移量与迁移后的存储偏移量的对应关系写入映射表中。当需要读取该数据时,存储设备可以首先判断当前是否存在虚拟偏移量和存储偏移量的映射表,如果存在,则进一步判断映射表中是否存在数据的虚拟偏移量,若存在,则该虚拟偏移量对应的存储偏移量即为数据的存储偏移量,如果不存在数据的虚拟偏移量,或者不存在虚拟偏移量和存储偏移量的映射表,则可以按照上述公式(1)确定数据的虚拟偏移量对应的存储偏移量,此时,存储偏移量和虚拟偏移量的对应关系可以看作是由该公式(2)来表示。如上说明了数据的存储地址和虚拟地址的可选表示方式,以及存储地址和虚拟地址的映射关系的可选表示方式。在具体实施过程中,存储设备可以按照上述的可选表示方式存储数据,以及建立数据对应的映射关系。以下继续使用上述图1对应描述中的示例,说明本申请实施例中数据的存储以及映射关系建立。假设文件系统中保存了一个文件bb.doc,该文件bb.doc的存储位置为“/aa/bb.doc”,则图3为该文件bb.doc在文件系统的树形结构中的存储结构,如图3所示,树形结构的第一层,即根部,为“/”这个根目录的虚拟区域的标识以及虚拟偏移量。该虚拟区域的标识与存储区域的映射关系存储在第一映射表中,该虚拟偏移量与存储偏移量的映射关系存储在第二映射表中或者通过公式表示。通过该两个映射关系,存储设备可以获知“/”这个根目录的存储区域以及存储偏移量,该存储区域以及存储偏移量所共同确定出的存储地址中所存储的内容,即为树形结构的第二层的内容,该内容包括“aa”的虚拟区域的标识以及虚拟偏移量,该虚拟区域的标识与存储区域的映射关系存储在第一映射表中,该虚拟偏移量与存储偏移量的映射关系存储在第二映射表中或者通过公式表示。通过该两个映射关系,存储设备可以获知“aa”的存储区域以及存储偏移量,该存储区域以及存储偏移量所共同确定出的存储地址中所存储的内容,即为树形结构的第三层的内容,该内容包括“bb.doc”的虚拟区域的标识以及虚拟偏移量,存储设备再继续按照映射关系,最终得出“bb.doc”的存储地址。在上述示例中,树形结构的每一层中所记录的元数据中包括虚拟区域的标识以及虚拟偏移量,而并非数据的存储区域id以及存储偏移量,因此,数据发生迁移后,树形结构的每一层中的元数据都不需要修改,而仅修改对应的映射关系即可。以下说明在上述的可选表示方式下,存储设备进行数据读写的过程。图4为在存储设备中写入第二数据的流程示意图,如图4所示,写入过程包括:s401、为待存储的第二数据分配第二虚拟区域的标识以及分配用于存储第二数据的第三存储地址所对应的第三存储区域。存储设备在确定出第二数据存储后,首先为第二数据分配虚拟区域的标识以及存储区域,即上述第二虚拟区域的标识以及第三存储区域。可选的,存储设备可以按照预设的策略为第二数据分配虚拟区域的标识以及存储区域。s402、为第二数据分配第三存储区域内的第三存储偏移量,上述第三存储区域和该第三存储偏移量共同确定上述第三存储地址。在为第二数据分配虚拟区域的标识以及存储区域后,存储设备进一步为第二数据分配存储偏移量,即第三存储偏移量。可选的,存储设备可以从已分配的存储区域的第一个空闲存储偏移量开始,为第二数据分配存储偏移量。需要说明的是,在具体实施过程中,数据的大小不尽相同,因此,一个数据所占用的存储偏移量可能为一个,也可能为多个,因此,本申请实施例中所述的存储偏移量可以看作是数据在存储区域内的起始位置,存储设备还需要进一步结合数据的长度得到数据的完整存储偏移量,该长度也可以同时存储在数据的元数据中。示例性的,存储设备为第二数据分配的存储地址为存储区域zone2+存储偏移量offset2,假设offset2的值为48kb,则第二数据的起始位置为距离zone2的起始位置48kb的位置,同时,第二数据具有长度信息,例如长度为20kb。则在读取第二数据时,通过虚拟地址和存储地址的映射关系得到第二数据的存储区域id(zone2)和存储偏移量(48kb),即得到第二数据的起始位置,再向后读取20kb,即可读取到第二数据的完整内容。s403、根据上述第三存储偏移量以及上述迁移标识确定上述第二数据对应的第二虚拟偏移量。具体过程可以参照上述公式(1)的对应描述,此处不再赘述。s404、将上述第二数据写入上述第三存储地址,并在上述第二数据的元数据中记录上述第二虚拟区域的标识以及所述第二虚拟偏移量。在确定出存储第二数据的第三存储区域和第三存储偏移量后,存储设备即确定出第二数据的存储地址,即第三存储地址,进而,在本步骤中,存储设备将第二数据写入由第三存储区域和第三存储偏移量共同确定出的第三存储地址中。可选的,存储设备从第三存储偏移量所表示的起始位置开始,以顺序写的方式将第二数据写入起始位置及其之后的存储位置中。进而,存储设备将为第二数据分配的虚拟区域的标识以及确定出的第二虚拟偏移量记录在第二数据的元数据中。可选的,存储设备还将第二数据的长度信息写入第二数据的元数据中。s405、建立第三映射关系,该第三映射关系包括:上述第二虚拟区域的标识与第三存储区域的映射关系,以及,上述第二虚拟偏移量与第三存储偏移量的映射关系。可选的,存储设备可以按照上述表3对应描述中的方法建立第二虚拟区域的标识与第三存储区域的映射关系,按照上述公式(1)或表(5)对应描述中的方法建立第二虚拟偏移量与第三存储偏移量的映射关系,此处不再赘述。图5为从存储设备中读取上述第一数据的流程示意图,如图5所示,读取上述第一数据的过程包括:s501、根据上述第一映射关系以及上述第一数据的元数据中所记录的第一虚拟地址,确定存储上述第一数据的上述第一存储地址。可选的,当上述第一存储地址使用“存储区域+存储偏移量”的方式表示时,第一存储地址包括第一存储区域id和第一存储偏移量,第一虚拟地址包括第一虚拟区域的标识和第一虚拟偏移量。进而,经过前述的实施例可知,第一数据对应的第一映射关系包括第一虚拟区域的标识和第一存储区域的映射关系,以及第一虚拟偏移量和第一存储偏移量的映射关系。进而,在本步骤中,可以首先通过第一数据的元数据获取第一数据对应的第一虚拟区域的标识以及第一虚拟偏移量,进而,根据上述第一虚拟区域的标识与第一存储区域的映射关系,得到上述第一存储地址对应的第一存储区域id,以及,根据上述第一虚拟偏移量与第一存储偏移量的映射关系,得到上述第一存储地址对应的第一存储偏移量。作为一种示例,存储设备可以通过读取映射表来得到第一存储地址对应的第一存储区域id。作为一种示例,存储设备可以通过前述的公式(2)得到第一存储地址对应的第一存储偏移量。s502、从上述第一存储地址读取上述第一数据。在得到第一数据的第一存储区域以及第一存储偏移量后,存储设备即得到第一数据起始存储位置,存储设备可以进一步结合第一数据的长度信息,读取到完整的第一数据。示例性的,假设通过上述步骤s501得到第一数据的第一存储区域为zone1,第一存储偏移量为48kb,同时,第一数据的元数据中所记录的第一数据的长度为20kb,则存储设备首先寻址到zone1内距离zone1起始位置48kb的位置,该位置为第一数据的起始位置,从该位置开始,顺序读取20kb,所读出的数据即为第一数据的完整内容。图6为本申请实施例提供的一种数据迁移装置600的模块示意图,该装置应用于存储设备。可选的,该装置可以是存储设备的控制器,或者为存储设备的控制器的一部分。第一数据存储在第一存储地址,所述第一数据的元数据中记录有第一虚拟地址,所述第一存储地址与所述第一虚拟地址之间有第一映射关系。如图6所示,该装置600包括:处理模块601。处理模块601,用于将第一数据从第一存储地址迁移到第二存储地址,以及,将上述第一映射关系调整为第二映射关系,该第二映射关系是上述第二存储地址与上述第一虚拟地址的对应关系。该装置用于实现前述方法实施例,其实现原理和技术效果类似,此处不再赘述。在一种可选的实施方式中,上述存储地址通过存储区域id以及存储区域内的存储偏移量共同确定。在一种可选的实施方式中,上述第一虚拟地址通过第一虚拟区域的标识以及第一虚拟偏移量共同标识。在一种可选的实施方式中,上述第一映射关系包括:上述第一虚拟区域的标识与第一存储区域的映射关系,以及,上述第一虚拟偏移量与第一存储偏移量的映射关系。上述第二映射关系包括:上述第一虚拟区域的标识与第二存储区域的映射关系,以及,上述第一虚拟偏移量与第二存储偏移量的映射关系。在一种可选的实施方式中,处理模块601还用于:在上述第一存储地址对应的存储区域中的数据全部迁移至上述第二存储地址对应的存储区域后,更新迁移标识,该迁移标识用于标识上述第一虚拟区域的迁移次数。在一种可选的实施方式中,处理模块601还用于:为待存储的第二数据分配第二虚拟区域的标识以及分配用于存储所述第二数据的第三存储地址所对应的第三存储区域。为所述第二数据分配第三存储区域内的第三存储偏移量,所述第三存储区域和所述第三存储偏移量共同确定所述第三存储地址。根据所述第三存储偏移量以及所述迁移标识确定所述第二数据对应的第二虚拟偏移量。将所述第二数据写入所述第三存储地址,并在所述第二数据的元数据中记录所述第二虚拟区域的标识以及所述第二虚拟偏移量。建立第三映射关系,所述第三映射关系包括:所述第二虚拟区域的标识与第三存储区域的映射关系,以及,所述第二虚拟偏移量与第三存储偏移量的映射关系。在一种可选的实施方式中,处理模块601还用于:根据所述第一映射关系以及所述第一数据的元数据中所记录的第一虚拟地址,确定存储所述第一数据的所述第一存储地址。从所述第一存储地址读取所述第一数据。在一种可选的实施方式中,处理模块601具体用于:根据所述第一虚拟区域的标识与第一存储区域的映射关系,得到所述第一存储地址对应的第一存储区域id。根据所述第一虚拟偏移量与第一存储偏移量的映射关系,得到所述第一存储地址对应的第一存储偏移量。其中,所述第一虚拟偏移量与第一存储偏移量的映射关系通过所述第一虚拟偏移量与所述第一存储偏移量的映射表进行标识,或者,通过预设的公式确定。图7为本申请实施例提供的一种存储设备700的实体框图,如图7所示,该存储设备包括控制器701和至少一个硬盘702,控制器701用于对硬盘702存储的数据进行管理,第一数据存储在第一存储地址,第一数据的元数据中记录有第一虚拟地址,该第一存储地址与该第一虚拟地址之间有第一映射关系。控制器701还用于:将第一数据从第一存储地址迁移到第二存储地址,以及,将上述第一映射关系调整为第二映射关系,该第二映射关系是上述第二存储地址与上述第一虚拟地址的对应关系。在一种可选的实施方式中,上述存储地址通过存储区域id以及存储区域内的存储偏移量共同确定。在一种可选的实施方式中,上述第一虚拟地址通过第一虚拟区域的标识以及第一虚拟偏移量共同标识。在一种可选的实施方式中,上述第一映射关系包括:上述第一虚拟区域的标识与第一存储区域的映射关系,以及,上述第一虚拟偏移量与第一存储偏移量的映射关系。上述第二映射关系包括:上述第一虚拟区域的标识与第二存储区域的映射关系,以及,上述第一虚拟偏移量与第二存储偏移量的映射关系。在一种可选的实施方式中,控制器701还用于:在上述第一存储地址对应的存储区域中的数据全部迁移至上述第二存储地址对应的存储区域后,更新迁移标识,该迁移标识用于标识上述第一虚拟区域的迁移次数。在一种可选的实施方式中,控制器701还用于:为待存储的第二数据分配第二虚拟区域的标识以及分配用于存储所述第二数据的第三存储地址所对应的第三存储区域。为所述第二数据分配第三存储区域内的第三存储偏移量,所述第三存储区域和所述第三存储偏移量共同确定所述第三存储地址。根据所述第三存储偏移量以及所述迁移标识确定所述第二数据对应的第二虚拟偏移量。将所述第二数据写入所述第三存储地址,并在所述第二数据的元数据中记录所述第二虚拟区域的标识以及所述第二虚拟偏移量。建立第三映射关系,所述第三映射关系包括:所述第二虚拟区域的标识与第三存储区域的映射关系,以及,所述第二虚拟偏移量与第三存储偏移量的映射关系。在一种可选的实施方式中,控制器701还用于:根据所述第一映射关系以及所述第一数据的元数据中所记录的第一虚拟地址,确定存储所述第一数据的所述第一存储地址。从所述第一存储地址读取所述第一数据。在一种可选的实施方式中,控制器701具体用于:根据所述第一虚拟区域的标识与第一存储区域的映射关系,得到所述第一存储地址对应的第一存储区域id。根据所述第一虚拟偏移量与第一存储偏移量的映射关系,得到所述第一存储地址对应的第一存储偏移量。其中,所述第一虚拟偏移量与第一存储偏移量的映射关系通过所述第一虚拟偏移量与所述第一存储偏移量的映射表进行标识,或者,通过预设的公式确定。在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1