CN107315533A - 一种数据存储方法及装置 - Google Patents
一种数据存储方法及装置 Download PDFInfo
- Publication number
- CN107315533A CN107315533A CN201610269953.7A CN201610269953A CN107315533A CN 107315533 A CN107315533 A CN 107315533A CN 201610269953 A CN201610269953 A CN 201610269953A CN 107315533 A CN107315533 A CN 107315533A
- Authority
- CN
- China
- Prior art keywords
- storage
- data
- virtual memory
- stored
- destination
- 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.)
- Pending
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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- 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
-
- 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/0608—Saving storage space on storage systems
-
- 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/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
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为本发明实施例提供的一种数据存储方法的流程示意图;
图2为本发明实施例提供的一种虚拟存储段的结构示意图;
图3为本发明实施例提供的一种元数据存储段中元数据排布示意图;
图4为本发明实施例提供的另一种数据存储方法的流程示意图;
图5为本发明实施例提供的另一种数据存储方法的流程示意图;
图6为本发明实施提供的虚拟存储段的分配方法的流程示意图;
图7为本发明实施例提供的一种数据存储装置的结构示意图;
图8为本发明实施例提供的另一种数据存储装置的结构示意图;
图9为本发明实施例提供的另一种数据存储装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面通过具体实施例,对本发明进行详细说明。
参考图1,图1为本发明实施例提供的一种数据存储方法的流程示意图,应用于终端,该终端包括至少一个磁盘,磁盘按照物理地址可以划分为多个虚拟存储段,多个虚拟存储段对应的物理地址范围不重合;该方法可以包括如下步骤:
S101:接收针对待存储数据的存储请求;
其中,存储请求中包括:待存储数据对应的目标文件的标识。这里,存储请求中还可以包括待存储数据的数据量等信息,本发明对此不进行限定。
S102:根据存储请求中包括的待存储数据对应的目标文件的标识和元数据存储段中存储的信息,确定用于存储待存储数据的目标虚拟存储段;
其中,元数据存储段为多个虚拟存储段中标识为预设值的虚拟存储段,用于存储各个虚拟存储段与已存储文件之间的对应关系以及各个虚拟存储段的存储状态。这里,虚拟存储段的存储状态包括可存储状态和不可存储状态。
上述预设值可以为0、1、2等等,本申请并不对此进行限定。
在本发明的一种具体实现方式中,在未向磁盘中存储任何数据前,需要对文件***进行格式化,确定磁盘的类型,进而确定每个Vzone(虚拟存储段)对应的物理地址段的大小,将磁盘根据物理地址分为多个Vzone,文件***将这些Vzone作为磁盘的最小存储管理单元,根据Vzone确定待存储数据的存储位置。
具体地,当确定的磁盘类型为Host Manage或Host Aware时,每个Vzone对应的物理地址段的大小与实际的物理存储区域的大小相等,这里,Host Manage磁盘或Host Aware磁盘为SMA(Shingled Magnetic Recording,叠瓦式磁记录技术)磁盘的一种,SMR磁盘分为Host Manage、Host Aware和Drive Manage,HostManage为一种由主机端控制读写的磁盘,其不支持随机写操作;Host Aware为一种由主机端控制读写的磁盘,其支持随机写操作,但随机写操作时写性能下降;Drive Manage为一种由磁盘控制读写的磁盘,其支持随机写操作;所述SMR磁盘的读写对象指磁盘实际的物理地址;
当确定的磁盘类型不是Host Manage和Host Aware时,可以根据实际的数据存储需求确定每个Vzone对应的物理地址段的大小,如,当磁盘中经常存储大数据的文件时,可以将Vzone对应的物理地址段的大小设置的大些;当磁盘中经常存储小数据的文件时,可以将Vzone对应的物理地址段的大小设置的小些。
在本发明的一种具体实现方式中,文件***将磁盘的物理地址划分成多个num(X)至num(X+1)段,如图2所示,图2为本发明实施例提供的一种虚拟存储段的结构示意图,其中,num(x)和num(x+1)各代表不同的物理地址,即num(x)至num(x+1)为一个物理地址段;每个物理地址段对应一个Vzone。假设,第一个Vzone也就是Vzone0为元数据存储段,那么,该Vzone0对应的物理地址段的大小可以与其他Vzone对应的物理地址段的大小不同,且能够作随机写操作;Vzone1-Vzonex的物理地址段的大小相等,并且在该区域只能作顺序的写操作。另外,文件与Vzone的对应关系为:一对多,即:一个文件的数据可以存储在多个Vzone中,当然文件与Vzone的对应关系也可以为:多对一,即:一个Vzone也可以存储多个文件。
另外,Vzone0存储元数据,Vzone1-Vzonex存储文件的数据,利于元数据和数据区的集中分配,避免磁盘中存储数据的碎片化。
实际应用中,元数据存储段用于存储元数据,这里元数据可以包括:超级块、文件索引、文件位图、Vzone位图和映射表;其他Vzone用于存放实际的文件数据。具体地,可参考图3,图3为本发明实施例提供的一种元数据存储段中元数据排布示意图,其中,
Boot block:预留空间,用于存放磁盘分区信息等;
Super block:超级块,即文件***相关信息,包含了当前文件***分配到的Vzone的编号,Vzone的总个数,空闲Vzone的总个数、单个zone对应多文件的阈值、文件***允许的最大文件个数(即文件索引inode个数),其中,一个文件索引对应一个文件;另外,super block back为该区域的备份;
Vzone bitmap:Vzone位图,每一位代表一个Vzone,1代表已使用,0代表未使用;另外,Vzone bitmap back为该区域的备份;
Inode bitmap:文件索引位图,每一位代表一个文件,1代表已使用,0代表未使用;文件创建时,会查找该位图,每次根据位图,由小到大分配索引号;
Inode:文件索引,描述了文件的信息,包括映射表的起始物理地址;另外,文件索引也记录了文件与Vzone的对应方式,即一个Vzone对应多个文件(multi)还是一个Vzone只能被该文件所拥有(only);包含当前文件使用的Vzone的编号;另外,Inode back为该区域的备份;
hik map:映射表,记录每个文件逻辑地址与磁盘的物理地址的对应关系;
Vzone description:Vzone描述符。描述了当前Vzone的使用者(文件)的个数;描述了当前Vzone写指针的位置;另外,Vzone description back为该区域的备份。
需要说明的是,本申请只是以上述为例进行说明,并不对以上元数据的排布顺序和占用空间大小进行限定,仅仅表明Vzone0中记录了这些元数据;另外,超级块存储了空闲的Vzone的个数,结合Vzone位图中记录的空闲Vzone的编号,可以快速的获得目标Vzone。
这种情况下,当接收到针对待存储数据的存储请求时,就可以根据元数据存储段中存储的上述信息,确定用于存储该待存储数据的目标Vzone。
S103:获得目标虚拟存储段中所存储数据的末尾存储位置,并将所获得的存储位置确定为待存储数据的起始存储位置;
假设,目标虚拟存储段为超级块中记录的当前文件***分配到的Vzone的编号,则可以根据将Vzone描述符中记录的该Vzone写指针的位置,确定待存储数据的起始存储位置。这里,当前Vzone写指针的位置就是该当前Vzone中所存储数据的末尾存储位置。
S104:从起始存储位置开始存储待存储数据。
实际应用中,终端的磁盘中可能包含多个物理存储区域zone,zone为磁盘的最小物理存储单元,而每个磁盘的zone的数据存储算法是有差异的,因此,待存储数据是不允许跨zone存储的。为了保证数据的跨zone存储,步骤S104可以包括:
S01、获得待存储数据的数据量;
S02、根据待存储数据的数据量,确定要存储待存储数据的各个目标物理存储区域;
具体地,根据待存储数据的数据量,可以确定出要存储待存储数据的目标Vzone,因为Vzone与zone存在对应关系,进而确定出要存储待存储数据的各个目标zone。如,一待存储数据a的数据量为100kB,确定的目标Vzone为Vzone1,该待存储数据对应的Vzone1的存储空间正好对应zone1和zone2,因此可以确定出目标物理存储区域为zone1和zone2。
S03、在待存储数据要跨区域存储的情况下,根据所确定的各个目标物理存储区域的可用存储容量和待存储数据的数据量,将待存储数据划分为与各个目标物理存储区域对应的数据块;
根据步骤S02中所述,可以确定待存储数据a要跨区域存储,假设,zone1的可用存储容量为30kB,zone2的可用存储容量为80kB,而zone1对应的物理地址段在前,zone2对应的物理地址段在后,因此,将待存储数据a划分为数据量为30kB的数据块和70kB的数据块。
S04、将划分得到的数据块分别存储至对应的目标物理存储区域中。
这种情况下,有效地避免了将待存储数据作为一整个数据块进行跨区域数据存储时,数据存储不成功的问题。
在本发明的一种具体实现方式中,若待存储数据不需要跨区域存储,则可以直接从起始存储位置开始存储该待存储数据。
值得一提的是,本发明中所提到的多个为至少两个。
应用图1所示实施例,终端接收针对待存储数据的存储请求,根据存储请求中包括该待存储数据对应的的目标文件的标识和元数据存储段中存储的信息,确定用于存储该待存储数据的目标虚拟存储段,获得目标虚拟存储段中所存储数据的末尾存储位置,并将所获得的存储位置确定为该待存储数据的起始存储位置,从起始存储位置开始存储该待存储数据。这样,就不需要按照存储空间物理地址的顺序查找空闲存储空间,并且也不需要每次都对查找到的空闲存储空间进行判断,以确定其是否可以存储目标数据,只需要在元数据存储段中查找相应的目标存储段就可以了,有效的减少了寻道耗时。
参考图4,图4为本发明实施例提供的另一种数据存储方法的流程示意图,应用于终端,该终端包括至少一个磁盘,磁盘按照物理地址可以划分为多个虚拟存储段,多个虚拟存储段对应的物理地址范围不重合;该方法中,步骤S102可以包括如下步骤:
S1021:根据存储请求中包括的待存储数据对应的目标文件的标识,判断目标文件是否处于已存储状态,若为是,则执行步骤S1022;
在本发明的一种具体实现方式中,上述数据存储方法还可以包括:
S11、接收针对待创建文件的文件创建指令;
实际应用中,若要存储一数据,需要先创建针对该数据的文件,如,在复制一个数据a的过程为:创建针对数据a的文件A,将数据a存储至文件A中。
S12、创建待创建文件,并在元数据存储段中将待创建文件的存储状态设置为未存储状态,拒绝确定待创建文件的数据的起始存储位置。
具体地,在元数据存储段中存储有针对每一文件的文件索引Inode,并且Inode包括文件与该文件对应的Vzone的对应关系,若仅创建了文件A,而并未向该文件A中存储数据,则只需要为该文件A分配索引号,无需为该文件A分配Vzone,也就是说,无需为该文件A分配物理地址段,进而不会去确定存储该文件A的起始存储位置,减少了未存储数据的文件占用存储空间的可能,并且减少了终端的工作量。另外,Inode中该文件A对应的Vzone的编号设置为表示未分配的值,如-1。
实际应用中,当终端存储数据时,若读取到的待存储数据对应的目标文件的标识在Inode中对应的Vzone的编号不是-1时,就可以认为处于已存储状态,对于处于已存储状态的文件A的数据a,最好是将数据a存储在属于文件A的其他数据的相邻的区域中,便于终端获得该文件A的数据;若目标文件的标识对应的Vzone的编号是-1时,就可以认为处于未存储状态,对于处于未存储状态的文件的数据,只需要获得能够存储该数据a的区域就可以了,为了快速的存储数据,可以在元数据存储段中获得当前Vzone(如上述步骤S102中提到的超级块中记录的当前文件***分配到的Vzone的编号对应的Vzone),从该当前Vzone中或与该当前Vzone物理地址最近的Vzone中获得能够存储该数据的Vzone就可以了。
S1022:根据元数据存储段中存储的信息,获得存储目标文件的第一虚拟存储段;
具体地,若目标文件处于已存储状态,则可以从元数据存储段中存储的Inode中获得与该目标文件的标识对应存储的第一虚拟存储段的编号,进而确定出存储目标文件的第一虚拟存储段。
S1023:判断第一虚拟存储段是否处于可存储状态,若处于可存储状态,则执行步骤S1024,若处于不可存储状态,则执行步骤S1025;
具体地,当获得的第一虚拟存储段中存储的数据的数据量达到虚拟存储段的存储容量时,可以确定该第一虚拟存储段为处于不可存储状态,否则处于可存储状态。
需要说明的是,获得的第一虚拟存储段可能为一个,也可能为多个。
S1024:根据第一虚拟存储段确定用于存储待存储数据的目标虚拟存储段;
在本发明的一种具体实现方式中,上述根据第一虚拟存储段确定用于存储待存储数据的目标虚拟存储段,可以包括:
将第一虚拟存储段中最后一次存储属于目标文件的数据的虚拟存储段,确定为用于待存储数据的目标虚拟存储段。
假设,文件A的数据存储在Vzone1和Vzone2中,当Vzone1和/或Vzone2都处于可存储状态时,由于Vzone2为最后存储的文件A的数据的虚拟存储段,因此确定Vzone2为用于待存储数据的目标虚拟存储段。这样保证了同一文件的数据为按照物理地址的顺序存储的,便于终端快速准确的获取到同一文件的数据。
另外,当Vzone1和/或Vzone2都处于可存储状态时,可以更新文件A的数据,将Vzone2中存储的文件A的数据更新至Vzone1中,若更新后Vzone1仍然处于可存储状态,表明文件A的数据都存储在了Vzone1中,则确定Vzone1为用于待存储数据的目标虚拟存储段,若更新后Vzone1处于不存储状态,并且Vzone2中还存储有文件A数据,则可以确定确定Vzone2为用于待存储数据的目标虚拟存储段。这样既保证了同一文件的数据能够存储在相邻的区域中,也能够有效地避免终端中数据存储的碎片化问题。
S1025:从与第一虚拟存储段的物理地址最近的虚拟存储段中,确定用于存储待存储数据的目标虚拟存储段。
实际应用中,终端根据元数据存储段中存储的信息,按照Vzone的编号从小到大的顺序,也就是按照物理地址从前到后的顺序,从第一虚拟存储段的编号开始向后查找能够用于存储待存储数据的虚拟存储段的编号,确定目标虚拟存储段。
具体地,上述从与第一虚拟存储段的物理地址最近的虚拟存储段中,确定用于存储待存储数据的目标虚拟存储段,可以包括:
S11、获得目标文件的存储方式;
终端中元数据存储段中存储有已存储的每一文件的存储方式,只有确定了目标文件的存储方法,才能知道如何去存储该目标文件的待存储数据,进而确定存该该待存储数据的目标虚拟存储段。这里,存储方式,包括:第一存储方式为:一个虚拟存储段中存储一个文件的存储方式;第二存储方式为:一个虚拟存储段中存储多个文件的存储方式。
S12、在存储方式为第一存储方式的情况下,确定与第一虚拟存储段的物理地址最近且未存储数据的虚拟存储段为用于存储待存储数据的目标虚拟存储段;
这种情况下,只需要从元数据存储段中第一虚拟存储段的编号的位置开始,向后查找空闲的虚拟存储段A(元数据存储段的Vzone位图中标记为未使用的Vzone)的编号,当该空闲的虚拟存储段A中未存储数据,也就是说,Vzone描述符中记录的该空闲的虚拟存储段A的使用者个数为0时,可以确定该虚拟存储段A为目标虚拟存储段;当该虚拟存储段A中使用者个数不是0时,继续向后查找空闲的虚拟存储段B。另外,在一个虚拟存储段中存储了第一存储方式的文件的数据后,该元数据存储段的Vzone位图中标记为已使用的Vzone,避免非该文件的数据写入该Vzone内。
实际应用中,第一存储方式的数据存储可以分为两种:
一、单文件数据存储。当只有一个文件的数据进行存储时,根据写入的数据量,文件***按照Vzone的编号的大小,从小到大(如图2中,从Vzone1到VzoneX)进行分配,并且只有在前一个Vzone写满的情况下,才会再次为该文件分配空闲的Vzone。
二、多文件数据存储。假设同时存储file1和file2的数据,对file1的数据进行写操作,文件***给file1分配了Vzone1,同时对file2的数据进行写操作,文件***给file2分配了Vzone2,由于file1的数据的存储速率较快,相比于file2,file1很快写满了Vzone1,于是文件***继续分配Vzone3给file1,file1的数据写满Vzone3后,继续分配Vzone4给file1;而file2在文件***分配Vzone4给file1之后,才写满Vzone2,此时,文件***分配给file2的是Vzone5。这样,先到先得,从前向后分配Vzone的方式,保证了多文件的数据同时存储时,各文件写入的物理地址跨度小,从而减少了磁盘的寻道时间。
S13:在存储方式为第二存储方式的情况下,获得与第一虚拟存储段的物理地址最近且所存储文件的存储方式不是第一存储方式的第二虚拟存储段;将第二虚拟存储段确定为用于存储待存储数据的目标虚拟存储段。
这种情况下,只需要从元数据存储段中第一虚拟存储段的编号的位置开始,向后查找空闲的虚拟存储段A的编号,可以确定该虚拟存储段A为目标虚拟存储段。当存储该待存储数据后,该虚拟存储段A中使用者个数加1,若此时虚拟存储段A中使用者个数大于阈值(该阈值由超级块中的单个zone对应多文件的阈值的字段决定)时,将该元数据存储段的Vzone位图中标记为已使用的Vzone,避免同一Vzone被多次写入数据,导致周围的Vzone的数据出现异常,如,周围的Vzone的数据被磁化。
应用图4所示实施例,根据存储请求中包括的待存储数据对应的目标文件的标识,在目标文件处于已存储状态,根据元数据存储段中存储的信息,获得存储目标文件的第一虚拟存储段,判断第一虚拟存储段是否处于可存储状态,若处于可存储状态,根据第一虚拟存储段确定用于存储待存储数据的目标虚拟存储段,若处于不可存储状态,从与第一虚拟存储段的物理地址最近的虚拟存储段中,确定用于存储待存储数据的目标虚拟存储段。这样,保证同一文件的数据均存储在最近的能够存储的虚拟存储段中,减少了寻道耗时,且保证了终端能够快速准确的获得同一文件的数据。
参考图5,图5为本发明实施例提供的另一种数据存储方法的流程示意图,应用于终端,该终端包括至少一个磁盘,磁盘按照物理地址可以划分为多个虚拟存储段,多个虚拟存储段对应的物理地址范围不重合;在目标文件处于未存储状态的情况下,该方法中还可以包括如下步骤:
S1026:获得待存储数据的数据量;
具体地,在终端获得待存储数据后,可以根据待存储数据获得该待存储数据的数据量;当然在存储请求中可以包括该待存储数据的数据量,此时,可以直接根据该数据量执行步骤S1027。
S1027:判断所获得的数据量是否大于预设数据量,若大于预设数据量,则执行步骤S1028,若不大于预设数据量,执行步骤S1029;
S1028:确定目标文件的存储方式为第一存储方式;
具体地,所获得的数据量大于预设数据量时,则可以认为该待存储数据对应的目标文件为大数据文件,此时,为提高终端总体的读写性能,将为该目标文件的存储方式确定为第一存储方式,避免大数据文件存储在多个Vzone内,影响终端对该目标文件的读取。
S1029:确定目标文件的存储方式为第二存储方式;
具体地,所获得的数据量不大于预设数据量时,则可以认为该待存储数据对应的目标文件为小数据文件,此时,将为该目标文件的存储方式确定为第二存储方式,避免小数据文件占用一个Vzone,造成存储空间的浪费的问题。
S10210:根据所确定的存储方式,确定用于存储待存储数据的目标虚拟存储段。
具体地,当目标文件的存储方式为第一存储方式时,在元数据存储段中获得当前虚拟存储段的编号(当前文件***分配到的Vzone的编号),从该当前虚拟存储段的编号的位置开始,向后查找并获得空闲的、使用者个数为0的虚拟存储段A的编号,确定该虚拟存储段A为目标虚拟存储段。
当目标文件的存储方式为第二存储方式时,在元数据存储段中获得第一存储方式分配到的Vzone1的编号,在Vzone1的使用者个数为0或Vzone1的使用者的个数超过阈值时,从Vzone1的编号的位置开始,向后查找并获得空闲的Vzone2,在Vzone2的使用者个数不为0的情况下,确定Vzone2为目标虚拟存储段;在Vzone1的使用者个数不为0或Vzone1的使用者的个数未超过阈值时,直接将该Vzone1确定为目标虚拟存储段。这样就避免了使用者个数为0的Vzone被占用,影响第一存储方式的文件的数据存储。
在本发明的一种具体实现方式中,查找分配Vzone的方式的整体策略为先到先得,并且顺序由Vzone1往后依次分配,只有在整个磁盘全部被分配完之后,才会从头开始寻找新的空闲Vzone。此过程由元数据存储段的超级块中当前文件***分配到的Vzone编号和Vzone的位图共同完成。如图6所示,图6为本发明实施提供的虚拟存储段的分配方法的流程示意图,可以包括如下步骤:
S21、判断文件***中是否包含空闲的Vzone;
这里,空闲的Vzone的个数记录在超级块中。若超级块中不含有空闲的Vzone,则返回错误。
S22、根据记录在超级块中文件***上次分配到的Vzone的编号,由该编号对应Vzone的位图开始往后查找空闲的Vzone;
这里,文件***上次分配到的Vzone的编号为元数据存储段中记录的当前Vzone的编号。
S23、若查到Vzone位图的末尾仍未找到空闲的Vzone,那么从Vzone位图的头开始查找。
查找成功后,将空闲的Vzone个数减去分配的个数,并更新文件***上次分配的Vzone号(当前Vzone的编号),以便下次分配时使用。
这种情况下,该方法步骤S104之后,还可以包括:
将目标文件的存储状态设置为已存储状态。
具体地,在Inode中存储该目标文件的标识与Vzone的编号的对应关系,当终端再次存储该目标文件的数据时,读取到相应的Vzone的编号,则可以确定该目标文件处于已存储状态。
应用图5所示实施例,终端获得待存储数据的数据量,判断所获得的数据量是否大于预设数据量,若大于预设数据量,确定目标文件的存储方式为第一存储方式,若不大于预设数据量,确定目标文件的存储方式为第二存储方式,并根据所确定的存储方式,确定用于存储待存储数据的目标虚拟存储段。这样,有效地保证大数据文件的数据的集中存储,并且避免了小数据文件存储浪费存储空间的问题。
参考图7,图7为本发明实施例提供的一种数据存储装置的结构示意图,应用于终端,该终端包括至少一个磁盘,磁盘按照物理地址划分为多个虚拟存储段,多个虚拟存储段对应的物理地址范围不重合;该装置可以包括:
存储请求接收模块701,用于接收针对待存储数据的存储请求,其中,存储请求中包括:待存储数据对应的目标文件的标识;
目标虚拟存储段确定模块702,用于根据目标文件的标识和元数据存储段中存储的信息,确定用于存储待存储数据的目标虚拟存储段,其中,元数据存储段为多个虚拟存储段中标识为预设值的虚拟存储段,用于存储各个虚拟存储段与已存储文件之间的对应关系以及各个虚拟存储段的存储状态;
起始存储位置确定模块703,用于获得目标虚拟存储段中所存储数据的末尾存储位置,并将所获得的存储位置确定为待存储数据的起始存储位置;
数据存储模块704,用于从起始存储位置开始存储待存储数据。
在本发明的一种具体方式中,磁盘中包含多个物理存储区域,物理存储区域为磁盘的最小物理存储单元;
这种情况下,数据存储模块704,可以包括:
第二数据量获得子模块,用于获得待存储数据的数据量;
存储区域确定子模块,用于根据数据量,确定要存储待存储数据的各个目标物理存储区域;
数据块划分子模块,用于在待存储数据要跨区域存储的情况下,根据所确定的各个目标物理存储区域的可用存储容量和数据量,将待存储数据划分为与各个目标物理存储区域对应的数据块;
数据块存储子模块,用于将划分得到的数据块分别存储至对应的目标物理存储区域中(图7中未示出)。
应用图7所示实施例,终端接收针对待存储数据的存储请求,根据存储请求中包括该待存储数据对应的的目标文件的标识和元数据存储段中存储的信息,确定用于存储该待存储数据的目标虚拟存储段,获得目标虚拟存储段中所存储数据的末尾存储位置,并将所获得的存储位置确定为该待存储数据的起始存储位置,从起始存储位置开始存储该待存储数据。这样,就不需要按照存储空间物理地址的顺序查找空闲存储空间,并且也不需要每次都对查找到的空闲存储空间进行判断,以确定其是否可以存储目标数据,只需要在元数据存储段中查找相应的目标存储段就可以了,有效的减少了寻道耗时。
参考图8,图8为本发明实施例提供的另一种数据存储装置的结构示意图,应用于终端,该终端包括至少一个磁盘,磁盘按照物理地址划分为多个虚拟存储段,多个虚拟存储段对应的物理地址范围不重合;该装置中,目标虚拟存储段确定模块702,包括:
第一存储状态判断子模块7021,用于根据目标文件的标识,判断目标文件是否处于已存储状态;
虚拟存储段获得子模块7022,用于在第一存储状态判断子模块判断结果为是的情况下,根据元数据存储段中存储的信息,获得存储目标文件的第一虚拟存储段;
第二存储状态判断子模块7023,用于判断第一虚拟存储段是否处于可存储状态;
第一目标虚拟存储段确定子模块7024,用于在第二存储状态判断子模块判断结果为是的情况下,根据第一虚拟存储段确定用于存储待存储数据的目标虚拟存储段;
第二目标虚拟存储段确定子模块7025,用于在第二存储状态判断子模块判断结果为否的情况下,从与第一虚拟存储段的物理地址最近的虚拟存储段中,确定用于存储待存储数据的目标虚拟存储段。
在本发明的一种具体实现方式中,第一目标虚拟存储段确定子模块7024,具体用于将第一虚拟存储段中最后一次存储属于目标文件的数据的虚拟存储段,确定为用于待存储数据的目标虚拟存储段。
在本发明的一种具体实现方式中,第二目标虚拟存储段确定子模块7025,可以包括:
存储方式获得单元,用于获得目标文件的存储方式;
第一目标虚拟存储段确定单元,用于在存储方式为第一存储方式的情况下,确定与第一虚拟存储段的物理地址最近且未存储数据的虚拟存储段为用于存储待存储数据的目标虚拟存储段,其中,第一存储方式为:一个虚拟存储段中存储一个文件的存储方式;
第二目标虚拟存储段确定单元,用于在存储方式为第二存储方式的情况下,获得与第一虚拟存储段的物理地址最近且所存储文件的存储方式不是第一存储方式的第二虚拟存储段;将第二虚拟存储段确定为用于存储待存储数据的目标虚拟存储段,其中,第二存储方式为:一个虚拟存储段中存储多个文件的存储方式。
在本发明的一种具体实现方式中,上述数据存储装置还可以包括:
创建指令接收模块,用于接收针对待创建文件的文件创建指令;
文件创建模块,用于创建待创建文件,并在元数据存储段中将待创建文件的存储状态设置为未存储状态,拒绝确定待创建文件的数据的起始存储位置(图8中未示出)。
应用图8所示实施例,根据存储请求中包括的待存储数据对应的目标文件的标识,在目标文件处于已存储状态,根据元数据存储段中存储的信息,获得存储目标文件的第一虚拟存储段,判断第一虚拟存储段是否处于可存储状态,若处于可存储状态,根据第一虚拟存储段确定用于存储待存储数据的目标虚拟存储段,若处于不可存储状态,从与第一虚拟存储段的物理地址最近的虚拟存储段中,确定用于存储待存储数据的目标虚拟存储段。这样,保证同一文件的数据均存储在最近的能够存储的虚拟存储段中,减少了寻道耗时,且保证了终端能够快速准确的获得同一文件的数据。
参考图9,图9为本发明实施例提供的另一种数据存储装置的结构示意图,应用于终端,该终端包括至少一个磁盘,磁盘按照物理地址划分为多个虚拟存储段,多个虚拟存储段对应的物理地址范围不重合;该装置中,目标虚拟存储段确定模块702,可以包括:
第一数据量获得子模块7026,用于在第一存储状态判断子模块判断结果为否的情况下,获得待存储数据的数据量;
数据量判断子模块7027,用于判断所获得的数据量是否大于预设数据量;
第一存储方式确定子模块7028,用于在数据量判断子模块判断结果为是的情况下,确定目标文件的存储方式为第一存储方式,其中,第一存储方式为:一个虚拟存储段中存储一个文件的存储方式;
第二存储方式确定子模块7029,用于在数据量判断子模块判断结果为否的情况下,确定目标文件的存储方式为第二存储方式,其中,第二存储方式为:一个虚拟存储段中存储多个文件的存储方式;
第三目标虚拟存储段确定子模块70210,用于根据所确定的存储方式,确定用于存储待存储数据的目标虚拟存储段。
这种情况下,上述数据存储装置还可以包括:
存储状态设置模块,用于将目标文件的存储状态设置为已存储状态(图9中未示出)。
应用图9所示实施例,终端获得待存储数据的数据量,判断所获得的数据量是否大于预设数据量,若大于预设数据量,确定目标文件的存储方式为第一存储方式,若不大于预设数据量,确定目标文件的存储方式为第二存储方式,并根据所确定的存储方式,确定用于存储待存储数据的目标虚拟存储段。这样,有效地保证大数据文件的数据的集中存储,并且避免了小数据文件存储浪费存储空间的问题。
对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (16)
1.一种数据存储方法,应用于终端,其特征在于,所述终端包括至少一个磁盘,所述磁盘按照物理地址划分为多个虚拟存储段,多个虚拟存储段对应的物理地址范围不重合;所述方法包括步骤:
接收针对待存储数据的存储请求,其中,所述存储请求中包括:所述待存储数据对应的目标文件的标识;
根据所述目标文件的标识和元数据存储段中存储的信息,确定用于存储所述待存储数据的目标虚拟存储段,其中,所述元数据存储段为多个虚拟存储段中标识为预设值的虚拟存储段,用于存储各个虚拟存储段与已存储文件之间的对应关系以及各个虚拟存储段的存储状态;
获得所述目标虚拟存储段中所存储数据的末尾存储位置,并将所获得的存储位置确定为所述待存储数据的起始存储位置;
从所述起始存储位置开始存储所述待存储数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标文件的标识和元数据存储段中存储的信息,确定用于存储所述待存储数据的目标虚拟存储段,包括:
根据所述目标文件的标识,判断所述目标文件是否处于已存储状态;
若为是,则根据所述元数据存储段中存储的信息,获得存储所述目标文件的第一虚拟存储段;
判断所述第一虚拟存储段是否处于可存储状态;
若处于可存储状态,则根据所述第一虚拟存储段确定用于存储所述待存储数据的目标虚拟存储段。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一虚拟存储段确定用于存储所述待存储数据的目标虚拟存储段,包括:
将所述第一虚拟存储段中最后一次存储属于所述目标文件的数据的虚拟存储段,确定为用于所述待存储数据的目标虚拟存储段。
4.根据权利要求2或3所述的方法,其特征在于,在判断得知所述第一虚拟 存储段处于不可存储状态的情况下,还包括:
从与所述第一虚拟存储段的物理地址最近的虚拟存储段中,确定用于存储所述待存储数据的目标虚拟存储段。
5.根据权利要求4所述的方法,其特征在于,所述从与所述第一虚拟存储段物理地址最近的虚拟存储段中,确定用于存储所述待存储数据的目标虚拟存储段,包括:
获得所述目标文件的存储方式;
在所述存储方式为第一存储方式的情况下,确定与所述第一虚拟存储段的物理地址最近且未存储数据的虚拟存储段为用于存储所述待存储数据的目标虚拟存储段,其中,所述第一存储方式为:一个虚拟存储段中存储一个文件的存储方式;
在所述存储方式为第二存储方式的情况下,获得与所述第一虚拟存储段的物理地址最近且所存储文件的存储方式不是所述第一存储方式的第二虚拟存储段;将所述第二虚拟存储段确定为用于存储所述待存储数据的目标虚拟存储段,其中,所述第二存储方式为:一个虚拟存储段中存储多个文件的存储方式。
6.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述目标文件处于未存储状态的情况下,获得所述待存储数据的数据量;
判断所获得的数据量是否大于预设数据量;
若大于所述预设数据量,则确定所述目标文件的存储方式为第一存储方式,其中,所述第一存储方式为:一个虚拟存储段中存储一个文件的存储方式;
若不大于所述预设数据量,则确定所述目标文件的存储方式为第二存储方式,其中,所述第二存储方式为:一个虚拟存储段中存储多个文件的存储方式;
根据所确定的存储方式,确定用于存储所述待存储数据的目标虚拟存储段;
所述从所获得的当前数据存储位置开始存储所述待存储数据之后,还包括;
将所述目标文件的存储状态设置为已存储状态。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收针对待创建文件的文件创建指令;
创建所述待创建文件,并在所述元数据存储段中将所述待创建文件的存储状态设置为未存储状态,拒绝确定所述待创建文件的数据的起始存储位置。
8.根据权利要求1所述的方法,其特征在于,所述磁盘中包含多个物理存储区域,所述物理存储区域为所述磁盘的最小物理存储单元;
所述从所述起始存储位置开始存储所述待存储数据,包括:
获得所述待存储数据的数据量;
根据所述数据量,确定要存储所述待存储数据的各个目标物理存储区域;
在所述待存储数据要跨区域存储的情况下,根据所确定的各个目标物理存储区域的可用存储容量和所述数据量,将所述待存储数据划分为与各个目标物理存储区域对应的数据块;
将划分得到的数据块分别存储至对应的目标物理存储区域中。
9.一种数据存储装置,应用于终端,其特征在于,所述终端包括至少一个磁盘,所述磁盘按照物理地址划分为多个虚拟存储段,多个虚拟存储段对应的物理地址范围不重合;所述装置包括:
存储请求接收模块,用于接收针对待存储数据的存储请求,其中,所述存储请求中包括:所述待存储数据对应的目标文件的标识;
目标虚拟存储段确定模块,用于根据所述目标文件的标识和元数据存储段中存储的信息,确定用于存储所述待存储数据的目标虚拟存储段,其中,所述元数据存储段为多个虚拟存储段中标识为预设值的虚拟存储段,用于存储各个虚拟存储段与已存储文件之间的对应关系以及各个虚拟存储段的存储状态;
起始存储位置确定模块,用于获得所述目标虚拟存储段中所存储数据的末尾存储位置,并将所获得的存储位置确定为所述待存储数据的起始存储位置;
数据存储模块,用于从所述起始存储位置开始存储所述待存储数据。
10.根据权利要求9所述的装置,其特征在于,所述目标虚拟存储段确定模块,包括:
第一存储状态判断子模块,用于根据所述目标文件的标识,判断所述目标文件是否处于已存储状态;
虚拟存储段获得子模块,用于在所述第一存储状态判断子模块判断结果为是的情况下,根据所述元数据存储段中存储的信息,获得存储所述目标文件的第一虚拟存储段;
第二存储状态判断子模块,用于判断所述第一虚拟存储段是否处于可存储状态;
第一目标虚拟存储段确定子模块,用于在所述第二存储状态判断子模块判断结果为是的情况下,根据所述第一虚拟存储段确定用于存储所述待存储数据的目标虚拟存储段。
11.根据权利要求10所述的装置,其特征在于,
所述第一目标虚拟存储段确定子模块,具体用于将所述第一虚拟存储段中最后一次存储属于所述目标文件的数据的虚拟存储段,确定为用于所述待存储数据的目标虚拟存储段。
12.根据权利要求10或11所述的装置,其特征在于,所述目标虚拟存储段确定模块,还包括:
第二目标虚拟存储段确定子模块,用于在所述第二存储状态判断子模块判断结果为否的情况下,从与所述第一虚拟存储段的物理地址最近的虚拟存储段中,确定用于存储所述待存储数据的目标虚拟存储段。
13.根据权利要求12所述的装置,其特征在于,所述第二目标虚拟存储段确定子模块,包括:
存储方式获得单元,用于获得所述目标文件的存储方式;
第一目标虚拟存储段确定单元,用于在所述存储方式为第一存储方式的情况下,确定与所述第一虚拟存储段的物理地址最近且未存储数据的虚拟存储段为用于存储所述待存储数据的目标虚拟存储段,其中,所述第一存储方式为:一个虚拟存储段中存储一个文件的存储方式;
第二目标虚拟存储段确定单元,用于在所述存储方式为第二存储方式的情 况下,获得与所述第一虚拟存储段的物理地址最近且所存储文件的存储方式不是所述第一存储方式的第二虚拟存储段;将所述第二虚拟存储段确定为用于存储所述待存储数据的目标虚拟存储段,其中,所述第二存储方式为:一个虚拟存储段中存储多个文件的存储方式。
14.根据权利要求10所述的装置,其特征在于,所述目标虚拟存储段确定模块,还包括:
第一数据量获得子模块,用于在所述第一存储状态判断子模块判断结果为否的情况下,获得所述待存储数据的数据量;
数据量判断子模块,用于判断所获得的数据量是否大于预设数据量;
第一存储方式确定子模块,用于在所述数据量判断子模块判断结果为是的情况下,确定所述目标文件的存储方式为第一存储方式,其中,所述第一存储方式为:一个虚拟存储段中存储一个文件的存储方式;
第二存储方式确定子模块,用于在所述数据量判断子模块判断结果为否的情况下,确定所述目标文件的存储方式为第二存储方式,其中,所述第二存储方式为:一个虚拟存储段中存储多个文件的存储方式;
第三目标虚拟存储段确定子模块,用于根据所确定的存储方式,确定用于存储所述待存储数据的目标虚拟存储段;
所述装置还包括:
存储状态设置模块,用于将所述目标文件的存储状态设置为已存储状态。
15.根据权利要求9所述的装置,其特征在于,所述装置还包括:
创建指令接收模块,用于接收针对待创建文件的文件创建指令;
文件创建模块,用于创建所述待创建文件,并在所述元数据存储段中将所述待创建文件的存储状态设置为未存储状态,拒绝确定所述待创建文件的数据的起始存储位置。
16.根据权利要求9所述的装置,其特征在于,所述磁盘中包含多个物理存储区域,所述物理存储区域为所述磁盘的最小物理存储单元;
所述数据存储模块,包括:
第二数据量获得子模块,用于获得所述待存储数据的数据量;
存储区域确定子模块,用于根据所述数据量,确定要存储所述待存储数据的各个目标物理存储区域;
数据块划分子模块,用于在所述待存储数据要跨区域存储的情况下,根据所确定的各个目标物理存储区域的可用存储容量和所述数据量,将所述待存储数据划分为与各个目标物理存储区域对应的数据块;
数据块存储子模块,用于将划分得到的数据块分别存储至对应的目标物理存储区域中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610269953.7A CN107315533A (zh) | 2016-04-26 | 2016-04-26 | 一种数据存储方法及装置 |
PCT/CN2016/097775 WO2017185579A1 (zh) | 2016-04-26 | 2016-09-01 | 一种数据存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610269953.7A CN107315533A (zh) | 2016-04-26 | 2016-04-26 | 一种数据存储方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107315533A true CN107315533A (zh) | 2017-11-03 |
Family
ID=60161850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610269953.7A Pending CN107315533A (zh) | 2016-04-26 | 2016-04-26 | 一种数据存储方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107315533A (zh) |
WO (1) | WO2017185579A1 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021513A (zh) * | 2016-11-02 | 2018-05-11 | 杭州海康威视数字技术股份有限公司 | 一种数据存储方法及装置 |
CN108255742A (zh) * | 2017-11-29 | 2018-07-06 | 深圳忆联信息***有限公司 | 一种大容量固态硬盘映射方法 |
CN109508143A (zh) * | 2018-08-17 | 2019-03-22 | 郑州云海信息技术有限公司 | 一种数据存储方法及装置 |
CN109683825A (zh) * | 2018-12-24 | 2019-04-26 | 广东浪潮大数据研究有限公司 | 一种存储***在线数据压缩方法、装置及设备 |
WO2019219059A1 (zh) * | 2018-05-17 | 2019-11-21 | 杭州海康威视***技术有限公司 | 一种存储数据的方法、读取数据的方法、装置及*** |
CN111400322A (zh) * | 2020-03-25 | 2020-07-10 | 北京字节跳动网络技术有限公司 | 用于存储数据的方法、装置、电子设备和介质 |
CN111506251A (zh) * | 2019-01-30 | 2020-08-07 | 杭州海康威视***技术有限公司 | 数据处理方法、装置、smr存储***及存储介质 |
CN112199050A (zh) * | 2020-10-22 | 2021-01-08 | Tcl通讯(宁波)有限公司 | 存储方法、装置、存储介质及终端设备 |
CN112214169A (zh) * | 2020-09-28 | 2021-01-12 | 深圳大学 | 一种数据存储装置及存储数据的迁移方法 |
CN113741796A (zh) * | 2020-07-16 | 2021-12-03 | 北京沃东天骏信息技术有限公司 | 一种终端应用的数据持久化方法和装置 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10545921B2 (en) * | 2017-08-07 | 2020-01-28 | Weka.IO Ltd. | Metadata control in a load-balanced distributed storage system |
CN111666330B (zh) * | 2019-03-06 | 2023-05-02 | 阿里巴巴集团控股有限公司 | 数据的读写方法和装置 |
CN110188903B (zh) * | 2019-04-09 | 2022-05-31 | 口碑(上海)信息技术有限公司 | 预点单信息的处理方法及装置 |
CN111240843B (zh) * | 2020-01-10 | 2024-05-14 | 北京聚云立方科技有限公司 | 一种数据获取方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346357A (zh) * | 2013-07-29 | 2015-02-11 | 中国科学院声学研究所 | 一种嵌入式终端的文件存取方法及*** |
CN104461390A (zh) * | 2014-12-05 | 2015-03-25 | 华为技术有限公司 | 将数据写入叠瓦状磁记录smr硬盘的方法及装置 |
CN105094695A (zh) * | 2015-06-29 | 2015-11-25 | 浪潮(北京)电子信息产业有限公司 | 一种存储方法和*** |
CN104636266B (zh) * | 2014-05-09 | 2016-03-30 | 华为技术有限公司 | 盖瓦磁记录硬盘、盖瓦磁记录硬盘写数据的方法及装置 |
US20160103621A1 (en) * | 2014-10-10 | 2016-04-14 | Seagate Technology Llc | Multi-Block Data Storage Using Data Compression |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8700676B2 (en) * | 2010-04-09 | 2014-04-15 | Dell Products L.P. | System and method for appending metadata to objects |
CN102253898B (zh) * | 2011-07-22 | 2013-10-30 | 杭州海康威视数字技术股份有限公司 | 一种图像数据的内存管理方法及装置 |
CN103761053B (zh) * | 2013-12-30 | 2017-08-25 | 华为技术有限公司 | 一种数据处理方法和装置 |
CN105468642A (zh) * | 2014-09-09 | 2016-04-06 | 杭州海康威视数字技术股份有限公司 | 数据的存储方法及装置 |
CN105446664B (zh) * | 2015-12-03 | 2018-11-20 | 深圳国微技术有限公司 | 一种对存储器进行文件存储方法和存储装置 |
-
2016
- 2016-04-26 CN CN201610269953.7A patent/CN107315533A/zh active Pending
- 2016-09-01 WO PCT/CN2016/097775 patent/WO2017185579A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346357A (zh) * | 2013-07-29 | 2015-02-11 | 中国科学院声学研究所 | 一种嵌入式终端的文件存取方法及*** |
CN104636266B (zh) * | 2014-05-09 | 2016-03-30 | 华为技术有限公司 | 盖瓦磁记录硬盘、盖瓦磁记录硬盘写数据的方法及装置 |
US20160103621A1 (en) * | 2014-10-10 | 2016-04-14 | Seagate Technology Llc | Multi-Block Data Storage Using Data Compression |
CN104461390A (zh) * | 2014-12-05 | 2015-03-25 | 华为技术有限公司 | 将数据写入叠瓦状磁记录smr硬盘的方法及装置 |
CN105094695A (zh) * | 2015-06-29 | 2015-11-25 | 浪潮(北京)电子信息产业有限公司 | 一种存储方法和*** |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021513B (zh) * | 2016-11-02 | 2021-09-10 | 杭州海康威视数字技术股份有限公司 | 一种数据存储方法及装置 |
CN108021513A (zh) * | 2016-11-02 | 2018-05-11 | 杭州海康威视数字技术股份有限公司 | 一种数据存储方法及装置 |
CN108255742A (zh) * | 2017-11-29 | 2018-07-06 | 深圳忆联信息***有限公司 | 一种大容量固态硬盘映射方法 |
WO2019219059A1 (zh) * | 2018-05-17 | 2019-11-21 | 杭州海康威视***技术有限公司 | 一种存储数据的方法、读取数据的方法、装置及*** |
CN109508143A (zh) * | 2018-08-17 | 2019-03-22 | 郑州云海信息技术有限公司 | 一种数据存储方法及装置 |
CN109683825B (zh) * | 2018-12-24 | 2022-05-24 | 广东浪潮大数据研究有限公司 | 一种存储***在线数据压缩方法、装置及设备 |
CN109683825A (zh) * | 2018-12-24 | 2019-04-26 | 广东浪潮大数据研究有限公司 | 一种存储***在线数据压缩方法、装置及设备 |
CN111506251A (zh) * | 2019-01-30 | 2020-08-07 | 杭州海康威视***技术有限公司 | 数据处理方法、装置、smr存储***及存储介质 |
CN111506251B (zh) * | 2019-01-30 | 2023-06-02 | 杭州海康威视***技术有限公司 | 数据处理方法、装置、smr存储***及存储介质 |
CN111400322A (zh) * | 2020-03-25 | 2020-07-10 | 北京字节跳动网络技术有限公司 | 用于存储数据的方法、装置、电子设备和介质 |
CN111400322B (zh) * | 2020-03-25 | 2023-10-03 | 抖音视界有限公司 | 用于存储数据的方法、装置、电子设备和介质 |
CN113741796A (zh) * | 2020-07-16 | 2021-12-03 | 北京沃东天骏信息技术有限公司 | 一种终端应用的数据持久化方法和装置 |
CN113741796B (zh) * | 2020-07-16 | 2024-04-16 | 北京沃东天骏信息技术有限公司 | 一种终端应用的数据持久化方法和装置 |
CN112214169A (zh) * | 2020-09-28 | 2021-01-12 | 深圳大学 | 一种数据存储装置及存储数据的迁移方法 |
CN112214169B (zh) * | 2020-09-28 | 2021-08-10 | 深圳大学 | 一种数据存储装置及存储数据的迁移方法 |
CN112199050A (zh) * | 2020-10-22 | 2021-01-08 | Tcl通讯(宁波)有限公司 | 存储方法、装置、存储介质及终端设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2017185579A1 (zh) | 2017-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107315533A (zh) | 一种数据存储方法及装置 | |
CN103064639A (zh) | 数据存储方法及装置 | |
CN101944124B (zh) | 分布式文件***管理方法、装置以及对应的文件*** | |
CN105589812B (zh) | 磁盘碎片整理方法、装置及主机 | |
CN104461390B (zh) | 将数据写入叠瓦状磁记录smr硬盘的方法及装置 | |
CN100583832C (zh) | 数据管理方法及*** | |
CN107436725A (zh) | 一种数据写、读方法、装置及分布式对象存储集群 | |
US20160335018A1 (en) | Shrinking Virtual Hard Disk Image | |
CN108021513B (zh) | 一种数据存储方法及装置 | |
CN103020174A (zh) | 相似性分析方法、装置及*** | |
CN109445713A (zh) | 一种元数据卷的存储状态记录方法、***及相关组件 | |
CN107003809A (zh) | 一种存储设备存储数据的方法及存储设备 | |
CN103838853B (zh) | 一种基于不同存储介质的混合文件*** | |
CN105787037B (zh) | 一种重复数据的删除方法及装置 | |
CN109240607B (zh) | 一种文件读取方法和装置 | |
CN103425435B (zh) | 磁盘存储方法及磁盘存储*** | |
CN108604165A (zh) | 存储装置 | |
CN102253985B (zh) | 一种文件***数据的管理方法及*** | |
CN103399823A (zh) | 业务数据的存储方法、设备和*** | |
CN104750432B (zh) | 一种数据存储方法及装置 | |
CN111651127A (zh) | 一种基于叠瓦式磁记录盘的监控数据存储方法及装置 | |
CN107506466B (zh) | 一种小文件存储方法及*** | |
CN103942301A (zh) | 一种面向多数据类型访问应用的分布式文件*** | |
CN109669621A (zh) | 一种文件管理方法、文件管理***、电子设备及存储介质 | |
KR100907477B1 (ko) | 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171103 |