CN108572792A - 数据存储方法、装置、电子设备及计算机可读存储介质 - Google Patents
数据存储方法、装置、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN108572792A CN108572792A CN201710441708.4A CN201710441708A CN108572792A CN 108572792 A CN108572792 A CN 108572792A CN 201710441708 A CN201710441708 A CN 201710441708A CN 108572792 A CN108572792 A CN 108572792A
- Authority
- CN
- China
- Prior art keywords
- data
- stored
- region
- physical address
- clearance
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种数据存储方法及装置,应用于存储驱动,方法包括:获得待存储数据;判断待存储数据的大小是否大于预设第一阈值;如果否,判断磁盘中第一物理地址对应的存储空间是否存储有数据;第一物理地址为磁盘中与目标物理地址相连的物理地址,目标物理地址为存储有第一数据的存储空间对应的物理地址,第一数据为当前最新存储的数据;如果未存储数据,将所待存储数据存储至所述第一物理地址对应的存储空间。应用本发明实施例,如果第一物理地址对应的存储空间未存储数据,将数据存储到第一物理地址对应的存储空间,而不是先存储到缓存系统中,不会因缓存系统出现故障而导致数据丢失,减少了的在数据存储过程中的数据丢失的风险。
Description
技术领域
本发明涉及数据存储技术领域,特别是涉及一种数据存储方法、装置、电子设备及计算机可读存储介质。
背景技术
虚拟机是通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。虚拟机像物理机一样存在磁盘存储数据,将数据存储到虚拟机的磁盘。将数据存储到虚拟机的磁盘的方法为:虚拟机获得写请求,并将写请求转发给存储驱动,写请求中包含待存储数据和待存储数据的逻辑地址;存储驱动将待存储数据存储至与该逻辑地址相同的物理地址对应的存储空间中。示例性的,写请求携带的逻辑地址为逻辑地址1,则将待存储数据存储至物理地址1对应的存储空间,可以理解为存储驱动向磁盘发送写请求,以使得磁盘根据该写请求中的逻辑地址,确定与该逻辑地址相同的物理地址,将待存储数据存储至所确定的物理地址对应的存储空间。
在数据存储技术中,逻辑地址是按照数据的逻辑块号确定的磁盘地址。在磁盘中是以字节为单位进行存储数据,为了正确地存储和读取数据,需要为每一字节单元分配一个唯一的地址,物理地址是每一字节单元的地址。每一物理地对应的一个存储空间,该存储空间所能存储的数据大小是字节单元的大小,示例性,一个字节单元的大小为64K,则该存储空所能存储的数据大小为64K。在一个物理地址对应的存储空间存储了数据之后,即使存储的数据的大小小于该存储空间所能存储的数据大小,也不会继续在该存储空间中存储数据,再次在该存储空间存储数据时,会将该存储空间之前存储的数据覆盖。
针对上述数据存储方法存在顺序写和随机写两种存储方式。具体的,存储方式是由获得的写请求决定的。如果获得的多个写请求携带的逻辑地址是连续的,则该写请求为顺序写请求,存储方式为顺序写;如果获得的多个写请求携带的逻辑地址是不连续的,则该写请求为随机写请求,存储方式为随机写。虚拟机的磁盘的性能取决于其磁盘数据所在的存储介质,与存储介质的实现方式有关。对于大部分存储介质,顺序写性能要高于随机写性能,随机写相对于顺序写增加了磁头寻道和旋转的时间,造成了随机写相较于顺序写,存储效率比较低、需要更多的处理资源,因此,随机写的性能相较于顺序写的性能比较差。
在现有技术中,利用缓存技术提高随机写的性能,具体的,虚拟机将写请求转发给存储驱动;存储驱动将写请求中携带的数据存储高速设备组成的缓存系统中;缓存系统将逻辑地址相连的数据进行合并,在合并的数据达到一定的数量的情况下,将合并后的数据存储至磁盘中。但这种方法,如果缓存系统出现故障,缓存系统中还没有存储到磁盘中的数据存在丢失的风险。
发明内容
本发明实施例的目的在于提供一种数据存储方法、装置、电子设备及计算机可读存储介质,以减少数据丢失的风险。具体技术方案如下:
第一方面,为了达到上述目的,本发明实施例提供了一种数据存储方法,应用于存储驱动,所述方法包括:
获得待存储数据;
判断所述待存储数据的大小是否大于预设第一阈值;
如果否,判断磁盘中第一物理地址对应的存储空间是否存储有数据;其中,所述第一物理地址为所述磁盘中与目标物理地址相连的物理地址,所述目标物理地址为存储有第一数据的存储空间对应的物理地址,所述第一数据为当前最新存储的数据;
如果未存储数据,将所述待存储数据存储至所述第一物理地址对应的存储空间。
第二方面,为了达到上述目的,本发明实施例提供了一种数据存储装置,应用于存储驱动,所述装置包括:
第一获得模块,用于获得待存储数据;
第一判断模块,用于判断所述待存储数据的大小是否大于预设第一阈值;
第二判断模块,用于在所述第一判断模块的判断结果为否的情况下,判断磁盘中第一物理地址对应的存储空间是否存储有数据;其中,所述第一物理地址为所述磁盘中与目标物理地址相连的物理地址,所述目标物理地址为存储有第一数据的存储空间对应的物理地址,所述第一数据为当前最新存储的数据;
第一存储模块,用于在所述第二判断模块的判断结果为未存储数据的情况下,将所述待存储数据存储至所述第一物理地址对应的存储空间。
第三方面,为了达到上述目的,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现如上述第一方面所述的方法步骤。
第四方面,为了达到上述目的,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面所述的方法步骤。
本发明实施例提供的一种数据存储方法、装置、电子设备及计算机可读存储介质,如果第一物理地址对应的存储空间未存储数据,将数据存储到第一物理地址对应的存储空间,而不是先存储到缓存系统中,不会因缓存系统出现故障而导致数据丢失,减少了的在数据存储过程中的数据丢失的风险。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的数据存储方法的第一种流程示意图;
图2为分别利用现有技术与本发明实施例提供的数据存储方法进行数据存储的对比图;
图3为本发明实施例提供的数据存储方法的第二种流程示意图;
图4为本发明实施例提供的数据存储方法的第三种流程示意图;
图5为本发明实施例提供的数据存储方法的第四种流程示意图;
图6为本发明实施例提供的数据获取方法的流程示意图;
图7为本发明实施例提供的存储空间回收方法的第一种流程示意图;
图8为本发明实施例提供的存储空间回收方法的第二种流程示意图;
图9为本发明实施例提供的存储空间回收方法的第三种流程示意图;
图10为本发明实施例提供的数据存储装置的第一种结构示意图;
图11为本发明实施例提供的数据存储装置的第二种结构示意图;
图12为本发明实施例提供的数据存储装置的第三种结构示意图;
图13为本发明实施例提供的数据存储装置的第四种结构示意图;
图14为本发明实施例提供的数据获取装置的结构示意图;
图15为本发明实施例提供的存储空间回收装置的第一种结构示意图;
图16为本发明实施例提供的存储空间回收装置的第二种结构示意图;
图17为本发明实施例提供的存储空间回收装置的第三种结构示意图;
图18为本发明实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明实施例提供的数据存储方法优选应用于存储驱动,虚拟机磁盘包括虚拟机、存储驱动和磁盘,虚拟机将接收到文件系统的待存储数据发送给存储驱动,存储驱动将待存储数据发送给磁盘,以使得磁盘在将接收待存储数据后,存储该待存储数据。这里所说的文件系统为对文件存储器空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统,文件存储器可以为虚拟机磁盘。在本发明实施例中,存储驱动为用于存储的驱动,能够实现虚拟机和磁盘之间的通信,能够驱动磁盘将数据存储到磁盘自身的存储空间。存储驱动能够驱动任何类型的存储介质,例如本地磁盘、分布式存储的磁盘等等,不需要对不同的存储介质进行不同的配置,具有很好的通用性,另外,存储驱动所驱动的磁盘的存储空间是可变的。另外,存储驱动可以使用任意操作系统,系统兼容性比较好,不需要对不同的操作系统做不同的配置,针对操作系统具有很好的通用型。
图1为本发明实施例提供的数据存储方法的第一种流程示意图;方法包括:
S101:获得待存储数据。
在本发明实施例中,存储驱动可以从虚拟机获得待存储数据,进一步地,虚拟机是接收文件系统发送的待存储数据。
S102:判断待存储数据的大小是否大于预设第一阈值,如果否,执行S103,如果是,结束。
需要说明的是,在本发明实施例中所说的磁盘均是虚拟机的磁盘,具体地,可以为虚拟机对应的物理机中为该虚拟机分配的磁盘,还可以是虚拟机在云端中的磁盘。
在本发明实施例中,磁盘的存储空间的数量是可变的,当待存储数据比较多时,当前磁盘所能存储的数据的存储空间剩余不多时,可以扩充磁盘的存储空间,以使得该磁盘能存储更多的数据;在比较长的时间段内,磁盘没有存储数据的存储空间比较多时,可以适当将磁盘的存储空间的数量减少。根据实际情况动态地调整磁盘的存储容量,避免因需要存储的数据过多而造成的无法存储数据,或存储数据的效率比较低等情况的发生。另外,也减少了因大量的存储空间长期未存储数据造成的存储资源的浪费。
磁盘上每一个物理地址对应的存储空间所能存储的数据的大小是固定的,具体的,可以预先确定物理地址对应的存储空间所能存储的数据的大小。这里所说的预设第一阈值可以是一个物理地址对应的存储空间所能存储的数据的大小。示例性的,第一预设阈值可以为32K、64K或128K等等。在判断待存储数据的大小大于预设第一阈值时,则结束,否则,执行S103。
S103:判断磁盘中第一物理地址对应的存储空间是否存储有数据;其中,第一物理地址为磁盘中与目标物理地址相连的物理地址,目标物理地址为存储有第一数据的存储空间对应的物理地址,第一数据为当前最新存储的数据。
在本发明实施例中,为了减少磁头寻道和旋转的时间,提高以随机写的方式存储数据的效率,需要先确定第一物理地址对应的存储空间是否存储有数据。因为如果判断出第一物理地址对应的存储空间未存储数据,则可以将待存储数据存储至第一物理地址对应的存储空间,相对于将待存储数据存储至其他的存储空间,减少了磁头寻道和旋转的时间,提高以随机写的方式存储数据的效率。
如果第一物理地址对应的存储空间中存储有数据,可以将待存储数据丢弃,也可以随机选择一个存储空间未存储有数据的物理地址,将待存储数据存储至所选择的物理地址对应的存储空间;还可以按照预先设置的规则,在磁盘中选择一个存储空间未存储有数据的物理地址,将待存储数据存储至所选择的物理地址对应的存储空间。当然,还存在其他的方式,在这里不进行一一列举。
在本发明实施例中,存储驱动根据预先记录的物理地址与数据存储的标识之间的对应关系,判断物理地址对应的存储空间是否存储有数据。数据存储的标识为用于确定物理地址对应的存储空间是否存储有数据的信息。示例性的,数据存储的标识为1,说明物理地址对应的存储空间存储有数据,数据存储的标识为0,说明物理地址对应的存储空间未存储数据。示例性的,如果针对物理地址1记录的对应关系为:物理地址1:1,则可以判断出物理地址1对应的存储空间存储有数据。数据存储的标识可以根据实际情况进行设置,可以为数字、字母或数据字母的组合等等,在这里不进行限定。
存储驱动还可以向磁盘针对第一物理地址的询问指令,根据磁盘的针对询问指令的反馈,判断第一物理地址对应的存储空间是否存储有数据。当然,还存在其他的方式判断物理地址对应的存储空间是否存储有数据,在这里不进行一一列举。
需要说明的是,与目标物理地址相连的物理地址,可以理解为标识紧挨着目标物理地址的标识的物理地址,物理地址的标识可以为物理地址的编号、代号等可以区分不同物理地址的信息。示例性的,目标物理地址的编号为3,与目标物理地址相连的物理地址可以为编号为2的物理地址和编号为4的物理地址。第一物理地址与目标物理地址相连,说明第一物理地址对应的存储空间与目标物理地址对应的存储空间相连。
在本发明实施例中,对于一个目标物理地址来说,第一物理地址可能有两个。在第一物理地址有两个的情况下,可以先判断这两个第一物理地址对应的存储空间是否存储有数据,如果均未存储数据,则选择其中一个第一物理地址,将待存储数据存储至所选择的第一物理地址对应的存储空间;如果只有一个第一物理地址对应的存储空间没有存储数据,则将待存储数据存储至该存储空间未存储数据的第一物理地址对应的存储空间;如果两个第一物理地址对应的存储空间中均存储有数据,则可以按照上述所说的在第一物理地址对应的存储空间中存储有数据的情况下的处理方法进行处理。当然,也可以先判断其中一个第一物理地址对应的存储空间是否存储有数据,如果否,将待存储数据存储在这个第一物理地址对应的存储空间;如果是,再判断另一个第一物理地址对应的存储空间是否存储有数据,如果否,则将待存储数据存储至该第一物理地址对应的存储空间。
在本发明实施例中,通过预先设置选择第一物理地址的规则,选择第一物理地址,可以选择与目标物理地址相连的物理地址中,编号小于目标物理地址的编号的物理地址作为第一物理地址;也可以将选择与目标物理地址相连的物理地址中,编号大于目标物理地址的编号的物理地址作为第一物理地址;也可以从与目标物理地址相连的物理地址中,随机选择一个物理地址作为第一物理地址。当然,并不仅限于上述示例中的第一物理地址选择的方法,还存在其他的选择方法,在这里不进行一一列举。
具体的,判断磁盘中第一物理地址对应的存储空间是否存储有数据,包括:
判断磁盘中存储第一数据的区域中的第一物理地址对应的存储空间是否存储有数据;其中,磁盘由预设数量个区域组成。
需要说明的是,为了方便对磁盘中的数据进行监控和管理,可以从逻辑上将磁盘分割为预设数量个区域,可以分别对磁盘的每个区域进行管理。每个区域对应的物理地址的数量可相等,也可不相等,即可以将磁盘均匀分割成预设数量个区域,也可以通过其他的分割规则,将磁盘分割成预设数量个区域。预设数量可以根据实际情况确定。
S104:将待存储数据存储至第一物理地址对应的存储空间。
在判断出第一物理地址对应的存储空间未存储数据的情况下,存储驱动将待存储数据存储至第一物理地址对应的存储空间,可以理解为存储驱动将待存储数据和第一物理地址发送给磁盘,磁盘在接收到之后,将待存储数据写入第一物理地址对应的存储空间。
下面通过图2举例说明现有技术与本发明实施例提供的数据存储方法的区别,图2为分别利用现有技术与本发明实施例提供的数据存储方法进行数据存储的对比图,其中,图2中a为利用现有技术中数据存储方法对数据进行存储后,数据分布示意图;图2中b为利用现有技术中数据存储方法对数据进行存储后,数据分布示意图。利用现有技术中的方法,数据A、B、C、D分别存储至物理地址0、3、5、7对应的存储空间;利用本发明实施例提供的方法,数据A、B、C、D分别存储至物理地址0、1、2、3对应的存储空间,相较于现有技术,本发明实施例提供的数据存储方法,减少了磁头寻道和旋转的时间。
本领域技术人员可以理解的是,虚拟机的磁盘性能取决于其磁盘数据所在的存储介质,对于顺序写性能高于随机写性能的存储介质,如SATA(Serial Advanced TechnologyAttachment,串行高级技术附件)/SAS(Serial Attached SCSI,串行连接小型计算机系统接口)磁盘、RAID(Redundant Array of Independent Disks,磁盘阵列)阵列等。在本发明实施例中,通过将待存储数据存储至第一物理地址对应的存储空间,将随机写转化为顺序写,提高了虚拟机的磁盘的随机写的性能。
在现有技术中,还存在通过更换存储介质方式提高随机写的性能,将存储介质更换为随机写性能更好的存储介质,例如,更换为SSD(Solid State Disk,固态磁盘)。但由于随机性能比较好的存储介质成本比较高,导致在提高随机写性能的同时,增加了成本。在本发明实施例中,在提高随机写性能的同时,因为没有更换存储介质,因此,不会增加成本。
在现有技术中,将待存储数据存储到缓存系统中,缓存系统再将逻辑地址相连的数据进行合并,在合并的数据达到一定的数量的情况下,将合并后的数据存储至磁盘中。在存储驱动将数据存储到缓存系统的速度较快且数据量较大的情况下,缓存系统将被填满,填满后的随机写性能会下降至未使用缓存系统时的性能。另外,一旦缓存系统发生故障,缓存中的数据会丢失,增加了数据丢失的风险。在本发明实施例中,直接将数据存储至磁盘,不需要经过缓存系统再存储至磁盘,提高了随机写性能,不会出现因为缓存系统出现故障而造成的数据丢失的情况,减少了数据丢失的风险。
应用本发明实施例,如果第一物理地址对应的存储空间未存储数据,将数据存储到第一物理地址对应的存储空间,而不是先存储到缓存系统中,不会因缓存系统出现故障而导致数据丢失,减少了的在数据存储过程中的数据丢失的风险。
图3为本发明实施例所提供的数据存储方法的第二种流程示意图。基于图1所提供的实施例,本发明实施例所提供的数据存储方法,在判断待存储数据大于预设第一阈值的情况下,方法还包括:
S105:将待存储数据分割成数据块,其中,分割得到的每一数据块的大小均不大于每一物理地址对应的存储空间所能存储的数据的大小。
在本发明实施例中,磁盘中的每一物理地址对应的存储空间所能存储的数据的大小是预先确定的,且以存储空间所能存储的数据的大小为单位进行存储的。示例性的,如果存储空间所能存储的数据的大小为64K,则待存储数据最大只能为64K,如果待存储数据大于64K,则该存储空间无法存储该待存储数据。需要说明的是,每一物理地址对应的存储空间所能存储的数据的大小是相同的,上述所说的预设第一阈值为物理地址对应的存储空间所能存储的数据的大小。
基于上述所说的原因,在待存储数据的大小大于预设第一阈值时,将待存储数据分割成数据块,分割得到的每一数据块的大小小于或等于每一物理地址对应的存储空间所能存储的数据的大小。
将待存储数据分割成数据块的方法有以下三种:
第一种:将待存储数据按照每一物理地址对应的存储空间所能存储的数据的大小进行分割。示例性的,待存储数据的大小70K,物理地址对应的存储空间所能存储的数据的大小为64K,则将待存储数据块分割成两个数据块,其中一个数据块的大小为64K,另外一个数据块的大小为6K。
第二种:根据待存储数据的大小以及物理地址对应的存储空间所能存储的数据的大小,确定将待分割文件块的数量;基于待存储数据的大小和所确定的数量,计算数据块的数据大小的平均值;基于所计算的平均值,将待存储数据分割成数据块。示例性的,待存储数据的大小70K,物理地址对应的存储空间所能存储的数据的大小为64K,70K除以64K的商为1.09,则可以确定将待存储数据分割为2块。计算得到的数据块的数据大小的平均值为70K除以2,即35K,将待存储数据块分割成两个数据大小均为35K的数据块。如果待存储数据的大小为71K,则数据块的数据大小的平均值为35.5K,可以将存储数据分割成一个数据大小为35K的数据块,另一个为数据大小为36K的数据块,也可以分割成将待存储数据块分割成两个数据大小均为35.5K的数据块。
第三种:在分割得到的数据块的大小均不大于每物理地址对应的存储空间所能存储的数据的大小的前提下,随机进行分割。这种分割方法分割得到的结果可能与上述两种分割得到的结果相同,但这种分割方法比较灵活。示例性的,待存储数据的大小80K,物理地址对应的存储空间所能存储的数据的大小为64K,则将待存储数据分为一个数据大小为60K的数据块,另一个数据大小为20K的数据块。
为了不额外浪费存储空间,一般来说,不会将待分割数据分割成很多数据块,一般会根据实际情况选择分割的数据块的数量。
S106:存储分割得到的每一数据块。
在本发明实施例中,可以先在分割得到的数据块中,选择一个数据块作为目标数据块,可以是随机选择,也可以选择最先分割得到的数据块等等,在这里不进行限定。针对目标数据块,判断磁盘中的第一物理地址对应的存储空间是否存储有数据,如果否,将目标数据块存储至第一物理地址的对应存储空间中;从未存储的数据块中选择数据块,将目标数据块替换为所选择的数据块,并返回执行针对目标数据块,判断磁盘中的第一物理地址对应的存储空间是否存储有数据,直至分割得到的数据块均被作为目标数据块。
需要说明的是,随着数据被存储到物理地址对应的存储空间中,目标物理地址在变化,第一物理地址也随之变化。如果第一物理地址对应的存储空间没有存储数据,在下一次存储数据的时候,第一物理地址就变成了目标物理地址,与目标物理地址相连的物理地址就变成了第一物理地址。
应用本发明实施例,能够在待存储数据大小预设第一阈值的情况下,将待存储数据分割成数据块进行存储,因而,可以存储比较大的数据。
图4为本发明实施例所提供的数据存储方法的第三种流程示意图。基于图1所提供的实施例,本发明实施例所提供的数据存储方法,在S106之后,方法还可以包括:
S107:从分割得到的数据块中选择一个数据块,将所选择的数据块的逻辑地址设置为待存储数据的逻辑地址。
在本发明的一个实施例中,获取待存储数据(S101),包括:
S101A:获取待存储数据和待存储数据的逻辑地址。
需要说明的是,存储驱动在获取待存储数据的同时,也获取了待存储数据的逻辑地址,逻辑地址可以是文件系统分配的。
分割得到的数据块至少为两块,可以随机从分割得到的数据块中选择一个数据块,还可以选择分割得到的数据块中最先或最后分割得到的数据块,将所选择的数据块的逻辑地址设置为待存储数据的逻辑地址,在此不进行限定。示例性的,待存储数据的逻辑地址为逻辑地址2,选择的数据块为数据块1,则将数据块1的逻辑地址设置为逻辑地址2。
S108:按照预先设置的逻辑地址分配规则,为分割得到的数据块中除所选择数据块外的每一数据块分配逻辑地址。
需要说明的是,为了后期的数据读取,每个数据块均需要一个逻辑地址,在上述过程中,只为其中一个数据块设置了逻辑地址,因此需要为其他的数据块分配一个逻辑地址。
逻辑地址分配规则可以为:除所选择的数据块之外的数据块中,选择一个数据块;选择待存储数据块的逻辑地址基础上增加当前的预设偏移量的逻辑地址;将当前所选择的数据块的逻辑地址设置为所选择的逻辑地址;并从未分配逻辑地址的数据块中,选择一个数据块,并在当前的预设偏移量增加预设步长值作为新的当前的预设偏移量;返回执行将当前所选择的数据块的逻辑地址设置为所选择的逻辑地址的步骤,直至所有的数据块均被分配逻辑地址。
需要说明的是,预设偏移量可以为一个物理地址对应的存储空间所能存储的数据的大小,也可以为一个物理地址对应的存储空间所能存储的数据的大小的倍数,也可以为其他的值,例如根据经验得到的值、随机选择的值、通过算法计算得到的值等等。预设步长值可以与预设偏移量相同,也可以为预设偏移量的倍数,也可以为其他的值,例如根据经验得到的值,随机设置的值等等。
示例性的,分割得到的数据块中除所选择数据块外的数据块一共有三块,分别为数据块2、数据块3和数据块4,预设偏移量和预设步长值均为64K,待存储数据块的逻辑地址为1,第一次,选择的是数据块2,将1+64K对应的逻辑地址分配给数据块2;第二次,选择的是数据块3,将1+64K+64K对应的逻辑地址分配给数据块3;第三次,选择的是数据块4,将1+64K+64K+64K对应的逻辑地址分配给数据块4。
S109:记录分割得到的每一数据块的逻辑地址与存储空间对应的物理地址之间的对应关系。
应用本发明实施例,在存储的时候,记录数据块的逻辑地址与存储空间对应的物理地址之间的对应关系,主要用于在数据读取的时候能够准确地每一数据块所存储的位置,从而准确地获取每一数据块。
图5为本发明实施例所提供的数据存储方法的第四种流程示意图。基于图4所提供的实施例,本发明实施例所提供的数据存储方法,在S102判断结果为否且S103判断结果为是的情况下,方法还可以包括:
S110:从磁盘中除存储所述第一数据的区域之外的区域中选择一个存在第二物理地址的区域,作为目标区域,其中,第二物理地址为所述磁盘中存储空间未存储数据的物理地址。
如果存储有第一数据的区域中的第一物理地址存储有数据,则待存储数据不能存储在存储有第一数据的区域中,需要从未存储第一数据的其他的区域中选择一个存在第二物理地址的区域,作为目标区域。当一个区域不存在第二物理地址,说明该区域的所有物理地址对应的存储空间均存储有数据,没有存储空间供数据存储。为了减少之后存储数据时磁头寻道和旋转的时间,可以选择存在第二物理地址数量最多的区域,作为目标区域。
S111:从目标区域中选择一个存储空间未存储数据的物理地址,确定为第一物理地址,并执行S104。
在本发明实施例中,可以随机从目标区域中选择一个存储空间未存储数据的物理地址,也可以从目标区域中选择一个存储空间未存储数据且编号最小的物理地址,还可以选择相连的物理地址对应的存储空间未存储数据,且自身的存储空间也未存储数据的物理地址。当然,还存在其他的选择物理地址的方法在这里不进行一一列举。
S112:记录待存储数据的逻辑地址与物理地址之间的对应关系。
在将待存储数据存储至第一物理地址对应的存储空间之后,执行S112。S112中记录的对应关系与S109记录的对应关系的主要用途相同,原理也相同,均是记录存储空间存储的数据的逻辑地址与物理地址之间的对应关系。
在本发明实施例中,在判断待存储数据大于预设第一阈值的情况下,将待存储数据分割成数据块,从分割得到的数据块中选择一个数据块,针对所选择的数据块,判断当前的第一物理地址对应的存储空间是否存储有数据,如果存储有数据,则执行S110和S111的步骤,在执行完之后,将所选择的数据块存储至第一物理地址对应的存储空间,然后执行S107-S109的步骤。
应用本发明实施例,在第一物理地址对应的存储空间存储有数据时,在其他的区域选择一个存储空间未存储数据的物理地址,作为第一物理地址,能够使得数据存储至磁盘中,而且,在其他区域选择一个物理地址,可以减少下一次进行数据存储时,节省磁头寻道和旋转的时间,提高随机写的性能。
图6为本发明实施例所提供的数据获取方法的流程示意图。基于图5所提供的实施例,本发明实施例所提供的数据获取方法,可以包括:
S113:接收用于获得第二数据的获取请求,其中,获取请求包括第一逻辑地址。
存储驱动接收到的获取请求是虚拟机转发的,虚拟机接收到的获取请求是文件系统发送的。
需要说明的是,本发明实施例中提供的数据获取方法是基于上述数据存储方法的基础上的数据获取方法。可以理解的是,在S101-S112执行的任意时刻,均有可能执行S113-S115,在本发明实施例中,对S113-S115的执行时机不进行限定。
S114:根据预先记录的逻辑地址与物理地址之间的对应关系,确定与第一逻辑地址具有对应关系的第三物理地址。
在本发明实施例中,数据不是存储与逻辑地址相同的物理地址对应的存储空间,为了保证获取到正确的数据,需要根据预先建立的逻辑地址与物理地址之间的对应关系,确定与待获取的数据的逻辑地址具有对应关系的物理地址,作为第三物理地址。
具体的,根据预先记录的逻辑地址与物理地址之间的对应关系,确定与所述第一逻辑地址具有对应关系的第三物理地址,包括:
根据预先记录的逻辑地址与物理地址之间的对应关系,确定与所述第一逻辑地址具有对应关系的物理地址;
从所确定的物理地址中,确定存储数据时间最晚的存储空间对应的物理地址,作为第三物理地址。
在本发明实施例中,在一般情况下,如果一个物理地址对应的存储空间存储有数据,就不会在该存储空间继续存储数据,将之前存储的数据覆盖,而是选择一个未存储数据的存储空间进行存储。针对同一个数据,可以重复进行存储,也可以存储更改后的数据。这里所说的更改为修改或更新,该数据第一次存储分配的逻辑地址与之后存储分配的物理地址是相同的,示例性的,数据为数据A,数据A第一次存储时分配的逻辑地址是逻辑地址3,对数据A进行修改并存储,在存储时分配给修改后的数据A的逻辑地址为逻辑地址3;对修改后的数据A再次进行存储时,分配的逻辑地址还是逻辑地址3。
在本发明实施例中,基于上述原因可知,与同一个逻辑地址具有对应关系的物理地址可以有多个,在这些物理地址对应的存储空间中存储的数据可以是相同的数据,也可以是不同的数据,一般情况下,这里不同的数据之间相互为更改的关系。
为了获取当前最新存储的数据,保证获取数据的正确性,提高获取数据的准确率,需要先确定与第一逻辑地址具有对应关系的物理地址,当确定的物理地址只有一个时,说明第二数据只存储了一次。当前,所确定的物理地址对于第二数据来说,该物理地址为存储数据时间最晚的存储空间对应的物理地址,即第三物理地址。如果确定与第一逻辑地址具有对应关系的物理地址有多个,则从所确定的物理地址中,选择存储时间存储数据时间最晚的存储空间对应的物理地址,作为第三物理地址。
在实际应用中,可以将建立的逻辑地址与物理地址的对应关系存储于索引表中,通过数据的逻辑地址检索,可以得到该逻辑地址所对应的所有物理地址。示例性的,索引表的结构可以表1所示。
表1
从表1中可以看出,逻辑地址0对应的数据存储了4次,分别存储于物理地址16、64、256以及1024对应的存储空间。针对同一个逻辑地址,物理地址是按照存储空间存储数据的先后顺序排列的,排在最前的物理地址为存储有最新修改的数据的存储空间对应的物理地址,即物理地址1024对应的存储空间存储的数据是最新修改的数据。如果第一逻辑地址为逻辑地址0,则所确定的第三物理地址为物理地址1024。需要说明的是,在索引表中,针对与同一个逻辑地址具有对应关系的物理地址,也可以物理地址是按照存储空间存储数据的先后顺序排列的,存储有最新修改的数据的存储空间对应的物理地址排在最后面。索引表可以通过B树等数据结构存储,B树是二叉搜索树。
具体的,所述获取请求还包括所述第二数据的大小;
所述根据预先记录的逻辑地址与物理地址之间的对应关系,确定与所述第一逻辑地址具有对应关系的第三物理地址,包括:
判断所述第二数据的大小是否大于所述第一阈值;
如果否,根据预先记录的逻辑地址与物理地址之间的对应关系,确定与所述第一逻辑地址具有对应关系的第三物理地址;
如果是,根据所述逻辑地址分配规则,确定所述第二数据除所述第一逻辑地址之外的其他的逻辑地址;针对每一所确定的逻辑地址,根据预先记录逻辑地址与物理地址之间的关联关系,确定该逻辑地址具有对应关系的第三物理地址。
在本发明实施例中,如果一个待存储的数据的大小超过预设第一阈值,则需要将数据分割成数据块进行存储,在获取该数据时,需要获取该数据的所有数据块。为了能够确定待获取的数据是否是以数据块的形式存储,需要判断第二数据的大小是否大于预设第一阈值,如果小于或等于,说明第二数据不是以数据块的形式存储,可以按照上述所说的第三物理地址确定方式,确定存储空间存储有第二数据的物理地址,作为第三物理地址。
如果第二数据的大小大于预设第一阈值,说明存储的数据是磁盘中是以数据块的形式存储的。基于第二数据的大小、预设第一阈值的大小以及预先设置的分割规则,能够确定将第二数据分割成的数据块的数量;按照逻辑地址分配规则,能够确定每一数据块的逻辑地址。根据上述为每一数据块分配逻辑地址的方法可知,第一逻辑地址为其中数据块的逻辑地址,每一逻辑地址对应着一个数据块。在确定完逻辑地址之后,针对每一所确定的逻辑地址,根据预先记录的逻辑地址与物理地址之间的关系,即可确定该逻辑地址对应的第三物理地址。如果与一个数据块的逻辑地址具有对应关系的物理地址有多个,则可以选择存储数据时间最晚的存储空间对应的物理地址,作为第三物理地址。这样可以在待获取的数据以数据块的形式存储时,确定每一数据块的存储位置,进而能够准确地获取待获取数据的全部数据块。
S115:从所确定的第三物理地址对应的存储空间中,获取第二数据。
在确定第三物理地址之后,存储驱动将获取请求中包含的第一逻辑地址修改为第三物理地址,并将修改后的获取请求发送给磁盘,磁盘接收该修改后的获取请求并执行,从第三物理地址对应的存储空间中读取第二数据,将读取到的第二数据发送给存储驱动。
具体的,在所述第二数据的大小大于所述预设第一阈值的情况下,所述从所确定的第三物理地址对应的存储空间中,获取所述第二数据,包括:
从所确定的第三物理地址,获取所述第二数据的数据块;
在获取所述第二数据的全部数据块后,基于所获取的数据块,生成所述第二数据。
如果第二数据的大小大于预设第一阈值,则确定出的第三物理地址的数量不止一个,每一所确定的第三物理地址对应的存储空间中存储第二数据的其中一个数据块,因此,需要从每一第三物理地址对应的存储空间中,获取第二数据的数据块。在获取到第二数据的全部数据块后,可以基于分割规则,将数据块拼接成第二数据,也可以采用其他的方法,对获取的数据块进行处理,生成第二数据,在此不进行一一列举。
应用本发明实施例,通过记录的逻辑地址与物理地址之间的对应关系,确定待获取数据的存储位置,从所确定的存储位置获取待获取数据,提高了获取数据的准确性。
图7为本发明实施例所提供的存储空间回收方法的第一种流程示意图。基于图5所提供的实施例,本发明实施例所提供的存储空间回方法,可以包括:
S116:根据预先记录的逻辑地址与物理地址之间的对应关系,获得所述磁盘中每一区域中有效数据的数量,其中,所述有效数据为第四物理地址对应的存储空间中存储的数据,所述第四物理地址为与同一个逻辑地址具有对应关系的物理地址中,存储数据时间最晚的存储空间对应的物理地址。
在本发明实施例中,更改前和更改后的数据存储在不同的物理地址对应的存储空间,数据更改不断占用存储空间,为了提高存储空间的有效利用率,节省存储空间,需要对存储空间进行回收。对存储空间的回收,需要先根据预先记录的逻辑地址与物理地址之间的对应关系,获得每一区域中有效数据的数量。针对同一个数据,不断地进行修改并存储,最后一次存储的数据可以称之为有效数据。存储时间最晚的数据是最新存储的数据。在同一个逻辑地址对应的物理地址只有一个的情况下,该物理地址对应的存储空间存储的数据为有效数据。在同一个逻辑地址对应的物理地址有多个的情况下,将最后进行数据存储的物理地址对应的存储空间中存储的数据确定为有效数据。
需要说明的是,本发明实施例中提供的存储空间回收方法是基于上述数据存储方法的基础上的存储空间回收方法。可以理解的是,在S101-S112执行的任意时刻,均有可能执行S116-S122,在本发明实施例中,对S116-S122的执行时机不进行限定。
S117:将有效数据的数量小于预设第二阈值的区域确定为待清理区域,将有效数据的数量大于预设第三阈值的区域确定为待存储区域;其中,所述待存储区域为存在所述第二物理地址的区域。
在本发明实施例中,待清理区域为需要清理该区域中数据的区域,可以通过第二阈值和每一区域的有效数据的数量,确定所有区域中哪些是待清理区域。第二阈值可以是预先确定的,可以获得的每一区域的有效数据的数量确定,示例性的,可以将所有区域有效数据的数量的平均值作为第二阈值,也可以将所有有效数据的数量的众数作为第二阈值等等;也可以根据经验值确定。第三阈值可以采用与确定第二阈值相同的原理进行确定。需要说明的是,第二阈值和第三阈值可以是相同的值,也可以是不同的值。
在本发明实施例里中,在第二阈值和第三阈值不相同的情况下,有可能存在既不是待清理区域,也不是待存储区域的区域。需要说明的是,第三阈值大于第二阈值,则确定出的待清理区域和待存储区域中不存在相同的区域,这样避免了在后续回收存储空间时,对一个既为待清理区域又为待存储区域中的数据重复操作而造成的存储空间回收效率降低,资源浪费等情况的出现。
S118:从各个待清理区域中确定目标待清理区域。
在本发明实施例中,可以从各个待清理区域中随机选择一个区域作为目标待清理区域,也可以选择一个有效数据数量最少或最多的区域作为目标待清理区域,当然,也存在其他的方法确定目标待清理区域,在这里不进行一一列举。
具体的,所述从各个待清理区域中确定目标待清理区域,包括:
从所述待清理区域中选择一个有效数据的数量最少的待清理区域,确定为目标待清理区域。
选择有效数据的数量最少的待清理区域,作为目标待清理区域,减少了目标待清理区域中有效数据存储至目标待存储区域的时间。另外,一个区域的有效数据少,说明该可能存在大量的未存储数据的空间,或者大量的垃圾数据,将该区域中的有效数存储转移到目标待存储区域,减少了修改针对目标待清理区域中的有效数据记录的逻辑地址与物理地址之间的对应关系的次数,减少了资源的浪费。
S119:从各个待存储区域中选择所述目标待清理区域的目标待存储区域。
目标待清理区域的目标待存储区域可以为一个区域,也可以为多个区域,在这里不进行限定。
所述根据每一待存储区域中有效数据的数量,从各个待存储区域中选择所述目标待清理区域的目标待存储区域,包括:
从所述待存储区域中,确定所述目标待清理区域的目标待存储区域,其中,所述目标待存储区域为当前有效数据的数量最多、且有效数据的数量小于该存储区域的存储空间数量的待存储区域。
如果一个待存储区域中,有效数据的数量等于该区域的存储空间数量,说明该待存储区域中每一存储空间存储的数据均是有效数据,为了避免数据的丢失,不会将待清理区域中的数据存储至该待存储区域,即该待存储区域不能被确定为目标待存储区域。选择当前有效数量最多,且有效数据的数量小于该存储区域的存储空间数量的待存储区域,可以使得该待存储区域很快地变成存储的全部是有效数据的区域,将数据集中在一个区域,这样有利于存储空间的管理。
具体地,根据从各个待存储区域中选择所述目标待清理区域的目标待存储区域,可以包括:
从各个待存储区域中,选择目标数量不小于所述目标待清理区域中有效数据的数量的待存储区域,作为目标待存储区域,其中,目标数量为该待存储区域的存储空间的数量与有效数据的数量之差。
在本发明实施例中,直接选择一个能够存储目标待清理区域中的所有有效数据的待存储区域,作为目标待存储区域,具体地,选择一个目标数量不小于目标待清理区域中有效数据的数量的待存储区域。目标数量是一个待存储区域中存储空间的数量与有效数据的数量之差,目标数量也可以理解为一个待存储区域中第二物理地址的数量与垃圾数据的数量之和,存储空间的数量可以理解为一个区域中物理地址的数量。每个待存储区域的存储空间是固定的,在确定每一待存储区域中有效数据的数量之后,就可以获得每一待存储区域的目标数量。需要说明的是,待存储区域中的有效数据的数量是动态变化地,当将待清理区域中的有效数据存储至待存储区域,该待存储区域中的有效数据的数量增加。
针对一个目标待清理区域,选择一个目标待存储区域,选择方法简单便捷,能够比较快确定出目标待清理区域,将目标待清理区域中的有效数据存储至目标待存储区域,可以回收存储空间,减少了存储空间不足出现的可能性。
S120:将所述目标待清理区域中的有效数据存储至所述目标待存储区域,并删除所述目标待清理区域中的数据。
在本发明实施例,在获取每一区域的有效数据的时候,也获取了每一区域有效数据的存储位置,即存储空间存储有该有效数据的物理地址,从目标待清理区域中每一有效数据的存储位置获取有效数据,将所获取的有效数据存储至目标待清理区域,进一步地,是分别存储至目标待存储区域中存储空间未存储数据的物理地址对应的存储空间,或存储有垃圾数据对应的存储空间,这样避免了待清理区域中的有效数据将目标待存储区域中的有效数据覆盖,不会造成数据的丢失。垃圾数据是与同一个逻辑地址具有对应关系的物理地址中,存储数据时间不是最晚的物理地址中存储的数据。将目标待清理区域的有效数据存储至存储有垃圾数据对应的存储空间,可以理解为先将该存储空间中的垃圾数据删除,再将有效数据存储至该存储空间,即有效数据将该空间的垃圾数据覆盖。
在将目标待清理区域中的有效数据全部存储至目标待存储区域之后,将目标待清理区域中的数据删除,这样回收了存储空间,减少了存储空间不足出现的可能性,提供了一个没有存储数据的区域,选择该区域作为目标区域,并在该区域存储数据,减少了磁头寻道和旋转的时间。
S121:将针对目标有效数据记录的逻辑地址与物理地址之间的对应关系修改为:逻辑地址与第五物理地址之间的对应关系,其中,所述目标有效数据为:所述目标待存储区域中来自所述目标待清理区域的有效数据,每一目标有效数据对应的第五物理地址为:该目标有效数据在所述目标待存储区域中的物理地址。
为了在获取数据的时候,能够获取到正确地数据,避免因为存储空间的回收而使得数据获取的准确率下降,需要修改针对目标有效数据记录记录的逻辑地址与物理地址的对应关系,将针对该目标有效数据的对应关系中的物理地址修改为该目标有效数据在目标待存储区域中的物理地址。示例性的,目标有效数据为数据2,针对数据2记录的逻辑地址与物理地址之间的对应关系为:逻辑地址A:物理地址C。数据2当前存储于目标待存储区域中物理地址P对应的存储空间,则针对数据2修改后的对应关系为:逻辑地址A:物理地址P。
S122:从各个待清理区域中存在未被确定为所述目标待清理区域的区域时,从未被确定为所述目标待清理区域的区域中重新确定所述目标待清理区域,并返回执行S119的步骤。
在所有待清理区域没有全部被确定为目标待清理区域的时候,说明没有将需要清理的区域清理完,需要从未被确定为目标待清理区域的区域中重新确定目标待清理区域,即从未被确定为目标待清理区域的区域中选择一个区域作为目标待清理区域,直至所有的待清理区域均被确定为目标待清理区域。
所述在各个待清理区域中存在未被确定为所述目标待清理区域的区域时,从未被确定为所述目标待清理区域的区域中重新确定所述目标待清理区域,包括:
从未确定为所述目标待清理区域的待清理区域中,选择一个有效数据的数量最少的待清理区域,将所述目标待清理区域更新为当前所选择的待清理区域。
需要说明的是,从未确定为所述目标待清理区域的待清理区域中,选择一个有效数据的数量最少的待清理区域的原理与从待存储区域中,确定所述目标待清理区域的目标待存储区域的原理相同,在此不进行赘述。
应用本发明实施例,先将目标待清理区域中的有效数据存储至目标待存储区域,再将目标待清理区域中的数据删除,释放了目标待清理区域的存储空间,实现了存储空间的回收,有效地解决了存储空间膨胀的问题,减少了存储空间不足出现的可能性。
图8为本发明实施例所提供的存储空间回收方法的第二种流程示意图。基于图7所提供的实施例,本发明实施例所提供的存储空间回收方法,将所述目标待清理区域中的有效数据存储至所述目标待存储区域,并删除所述目标待清理区域中的数据(S120),可以包括:
S1201:将所述目标待清理区域中的有效数据存储至所述目标待存储区域。
需要说明的是,S1201与上述所说的将目标清理区域中的有效数据存储至目标待存储区域的方法相同,在此不进行赘述。
S1202:判断所述目标待清理区域中是否存在未被存储至所述目标待存储区域中的有效数据,如果否,执行S1203,如果是,执行S1204。
在本发明实施例中,记录存储至目标待存储区域的有效数据在目标待存储区域的存储位置和在目标待清理区域中的存储位置,根据预先获取的每一区域中有效数据的存储位置和存储至目标待存储区域的有效数据在目标待清理区域中的存储位置,判断目标待清理区域中是否存在未被存储至目标待存储区域中的有效数据。
S1203:删除所述目标待清理区域中的数据。
如果目标待清理区域中不存在未被存储至所述目标待存储区域中的有效数据,说明目标待清理区域中的所有有效数据已经存储至目标待存储区域,则可以删除目标待清理区域中的数据,便于存储空间的管理。
S1204:从所述待存储区域中除所述目标待存储区域之外的待存储区域选择一个待存储区域,将所述目标待存储区域更新为所选择的待存储区域。
如果目标待清理区域中存在未被存储至所述目标待存储区域中的有效数据,则还需要选择一个目标待存储区域,将剩下的有效数据存储至新确定的目标待存储区域,因为当前的目标待存储区域没有可以用于存储数据的存储空间。
在本发明实施例中,可以从除当前的目标待存储区域之外的待存储区域中,随机选择一个待存储区域;也可以从除当前的目标待存储区域之外的待存储区域中,选择一个当前有效数据最多、且存在第二物理地址或垃圾数据的待存储区域;还可以从从除当前的目标待存储区域之外的待存储区域中,选择一个第二物理地址的数量与垃圾数据的数量之和不小于当前目标待存储区域剩余的有效数据的数量的待存储区域。
S1205:将所述目标待清理区域中除所述目标有效数据之外的有效数据存储至更新后的目标待存储区域,并返回执行S1202的步骤。
需要说明的是,目标有效数据已经存储至之前所确定的目标待存储区域,在目标待存储区域中还存在未存储至目标待存储区域的有效数据的情况下,将剩余的有效数据存储至更新后的目标待存储区域。
应用本发明实施例,在目标待清理区域中的有效数据没有全部存储至目标待存储区域的情况下,重新确定目标待存储区域,将目标待清理区域中的剩余的有效数据存储至新确定的目标待存储区域,这样利有利于存储空间的回收,减少了存储空间不足出现的可能性;并且避免了将目标待存储区域中的数据删除时,因为还存在有效数据未被转移而造成的数据丢失情况的出现。
图9为本发明实施例所提供的存储空间回收方法的第三种流程示意图。基于图7所提供的实施例,本发明实施例所提供的存储空间回收方法,在所有待清理区域中的数存储的数据删除之后,方法还可以包括:
S123:将当前所有存在有效数据的区域中的垃圾数据删除,其中,所述垃圾数据为第六物理地址对应的存储空间中存储的数据,所述第六物理地址为与同一个逻辑地址具有对应关系的物理地址中,除所述第四物理地址之外的物理地址。
对于待清理区域,在将该待清理区域中的有效数据存储至目标待存储区域之后,将该待清理区域中的所有数据均删除。为了进一步回收存储空间,将当前所有存在有效数据的区域中的垃圾数据删除。
应用本发明实施例,将当前存在有效数据的区域中的垃圾数据删除,可以回收更多的存储空间,减少了存储空间不足出现的可能性。
与图1所示的方法实施例相对应,图10为本发明实施例提供的数据存储装置的第一种结构示意图,应用于存储驱动,该装置包括:第一获得模块201、第一判断模块202、第二判断模块203和第一存储模块204,其中,
第一获得模块201,用于获得待存储数据;
第一判断模块202,用于判断所述待存储数据的大小是否大于预设第一阈值;
第二判断模块203,用于在所述第一判断模块202的判断结果为否的情况下,判断磁盘中第一物理地址对应的存储空间是否存储有数据;其中,所述第一物理地址为所述磁盘中与目标物理地址相连的物理地址,所述目标物理地址为存储有第一数据的存储空间对应的物理地址,所述第一数据为当前最新存储的数据;
第一存储模块204,用于在所述第二判断模块203的判断结果为未存储数据的情况下,将所述待存储数据存储至所述第一物理地址对应的存储空间。
具体的,所述第二判断模块203,还用于判断磁盘中存储所述第一数据的区域中的第一物理地址对应的存储空间是否存储有数据;其中,所述磁盘由预设数量个区域组成。
应用本发明实施例,如果第一物理地址对应的存储空间未存储数据,将数据存储到第一物理地址对应的存储空间,而不是先存储到缓存系统中,不会因缓存系统出现故障而导致数据丢失,减少了的在数据存储过程中的数据丢失的风险。
与图3所示的方法实施例相对应,图11为本发明实施例提供的数据存储装置的第二种结构示意图,该装置还可以包括分割模块205和第二存储模块206;其中,
分割模块205,用于所述第一判断模块202的判断结果为是情况下,将所述待存储数据分割成数据块,其中,分割得到的每一数据块的大小均不大于每一物理地址对应的存储空间所能存储的数据的大小;
第二存储模块206,用于存储分割得到的每一数据块。
应用本发明实施例,能够在待存储数据大小预设第一阈值的情况下,将待存储数据分割成数据块进行存储,因而,可以存储比较大的数据。
与图4所示的方法实施例相对应,图12为本发明实施例提供的数据存储装置的第三种结构示意图,该装置还可以包括设置模块207、分配模块208和第一记录模块209;其中,
所述第一获得模块201,还用于获得待存储数据和所述待存储数据的逻辑地址;
设置模块207,用于从分割得到的数据块中选择一个数据块,将所选择的数据块的逻辑地址设置为所述待存储数据的逻辑地址;
分配模块208,用于按照预先设置的逻辑地址分配规则,为分割得到的数据块中除所选择数据块外的每一数据块分配逻辑地址;
第一记录模块209,用于记录分割得到的每一数据块的逻辑地址与存储空间对应的物理地址之间的对应关系。
应用本发明实施例,在存储的时候,记录数据块的逻辑地址与存储空间对应的物理地址之间的对应关系,主要用于在数据读取的时候能够准确地每一数据块所存储的位置,从而准确地获取每一数据块。
与图5所示的方法实施例相对应,图13为本发明实施例提供的数据存储装置的第四种结构示意图,该装置还可以包括第一选择模块210、第一确定模块211和第二记录模块212,其中,
第一选择模块210,用于在所述第一判断模块202的判断结果为是,且所述第二判断模块203的判断结果为是的情况下,从所述磁盘中除存储所述第一数据的区域之外的区域中选择一个存在第二物理地址的区域,确定为目标区域,其中,所述第二物理地址为所述磁盘中存储空间未存储数据的物理地址;
第一确定模块211,用于从所述目标区域中选择一个存储空间未存储数据的物理地址,确定为第一物理地址,并执行所述存储模块;
第二记录模块212,用于记录所述待存储数据的逻辑地址与物理地址之间的对应关系。
应用本发明实施例,在第一物理地址对应的存储空间存储有数据时,在其他的区域选择一个存储空间未存储数据的物理地址,作为第一物理地址,能够使得数据存储至磁盘中,而且,在其他区域选择一个物理地址,可以减少下一次进行数据存储时,节省磁头寻道和旋转的时间,提高随机写的性能。
与图6所示的方法实施例相对应,图14为本发明实施例提供的数据获取装置的结构示意图,该装置还可以包括接收模块213、第二确定模块214、获取模块215,其中,
接收模块213,用于接收用于获得所述第二数据的获取请求,其中,所述获取请求包括第一逻辑地址;
第二确定模块214,用于根据预先记录的逻辑地址与物理地址之间的对应关系,确定与所述第一逻辑地址具有对应关系的第三物理地址;
获取模块215,用于从所确定的第三物理地址对应的存储空间中,获取所述第二数据。
需要说明的是,本发明实施例所提供的数据获取装置是基于图10的实施例提供的数据存储装置的基础上的数据获取装置。
具体的,所述获取请求还包括所述第二数据的大小;
所述第二确定模块214,可以包括第一判断子模块、第一确定子模块和第三确定子模块(图中未示出),其中,
第一判断子模块,用于判断所述第二数据的大小是否大于所述第一阈值;
第一确定子模块,用于在所述第一判断子模块的判断结果为否的情况下,根据预先记录的逻辑地址与物理地址之间的对应关系,确定与所述第一逻辑地址具有对应关系的第三物理地址;
第二确定子模块,用于在所述第一判断子模块的判断结果为是的情况下,根据所述逻辑地址分配规则,确定所述第二数据除所述第一逻辑地址之外的其他的逻辑地址;
第三确定子模块,用于针对每一所确定的逻辑地址,根据预先记录逻辑地址与物理地址之间的关联关系,确定该逻辑地址具有对应关系的第三物理地址;
所述获取模块215,包括获取子模块和生成子模块(图中未示出),其中,
获取子模块,用于在所述第一判断子模块的判断结果为是的情况下,从所确定的第三物理地址,获取所述第二数据的数据块;
生成子模块,用于在获取所述第二数据的全部数据块后,基于所获取的数据块,生成所述第二数据。
具体的,所述第一确定子模块,包括第一确定单元和第二确定单元(图中未示出);
第一确定单元,用于在所述判断子模块的判断结果为否的情况下,根据预先记录的逻辑地址与物理地址之间的对应关系,确定与所述第一逻辑地址具有对应关系的物理地址;
第二确定单元,用于从所确定的物理地址中,确定存储数据时间最晚的存储空间对应的物理地址,作为第三物理地址。
应用本发明实施例,通过记录的逻辑地址与物理地址之间的对应关系,确定待获取数据的存储位置,从所确定的存储位置获取待获取数据,提高了获取数据的准确性。
与图7所示的方法实施例相对应,图15为本发明实施例提供的存储空间回收装置的第一种结构示意图,该装置还可以包括第二获得模块216、第三确定模块217、第四确定模块218、选择模块219、第一删除模块220、修改模块221和第五确定模块222,其中,
第二获得模块216,用于根据预先记录的逻辑地址与物理地址之间的对应关系,获得所述磁盘中每一区域中有效数据的数量,其中,所述有效数据为第四物理地址对应的存储空间中存储的数据,所述第四物理地址为与同一个逻辑地址具有对应关系的物理地址中,存储数据时间最晚的存储空间对应的物理地址;
第三确定模块217,用于将有效数据的数量小于预设第二阈值的区域确定为待清理区域,将有效数据的数量大于预设第三阈值的区域确定为待存储区域;其中,所述待存储区域为存在所述第二物理地址的区域;
第四确定模块218,用于从各个待清理区域中确定目标待清理区域:
选择模块219,用于从各个待存储区域中选择所述目标待清理区域的目标待存储区域;
第一删除模块220,用于将所述目标待清理区域中的有效数据存储至所述目标待存储区域,并删除所述目标待清理区域中的数据;
修改模块221,用于针对目标有效数据记录的逻辑地址与物理地址之间的对应关系修改为:逻辑地址与第五物理地址之间的对应关系,其中,所述目标有效数据为:所述目标待存储区域中来自所述目标待清理区域的有效数据,每一目标有效数据对应的第五物理地址为:该目标有效数据在所述目标待存储区域中的物理地址;
第五确定模块222,用于在各个待清理区域中存在未被确定为所述目标待清理区域的区域时,从未被确定为所述目标待清理区域的区域中重新确定所述目标待清理区域,并返回执行所述选择模块219。
需要说明的是,本发明实施例所提供的存储空间回收装置是基于图10的实施例提供的数据存储装置的基础上的存储空间回收装置。
所述第四确定模块218,还用于从所述待清理区域中选择一个第二数量最少的待清理区域,确定为目标待清理区域;
所述选择模块219,还用于从所述待存储区域中,确定所述目标待清理区域的目标待存储区域,其中,所述目标待存储区域为当前有效数据的数量最多、且有效数据的数量小于该存储区域的存储空间的数量的待存储区域;
所述第五确定模块222,还用于从未确定为所述目标待清理区域的待清理区域中,选择一个有效数据的数量最少的待清理区域,将所述目标待清理区域更新为当前所选择的待清理区域。
所述选择模块219,还用于从各个待存储区域中选择第二物理地址的数量不小于所述目标待清理区域中有效数据的数量的区域,作为目标待存储区域。
应用本发明实施例,先将目标待清理区域中的有效数据存储至目标待存储区域,再将目标待清理区域中的数据删除,释放了目标待清理区域的存储空间,实现了存储空间的回收,有效地解决了存储空间膨胀的问题,减少了存储空间不足出现的可能性。
与图8所示的方法实施例相对应,图16为本发明实施例提供的存储空间回收装置的第二种结构示意图,第一删除模块220包括第一存储子模块2201、第二判断子模块2202、删除子模块2203、更新子模块2204和第二存储子模块2205,其中,
第一存储子模块2201,用于将所述目标待清理区域中的有效数据存储至所述目标待存储区域;
第二判断子模块2202,用于判断所述目标待清理区域中是否存在未被存储至所述目标待存储区域中的有效数据;
删除子模块2203,用于在所述第二判断子模块2202的判断结果为否的情况下,删除所述目标待清理区域中的数据;
更新子模块2204,用于在所述第二判断子模块的判断结果为是的情况下,从所述待存储区域中除所述目标待存储区域之外的待存储区域选择一个待存储区域,将所述目标待存储区域更新为所选择的待存储区域;
第二存储子模块2205,用于将所述目标待清理区域中除所述目标有效数据之外的有效数据存储至更新后的目标待存储区域,并返回执行第二判断子模块2202。
应用本发明实施例,在目标待清理区域中的有效数据没有全部存储至目标待存储区域的情况下,重新确定目标待存储区域,将目标待清理区域中的剩余的有效数据存储至新确定的目标待存储区域,这样利有利于存储空间的回收,减少了存储空间不足出现的可能性;并且避免了将目标待存储区域中的数据删除时,因为还存在有效数据未被转移而造成的数据丢失情况的出现。
与图9所示的方法实施例相对应,图17为本发明实施例提供的存储空间回收装置的第三种结构示意图,该装置还可以包括第二删除模块223,其中,
第二删除模块223,用于在所有待清理区域中的数存储的数据删除之后,将当前所有存在有效数据的区域中的垃圾数据删除,其中,所述垃圾数据为第六物理地址对应的存储空间中存储的数据,所述第六物理地址为与同一个逻辑地址具有对应关系的物理地址中,除所述第四物理地址之外的物理地址。
应用本发明实施例,将当前存在有效数据的区域中的垃圾数据删除,可以回收更多的存储空间,减少了存储空间不足出现的可能性。
本发明实施例还提供了一种电子设备,如图18所示,包括处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信,
存储器303,用于存放计算机程序;
处理器301,用于执行存储器303上所存放的程序时,实现如下步骤:
获得待存储数据;
判断所述待存储数据的大小是否大于预设第一阈值;
如果否,判断磁盘中第一物理地址对应的存储空间是否存储有数据;其中,所述第一物理地址为所述磁盘中与目标物理地址相连的物理地址,所述目标物理地址为存储有第一数据的存储空间对应的物理地址,所述第一数据为当前最新存储的数据;
如果未存储数据,将所述待存储数据存储至所述第一物理地址对应的存储空间。
上述电子设备的其他实现方式与前述方法实施例中提及的各种实现方式相同,这里不再赘述。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
应用本发明实施例,如果第一物理地址对应的存储空间未存储数据,将数据存储到第一物理地址对应的存储空间,而不是先存储到缓存系统中,不会因缓存系统出现故障而导致数据丢失,减少了的在数据存储过程中的数据丢失的风险。
在本发明提供的又一实施例中,一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行上述实施例中任一所述的数据存储方法。
应用本发明实施例,如果第一物理地址对应的存储空间未存储数据,将数据存储到第一物理地址对应的存储空间,而不是先存储到缓存系统中,不会因缓存系统出现故障而导致数据丢失,减少了的在数据存储过程中的数据丢失的风险。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (28)
1.一种数据存储方法,其特征在于,应用于存储驱动,所述方法包括:
获得待存储数据;
判断所述待存储数据的大小是否大于预设第一阈值;
如果否,判断磁盘中第一物理地址对应的存储空间是否存储有数据;其中,所述第一物理地址为所述磁盘中与目标物理地址相连的物理地址,所述目标物理地址为存储有第一数据的存储空间对应的物理地址,所述第一数据为当前最新存储的数据;
如果未存储数据,将所述待存储数据存储至所述第一物理地址对应的存储空间。
2.根据权利要求1所述的方法,其特征在于,所述判断磁盘中第一物理地址对应的存储空间是否存储有数据,包括:
判断磁盘中存储所述第一数据的区域中的第一物理地址对应的存储空间是否存储有数据;其中,所述磁盘由预设数量个区域组成。
3.根据权利要求1或2所述的方法,其特征在于,在判断所述待存储数据大于预设第一阈值的情况下,所述方法还包括:
将所述待存储数据分割成数据块,其中,分割得到的每一数据块的大小均不大于每一物理地址对应的存储空间所能存储的数据的大小;
存储分割得到的每一数据块。
4.根据权利要求3所述的方法,其特征在于,所述获得待存储数据,包括:
获得待存储数据和所述待存储数据的逻辑地址;
在所述将所述目标数据分割成数据块之后,所述方法还包括:
从分割得到的数据块中选择一个数据块,将所选择的数据块的逻辑地址设置为所述待存储数据的逻辑地址;
按照预先设置的逻辑地址分配规则,为分割得到的数据块中除所选择数据块外的每一数据块分配逻辑地址;
记录分割得到的每一数据块的逻辑地址与存储空间对应的物理地址之间的对应关系。
5.根据权利要求4所述的方法,其特征在于,在判断出所述待存储数据的大小不大于预设第一阈值、且所述磁盘中存储第一数据的区域中的第一物理地址对应的存储空间存储有数据的情况下,所述方法还包括:
从所述磁盘中除存储所述第一数据的区域之外的区域中选择一个存在第二物理地址的区域,确定为目标区域,其中,所述第二物理地址为所述磁盘中存储空间未存储数据的物理地址;
从所述目标区域中选择一个存储空间未存储数据的物理地址,确定为第一物理地址,并执行所述将所述待存储数据存储至所述第一物理地址对应的存储空间的步骤;
在所述将所述待存储数据存储至所述第一物理地址对应的存储空间之后,所述方法还包括:
记录所述待存储数据的逻辑地址与物理地址之间的对应关系。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
接收用于获得第二数据的获取请求,其中,所述获取请求包括第一逻辑地址;
根据预先记录的逻辑地址与物理地址之间的对应关系,确定与所述第一逻辑地址具有对应关系的第三物理地址;
从所确定的第三物理地址对应的存储空间中,获取所述第二数据。
7.根据权利要求6所述的方法,其特征在于,所述获取请求还包括所述第二数据的大小;
所述根据预先记录的逻辑地址与物理地址之间的对应关系,确定与所述第一逻辑地址具有对应关系的第三物理地址,包括:
判断所述第二数据的大小是否大于所述第一阈值;
如果否,根据预先记录的逻辑地址与物理地址之间的对应关系,确定与所述第一逻辑地址具有对应关系的第三物理地址;
如果是,根据所述逻辑地址分配规则,确定所述第二数据除所述第一逻辑地址之外的其他的逻辑地址;针对每一所确定的逻辑地址,根据预先记录逻辑地址与物理地址之间的关联关系,确定该逻辑地址具有对应关系的第三物理地址;
在所述第二数据的大小大于所述预设第一阈值的情况下,所述从所确定的第三物理地址对应的存储空间中,获取所述第二数据,包括:
从所确定的第三物理地址,获取所述第二数据的数据块;
在获取所述第二数据的全部数据块后,基于所获取的数据块,生成所述第二数据。
8.根据权利要求6所述的方法,其特征在于,所述根据预先记录的逻辑地址与物理地址之间的对应关系,确定与所述第一逻辑地址具有对应关系的第三物理地址,包括:
根据预先记录的逻辑地址与物理地址之间的对应关系,确定与所述第一逻辑地址具有对应关系的物理地址;
从所确定的物理地址中,确定存储数据时间最晚的存储空间对应的物理地址,作为第三物理地址。
9.根据权利要求5所述的方法,其特征在于,所述方法还包括:
根据预先记录的逻辑地址与物理地址之间的对应关系,获得所述磁盘中每一区域中有效数据的数量,其中,所述有效数据为第四物理地址对应的存储空间中存储的数据,所述第四物理地址为与同一个逻辑地址具有对应关系的物理地址中,存储数据时间最晚的存储空间对应的物理地址;
将有效数据的数量小于预设第二阈值的区域确定为待清理区域,将有效数据的数量大于预设第三阈值的区域确定为待存储区域;其中,所述待存储区域为存在所述第二物理地址的区域;
从各个待清理区域中确定目标待清理区域;
从各个待存储区域中选择所述目标待清理区域的目标待存储区域;
将所述目标待清理区域中的有效数据存储至所述目标待存储区域,并删除所述目标待清理区域中的数据;
将针对目标有效数据记录的逻辑地址与物理地址之间的对应关系修改为:逻辑地址与第五物理地址之间的对应关系,其中,所述目标有效数据为:所述目标待存储区域中来自所述目标待清理区域的有效数据,每一目标有效数据对应的第五物理地址为:该目标有效数据在所述目标待存储区域中的物理地址;
在各个待清理区域中存在未被确定为所述目标待清理区域的区域时,从未被确定为所述目标待清理区域的区域中重新确定所述目标待清理区域,并返回执行所述从各个待存储区域中选择所述目标待清理区域的目标待存储区域的步骤。
10.根据权利要求9所述的方法,其特征在于,所述从各个待清理区域中确定目标待清理区域,包括:
从所述待清理区域中选择一个有效数量最少的待清理区域,确定为目标待清理区域;
所述从各个待存储区域中选择所述目标待清理区域的目标待存储区域,包括:
从所述待存储区域中,确定所述目标待清理区域的目标待存储区域,其中,所述目标待存储区域为当前有效数据的数量最多、且有效数据的数量小于该存储区域的存储空间数量的待存储区域;
所述在各个待清理区域中存在未被确定为所述目标待清理区域的区域时,从未被确定为所述目标待清理区域的区域中重新确定所述目标待清理区域,包括:
从未确定为所述目标待清理区域的待清理区域中,选择一个有效数据的数量最少的待清理区域,将所述目标待清理区域更新为当前所选择的待清理区域。
11.根据权利要求10所述的方法,其特征在于,所述将所述目标待清理区域中的有效数据存储至所述目标待存储区域,并删除所述目标待清理区域中的数据,包括:
将所述目标待清理区域中的有效数据存储至所述目标待存储区域;
判断所述目标待清理区域中是否存在未被存储至所述目标待存储区域中的有效数据;
如果否,删除所述目标待清理区域中的数据;
如果是,从所述待存储区域中除所述目标待存储区域之外的待存储区域选择一个待存储区域,将所述目标待存储区域更新为所选择的待存储区域;
将所述目标待清理区域中除所述目标有效数据之外的有效数据存储至更新后的目标待存储区域,并返回执行所述判断所述目标待清理区域中是否存在未被存储至所述目标待存储区域中的有效数据的步骤。
12.根据权利要求9所述的方法,其特征在于,所述根据从各个待存储区域中选择所述目标待清理区域的目标待存储区域,包括:
从各个待存储区域中选择目标数量不小于所述目标待清理区域中有效数据的数量的区域,作为目标待存储区域,其中,目标数量为该待存储区域的存储空间的数量与有效数据的数量之差。
13.根据权利要求9-12任一项所述的方法,其特征在于,在所有待清理区域中的数存储的数据删除之后,所述方法还包括:
将当前所有存在有效数据的区域中的垃圾数据删除,其中,所述垃圾数据为第六物理地址对应的存储空间中存储的数据,所述第六物理地址为与同一个逻辑地址具有对应关系的物理地址中,除所述第四物理地址之外的物理地址。
14.一种数据存储装置,其特征在于,应用于存储驱动,所述装置包括:
第一获得模块,用于获得待存储数据;
第一判断模块,用于判断所述待存储数据的大小是否大于预设第一阈值;
第二判断模块,用于在所述第一判断模块的判断结果为否的情况下,判断磁盘中第一物理地址对应的存储空间是否存储有数据;其中,所述第一物理地址为所述磁盘中与目标物理地址相连的物理地址,所述目标物理地址为存储有第一数据的存储空间对应的物理地址,所述第一数据为当前最新存储的数据;
第一存储模块,用于在所述第二判断模块的判断结果为未存储数据的情况下,将所述待存储数据存储至所述第一物理地址对应的存储空间。
15.根据权利要求14所述的装置,其特征在于,所述第二判断模块,还用于判断磁盘中存储所述第一数据的区域中的第一物理地址对应的存储空间是否存储有数据;其中,所述磁盘由预设数量个区域组成。
16.根据权利要求14所述的装置,其特征在于,所述装置还包括:
分割模块,用于所述第一判断模块的判断结果为是情况下,将所述待存储数据分割成数据块,其中,分割得到的每一数据块的大小均不大于每一物理地址对应的存储空间所能存储的数据的大小;
第二存储模块,用于存储分割得到的每一数据块。
17.根据权利要求16所述的装置,其特征在于,所述第一获得模块,还用于获得待存储数据和所述待存储数据的逻辑地址;
所述装置还包括:
设置模块,用于从分割得到的数据块中选择一个数据块,将所选择的数据块的逻辑地址设置为所述待存储数据的逻辑地址;
分配模块,用于按照预先设置的逻辑地址分配规则,为分割得到的数据块中除所选择数据块外的每一数据块分配逻辑地址;
第一记录模块,用于记录分割得到的每一数据块的逻辑地址与存储空间对应的物理地址之间的对应关系。
18.根据权利要求17所述的装置,其特征在于,所述装置还包括:
第一选择模块,用于在所述第一判断模块的判断结果为是,且所述第二判断模块的判断结果为是的情况下,从所述磁盘中除存储所述第一数据的区域之外的区域中选择一个存在第二物理地址的区域,确定为目标区域,其中,所述目标区域为存在第二物理地址的区域,所述第二物理地址为所述磁盘中存储空间未存储数据的物理地址;
第一确定模块,用于从所述目标区域中选择一个存储空间未存储数据的物理地址,确定为第一物理地址,并执行所述存储模块;
第二记录模块,用于记录所述待存储数据的逻辑地址与物理地址之间的对应关系。
19.根据权利要求18所述的装置,其特征在于,所述装置还包括:
接收模块,用于接收用于获得所述第二数据的获取请求,其中,所述获取请求包括第一逻辑地址;
第二确定模块,用于根据预先记录的逻辑地址与物理地址之间的对应关系,确定与所述第一逻辑地址具有对应关系的第三物理地址;
获取模块,用于从所确定的第三物理地址对应的存储空间中,获取所述第二数据。
20.根据权利要求19所述的装置,其特征在于,所述获取请求还包括所述第二数据的大小;
所述第二确定模块,包括:
第一判断子模块,用于判断所述第二数据的大小是否大于所述第一阈值;
第一确定子模块,用于在所述第一判断子模块的判断结果为否的情况下,根据预先记录的逻辑地址与物理地址之间的对应关系,确定与所述第一逻辑地址具有对应关系的第三物理地址;
第二确定子模块,用于在所述第一判断子模块的判断结果为是的情况下,根据所述逻辑地址分配规则,确定所述第二数据除所述第一逻辑地址之外的其他的逻辑地址;
第三确定子模块,用于针对每一所确定的逻辑地址,根据预先记录逻辑地址与物理地址之间的关联关系,确定该逻辑地址具有对应关系的第三物理地址;
所述获取模块,包括:
获取子模块,用于在所述第一判断子模块的判断结果为是的情况下,从所确定的第三物理地址,获取所述第二数据的数据块;
生成子模块,用于在获取所述第二数据的全部数据块后,基于所获取的数据块,生成所述第二数据。
21.根据权利要求18所述的装置,其特征在于,所述第一确定子模块,包括:
第一确定单元,用于在所述判断子模块的判断结果为否的情况下,根据预先记录的逻辑地址与物理地址之间的对应关系,确定与所述第一逻辑地址具有对应关系的物理地址;
第二确定单元,用于从所确定的物理地址中,确定存储数据时间最晚的存储空间对应的物理地址,作为第三物理地址。
22.根据权利要求18所述的装置,其特征在于,所述装置还包括:
第二获得模块,用于根据预先记录的逻辑地址与物理地址之间的对应关系,获得所述磁盘中每一区域中有效数据的数量,其中,所述有效数据为第四物理地址对应的存储空间中存储的数据,所述第四物理地址为与同一个逻辑地址具有对应关系的物理地址中,存储数据时间最晚的存储空间对应的物理地址;
第三确定模块,用于将有效数据的数量小于预设第二阈值的区域确定为待清理区域,将有效数据的数量大于预设第三阈值的区域确定为待存储区域;其中,所述待存储区域为存在所述第二物理地址的区域;
第四确定模块,用于从各个待清理区域中确定目标待清理区域:
选择模块,用于从各个待存储区域中选择所述目标待清理区域的目标待存储区域;
第一删除模块,用于将所述目标待清理区域中的有效数据存储至所述目标待存储区域,并删除所述目标待清理区域中的数据;
修改模块,用于针对目标有效数据记录的逻辑地址与物理地址之间的对应关系修改为:逻辑地址与第五物理地址之间的对应关系,其中,所述目标有效数据为:所述目标待存储区域中来自所述目标待清理区域的有效数据,每一目标有效数据对应的第五物理地址为:该目标有效数据在所述目标待存储区域中的物理地址;
第五确定模块,用于在各个待清理区域中存在未被确定为所述目标待清理区域的区域时,从未被确定为所述目标待清理区域的区域中重新确定所述目标待清理区域,并返回执行所述选择模块。
23.根据权利要求22所述的装置,其特征在于,所述第四确定模块,还用于从所述待清理区域中选择一个第二数量最少的待清理区域,确定为目标待清理区域;
所述选择模块,还用于从所述待存储区域中,确定所述目标待清理区域的目标待存储区域,其中,所述目标待存储区域为当前有效数据的数量最多、且有效数据的数量小于该存储区域的存储空间的数量的待存储区域;
所述第五确定模块,还用于从未确定为所述目标待清理区域的待清理区域中,选择一个有效数据的数量最少的待清理区域,将所述目标待清理区域更新为当前所选择的待清理区域。
24.根据权利要求23所述的装置,其特征在于,所述第一删除模块,包括:
第一存储子模块,用于将所述目标待清理区域中的有效数据存储至所述目标待存储区域;
第二判断子模块,用于判断所述目标待清理区域中是否存在未被存储至所述目标待存储区域中的有效数据;
删除子模块,用于在所述第二判断子模块的判断结果为否的情况下,删除所述目标待清理区域中的数据;
更新子模块,用于在所述第二判断子模块的判断结果为是的情况下,从所述待存储区域中除所述目标待存储区域之外的待存储区域选择一个待存储区域,将所述目标待存储区域更新为所选择的待存储区域;
第二存储子模块,用于将所述目标待清理区域中除所述目标有效数据之外的有效数据存储至更新后的目标待存储区域,并返回执行第二判断子模块。
25.根据权利要求22所述的装置,其特征在于,所述选择模块,还用于从各个待存储区域中选择目标数量不小于所述目标待清理区域中有效数据的数量的区域,作为目标待存储区域,其中,目标数量为该待存储区域的存储空间的数量与有效数据的数量之差。
26.根据权利要求22-25任一项所述的装置,其特征在于,所述装置还包括:
第二删除模块,用于在所有待清理区域中的数存储的数据删除之后,将当前所有存在有效数据的区域中的垃圾数据删除,其中,所述垃圾数据为第六物理地址对应的存储空间中存储的数据,所述第六物理地址为与同一个逻辑地址具有对应关系的物理地址中,除所述第四物理地址之外的物理地址。
27.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-13任一所述的方法步骤。
28.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-13任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710441708.4A CN108572792B (zh) | 2017-06-13 | 2017-06-13 | 数据存储方法、装置、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710441708.4A CN108572792B (zh) | 2017-06-13 | 2017-06-13 | 数据存储方法、装置、电子设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108572792A true CN108572792A (zh) | 2018-09-25 |
CN108572792B CN108572792B (zh) | 2021-06-11 |
Family
ID=63576095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710441708.4A Active CN108572792B (zh) | 2017-06-13 | 2017-06-13 | 数据存储方法、装置、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108572792B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110069217A (zh) * | 2019-04-10 | 2019-07-30 | 新华三信息安全技术有限公司 | 一种数据存储方法及装置 |
CN110968271A (zh) * | 2019-11-25 | 2020-04-07 | 北京劲群科技有限公司 | 一种高性能数据存储方法、系统与装置 |
CN111078584A (zh) * | 2018-10-19 | 2020-04-28 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
CN111367464A (zh) * | 2018-12-25 | 2020-07-03 | 北京兆易创新科技股份有限公司 | 一种存储空间管理方法及装置 |
CN111367463A (zh) * | 2018-12-25 | 2020-07-03 | 北京兆易创新科技股份有限公司 | 一种存储空间管理方法及装置 |
CN111405040A (zh) * | 2020-03-16 | 2020-07-10 | 北京星际荣耀空间科技有限公司 | 一种实时数据处理方法、装置及设备 |
CN111752466A (zh) * | 2019-03-27 | 2020-10-09 | 深圳市茁壮网络股份有限公司 | 一种数据存储方法及装置 |
CN111984609A (zh) * | 2020-08-19 | 2020-11-24 | 北京龙鼎源科技股份有限公司 | 数据存储方法、装置、存储介质和处理器 |
CN113361683A (zh) * | 2021-05-18 | 2021-09-07 | 山东师范大学 | 一种生物仿脑存储方法及系统 |
CN113535067A (zh) * | 2020-04-21 | 2021-10-22 | 中移动信息技术有限公司 | 数据存储方法、装置、设备及存储介质 |
CN114697393A (zh) * | 2020-12-28 | 2022-07-01 | 北京金山云网络技术有限公司 | 一种数据存储方法、装置、设备及介质 |
CN115344434A (zh) * | 2022-10-19 | 2022-11-15 | 紫光同芯微电子有限公司 | 用于打补丁的方法及装置、电子设备、存储介质 |
CN115858410A (zh) * | 2023-02-16 | 2023-03-28 | 浪潮电子信息产业股份有限公司 | 一种io处理方法、装置、设备及存储介质 |
CN116701382A (zh) * | 2023-08-03 | 2023-09-05 | 成都数默科技有限公司 | 基于clickhouse数据库的自动高效数据回滚方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101350217A (zh) * | 2007-07-17 | 2009-01-21 | 普诚科技股份有限公司 | 数据写入存储器的装置及其方法 |
CN103176753A (zh) * | 2013-03-07 | 2013-06-26 | 深圳市江波龙电子有限公司 | 存储设备及其数据管理方法 |
US9129652B1 (en) * | 2014-03-04 | 2015-09-08 | Inodyn Newmedia Gmbh | Method for efficient write operations on a data carrier with overlapping data tracks and device thereof |
CN105446888A (zh) * | 2014-05-30 | 2016-03-30 | 华为技术有限公司 | 存储设备间移动数据的方法、控制器和存储系统 |
CN105518612A (zh) * | 2015-07-29 | 2016-04-20 | 深圳市锐明技术股份有限公司 | 一种监控数据的写入方法及装置 |
US20170017571A1 (en) * | 2015-07-17 | 2017-01-19 | Samsung Electronics Co., Ltd. | Method and apparatus fori n-line deduplication in storage devices |
CN106656631A (zh) * | 2017-01-19 | 2017-05-10 | 武汉噢易云计算股份有限公司 | 在共享存储上实现逻辑卷动态分配的方法及系统 |
CN106776967A (zh) * | 2016-12-05 | 2017-05-31 | 哈尔滨工业大学(威海) | 基于时序聚合算法的海量小文件实时存储方法及装置 |
-
2017
- 2017-06-13 CN CN201710441708.4A patent/CN108572792B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101350217A (zh) * | 2007-07-17 | 2009-01-21 | 普诚科技股份有限公司 | 数据写入存储器的装置及其方法 |
CN103176753A (zh) * | 2013-03-07 | 2013-06-26 | 深圳市江波龙电子有限公司 | 存储设备及其数据管理方法 |
US9129652B1 (en) * | 2014-03-04 | 2015-09-08 | Inodyn Newmedia Gmbh | Method for efficient write operations on a data carrier with overlapping data tracks and device thereof |
CN105446888A (zh) * | 2014-05-30 | 2016-03-30 | 华为技术有限公司 | 存储设备间移动数据的方法、控制器和存储系统 |
US20170017571A1 (en) * | 2015-07-17 | 2017-01-19 | Samsung Electronics Co., Ltd. | Method and apparatus fori n-line deduplication in storage devices |
CN105518612A (zh) * | 2015-07-29 | 2016-04-20 | 深圳市锐明技术股份有限公司 | 一种监控数据的写入方法及装置 |
CN106776967A (zh) * | 2016-12-05 | 2017-05-31 | 哈尔滨工业大学(威海) | 基于时序聚合算法的海量小文件实时存储方法及装置 |
CN106656631A (zh) * | 2017-01-19 | 2017-05-10 | 武汉噢易云计算股份有限公司 | 在共享存储上实现逻辑卷动态分配的方法及系统 |
Non-Patent Citations (2)
Title |
---|
ANTHONY LEHMANN;REBECCA CHAPLIN-KRAMER;MARTIN LACAYO: ""Lifting the Information Barriers to Address Sustainability Challenges with Data from Physical Geography and Earth Observation"", 《SUSTAINABILITY》 * |
王鹏: ""云计算信息共享平台数据服务安全实现策略"", 《舰船科学技术》 * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078584A (zh) * | 2018-10-19 | 2020-04-28 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
CN111367463B (zh) * | 2018-12-25 | 2023-05-09 | 兆易创新科技集团股份有限公司 | 一种存储空间管理方法及装置 |
CN111367464B (zh) * | 2018-12-25 | 2024-02-20 | 兆易创新科技集团股份有限公司 | 一种存储空间管理方法及装置 |
CN111367464A (zh) * | 2018-12-25 | 2020-07-03 | 北京兆易创新科技股份有限公司 | 一种存储空间管理方法及装置 |
CN111367463A (zh) * | 2018-12-25 | 2020-07-03 | 北京兆易创新科技股份有限公司 | 一种存储空间管理方法及装置 |
CN111752466A (zh) * | 2019-03-27 | 2020-10-09 | 深圳市茁壮网络股份有限公司 | 一种数据存储方法及装置 |
CN111752466B (zh) * | 2019-03-27 | 2024-02-13 | 深圳市茁壮网络股份有限公司 | 一种数据存储方法及装置 |
CN110069217A (zh) * | 2019-04-10 | 2019-07-30 | 新华三信息安全技术有限公司 | 一种数据存储方法及装置 |
CN110069217B (zh) * | 2019-04-10 | 2023-02-21 | 新华三信息安全技术有限公司 | 一种数据存储方法及装置 |
CN110968271B (zh) * | 2019-11-25 | 2024-02-20 | 北京劲群科技有限公司 | 一种高性能数据存储方法、系统与装置 |
CN110968271A (zh) * | 2019-11-25 | 2020-04-07 | 北京劲群科技有限公司 | 一种高性能数据存储方法、系统与装置 |
CN111405040A (zh) * | 2020-03-16 | 2020-07-10 | 北京星际荣耀空间科技有限公司 | 一种实时数据处理方法、装置及设备 |
CN113535067A (zh) * | 2020-04-21 | 2021-10-22 | 中移动信息技术有限公司 | 数据存储方法、装置、设备及存储介质 |
CN111984609A (zh) * | 2020-08-19 | 2020-11-24 | 北京龙鼎源科技股份有限公司 | 数据存储方法、装置、存储介质和处理器 |
CN114697393A (zh) * | 2020-12-28 | 2022-07-01 | 北京金山云网络技术有限公司 | 一种数据存储方法、装置、设备及介质 |
CN113361683A (zh) * | 2021-05-18 | 2021-09-07 | 山东师范大学 | 一种生物仿脑存储方法及系统 |
CN115344434A (zh) * | 2022-10-19 | 2022-11-15 | 紫光同芯微电子有限公司 | 用于打补丁的方法及装置、电子设备、存储介质 |
CN115858410A (zh) * | 2023-02-16 | 2023-03-28 | 浪潮电子信息产业股份有限公司 | 一种io处理方法、装置、设备及存储介质 |
CN116701382A (zh) * | 2023-08-03 | 2023-09-05 | 成都数默科技有限公司 | 基于clickhouse数据库的自动高效数据回滚方法 |
CN116701382B (zh) * | 2023-08-03 | 2023-10-20 | 成都数默科技有限公司 | 基于clickhouse数据库的自动高效数据回滚方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108572792B (zh) | 2021-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108572792A (zh) | 数据存储方法、装置、电子设备及计算机可读存储介质 | |
US9513817B2 (en) | Free space collection in log structured storage systems | |
JP6890401B2 (ja) | 多重モード格納管理装置、多重モード格納装置、及びその選別潜在露出(sue)マッピング動作方法 | |
US8775751B1 (en) | Aggressive reclamation of tier-1 storage space in presence of copy-on-write-snapshots | |
US20190146912A1 (en) | Namespace Change Propagation in Non-Volatile Memory Devices | |
US20130117524A1 (en) | Management of recycling bin for thinly-provisioned logical volumes | |
US20050187985A1 (en) | File system defragmentation technique via write allocation | |
CN105593828A (zh) | 管理文件的方法、分布式存储系统和管理节点 | |
KR20170056413A (ko) | 다중 모드 동작들을 위해 다중 파티션을 포함하는 저장 장치, 및 그것의 동작 방법 | |
KR102538126B1 (ko) | 테일 레이턴시를 인식하는 포어그라운드 가비지 컬렉션 알고리즘 | |
JP2017091524A (ja) | 格納媒体を多重モードで動作させる管理システム、それを含む格納システム、及びそれを利用して格納媒体を管理する方法 | |
JP2013509658A (ja) | 将来の使用推量に基づく記憶メモリの割り当て | |
EP2836900B1 (en) | Creating encrypted storage volumes | |
CN110321301A (zh) | 一种数据处理的方法及装置 | |
CN106610903A (zh) | 层级化存储器系统、存储器控制器和去重及存储器层级化方法 | |
CN103761053A (zh) | 一种数据处理方法和装置 | |
US11119912B2 (en) | Ordering data updates for improving garbage collection being performed while performing the set of data updates | |
CN108595503A (zh) | 文件处理方法及服务器 | |
WO2008006674A1 (en) | Reserve pool management in virtualized storage systems | |
CN106133707A (zh) | 高速缓存管理 | |
CN104216759A (zh) | 一种生成虚拟机的逻辑磁盘的方法,及装置 | |
CN106844222A (zh) | 固态硬盘的数据处理的方法和设备 | |
US10114566B1 (en) | Systems, devices and methods using a solid state device as a caching medium with a read-modify-write offload algorithm to assist snapshots | |
CN108399050A (zh) | 一种数据处理方法及装置 | |
US7792966B2 (en) | Zone control weights |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |