发明内容
本发明实施例提供一种分层数据存储处理方法、装置以及存储设备,用以解决存储设备异常掉电后存储映射表中的信息与实际的数据存储情况不一致的问题。
本发明提供了一种分层数据存储处理方法,包括:
在将数据块由源层级磁盘迁移到目的层级磁盘的空闲块中时,更新缓存中的映射列表,获取处于迁移状态的数据块数量;
在处于迁移状态的数据块数量未达到预设的阈值时,保留源层级磁盘中处于迁移状态的数据块;
在处于迁移状态的数据块数量达到预设的阈值时,根据缓存中的映射列表更新磁盘中的存储映射表,并释放源层级磁盘中的处于迁移状态的数据块占用的存储空间。
本发明还提供了一种分层数据存储处理装置,包括:
统计模块,用于在将数据块由源层级磁盘迁移到目的层级磁盘的空闲块中时,更新缓存中的映射列表,获取处于迁移状态的数据块的数量,并且在处于迁移状态的数据块数量未达到预设的阈值时,保留源层级磁盘中处于迁移状态的数据块;
第一更新模块,用于在统计模块获取的处于迁移状态的数据块数量达到预设的阈值时,根据缓存中的映射列表更新磁盘中的存储映射表;
数据块释放模块,用于在第一更新模块更新磁盘中的存储映射表后,释放源层级磁盘中的所述处于迁移状态的数据块占用的存储空间。
本发明还提供了一种存储设备,包括分层设置的两个以上的层级磁盘,以上述分层数据存储处理装置。
本发明实施例中,在发生数据块迁移时,实时更新缓存中的映射列表,并统计处于迁移状态的数据块数量,在未达到预设的阈值的,保留源层级磁盘中处于迁移状态的数据块,其中处于迁移状态的数据块是指数据块已经从源层级磁盘中读出,并写入到目的层级磁盘中,但还未更新磁盘中的存储映射表,本实施例中更新缓存中的映射列表时,保持其在源层级磁盘中的存储状态,而不是将该数据块释放。通过设置一定的阈值,只有当在处于迁移状态的数据块数量达到预设的阈值时更新磁盘中的存储映射表,此时再释放源层级磁盘中的处于迁移状态的数据块,使其成为空闲块。通过上述实施方式,使得磁盘中的存储映射表未更新时,在源层级磁盘中仍然存储相应的数据块,在更新存储映射表的同时删除源层级磁盘中完成迁移的数据,从而能够保证即使发生异常掉电,磁盘中的存储映射表的信息也能够与实际的存储状态对应。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
针对现有技术中在分层的存储设备中,当数据块迁移时容易发生存储映射表和实际的存储情况不一致的情况,本发明实施例提供了一种分层数据存储处理方法,图1为本发明分层数据存储处理方法实施例的流程示意图,如图1所示,该方法包括如下步骤:
步骤101、在将数据块由源层级磁盘迁移到目的层级磁盘的空闲存储空间中时,更新缓存中的映射列表,获取处于迁移状态的数据块的数量,并在处于迁移状态的数据块数量未达到预设的阈值时执行下述的步骤102,在处于迁移状态的数据块数量达到预设的阈值时执行下述的步骤103;
本步骤是在发生数据块迁移时,更新缓存中的映射列表,并统计处于迁移状态的数据块数量,对于迁移状态的数据块数量的统计可以通过多种方式,例如计数器等,也建立迁移数据块列表,统计处于迁移状态的数据块数量,具体在下述实施例中详细描述;
步骤102、在处于迁移状态的数据块数量未达到预设的阈值时,保留源层级磁盘中的处于迁移状态的数据块;
步骤103、在处于迁移状态的数据块数量达到预设的阈值时,根据缓存中的映射列表更新磁盘中的存储映射表;
步骤104、释放源层级磁盘中的处于迁移状态的数据块占用的存储空间。
本发明上述实施例中,在目的层级磁盘中预留空闲存储空间,以提供给数据块迁移操作,另外,上述实施例只是给出了一个数据块由源层级磁盘向目的层级磁盘迁移的实施例,在不同的迁移过程中,源层级磁盘和目的层级磁盘的角色可能会互换,所以应在各层级磁盘中预留空闲存储空间。
本发明实施例中,在发生数据块迁移时,实时更新缓存中的映射列表,并统计处于迁移状态的数据块数量,在未达到预设的阈值的,保留源层级磁盘中处于迁移状态的数据块,其中处于迁移状态的数据块是指数据块已经从源层级磁盘中读出,并写入到目的层级磁盘中,但还未更新磁盘存储映射表,本实施例中更新缓存中的映射列表时,保持其在源层级磁盘中的存储状态,而不是将该数据块释放。通过设置一定的阈值,只有当在处于迁移状态的数据块数量达到预设的阈值时更新磁盘中的存储映射表,此时再释放源层级磁盘中的处于迁移状态的数据块,使其成为空闲块。通过上述实施方式,使得磁盘中的存储映射表未更新时,在源层级磁盘中仍然存储相应的数据块,在更新存储映射表的同时删除源层级磁盘中完成迁移的数据,从而能够保证即使发生异常掉电,磁盘中的存储映射表的信息也能够与实际的存储状态对应。
本发明上述实施例中,对于根据缓存中的映射列表更新磁盘中的存储映射表的方式可以有多种,一种是根据缓存中的映射列表生成更新后的存储映射表并存储到磁盘中,即生成新的完整的各层级磁盘的存储映射表并更新;二是只针对迁移数据块相关的存储映射信息进行更新,即根据缓存中的映射列表和磁盘中的存储映射表生成增量存储映射表,并将生成的增量映射表存储到磁盘中。这种仅生成增量存储映射表的形式,其更新的数据量小,能够大大提高更新处理速度,针对这种实施方式,在发生异常掉电时,根据增量存储映射表以及前一次保存的存储映射表即可生成与当前源层级磁盘和目的层级磁盘状态匹配的存储映射表。
另外还可以进一步的设置数据块迁移列表,上述步骤101中获取处于迁移状态的数据块的数量,即是从数据块迁移列表中获取处于迁移状态的数据块的数量。上述的数据块迁移列表用于存储迁移数据信息,迁移数据信息包括处于迁移状态的数据块标识,以及处于迁移状态的数据块迁移前在源层级磁盘中的物理存储地址;当然,迁移数据信息还可以包含其他信息,例如处于迁移状态的数据块迁移后在目的层级磁盘中的物理存储地址。
另外上述的数据块迁移列表可以在将数据块由源层级磁盘迁移到目的层级磁盘的空闲块中时被实时更新。并且在更新磁盘中的存储映射表后还可以包括删除数据块迁移列表中的迁移数据信息的步骤。
本发明上述实施例中对迁移数据块的数量设置一定的阈值,在达到上述阈值后再进行存储映射表的更新,具体的可参照图2和图3所示,如图2所示,从层级磁盘1和层级磁盘2中分别的迁移两个数据块到层级磁盘0中,但旧存储磁盘中的数据块并不释放,若此时已经达到了预设的阈值,则可以更新磁盘中的存储映射表,删除数据块迁移列表中的迁移数据信息,并释放源层级磁盘中存储的完成数据迁移的数据块所占用的存储空间,使其成为空闲存储空间,具体的可如图3所示。在完成上述操作的基础上,进一步的可以再进行新一轮的数据块迁移。
另外在接收到针对处于迁移状态的数据块的写操作时(即发生数据更新),可以根据缓存中的映射关系列表更新目的层级磁盘中的数据块,以及根据数据块迁移列表更新源层级磁盘中的数据块。具体的写操作可以如图4所示,包括如下的步骤:
步骤201、接收写操作,该写操作包括逻辑块地址信息(Logical BlockAddress,以下简称:LBA);
步骤202、根据所述写操作中携带的LBA,以及缓存中的映射列表获取其对应在目的层级磁盘中的物理存储地址;
步骤203、根据获取的物理存储地址执行写操作的步骤;
上述步骤中根据缓存中的存储映射表执行写操作,使得磁盘中数据的实际存储信息与缓存中的映射列表相同,若是此时被执行写操作的数据块处于迁移状态,并且只根据缓存中的映射列表修改了目的层级磁盘中的数据,而不修改源层级磁盘的内容,那么在异常断电时,缓存中的映射列表丢失,从而无法再修改磁盘中的存储映射表,这会导致磁盘中的存储映射表与实际数据存储信息不一致的问题,因此本实施例中在执行步骤203的同时执行如下的步骤204。
步骤204、判断写操作对应的数据块是否处于迁移状态,具体可以是根据数据块迁移表进行判断,如果是处于迁移状态,则执行步骤205,否则结束该流程;
步骤205、根据数据块迁移状态列表获取数据块迁移前在源层级磁盘中的物理地址;
步骤206,根据上述获取的数据块在源层级磁盘中的物理地址,将数据写入到源层级磁盘中的对应位置。
通过上述步骤在被执行写操作的逻辑块处于迁移状态时,通过步骤202~步骤203将写入的数据保存到目的层级磁盘、以及步骤204~步骤206将写入的数据保存到源层级磁盘,从而同步将写入的数据保存到源层级磁盘和目的层级磁盘,即使异常断电未更新磁盘中的存储映射表,也能够保持数据一致。
本发明上述实施例中,在各个层级磁盘中预留空闲存储空间,以提供数据块迁移操作,同时实时更新缓存中的映射列表,并保持处于迁移状态的数据块在源层级磁盘中的存储状态。本实施例中更新缓存中的映射列表时,保持其在源层级磁盘中的存储状态,而不是将该数据块释放,并通过设置一定的阈值,只有当在处于迁移状态的数据块数量达到预设的阈值时更新存储映射表,此时再释放源层级磁盘中的处于迁移状态的数据块。通过上述实施方式,使得磁盘中的存储映射表未更新时,在源层级磁盘中仍然存储相应的数据块,在更新存储映射表的同时删除源层级磁盘中完成迁移的数据,从而能够保证即使发生异常掉电,磁盘中的存储映射表的信息也能够与实际的存储状态对应。
本发明实施例还提供了与上述方法实施例对应的装置,图5为本发明分层数据存储处理装置实施例的结构示意图一,如图5所示,该装置包括统计模块11、第一更新模块12和数据块释放模块13,其中统计模块11用于在将数据块由源层级磁盘迁移到目的层级磁盘的空闲块中时,更新缓存中的映射列表,获取处于迁移状态的数据块的数量,并在处于迁移状态的数据块数量未达到预设的阈值时,保留源层级磁盘中处于迁移状态的数据块;第一更新模块12用于在处统计模块获取的于迁移状态的数据块数量达到预设的阈值时,根据缓存中的映射列表更新磁盘中的存储映射表;数据块释放模块,用于在第一更新模块12更新磁盘中的存储映射表更新后,释放源层级磁盘中的所述处于迁移状态的数据块占用的存储空间。
本发明上述实施例中,其中的第一更新模块12具体的可以包括第一更新单元121,该第一更新单元121用于根据所述缓存中的映射列表生成更新后的存储映射表并存储到磁盘中。
另外如图6所示,第一更新模块12具体的可以包括第二更新单元122,用于根据所述缓存中的映射列表生成增量存储映射表并存储到磁盘中。并且具体的在第一更新模块12包括第二更新单元122的情况下,上述的分层数据存储处理装置还可以进一步包括映射表生成模块14,该映射表生成模块14用于在发生异常掉电时,根据第二更新单元122生成的增量存储映射表以及前一次保存的存储映射表生成与当前源层级磁盘和目的层级磁盘状态匹配的存储映射表。
如图7所示,本发明上述实施例提供的分层数据存储处理装置,其还可以进一步的包括数据块迁移列表15,第二更新模块16和数据删除模块17,其中数据块迁移列表16用于存储迁移数据信息,所述迁移数据信息包括处于迁移状态的数据块标识,以及所述处于迁移状态的数据块迁移前在源层级磁盘中的物理存储地址;上述统计模块11具体用于从数据块迁移列表中获取处于迁移状态的数据块的数量;第二更新模块16用于在数据块由源层级磁盘迁移到目的层级磁盘的空闲块中时,实时更新数据块迁移列表;数据删除模块17与第一更新模块12连接,用于在所述第一更新模块12更新存储映射表后,删除数据块迁移列表中的迁移数据信息。
并进一步的,上述装置还可以进一步包括写处理模块18,该写处理模块18用于在接收到针对处于迁移状态的数据块的写操作时,根据缓存中的映射列表更新目的层级磁盘中的数据块,并根据数据块迁移列表15更新源层级磁盘中的数据块。
本发明实施例还提供了一种存储设备,该存储设备包括分层设置的两个以上的层级磁盘,还包括上述实施例提供的分层数据存储处理装置。
本发明上述各个实施例提供的分层数据存储处理方法、装置以及存储设备,其通过在各个层级磁盘中预留空闲存储空间,以提供数据块迁移操作,上述的数据块迁移列表用于存储迁移数据信息,迁移数据信息包括处于迁移状态的数据块标识,及其对应的处于迁移状态的数据块迁移前的在源层级磁盘中的物理存储地址;另外上述的数据块迁移列表可以在将数据块由源层级磁盘迁移到目的层级磁盘的空闲块中时被实时更新。本实施例中对于处于迁移状态的数据块,同时保持其在源层级磁盘中的存储状态,而不是将该数据块释放。另外设置一定的阈值,只有当在处于迁移状态的数据块数量达到预设的阈值时,更新存储映射表,并删除数据块迁移列表中的迁移数据信息,以及删除源层级磁盘中的所述处于迁移状态的数据块。通过上述实施方式,使得存储映射表未更新时,在源层级磁盘中仍然存储相应的数据块,存储映射表更新的同时删除源层级磁盘中完成迁移的数据,从而能够保证即使发生异常掉电,存储映射表的信息也能够与实际的存储状态对应。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。