CN108021513B - 一种数据存储方法及装置 - Google Patents
一种数据存储方法及装置 Download PDFInfo
- Publication number
- CN108021513B CN108021513B CN201610946331.3A CN201610946331A CN108021513B CN 108021513 B CN108021513 B CN 108021513B CN 201610946331 A CN201610946331 A CN 201610946331A CN 108021513 B CN108021513 B CN 108021513B
- Authority
- CN
- China
- Prior art keywords
- data
- segment
- stored
- virtual storage
- target
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (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为图1中步骤S104的判断结果为否时的一种流程示意图;
图4为本申请实施例提供的数据存储方法的另一种流程示意图;
图5为图4中步骤S102的一种流程示意图;
图6为本申请实施例提供的数据存储装置的一种结构示意图;
图7为本申请实施例提供的数据存储装置的另一种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一种数据存储方法及装置,能够减少读取文件数据的时间。
为了使本申请的表述更加清楚,下面列出了本申请涉及的技术术语。
文件系统:存在于主机端,操作系统中负责管理和存储文件信息的软件,是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。
SSD:用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。
SMR(Shingled Magnetic Recording):全称为叠瓦式磁记录技术,是新一代存储技术,该技术使介质的结构发生了质的变化,通过重叠磁道——类似于屋顶的层叠瓦片,重新调整了数据存储的方式,进而提高了磁道密度,增加了单碟的容量。SMR磁盘分为三种类型:主机管理Host Manage、主机感知Host Aware和驱动管理Drive Manage。
zone:将磁盘上的存储空间切割成多个连续的空间,称之为zone,即磁盘上的存储单元或存储段。在该存储段上,具有一定的特性——数据作写操作时,只能进行顺序写。本申请中的zone有两层定义,一层是磁盘本身定义的称为Pzone;一层是文件系统定义的,称为Vzone。
CMR:ColossalMR,掺杂稀土氧化物中特大磁电阻。机械磁盘中的一种介质,允许随机读写。
逻辑地址:文件系统抽象出来的一种地址,是虚拟出来的一种地址,即可以描述数据在文件中偏移量的地址,其对象是文件。
物理地址:主机端可见的LBA(Logic Block Address)地址,即磁盘的LBA地址,每个LBA对应物理磁盘上实际存在的物理地址,对于文件系统或操作系统(主机端)而言,磁盘(磁盘端)的LBA地址是固定不变的。
Host Manage:一种由主机端控制读写的磁盘,其读写对象指磁盘实际的物理地址。即主机端的LBA地址与磁盘物理地址是线性并且一一对应的。因而,主机端对Pzone存储段的写操作必须保证是顺序写操作,否则磁盘会报错。在磁盘的结构中,存在CMR和SMR区,CMR区允许随机读写。
Host Aware:一种由主机端控制读写的磁盘,其读写对象指磁盘实际的物理地址。即主机端的LBA地址与磁盘物理地址是线性并且一一对应的。与Host Manage不同,在Pzone存储段中,主机端可以进行随机写操作,但其写性能会下降很多。
Drive Manage:一种由磁盘控制读写的磁盘,其读写对象指磁盘实际的物理地址。即主机端的LBA地址与磁盘物理地址是非线性的,即其Pzone与LBA进行了算法上的非线性映射,这部分由磁盘固件实现。与Host Manage和Host Aware不同,Drive manage可以进行随机写,其性能取决于硬盘自身的固件算法。另外,其也支持擦除trim指令。
随机写:写入的物理地址段存在较大跨度,或大于上一次写入的物理地址段的末尾地址,或小于上一次写入的物理地址段的末尾地址。
顺序写:写入的物理地址段每次承接上一次写入的物理地址段的末尾地址,称之为顺序写。
Trim:告诉存储设备要擦除哪些数据的接口指令。
随机写:写入的物理地址段存在较大跨度,或大于上一次写入的物理地址段的末尾地址,或小于上一次写入的物理地址段的末尾地址。
下面通过具体实施例,对本申请进行详细说明。
图1为本申请实施例提供的数据存储方法的一种流程示意图,应用于终端。所述终端可以包括计算机、笔记本电脑、平板电脑、智能手机等设备。所述终端包括至少一个磁盘,所述磁盘按照物理地址的顺序划分为至少两个虚拟存储段,各个虚拟存储段对应的物理地址范围不重合。在划分时,通常可以将每个虚拟存储段对应的物理地址段划分成一样大小的,即每个虚拟存储段的可用存储空间的容量可以是相同的。标识为预设值的虚拟存储段为元数据存储段。
其中,所述元数据存储段,可以用于存储已存储文件的标识与各个虚拟存储段之间对应关系的第一类对应关系库,一个虚拟存储段与一个文件的标识对应。一个文件对应唯一一个标识。
作为一种具体实施方式,元数据存储段的物理地址段可以比其他虚拟存储段的物理地址段的大小更大一些,其他虚拟存储段的物理地址段的大小可以是一样的。
需要指出的是,终端至少包括两部分,一部分是软件部分,即操作系统部分,另一部分是硬件部分,即磁盘部分。本实施例具体是由终端操作系统中的文件系统来执行的。该文件系统负责管理和存储文件信息,对文件存储设备(即磁盘)的空间进行组织和分配,还负责将文件存储至磁盘并对存入的文件进行保护和检索。
图2为将磁盘划分成虚拟存储段后的一种结构示意图。图中的虚拟存储段的标识分别为Vzone0、Vzone1、Vzone2、……、VzoneX等,图中每个虚拟存储段下方标示出了该虚拟存储段的物理地址段的起始物理地址num(x)和末尾物理地址num(x+1),例如Vzone0的物理地址段为[num0,num1]。标识为Vzone0的虚拟存储段被设置为元数据存储段。
在划分虚拟存储段时,如果磁盘本身存在实际的存储段Pzone,例如SMR磁盘中的类型为Host manage的磁盘和Host Aware的磁盘,则在划分Vzone时,虚拟存储段Vzone可以与Pzone一一对应。如果磁盘本身不存在实际的存储段Pzone,则可以根据实际的数据存储需求确定虚拟存储段Vzone对应的物理地址段的大小。例如,当磁盘经常需要存储大数据文件时,可以将Vzone对应的物理地址段设置得大一些;当磁盘经常存储小数据文件时,可以将Vzone对应的物理地址段设置得小一些。
具体的,本实施例的数据存储方法包括如下步骤:
步骤S101:接收目标文件的待存储数据。
具体的,终端在接收到客户端发送的待存储数据时,如果该待存储数据属于一个新的文件,则终端可以创建针对待存储数据的目标文件,并确定用于存储该文件的虚拟存储段。如果该待存储数据属于一个已经存储的文件,则终端可以确定该待存储数据属于哪个文件。
步骤S102:根据目标文件的标识和第一类对应关系库,确定用于存储待存储数据的目标虚拟存储段。
需要指出的是,第一类对应关系库,用于存储已存储文件的标识与各个虚拟存储段之间的对应关系。与已存储文件的标识对应的虚拟存储段,用于存储该文件的数据。
在本实施例中,一个虚拟存储段只存储来自一个文件的数据,一个文件的数据可以存储在多个虚拟存储段中。当该文件的数据量较小,没有存满一个虚拟存储段时,也不再向其中存储其他文件的数据。
在本申请的一种实施方式中,在已经存储过目标文件的数据的情况下,第一对应关系库中存储有目标文件的标识与各个虚拟存储段之间的对应关系,所以,根据目标文件的标识和第一类对应关系库,确定用于存储待存储数据的目标虚拟存储段时,可以从第一类对应关系库中查找针对该目标文件的标识的对应关系,根据该对应关系中的虚拟存储段,确定用于存储待存储数据的目标虚拟存储段。
该对应关系中的虚拟存储段可以为一个,也可以为两个及两个以上。在确定目标虚拟存储段时,可以根据与目标文件的标识对应的虚拟存储段中确定未存满数据的虚拟存储段,根据该未存满数据的虚拟存储段,确定用于存储待存储数据的目标虚拟存储段。
步骤S103:根据目标虚拟存储段中所存储数据的末尾存储位置,获取目标虚拟存储段中可用存储空间的容量。
具体的,元数据存储段,还可以用于存储每个虚拟存储段中的写指针位置,该写指针位置指向虚拟存储段中的物理地址,用于表示该虚拟存储段中所存储数据的末尾存储位置。当虚拟存储段中未存储数据时,其写指针位置的值为该虚拟存储段的起始物理地址,当该虚拟存储段中存满数据时,其写指针位置的值为该虚拟存储段的末尾物理地址。
根据目标虚拟存储段中所存储数据的末尾存储位置,获取目标虚拟存储段中可用存储空间的容量,可以包括:
获取元数据存储段中目标虚拟存储段对应的写指针位置,将该写指针位置确定为目标虚拟存储段中所存储数据的末尾存储位置,将该末尾存储位置与目标虚拟存储段的末尾物理地址之间的物理地址大小确定为可用存储空间的容量。
步骤S104:判断所述容量是否大于等于待存储数据的数据量,如果是,则说明目标虚拟存储段能够存储待存储数据,执行步骤S105。
如果否,则说明所述容量无法存下待存储数据。在这种情况下如何存储待存储数据,可以由多种实施方式来实现,可以确定未存储数据的虚拟存储段来存储待存储数据,也可以将待存储数据的一部分数据存储在目标虚拟存储段,另一部分数据存储在未存储数据的虚拟存储段中。本实施例对这种情况下如何存储数据不做具体限定。
例如,磁盘的每个虚拟存储段未存储数据时的容量为256MB。当前目标虚拟存储段的可用存储空间的容量为54MB,待存储数据的数据量为10MB,由于54MB>10MB,因此,确认目标虚拟存储段能够存储待存储数据。当待存储数据的数据量为60MB时,可见54MB<60MB,这种情况下,可以确定一个未存储数据的虚拟存储段来存储该待存储数据。
步骤S105:以末尾存储位置为待存储数据的起始存储位置,将待存储数据存储至目标虚拟存储段。
当判断出所述容量大于等于待存储数据的数据量时,可以将待存储数据存储至目标虚拟存储段。
需要说明的是,以末尾存储位置为待存储数据的起始存储位置,将待存储数据存储至目标虚拟存储段,即说明在虚拟存储段中,待存储数据是按照虚拟存储段的物理地址从小到大顺序存储的,并且在虚拟存储段内部是连续存储的。
由上述内容可知,在本实施例中,作为执行主体的终端在接收到目标文件的待存储数据时,根据目标文件的标识和元数据存储段中存储的第一类对应关系库,确定用于存储待存储数据的目标虚拟存储段,并根据目标虚拟存储段中所存储数据的末尾存储位置,获取目标虚拟存储段中可用存储空间的容量,当该容量大于等于待存储数据的数据量时,以所述末尾存储位置为待存储数据的起始存储位置,将其存储至目标虚拟存储段。
采用上述数据存储方式时,虚拟存储段中的数据是顺序存储的。而由于虚拟存储段在划分时是按照物理地址的顺序划分的,每个虚拟存储段对应的物理地址是从小到大顺序增加的,因此虚拟存储段中的数据是按照物理地址的顺序存储的。应用本申请实施例的技术方案,降低了文件数据所存储的物理地址段的分散程度,因此在读取文件数据时,能够减少读取文件数据的时间。
在图1所示实施例的一种具体实施方式中,当步骤S104的判断结果为否时,可以按照如图3所示流程示意图的方式存储待存储数据。其中,所述元数据存储段,还可以用于存储表示各个虚拟存储段是否已存储数据的存储标识。例如,将1作为已存储数据的存储标识,将0作为未存储数据的存储标识。图3所示流程示意图包括:
步骤S106:当所述容量小于待存储数据的数据量时,将待存储数据分割成第一数据和第二数据,其中,所述第一数据的数据量等于所述容量。
步骤S107:根据所述存储标识,从未存储数据的虚拟存储段中确定用于存储第二数据的第一虚拟存储段。
具体的,为了降低目标文件的数据所存储位置的分散程度,根据所述存储标识,从未存储数据的虚拟存储段中确定用于存储第二数据的第一虚拟存储段时,可以根据所述存储标识,从与目标虚拟存储段的物理地址段最近并且未存储数据的虚拟存储段中,确定用于存储第二数据的第一虚拟存储段。
由于终端在存储数据时,多个文件的数据可能是交替着存储的,因此在确定第一虚拟存储段时,第一虚拟存储段的地址可能与目标虚拟存储段的地址连续,也可能不连续。为了降低目标文件的数据所存储的物理地址段的分散程度,可以将与目标虚拟存储段的物理地址段最接近的、并且未存储数据的虚拟存储段选择为第一虚拟存储段。
作为一种具体实施方式,由于在划分每个虚拟存储段时,按照磁盘物理地址的顺序进行划分,虚拟存储段的编号也是按照物理地址的顺序从小到大排列的,因此,从与目标虚拟存储段的物理地址段最近并且未存储数据的虚拟存储段中,确定用于存储第二数据的第一虚拟存储段,可以包括:从与目标虚拟存储段的编号最近并且未存储数据的虚拟存储段中,确定用于存储第二数据的第一虚拟存储段。
例如,在图2中,文件A存储在Vzone1、Vzone2和Vzone4中,文件B存储在Vzone3中,其他Vzone均未存储数据。当目标文件为文件B时,在存储文件B的待存储数据时,如果Vzone3的剩余容量小于待存储数据的数据量,则可以选择与Vzone3的物理地址最接近的未存储数据的Vzone5作为第一虚拟存储段。由于Vzone4已经存储了文件A的数据,因此它已经不是未存储数据的虚拟存储段了。
步骤S108:以所述末尾存储位置为所述第一数据的起始存储位置,将第一数据存储至目标虚拟存储段,将第二数据存储至第一虚拟存储段。
由于第一虚拟存储段中还未存储任何数据,因此其写指针位置为起始物理地址。在将第二数据存储至第一虚拟存储段时,从其起始物理地址开始存储第二数据。
在这种实施方式中,当目标虚拟存储段的可用存储空间的容量小于待存储数据的数据量时,在存储待存储数据时,将待存储数据分成两份数据,一部分数据用于将目标虚拟存储段的可用空间存满,另一部分数据存储在未存储数据的虚拟存储段中。因此,与目标文件的标识对应的虚拟存储段中如果存在未存满数据的虚拟存储段,那么该虚拟存储段的数量通常只有一个。
可见,在这种实施方式中,当所述容量小于待存储数据的数据量时,将待存储数据分割成两部分数据,一部分数据存储至目标虚拟存储段,另一部分数据存储至第一虚拟存储段。也就是说,目标文件的数据至少存储在目标虚拟存储段和第一虚拟存储段中。由于第一虚拟存储段是与目标虚拟存储段的物理地址最近并且未存储数据的虚拟存储段,因此,本实施方式中,在所述容量小于待存储数据的数据量时,也能够降低文件数据所存储的物理地址段的分散程度,减少读取文件数据的时间。
在图1所示实施例的一种具体实施方式中,目标文件可以是已存储文件,也可以是未存储文件。因此,步骤S102,根据目标文件的标识和第一类对应关系库,确定用于存储待存储数据的目标虚拟存储段,可以包括以下实施方式:
步骤1:判断第一类对应关系库中是否存在针对目标文件的标识的对应关系,如果是,则执行步骤2;如果否,则执行步骤3。
当第一类对应关系库中存在针对目标文件的标识的对应关系时,说明目标文件是已存储文件。当第一类对应关系库中不存在针对目标文件的标识的对应关系时,说明目标文件是未存储文件。
步骤2:确定目标文件处于已存储状态,并从第一类对应关系库中与目标文件的标识对应的虚拟存储段中,确定用于存储待存储数据的目标虚拟存储段。
当目标文件处于已存储状态时,元数据存储段中有已经存在的与目标文件的标识对应的虚拟存储段。当该虚拟存储段中包含未存满数据的虚拟存储段时,可以根据与目标文件的标识对应的未存满数据的虚拟存储段,确定目标虚拟存储段。当该虚拟存储段中不包含未存满数据的虚拟存储段时,即与目标文件的标识对应的虚拟存储段恰好存满数据时,可以从未存储数据的虚拟存储段中,确定目标虚拟存储段。即,为目标文件分配一个新的空虚拟存储段,将该新的空虚拟存储段确定为目标虚拟存储段。
在本申请的一种具体实施方式中,当目标虚拟存储段为未存储数据的虚拟存储段时,还要将目标文件的标识与该未存储数据的虚拟存储段的对应关系存储至第一类对应关系库。
步骤3:确定目标文件处于未存储状态,并根据所述存储标识,从未存储数据的虚拟存储段中确定用于存储待存储数据的目标虚拟存储段。
当确定目标文件处于未存储状态时,元数据存储段中没有与目标文件的标识对应的虚拟存储段,即目标文件的数据还没有存储过。此时,从未存储数据的虚拟存储段中,确定目标虚拟存储段。
同样的,在本申请的一种具体实施方式中,在步骤3之后还可以包括:将目标文件的标识与目标虚拟存储段的对应关系存储至第一类对应关系库。
具体的,从未存储数据的虚拟存储段中确定用于存储待存储数据的目标虚拟存储段,可以包括:从未存储数据的虚拟存储段中选择起始物理地址最小或终止物理地址最小的虚拟存储段,确定为用于存储待存储数据的目标虚拟存储段。
也就是说,按照物理地址的顺序选择未存储数据的虚拟存储段,确定为用于存储待存储数据的目标虚拟存储段。
可见,在本实施方式中,在确定目标虚拟存储段时,根据目标文件的标识和第一类对应关系库,判断目标文件是否处于已存储状态,根据判断结果采用不同的方式确定目标虚拟存储段。
在本申请的另一实施例中,可以在图1所示实施例的基础上对其加以改进。该实施例的具体过程可以参见图4所示流程示意图。与图1所示实施例不同的是,在步骤S102之前,即在根据目标文件的标识和第一类对应关系库,确定用于存储待存储数据的目标虚拟存储段之前,还可以包括如下步骤:
步骤S101′:确定待存储数据在目标文件中的第一逻辑地址段。
需要说明的是,逻辑地址是数据在文件中的地址,用于表明数据在文件中的相对位置(即偏移量)。
具体的,确定待存储数据在目标文件中的第一逻辑地址段,可以包括:根据接收待存储数据的顺序,确定待存储数据在目标文件中的第一逻辑地址段。即,在目标文件中,数据的逻辑地址是顺序逐渐增加的,并且逻辑地址是连续的。
例如,当目标文件较大时,例如目标文件是视频流文件,可以根据接收视频流数据的顺序,确定该视频流数据在视频流文件中对应的逻辑地址段。
可以理解的是,由于文件的数据可能是分批次被终端接收到的,终端为了方便管理该文件包含的数据,可以为每次接收到的数据分配一个逻辑地址段,该逻辑地址段可以用于表示该数据在该文件中的偏移量(即相对位置)。同时,还要生成逻辑地址段与物理地址段的对应关系,这样,终端才能根据逻辑地址以及该对应关系从磁盘中读取到该数据。
元数据存储段,可以用于存储第二类对应关系库,第二类对应关系库用于存储数据在文件中的逻辑地址段与数据在磁盘中的物理地址段之间的对应关系。
对应的,在图1所示实施例中,在步骤S105之后,即在将待存储数据存储至目标虚拟存储段之后,还可以包括如下步骤:
步骤S105′:确定存储所述待存储数据的目标物理地址段。
其中,目标物理地址段的起始物理地址为所述末尾存储位置,终止物理地址为末尾存储位置与待存储数据的数据量的和。
步骤S105〞:将第一逻辑地址段与目标物理地址段的第一对应关系存储至第二类对应关系库。
例如,待存储数据的逻辑地址段为0x0-0x100,对应的物理地址段为0x1000-0x1100,[0x0-0x100,0x1000-0x1100]即为第一对应关系。
作为一种具体的实施方式,第一对应关系可以采用起始逻辑地址、起始物理地址和数据量长度的方式表示。表1所示为一种逻辑地址段与物理地址段的对应关系。其中,编号为1的对应关系表示逻辑地址段[L0,L0+LEN0]与物理地址段[P0,P0+LEN0]的对应关系,其他的对应关系与此类似,不再细述。
表1
编号 | 起始逻辑地址 | 起始物理地址 | 数据量长度 |
0 | L0 | P0 | LEN0 |
1 | L1 | P1 | LEN1 |
2 | L2 | P2 | LEN2 |
可见,在本实施例中,针对接收的待存储数据,终端为待存储数据确定第一逻辑地址段,该逻辑地址段是一种虚拟地址,可以描述待存储数据在目标文件中的偏移地址,即能够确定待存储数据在目标文件中的相对位置。将待存储数据存储至目标虚拟存储段之后,还要将第一逻辑地址段与目标物理地址段之间的第一对应关系存储至第二类对应关系库。这样,在对待存储数据进行读取等操作时能够更准确地确定其实际位置(即物理位置)。
在图4所示实施例的一种具体实施方式中,步骤S105〞,将第一逻辑地址段与目标物理地址段的第一对应关系存储至第二类对应关系库,可以包括:
步骤1:获得第二类对应关系库中存储的针对目标文件的目标对应关系。
具体的,步骤1可以包括:根据目标文件的标识,在第二类对应关系库中查找与该目标文件的标识对应的目标对应关系。
可以理解的是,在第二类对应关系库中,在存储逻辑地址段与物理地址段的对应关系时,可以以文件为单位进行存储。例如,一个文件对应设置一个映射表,该映射表中存储与该文件的标识对应的逻辑地址与物理地址的对应关系表项。每个文件的映射表均存储在第二类对应关系库中。
步骤2:判断目标对应关系中是否存在逻辑地址段与第一逻辑地址段相邻,并且物理地址段与目标物理地址段相邻的第二对应关系,如果存在,则认为第二类对应关系库中存在与第一对应关系相邻的对应关系,执行步骤3即可;如果不存在,则认为第二类对应关系库中不存在与第一对应关系相邻的对应关系,不予处理即可。
步骤3:合并第一对应关系和第二对应关系,并将第二对应关系更新为合并后的对应关系。
例如,已知[0x100-0x200,0x1000-0x1100]为第一对应关系,[0x0-0x100,0xf00-0x1000]为目标对应关系。其中,逗号“,”左侧为逻辑地址,右侧为物理地址。可以判断出,上述两个对应关系中逻辑地址和物理地址均相邻。可以将上述两个对应关系合并为[0x00-0x200,0xf00-0x1100],并将目标对应关系更新为合并后的对应关系[0x00-0x200,0xf00-0x1100]。
又如,已知表1为目标文件A对应的映射表,其中编号为0和1的表项为目标对应关系,编号为2的表项为第一对应关系。如果编号为0的对应关系[L0,P0,LEN0]和编号为2的对应关系[L2,P2,LEN2]之间满足L0+LEN0=L2,P0+LEN0=P2,则认为编号为0和2的对应关系可以合并。其中,符号[]中的三个量依次为起始逻辑地址、起始物理地址和数据量长度。合并后,编号为0的对应关系变为[L0,P0,LEN0′]。表2为合并后的目标文件A对应的映射表。
表2
编号 | 起始逻辑地址 | 起始物理地址 | 数据量长度 |
0 | L0 | P0 | LEN0′ |
1 | L1 | P1 | LEN1 |
可以看出,合并后的对应关系包含已存储的待存储数据的物理地址与逻辑地址的对应关系。
可见,在本实施方式中,在存储第一对应关系时,采用对应关系合并技术,在第一对应关系能够与其他对应关系合并时实施合并操作,从而简化第二类对应关系库,节省元数据存储段的存储空间。
在图4所示实施例的一种具体实施方式中,所述元数据存储段,还用于存储已存储文件的标识与用于进行覆盖写操作的虚拟存储段之间对应关系的第三类对应关系库,以及存储已存储文件的标识与用于进行追加写操作的虚拟存储段之间对应关系的第四类对应关系库。
对应的,图4所示实施例中的步骤S102,根据目标文件的标识和第一类对应关系库,确定用于存储所述待存储数据的目标虚拟存储段,可以按照图5所示流程示意图进行,具体包括:
步骤S102A:判断第二类对应关系库中是否存在针对第一逻辑地址段的对应关系,如果存在,则认为此次写入待存储数据的操作为覆盖写操作,此时执行步骤S105〞B;如果不存在,则认为此次写入待存储数据的操作为追加写操作,此时执行步骤S105〞C。
需要指出的是,作为执行主体的终端在确定待存储数据的第一逻辑地址段时,可以根据需要将已经存在的逻辑地址段确定为待存储数据的第一逻辑地址段,也可以将未分配过的逻辑地址段确定为待存储数据的第一逻辑地址段。
例如,已知终端分配给客户端A用于存储监控视频数据的虚拟存储段为3个,对应的物理地址段为0x0-0x1100。当这3个虚拟存储段的可用存储空间未存满时,终端可以按照顺序为待存储数据分配逻辑地址。当这3个虚拟存储段的可用存储空间均存满时,终端可以重新从0x0开始为待存储数据分配逻辑地址。
步骤S102B:确定待存储数据为覆盖写数据,将第三类对应关系库中与目标文件的标识对应的虚拟存储段确定为第二虚拟存储段,从第二虚拟存储段中确定用于存储所述待存储数据的目标虚拟存储段。
具体的,确定的第二虚拟存储段可能不止一个。当第二虚拟存储段的数量为两个及以上时,将第二虚拟存储段中未存满数据的虚拟存储段确定为目标虚拟存储段。
步骤S102C:确定待存储数据为追加写数据,将第四类对应关系库中与目标文件的标识对应的虚拟存储段确定为第三虚拟存储段,从第三虚拟存储段中确定用于存储所述待存储数据的目标虚拟存储段。
具体的,确定的第三虚拟存储段可能不止一个。当第三虚拟存储段的数量为两个及以上时,将第三虚拟存储段中未存满数据的虚拟存储段确定为目标虚拟存储段。
可见,在本实施方式中,待存储数据可以是覆盖写数据,也可以是追加写数据,具体的,可以根据第二类对应关系库中是否存在针对第一逻辑地址段的对应关系的判断结果,来确定待存储数据属于哪种操作。
在本实施方式中,当待存储数据为覆盖写数据时,步骤S105〞,将所述第一逻辑地址段与目标物理地址段的第一对应关系存储至所述第二类对应关系库,具体可以包括:
步骤1:从所述第二类对应关系库中查找针对第一逻辑地址段的原始对应关系。
步骤2:将所述原始对应关系更新为第一逻辑地址段与目标物理地址段的第一对应关系。
需要说明的是,原始对应关系中的物理地址段与目标物理地址段是不同的,当待存储数据存储之后,应将原始对应关系中的物理地址段更新为目标物理地址段。
例如,表1中编号为0的对应关系[L0,P0,LEN0]为执行覆盖写操作之前的对应关系,当执行覆盖写之后,上述对应关系应更新为[L0,P20,LEN0]。其中,符号[]中的三个量依次为起始逻辑地址、起始物理地址和数据量长度。
鉴于以上实施例中涉及的内容,可见元数据存储段中可以存储第一类对应关系库、第二类对应关系库、第三类对应关系库和第四类对应关系库等信息。下面结合具体实例对本申请实施例中的元数据存储段再做详细说明。
元数据存储段可以保存以下内容:
预留空间(Boot block):用于存放磁盘分区信息等。
超级块(Super block):保存文件系统相关信息,包含了当前文件系统分配到的Vzone编号,Vzone的总个数,空闲Vzone的总个数、文件系统允许的最大文件个数(即文件索引inode的个数)、当前文件系统分配到的Vzone编号、磁盘类型等。其中,一个文件索引对应一个文件。超级块备份(Super block back)为该区域的备份。
Vzone位图(Vzone bitmap):每一位代表一个Vzone,1代表已使用,0代表未使用。Vzone位图备份(Vzone bitmap back)为该区域的备份。
Vzone描述符(Vzone description):描述了当前Vzone写指针(write pointer)的位置,该写指针的位置即是上述内容中提及的末尾存储位置。Vzone描述符备份(Vzonedescription back)为该区域的备份。
文件索引位图(inode bitmap):每一位代表一个文件,1代表已使用,0代表未使用。文件创建时,会查找该位图,根据位图,由小到大分配索引号。
文件索引(Inode):描述了文件的信息,包括记录了映射表的起始物理地址(LBA地址),一个索引即一个文件。另外,索引也记录了文件与Vzone的对应方式,即一个Vzone对应多个文件(multi)还是一个Vzone只能被该文件所拥有(only)。该区域还包括文件数据所对应存储的Vzone编号,即第一类对应关系库。更具体的,该区域中还可以包含当前文件对应的执行覆盖写操作的Vzone编号和执行追加写操作的Vzone编号,即包含第三类对应关系库和第四类对应关系库。文件索引备份(Inode back)为该区域的备份。
映射表(hik map):记录每个文件逻辑地址段与磁盘物理地址段的关系,即记录第二类对应关系库。
以上各个区域的顺序和结构大小不固定,只表明元数据存储段中存在这些数据。
图6为本申请实施例提供的数据存储装置的一种结构示意图,应用于终端,与图1所示方法实施例相对应。所述终端包括至少一个磁盘,所述磁盘按照物理地址的顺序划分为至少两个虚拟存储段,各个虚拟存储段对应的物理地址范围不重合,标识为预设值的虚拟存储段为元数据存储段;其中,所述元数据存储段,用于存储已存储文件的标识与各个虚拟存储段之间对应关系的第一类对应关系库,一个虚拟存储段与一个文件的标识对应;所述装置包括:
数据接收模块601,用于接收目标文件的待存储数据;
存储段确定模块602,用于根据所述目标文件的标识和所述第一类对应关系库,确定用于存储所述待存储数据的目标虚拟存储段;
容量获取模块603,用于根据所述目标虚拟存储段中所存储数据的末尾存储位置,获取所述目标虚拟存储段中可用存储空间的容量;
容量判断模块604,用于判断所述容量是否大于等于所述待存储数据的数据量;
数据存储模块605,用于当所述容量大于等于所述待存储数据的数据量时,以所述末尾存储位置为所述待存储数据的起始存储位置,将所述待存储数据存储至所述目标虚拟存储段。
在图6所示实施例的一种具体实施方式中,所述元数据存储段,还用于存储表示各个虚拟存储段是否已存储数据的存储标识;所述装置还可以包括:
数据分割模块(图中未示出),用于当所述容量小于所述待存储数据的数据量时,将所述待存储数据分割成第一数据和第二数据,其中,所述第一数据的数据量等于所述容量;
所述存储段确定模块602,还用于根据所述存储标识,从未存储数据的虚拟存储段中确定用于存储所述第二数据的第一虚拟存储段;
所述数据存储模块605,还用于以所述末尾存储位置为所述第一数据的起始存储位置,将所述第一数据存储至所述目标虚拟存储段,将所述第二数据存储至所述第一虚拟存储段。
在图6所示实施例的一种具体实施方式中,所述存储段确定模块602,可以包括:
第一判断子模块(图中未示出),用于判断所述第一类对应关系库中是否存在针对所述目标文件的标识的对应关系;
第一确定子模块(图中未示出),用于当所述第一判断子模块的判断结果为是时,确定所述目标文件处于已存储状态,并从所述第一类对应关系库中与所述目标文件的标识对应的虚拟存储段中,确定用于存储所述待存储数据的目标虚拟存储段;
第二确定子模块(图中未示出),用于当所述第一判断子模块的判断结果为否时,确定所述目标文件处于未存储状态,并根据所述存储标识,从未存储数据的虚拟存储段中确定用于存储所述待存储数据的目标虚拟存储段。
在本申请的另一实施例中,可以对图6所示实施例加以改进。在所述存储段确定模块602之前,还可以包括逻辑地址段确定模块601′,如图7所示结构示意图所示。该实施例与图4所示方法实施例相对应。
所述逻辑地址段确定模块601′,用于确定所述待存储数据在所述目标文件中的第一逻辑地址段;
所述元数据存储段,还用于存储数据在文件中的逻辑地址段与在磁盘中的物理地址段之间对应关系的第二类对应关系库;
在所述数据存储模块605之后,还可以包括:
物理地址段确定模块605′,用于确定存储所述待存储数据的目标物理地址段,其中,所述目标物理地址段的起始物理地址为所述末尾存储位置,终止物理地址为所述末尾存储位置与所述待存储数据的数据量的和;
第一对应关系存储模块605〞,用于将所述第一逻辑地址段与目标物理地址段的第一对应关系存储至所述第二类对应关系库。
在图7所示实施例的一种具体实施方式中,所述逻辑地址段确定模块601′,可以用于:
根据接收所述待存储数据的顺序,确定所述待存储数据在所述目标文件中的第一逻辑地址段。
在图7所示实施例的一种具体实施方式中,所述第一对应关系存储模块605〞,可以包括:
获得子模块(图中未示出),用于获得所述第二类对应关系库中存储的针对所述目标文件的目标对应关系;
第二判断子模块(图中未示出),用于判断所述目标对应关系中是否存在逻辑地址段与所述第一逻辑地址段相邻,并且物理地址段与所述目标物理地址段相邻的第二对应关系;
第一更新子模块(图中未示出),用于当所述第二判断子模块的判断结果为是时,合并所述第一对应关系和第二对应关系,并将所述第二对应关系更新为合并后的对应关系。
在图7所示实施例的一种具体实施方式中,所述元数据存储段,还用于存储已存储文件的标识与用于进行覆盖写操作的虚拟存储段之间对应关系的第三类对应关系库;
所述存储段确定模块602,可以包括:
第三判断子模块(图中未示出),用于判断所述第二类对应关系库中是否存在针对所述第一逻辑地址段的对应关系;
第三确定子模块(图中未示出),用于当所述第三判断子模块的判断结果为是时,确定所述待存储数据为覆盖写数据,将所述第三类对应关系库中与所述目标文件的标识对应的虚拟存储段确定为第二虚拟存储段,从所述第二虚拟存储段中确定用于存储所述待存储数据的目标虚拟存储段。
在图7所示实施例的一种具体实施方式中,所述元数据存储段,还用于存储已存储文件的标识与用于进行追加写操作的虚拟存储段之间对应关系的第四类对应关系库;所述存储段确定模块还可以包括:
第四确定子模块(图中未示出),用于当所述第三判断子模块的判断结果为否时,确定所述待存储数据为追加写数据,将所述第四类对应关系库中与所述目标文件的标识对应的虚拟存储段确定为第三虚拟存储段,从所述第三虚拟存储段中确定用于存储所述待存储数据的目标虚拟存储段。
在图7所示实施例的一种具体实施方式中,所述第一对应关系存储模块605〞,可以包括:
查找子模块(图中未示出),用于从所述第二类对应关系库中查找针对所述第一逻辑地址段的原始对应关系;
第二更新子模块(图中未示出),用于将所述原始对应关系更新为所述第一逻辑地址段与目标物理地址段的第一对应关系。
由于上述装置实施例是基于方法实施例得到的,与该方法具有相同的技术效果,因此装置实施例的技术效果在此不再赘述。
对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解,上述实施方式中的全部或部分步骤是能够通过程序指令相关的硬件来完成的,所述的程序可以存储于计算机可读取存储介质中。这里所称存储介质,是指ROM/RAM、磁碟、光盘等。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (12)
1.一种数据存储方法,应用于终端,其特征在于,所述终端包括至少一个磁盘,所述磁盘按照物理地址的顺序划分为至少两个虚拟存储段,各个虚拟存储段对应的物理地址从小到大顺序增加,物理地址范围不重合,标识为预设值的虚拟存储段为元数据存储段;其中,所述元数据存储段,用于存储已存储文件的标识与各个虚拟存储段之间对应关系的第一类对应关系库,一个虚拟存储段与一个文件的标识对应,一个文件对应唯一一个标识;所述元数据存储段,还用于存储标识各个虚拟存储段是否已存储数据的存储标识,所述方法包括:
接收目标文件的待存储数据;
根据所述目标文件的标识和所述第一类对应关系库,确定用于存储所述待存储数据的目标虚拟存储段;
根据所述目标虚拟存储段中所存储数据的末尾存储位置,获取所述目标虚拟存储段中可用存储空间的容量;
判断所述容量是否大于等于所述待存储数据的数据量;
如果是,则以所述末尾存储位置为所述待存储数据的起始存储位置,将所述待存储数据存储至所述目标虚拟存储段;
当所述容量小于所述待存储数据的数据量时,将所述待存储数据分割成第一数据和第二数据,其中,所述第一数据的数据量等于所述容量;
根据所述存储标识,从未存储数据的虚拟存储段中确定用于存储所述第二数据的第一虚拟存储段;
以所述末尾存储位置为所述第一数据的起始存储位置,将所述第一数据存储至所述目标虚拟存储段,将所述第二数据存储至所述第一虚拟存储段;
所述第一虚拟存储段为所述目标虚拟存储段的物理地址段最近且未存储数据的虚拟存储段;
在所述根据所述目标文件的标识和所述第一类对应关系库,确定用于存储所述待存储数据的目标虚拟存储段的步骤之前,还包括:
确定所述待存储数据在所述目标文件中的第一逻辑地址段;
所述元数据存储段,还用于存储数据在文件中的逻辑地址段与在磁盘中的物理地址段之间对应关系的第二类对应关系库;
在所述将所述待存储数据存储至所述目标虚拟存储段的步骤之后,还包括:
确定存储所述待存储数据的目标物理地址段,其中,所述目标物理地址段的起始物理地址为所述末尾存储位置,终止物理地址为所述末尾存储位置与所述待存储数据的数据量的和;
将所述第一逻辑地址段与目标物理地址段的第一对应关系存储至所述第二类对应关系库;
所述将所述第一逻辑地址段与目标物理地址段的第一对应关系存储至所述第二类对应关系库的步骤,包括:
获得所述第二类对应关系库中存储的针对所述目标文件的目标对应关系;
判断所述目标对应关系中是否存在逻辑地址段与所述第一逻辑地址段相邻,并且物理地址段与所述目标物理地址段相邻的第二对应关系;
如果存在,则合并所述第一对应关系和第二对应关系,并将所述第二对应关系更新为合并后的对应关系。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标文件的标识和所述第一类对应关系库,确定用于存储所述待存储数据的目标虚拟存储段的步骤,包括:
判断所述第一类对应关系库中是否存在针对所述目标文件的标识的对应关系;
如果是,则确定所述目标文件处于已存储状态,并从所述第一类对应关系库中与所述目标文件的标识对应的虚拟存储段中,确定用于存储所述待存储数据的目标虚拟存储段;
如果否,则确定所述目标文件处于未存储状态,并根据所述存储标识,从未存储数据的虚拟存储段中确定用于存储所述待存储数据的目标虚拟存储段。
3.根据权利要求1所述的方法,其特征在于,所述确定所述待存储数据在所述目标文件中的第一逻辑地址段的步骤,包括:
根据接收所述待存储数据的顺序,确定所述待存储数据在所述目标文件中的第一逻辑地址段。
4.根据权利要求1所述的方法,其特征在于,所述元数据存储段,还用于存储已存储文件的标识与用于进行覆盖写操作的虚拟存储段之间对应关系的第三类对应关系库;
所述根据所述目标文件的标识和所述第一类对应关系库,确定用于存储所述待存储数据的目标虚拟存储段的步骤,包括:
判断所述第二类对应关系库中是否存在针对所述第一逻辑地址段的对应关系;
如果存在,则确定所述待存储数据为覆盖写数据,将所述第三类对应关系库中与所述目标文件的标识对应的虚拟存储段确定为第二虚拟存储段,从所述第二虚拟存储段中确定用于存储所述待存储数据的目标虚拟存储段。
5.根据权利要求4所述的方法,其特征在于,所述元数据存储段,还用于存储已存储文件的标识与用于进行追加写操作的虚拟存储段之间对应关系的第四类对应关系库;所述方法还包括:
当所述第二类对应关系库中不存在针对所述第一逻辑地址段的对应关系时,确定所述待存储数据为追加写数据,将所述第四类对应关系库中与所述目标文件的标识对应的虚拟存储段确定为第三虚拟存储段,从所述第三虚拟存储段中确定用于存储所述待存储数据的目标虚拟存储段。
6.根据权利要求4所述的方法,其特征在于,所述将所述第一逻辑地址段与目标物理地址段的第一对应关系存储至所述第二类对应关系库的步骤,包括:
从所述第二类对应关系库中查找针对所述第一逻辑地址段的原始对应关系;
将所述原始对应关系更新为所述第一逻辑地址段与目标物理地址段的第一对应关系。
7.一种数据存储装置,应用于终端,其特征在于,所述终端包括至少一个磁盘,所述磁盘按照物理地址的顺序划分为至少两个虚拟存储段,各个虚拟存储段对应的物理地址从小到大顺序增加,物理地址范围不重合,标识为预设值的虚拟存储段为元数据存储段;其中,所述元数据存储段,用于存储已存储文件的标识与各个虚拟存储段之间对应关系的第一类对应关系库,一个虚拟存储段与一个文件的标识对应,一个文件对应唯一一个标识;所述元数据存储段,还用于存储标识各个虚拟存储段是否已存储数据的存储标识,所述装置包括:
数据接收模块,用于接收目标文件的待存储数据;
存储段确定模块,用于根据所述目标文件的标识和所述第一类对应关系库,确定用于存储所述待存储数据的目标虚拟存储段;
容量获取模块,用于根据所述目标虚拟存储段中所存储数据的末尾存储位置,获取所述目标虚拟存储段中可用存储空间的容量;
容量判断模块,用于判断所述容量是否大于等于所述待存储数据的数据量;
数据存储模块,用于当所述容量大于等于所述待存储数据的数据量时,以所述末尾存储位置为所述待存储数据的起始存储位置,将所述待存储数据存储至所述目标虚拟存储段;
数据分割模块,用于当所述容量小于所述待存储数据的数据量时,将所述待存储数据分割成第一数据和第二数据,其中,所述第一数据的数据量等于所述容量;
所述存储段确定模块,还用于根据所述存储标识,从未存储数据的虚拟存储段中确定用于存储所述第二数据的第一虚拟存储段;
所述数据存储模块,还用于以所述末尾存储位置为所述第一数据的起始存储位置,将所述第一数据存储至所述目标虚拟存储段,将所述第二数据存储至所述第一虚拟存储段;
所述第一虚拟存储段为所述目标虚拟存储段的物理地址段最近且未存储数据的虚拟存储段;
在所述存储段确定模块之前,还包括:
逻辑地址段确定模块,用于确定所述待存储数据在所述目标文件中的第一逻辑地址段;
所述元数据存储段,还用于存储数据在文件中的逻辑地址段与在磁盘中的物理地址段之间对应关系的第二类对应关系库;
在所述数据存储模块之后,还包括:
物理地址段确定模块,用于确定存储所述待存储数据的目标物理地址段,其中,所述目标物理地址段的起始物理地址为所述末尾存储位置,终止物理地址为所述末尾存储位置与所述待存储数据的数据量的和;
第一对应关系存储模块,用于将所述第一逻辑地址段与目标物理地址段的第一对应关系存储至所述第二类对应关系库;
所述第一对应关系存储模块,包括:
获得子模块,用于获得所述第二类对应关系库中存储的针对所述目标文件的目标对应关系;
第二判断子模块,用于判断所述目标对应关系中是否存在逻辑地址段与所述第一逻辑地址段相邻,并且物理地址段与所述目标物理地址段相邻的第二对应关系;
第一更新子模块,用于当所述第二判断子模块的判断结果为是时,合并所述第一对应关系和第二对应关系,并将所述第二对应关系更新为合并后的对应关系。
8.根据权利要求7所述的装置,其特征在于,所述存储段确定模块,包括:
第一判断子模块,用于判断所述第一类对应关系库中是否存在针对所述目标文件的标识的对应关系;
第一确定子模块,用于当所述第一判断子模块的判断结果为是时,确定所述目标文件处于已存储状态,并从所述第一类对应关系库中与所述目标文件的标识对应的虚拟存储段中,确定用于存储所述待存储数据的目标虚拟存储段;
第二确定子模块,用于当所述第一判断子模块的判断结果为否时,确定所述目标文件处于未存储状态,并根据所述存储标识,从未存储数据的虚拟存储段中确定用于存储所述待存储数据的目标虚拟存储段。
9.根据权利要求7所述的装置,其特征在于,所述逻辑地址段确定模块,具体用于:
根据接收所述待存储数据的顺序,确定所述待存储数据在所述目标文件中的第一逻辑地址段。
10.根据权利要求7所述的装置,其特征在于,所述元数据存储段,还用于存储已存储文件的标识与用于进行覆盖写操作的虚拟存储段之间对应关系的第三类对应关系库;
所述存储段确定模块,包括:
第三判断子模块,用于判断所述第二类对应关系库中是否存在针对所述第一逻辑地址段的对应关系;
第三确定子模块,用于当所述第三判断子模块的判断结果为是时,确定所述待存储数据为覆盖写数据,将所述第三类对应关系库中与所述目标文件的标识对应的虚拟存储段确定为第二虚拟存储段,从所述第二虚拟存储段中确定用于存储所述待存储数据的目标虚拟存储段。
11.根据权利要求10所述的装置,其特征在于,所述元数据存储段,还用于存储已存储文件的标识与用于进行追加写操作的虚拟存储段之间对应关系的第四类对应关系库;所述存储段确定模块还包括:
第四确定子模块,用于当所述第三判断子模块的判断结果为否时,确定所述待存储数据为追加写数据,将所述第四类对应关系库中与所述目标文件的标识对应的虚拟存储段确定为第三虚拟存储段,从所述第三虚拟存储段中确定用于存储所述待存储数据的目标虚拟存储段。
12.根据权利要求10所述的装置,其特征在于,所述第一对应关系存储模块,包括:
查找子模块,用于从所述第二类对应关系库中查找针对所述第一逻辑地址段的原始对应关系;
第二更新子模块,用于将所述原始对应关系更新为所述第一逻辑地址段与目标物理地址段的第一对应关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610946331.3A CN108021513B (zh) | 2016-11-02 | 2016-11-02 | 一种数据存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610946331.3A CN108021513B (zh) | 2016-11-02 | 2016-11-02 | 一种数据存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108021513A CN108021513A (zh) | 2018-05-11 |
CN108021513B true CN108021513B (zh) | 2021-09-10 |
Family
ID=62069958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610946331.3A Active CN108021513B (zh) | 2016-11-02 | 2016-11-02 | 一种数据存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108021513B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110502184B (zh) * | 2018-05-17 | 2021-01-05 | 杭州海康威视系统技术有限公司 | 一种存储数据的方法、读取数据的方法、装置及系统 |
CN110795386B (zh) * | 2018-07-31 | 2022-07-01 | 杭州海康威视系统技术有限公司 | 一种数据写入方法和服务端 |
CN109683825B (zh) * | 2018-12-24 | 2022-05-24 | 广东浪潮大数据研究有限公司 | 一种存储系统在线数据压缩方法、装置及设备 |
CN110633052B (zh) * | 2019-09-05 | 2023-09-19 | 北京达佳互联信息技术有限公司 | 一种存储嵌入参数的方法及装置 |
CN111399762B (zh) | 2019-11-27 | 2021-06-18 | 杭州海康威视系统技术有限公司 | 数据存储方法、装置及存储系统 |
CN115398403A (zh) * | 2020-04-17 | 2022-11-25 | 华为技术有限公司 | 存储器的管理方法和控制装置 |
CN111803917B (zh) * | 2020-06-30 | 2024-09-13 | 北京金山云网络技术有限公司 | 资源的处理方法和装置 |
CN111913657B (zh) * | 2020-07-10 | 2023-06-09 | 长沙景嘉微电子股份有限公司 | 块数据读写方法、装置、系统及存储介质 |
CN112286948B (zh) * | 2020-11-18 | 2023-05-23 | 成都佳华物链云科技有限公司 | 时序数据库的数据存储方法、读取方法及装置 |
CN114124883B (zh) * | 2021-10-12 | 2023-09-12 | 鸬鹚科技(深圳)有限公司 | 基于云存储地址的数据访问方法、装置、计算机设备及介质 |
CN113783800B (zh) * | 2021-11-10 | 2022-03-01 | 恒生电子股份有限公司 | 数据包处理方法、装置、计算机设备及可读存储介质 |
CN115292266B (zh) * | 2022-05-30 | 2024-05-14 | 中国电子科技集团公司第五十二研究所 | 一种基于存储器的高可靠日志存储方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622350A (zh) * | 2011-01-26 | 2012-08-01 | 腾讯科技(深圳)有限公司 | 一种写数据的方法、装置及系统 |
CN103345925A (zh) * | 2012-03-02 | 2013-10-09 | Hgst荷兰公司 | 具有混合e区的瓦写磁记录装置 |
CN103810114A (zh) * | 2014-03-07 | 2014-05-21 | 华为技术有限公司 | 分配存储空间的方法及装置 |
CN104461390A (zh) * | 2014-12-05 | 2015-03-25 | 华为技术有限公司 | 将数据写入叠瓦状磁记录smr硬盘的方法及装置 |
CN104636266A (zh) * | 2014-05-09 | 2015-05-20 | 华为技术有限公司 | 盖瓦磁记录硬盘、盖瓦磁记录硬盘写数据的方法及装置 |
CN105183399A (zh) * | 2015-09-30 | 2015-12-23 | 北京奇艺世纪科技有限公司 | 一种基于弹性块存储的数据写、读方法及装置 |
WO2016101828A1 (zh) * | 2014-12-24 | 2016-06-30 | 华为技术有限公司 | 读取数据的方法以及装置 |
CN107315533A (zh) * | 2016-04-26 | 2017-11-03 | 杭州海康威视数字技术股份有限公司 | 一种数据存储方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6080799B2 (ja) * | 2014-05-28 | 2017-02-15 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | テープ記録システム用ファイルシステムを介した読み書きする方法 |
JP2016126632A (ja) * | 2015-01-07 | 2016-07-11 | 富士通株式会社 | ストレージ装置、ストレージシステム、データ読み出し方法、及びストレージプログラム |
-
2016
- 2016-11-02 CN CN201610946331.3A patent/CN108021513B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622350A (zh) * | 2011-01-26 | 2012-08-01 | 腾讯科技(深圳)有限公司 | 一种写数据的方法、装置及系统 |
CN103345925A (zh) * | 2012-03-02 | 2013-10-09 | Hgst荷兰公司 | 具有混合e区的瓦写磁记录装置 |
CN103810114A (zh) * | 2014-03-07 | 2014-05-21 | 华为技术有限公司 | 分配存储空间的方法及装置 |
CN104636266A (zh) * | 2014-05-09 | 2015-05-20 | 华为技术有限公司 | 盖瓦磁记录硬盘、盖瓦磁记录硬盘写数据的方法及装置 |
CN104461390A (zh) * | 2014-12-05 | 2015-03-25 | 华为技术有限公司 | 将数据写入叠瓦状磁记录smr硬盘的方法及装置 |
WO2016101828A1 (zh) * | 2014-12-24 | 2016-06-30 | 华为技术有限公司 | 读取数据的方法以及装置 |
CN105183399A (zh) * | 2015-09-30 | 2015-12-23 | 北京奇艺世纪科技有限公司 | 一种基于弹性块存储的数据写、读方法及装置 |
CN107315533A (zh) * | 2016-04-26 | 2017-11-03 | 杭州海康威视数字技术股份有限公司 | 一种数据存储方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108021513A (zh) | 2018-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108021513B (zh) | 一种数据存储方法及装置 | |
US8909887B1 (en) | Selective defragmentation based on IO hot spots | |
US8832371B2 (en) | Storage system with multiple flash memory packages and data control method therefor | |
US9251049B2 (en) | Data storage space recovery system and method | |
CN107122131B (zh) | 自动精简配置的方法及装置 | |
US9563375B2 (en) | Method for storing metadata of log-structured file system for flash memory | |
WO2017185579A1 (zh) | 一种数据存储方法及装置 | |
US10503424B2 (en) | Storage system | |
US10162746B2 (en) | Allocating additional requested storage space for a data set in a first managed space in a second managed space | |
CN107423233B (zh) | 一种可写快照实现方法和装置 | |
US10922276B2 (en) | Online file system check | |
CN109074227B (zh) | 一种数据校验的方法及存储系统 | |
CN111427855A (zh) | 一种存储系统中重复数据删除方法、存储系统及控制器 | |
CN113568582B (zh) | 数据管理方法、装置和存储设备 | |
US20190004703A1 (en) | Method and computer system for managing blocks | |
CN102253985B (zh) | 一种文件系统数据的管理方法及系统 | |
US10482012B1 (en) | Storage system and method of operating thereof | |
US10402108B2 (en) | Efficient control of data storage areas based on a size of compressed data to be written | |
CN113157600A (zh) | 一种叠瓦式硬盘的空间分配方法、文件存储系统及服务器 | |
US9009204B2 (en) | Storage system | |
CN111913664A (zh) | 一种数据写入方法及装置 | |
CN109582235B (zh) | 管理元数据存储方法及装置 | |
CN112052218A (zh) | 快照实现方法及分布式存储集群 | |
CN114115738B (zh) | 一种基于分布式存储的磁盘空间管理方法及系统 | |
CN112052217B (zh) | 快照实现方法及装置 |
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 |