CN111352579B - 数据存储方法及装置 - Google Patents

数据存储方法及装置 Download PDF

Info

Publication number
CN111352579B
CN111352579B CN201811583162.7A CN201811583162A CN111352579B CN 111352579 B CN111352579 B CN 111352579B CN 201811583162 A CN201811583162 A CN 201811583162A CN 111352579 B CN111352579 B CN 111352579B
Authority
CN
China
Prior art keywords
data
data blocks
disk
memory
blocks
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
Application number
CN201811583162.7A
Other languages
English (en)
Other versions
CN111352579A (zh
Inventor
徐佳宏
李银
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Ipanel TV Inc
Original Assignee
Shenzhen Ipanel TV Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Ipanel TV Inc filed Critical Shenzhen Ipanel TV Inc
Priority to CN201811583162.7A priority Critical patent/CN111352579B/zh
Publication of CN111352579A publication Critical patent/CN111352579A/zh
Application granted granted Critical
Publication of CN111352579B publication Critical patent/CN111352579B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device

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)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本发明提供的数据存储方法及装置,在接收需要存储的原始数据后,在内存中分配M个第一内存数据块,并将原始数据写入至M个第一内存数据块;当M个第一内存数据块已写满数据时,在内存中分配N个第二内存数据块,并对M个第一内存数据块中的数据进行编码,再将编码后的数据写入至N个第二内存数据块;然后向信息管理模块申请包括K个磁盘数据块的条带,并将所有内存数据块中的数据并行传输至K个磁盘数据块;获取条带中数据存储成功的磁盘数据块的数目,当该数目大于或等于预设数目时,确定条带存储数据成功。本发明的数据存储方法及装置,提高了数据存储效率,缩短了数据存储等待时间,并保证了数据存储的安全性与可靠性。

Description

数据存储方法及装置
技术领域
本发明涉及数据处理技术领域,更具体的说,涉及数据存储方法及装置。
背景技术
数字化社会产生了持续增长的数据存储需求,这对传统的数据存储方式提出了巨大挑战。
现有的数据存储方案主要有:方案一、先确定几个磁盘数据块,并连接至这几个磁盘数据块对应的磁盘;然后将目标数据存储到第一个磁盘数据块,等待第一个磁盘数据块存储返回结果后,再将目标数据继续存储至第二个磁盘数据块,等待第二给磁盘数据块返回结果,……,以此类推,直到目标数据存储完毕;方案二、先确定几个磁盘数据块,并连接至这几个磁盘数据块对应的磁盘;然后将目标数据存储到第一个磁盘数据块,其中,将第一个磁盘数据块作为文件数据块的主块,当主块存储数据成功后,通过文件系统在后台读取主块数据,将主块数据在其他磁盘中创建副本。
但是,大文件数据的存储,通常需要将数据存储至多个磁盘数据块中,而方案一中的数据存储方案,提供的是一个串行存储的过程,当需要存储到的磁盘数据块较多时,便会大幅增加用户存储文件数据的等待时间,严重影响存储效率;方案二虽然从一定程度上能够提高数据存储效率,但是,在数据存储完成后,恰好对应磁盘或对应的磁盘数据块坏掉了,那么磁盘数据块存储的该部分数据就会永久丢失,其数据存储的安全性与可靠性难以得到保障。
因此,目前迫切需要一种切实有效的数据存储方案,同时提高数据存储效率以及数据存储的安全性与可靠性。
发明内容
有鉴于此,本发明提供了一种数据存储方法及装置,以解决目前的数据存储方案的数据存储效率以及安全性与可靠性均较差,且无法很好地兼顾数据存储的高效性以及安全性与可靠性的技术问题。
为实现上述目的,本发明提供如下技术方案:
一种数据存储方法,所述方法包括:
接收需要存储的原始数据;
在内存中分配M个第一内存数据块,并将所述原始数据写入至所述M个第一内存数据块;M>1;
当所述M个第一内存数据块已写满数据时,在所述内存中分配N个第二内存数据块,并对所述M个第一内存数据块中的数据进行编码,再将编码后的数据写入至所述N个第二内存数据块;N>0;
向信息管理模块申请包括K个磁盘数据块的条带,并将K个内存数据块中的数据并行传输至所述K个磁盘数据块;其中,K=M+N,所述K个磁盘数据块与所述K个内存数据块一一对应,所述K个内存数据块包括所述M个第一内存数据块与所述N个第二内存数据块,所述K个磁盘数据块包括M个第一磁盘数据块与N个第二磁盘数据块;
获取所述条带中数据存储成功的磁盘数据块的数目;
当所述数据存储成功的磁盘数据块的数目大于或等于预设数目时,确定所述条带存储数据成功。
优选的,所述将所述原始数据写入至所述M个第一内存数据块包括:
获取所述M个第一内存数据块的剩余空间容量,与,所述原始数据的数据量;
当所述原始数据的数据量大于所述剩余空间容量时,将所述原始数据中的部分原始数据写入至所述M个第一内存数据块;其中,所述部分原始数据的数据量等于所述剩余空间容量;
相应的,在所述确定所述条带存储数据成功之后,将所述原始数据中的剩余原始数据,作为所述需要存储的原始数据,再次执行所述在内存中分配M个第一内存数据块,并将所述原始数据写入至所述M个第一内存数据块的步骤。
优选的,所述向信息管理模块申请包括K个磁盘数据块的条带,并将K个内存数据块中的数据并行传输至所述K个磁盘数据块包括:
向信息管理模块申请包括K个磁盘数据块的条带;
获取所述K个磁盘数据块的逻辑块编号,以及所述K个磁盘数据块对应的磁盘的连接地址;
根据所述逻辑块编号与所述连接地址,连接所述K个磁盘数据块,并建立所述K个内存数据块与所述K个磁盘数据块的一一对应关系;
依据所述一一对应关系,将所述K个内存数据块的数据,并行传输至所述K个磁盘数据块。
优选的,在所述向信息管理模块申请包括K个磁盘数据块的条带之后,所述方法还包括:
生成与所述K个磁盘数据块一一对应的K个状态标记;
相应的,所述获取所述条带中数据存储成功的磁盘数据块的数目包括:
获取所述K个磁盘数据块的数据存储结果;
当目标磁盘数据块的数据存储结果表征所述目标磁盘数据块存储数据成功时,将所述目标磁盘数据块对应的状态标记设定为成功状态;其中,所述目标磁盘数据块为,所述K个磁盘数据块中的任一磁盘数据块;
统计所述K个状态标记中成功状态的数目;
将所述成功状态的数目确定为所述条带中数据存储成功的磁盘数据块的数目。
优选的,在所述确定所述条带存储数据成功之后,所述方法还包括:
清理所述M个第一内存数据块与所述N个第二内存数据块。
优选的,所述方法还包括:
当所述数据存储成功的磁盘数据块的数目小于预设数目时,确定所述条带存储数据失败;
当所述条带存储数据失败时,再次执行所述向信息管理模块申请包括K个磁盘数据块的条带,并将K个内存数据块中的数据并行传输至所述K个磁盘数据块的步骤。
优选的,所述方法还包括:
接收用户发出的文件关闭请求;所述文件关闭请求,用于请求关闭用来写入所述原始数据的文件;
响应于所述文件关闭请求,获取所述M个第一内存数据块中已写入数据的数据量;
当所述已写入数据的数据量大于0时,利用数值0,将所述M个第一内存数据块的剩余空间补齐;
在将所述M个第一内存数据块的剩余空间补齐后,执行所述当所述M个第一内存数据块已写满数据时,在所述内存中分配N个第二内存数据块,并对所述M个第一内存数据块中的数据进行编码,再将编码后的数据写入至所述N个第二内存数据块的步骤。
优选的,在所述响应于所述文件关闭请求,获取所述M个第一内存数据块中已写入数据的数据量之后,所述方法还包括:
当所述已写入数据的数据量等于0时,结束数据存储流程。
一种数据存储装置,所述装置包括数据接入模块;所述数据接入模块包括:
原始数据接收单元,用于接收需要存储的原始数据;
原始数据写入单元,用于在内存中分配M个第一内存数据块,并将所述原始数据写入至所述M个第一内存数据块;M>1;
编码数据写入单元,用于当所述M个第一内存数据块已写满数据时,在所述内存中分配N个第二内存数据块,并对所述M个第一内存数据块中的数据进行编码,再将编码后的数据写入至所述N个第二内存数据块;N>0;
磁盘数据存储单元,用于向信息管理模块申请包括K个磁盘数据块的条带,并将K个内存数据块中的数据并行传输至所述K个磁盘数据块;其中,K=M+N,所述K个磁盘数据块与所述K个内存数据块一一对应,所述K个内存数据块包括所述M个第一内存数据块与所述N个第二内存数据块,所述K个磁盘数据块包括M个第一磁盘数据块与N个第二磁盘数据块;
成功数目获取单元,用于获取所述条带中数据存储成功的磁盘数据块的数目;
存储结果确定单元,用于当所述数据存储成功的磁盘数据块的数目大于或等于预设数目时,确定所述条带存储数据成功。
优选的,所述装置还包括用户模块、磁盘模块与所述信息管理模块;
所述用户模块,用于提供用户操作接口,并将用户传入的原始数据传递给所述数据接入模块;
所述磁盘模块,用于提供多个磁盘,所述多个磁盘中每个磁盘均具有对外的数据读写接口;
所述信息管理模块,用于提供磁盘管理、磁盘组管理、条带管理与文件管理。
从上述的技术方案可以看出,本发明提供的数据存储方法及装置,接收需要存储的原始数据;在内存中分配M个第一内存数据块,并将原始数据写入至M个第一内存数据块;当M个第一内存数据块已写满数据时,在内存中分配N个第二内存数据块,并对M个第一内存数据块中的数据进行编码,再将编码后的数据写入至N个第二内存数据块;然后,向信息管理模块申请包括K个磁盘数据块的条带,并将K个内存数据块中的数据并行传输至K个磁盘数据块;当数据存储成功的磁盘数据块的数目大于或等于预设数目时,确定条带存储数据成功,从而不仅以并行传输的方式提高了数据存储的效率,缩短了数据存储的等待时间,并且通过同时存储原始数据与编码数据,提高了丢失数据的可恢复性,保证了数据存储的安全性与可靠性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的数据存储方法的一种流程图;
图2为本发明实施例提供的数据存储方法的另一种流程图;
图3为本发明实施例提供的数据存储方法的又一种流程图;
图4为本发明实施例提供的数据存储方法的又一种流程图;
图5为本发明实施例提供的数据存储方法的再一种流程图;
图6为本发明实施例提供的数据存储装置的一种结构示意图;
图7为本发明实施例提供的数据存储装置的另一种结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供的数据存储方法及装置,在获取到需要存储的原始数据后,将原始数据及其编码数据,并行存储到条带的各个磁盘对应的数据块中,然后集中等待对应磁盘的反馈结果,并集中对反馈结果进行处理,从而提高了数据存储效率,缩短了分布式数据存储的等待时间,同时,也保证了数据存储的安全性与可靠性。
在分布式磁盘系统中,多个磁盘组合成一个组,称为磁盘组。本发明将分布式磁盘系统中的所有磁盘都进行统一管理,按照编码制的方法进行分组,一般按照4+2、6+3、8+4等方法进行分组。其中,加号“+”前面的数字表示用于存储原始数据的磁盘数据块的个数,加号“+”后面的数字表示用于存储编码数据的磁盘数据块的个数。
本本发明的磁盘组是基本存储单位,每个磁盘组用于存储一组关联数据,当关联数据中发生了数据丢失时,可以通过这一组中的相关联的其他数据进行数据恢复。
一般通过4+2、6+3、8+4等模式进行数据存储,这样,就允许数据发生丢失的磁盘数据块的最大个数等于加号“+”后面的数字。例如,在8+4模式下,即包括用于存储原始数据的8个磁盘数据块,以及用于存储对应编码数据的4个磁盘数据块,那么,同时最多允许4个磁盘数据块发生数据丢失,其中,这4个数据块可以是用于存储原始数据的磁盘数据块,也可以是用于存储编码数据的磁盘数据块。丢失的数据可以通过其他至少8个磁盘数据块的数据进行恢复,恢复的时候通过读取其他8个磁盘数据块中的数据,然后通过编解码数据,就可以将已经丢失的数据恢复回来,从而保证了数据存储的安全性和可靠性。
磁盘条带化技术是一种自动的将I/O的负载均衡到多个物理磁盘上的技术,就是将一块连续的数据分成很多小部分,并把他们分别存储到不同磁盘上去。这就能使多个进程同时访问数据的多个不同部分,而不会造成磁盘冲突;而且在需要对这种数据进行顺序访问的时候,可以获得最大程度上的I/O并行能力,从而获得非常好的数据处理性能。
本发明采用4+2、6+3或8+4等模式将多个磁盘划分为一组。一组磁盘组就确定了,那么再在这个磁盘组的每个磁盘中,划分出的大小完全相同的数据块,并从每一个磁盘中获取一个数据块(即,磁盘数据块),然后将磁盘组中不同磁盘对应的磁盘数据块进行组合,组合成一个磁盘数据块组,那么这个磁盘数据块组就是一个条带。一个磁盘组上的所有数据块进行唯一的组合,可以构成若干个条带。一个条带包括了对应的磁盘数据块的逻辑块编号,磁盘数据块在这个条带中的索引号,以及对应磁盘的连接地址等。
数据块是一组按顺序连续排列在一起的几组记录,是主存储器与输入、输出设备或外存储器之间进行传输的一个数据单位。是数据的物理记录,与数据的逻辑记录(逻辑上有联系,在存储器上占有一组邻接单元的数据单位)之间的对应关系有3种方式:①一个块即为一个记录;②一个块包含若干个逻辑记录;③一个逻辑记录占有几个块。数据块的大小可以是固定的或是可变的,块与块之间有间隙。设计数据块大小,受到多方面因素的影响,包括输入、输出效率,存储空间代价以及计算机应用特点等。
每一个数据块都有对应的一个索引节点,索引节点中保存有数据块的索引号,文件系统根据索引号来读取该数据块的数据。
请参阅图1,图1为本发明实施例提供的数据存储方法的一种流程图。
如图1所示,本实施例提供的数据存储方法可包括:
S101:接收需要存储的原始数据。
需要存储的原始数据,是指用户在创建目标文件后,需要写入目标文件的数据。在接收需要存储的原始数据时,也可以获取到原始数据的数据量大小等信息。
S102:在内存中分配M个第一内存数据块,并将原始数据写入至M个第一内存数据块。
其中,M为大于1的正整数,即M>1。第一内存数据块是指在内存中分配的用于存储原始数据的数据块。
S103:当M个第一内存数据块已写满数据时,在内存中分配N个第二内存数据块,并对M个第一内存数据块中的数据进行编码,再将编码后的数据写入至N个第二内存数据块。
其中,N为大于0的正整数,即N>0。第二内存数据块是指在内存中分配的用于存储编码数据的数据块。
第一内存数据块与第二内存数据块的大小是一样的,一般按照1MByte、2MByte、4MByte、8MByte来进行分块。
在通过4+2、6+3或8+4等模式进行数据存储时,M的取值即为加号“+”前面的数字,N的取值即为加号“+”后面的数字。可见,M>N,N=M/2。
S104:向信息管理模块申请包括K个磁盘数据块的条带,并将K个内存数据块中的数据并行传输至K个磁盘数据块。
信息管理模块是用于管理磁盘数据块的模块,具体可用于提供所述包括K个磁盘数据块的条带。
在将第一内存数据块写满数据且将编码数据写入第二内存数据块后,就可以向信息管理模块申请包括K个磁盘数据块的条带。
磁盘数据块是指在条带中分配的且用于存储数据的数据块。
其中,K=M+N,K个磁盘数据块与K个内存数据块一一对应。也就是说,K个磁盘数据块也包括M个第一磁盘数据块与N个第二磁盘数据块。
第一磁盘数据块是指在条带中分配的且用于存储原始数据的磁盘数据块;第二磁盘数据块是指在条带中分配的且用于存储编码数据的磁盘数据块。
根据K个磁盘数据块与K个内存数据块之间的一一对应关系,将并将K个内存数据块中的数据并行传输至K个磁盘数据块。
其中,K个内存数据块即包括M个第一内存数据块与N个第二内存数据块。
磁盘数据块也是按照一定大小进行设置的,所有的磁盘数据块大小都是一样的,可以1MByte、2MByte、4MByte、8MByte等大小。磁盘数据块的大小决定了文件内容在对应磁盘中存储的数据的最大大小。所以,本发明中内存数据块的大小与磁盘数据块的大小应当是一致的。例如,磁盘数据块的大小是4MByte,那么在内存中分配的内存数据块的大小也应是4MByte。其中,选用4MByte作为内存数据块与磁盘数据的大小,可以充分保证磁盘的最佳读写性能。
一示例中,内存中分配的内存数据块的个数和条带中分配的磁盘数据块的个数相同。假设使用是8+4的模式进行数据存储的,那么,就需要先分配8个第一内存数据块来与8个第一磁盘数据块相对应,在将原始数据存入8个第一内存数据块的时候,不需要提前分配4个第二内存数据块来与4个第二磁盘数据块相对应。
假定内存数据块与磁盘数据块的大小均为4MByte。M个第一内存数据块中已写入的数据大小记为s字节,s的初始值为0,最大值为n字节,n=M×4×1024×1024字节=M×4194304字节。
当s小于等于4MByte时,用户传入的数据写入到第一个数据块中;当s大于4MByte且小于等于8MByte时,用户传入的数据被连续写入到第二个数据块中,以此类推,直到s等于n表示M个内存数据块已经写满。
K个磁盘数据所在的磁盘均不相同,也就是说,本发明是在K个磁盘中的每一个磁盘中只取出一个磁盘数据块,并将由此得到的K个磁盘数据块,组成一个条带。
S105:获取条带中数据存储成功的磁盘数据块的数目。
S106:当数据存储成功的磁盘数据块的数目大于或等于预设数目时,确定条带存储数据成功。
其中,当预设数目大于或等于M时,也即存储失败的磁盘数据块的数目小于或等于N时,可充分保证丢失数据的可恢复性,能够提高数据存储的安全性与可靠性。
相应的,当数据存储成功的磁盘数据块的数目小于预设数目时,确定条带存储数据失败;并且,当条带存储数据失败时,重新执行步骤S104。
本实施例提供的数据存储方法,接收需要存储的原始数据;在内存中分配M个第一内存数据块,并将原始数据写入至M个第一内存数据块;当M个第一内存数据块已写满数据时,在内存中分配N个第二内存数据块,并对M个第一内存数据块中的数据进行编码,再将编码后的数据写入至N个第二内存数据块;然后,向信息管理模块申请包括K个磁盘数据块的条带,并将K个内存数据块中的数据并行传输至K个磁盘数据块;当数据存储成功的磁盘数据块的数目大于或等于预设数目时,确定条带存储数据成功,从而不仅以并行传输的方式提高了数据存储的效率,缩短了数据存储的等待时间,并且通过同时存储原始数据与编码数据,提高了丢失数据的可恢复性,保证了数据存储的安全性与可靠性。
请参阅图2,图2为本发明实施例提供的数据存储方法的另一种流程图。
如图2所示,本实施例提供的数据存储方法可包括:
S201:接收需要存储的原始数据。
S202:在内存中分配M个第一内存数据块。
其中,M为大于1的正整数,即M>1。
S203:获取M个第一内存数据块的剩余空间容量,与,原始数据的数据量。
原始数据的数据量,就是指原始数据的大小。M个第一内存数据块的剩余空间容量,可以通过M个第一内存数据块的总空间容量与M个第一内存数据块中已写入的数据量来进行计算。例如,M个第一内存数据块的总空间容量为n字节,M个第一内存数据块中已写入的数据量记为s字节,s的初始值为0,则M个第一内存数据块的剩余空间容量等于n-s,可记为sz。
S204:当原始数据的数据量大于所述剩余空间容量时,将原始数据中的部分原始数据写入至M个第一内存数据块。
其中,所述部分原始数据的数据量等于所述剩余空间容量。
用户传入的原始数据的大小(也即,数据量)记为length,通过length和sz进行比较,若length小于或等于sz,则将原始数据按照顺序直接保存到第一内存数据块中;若length大于sz,则将原始数据中的部分原始数据写入至第一内存数据块中,部分原始数据的大小限制为sz,此时,s=s+sz,length=length-sz,然后需要等待M个第一内存数据块中的部分原始数据均存储到磁盘中后,才可以将剩余原始数据继续写入至第一内存数据块中,从而进入到下一个数据存储周期。
S205:当M个第一内存数据块已写满数据时,在内存中分配N个第二内存数据块,并对M个第一内存数据块中的数据进行编码,再将编码后的数据写入至N个第二内存数据块。
其中,N为大于0的正整数,即N>0。当M个第一内存数据块已经存储满了数据时,则需要将M个第一内存数据块中的数据存储到磁盘中。
仍以8+4的数据存储模式为例,首先申请4个内存数据块作为用于存储编码数据的第二内存数据块,再对8个第一内存数据块中的数据进行编码,然后将编码后的数据顺序写入4个第二内存数据块中。
在8+4的数据存储模式下,一共需要12个内存数据块中,其中,序号为0~7的内存数据块为用于存储原始数据的第一内存数据块,且第一内存数据块是按照数据存储的先后次序进行存储的;序号为8~11的内存数据块为用于存储编码数据的第二内存数据块,其是按照编码顺序进行存储的。
S206:向信息管理模块申请包括K个磁盘数据块的条带,并将K个内存数据块中的数据并行传输至K个磁盘数据块。
其中,K=M+N,K个磁盘数据块与K个内存数据块一一对应,K个内存数据块包括M个第一内存数据块与N个第二内存数据块,K个磁盘数据块包括M个第一磁盘数据块与N个第二磁盘数据块;
S207:获取条带中数据存储成功的磁盘数据块的数目。
S208:当数据存储成功的磁盘数据块的数目大于或等于预设数目时,确定条带存储数据成功。
S209:将原始数据中的剩余原始数据,作为需要存储的原始数据,并再次执行步骤S202。
将原始数据中的部分原始数据存入磁盘中后,将原始数据中的剩余原始数据作为需要存储的原始数据,进入下一个数据存储周期,再次执行将原始数据写入内存数据块,并将内存数据块的数据并行传输至磁盘数据块的过程,直至将全部的原始数据,均存储至磁盘中。
当原始数据较大时,自动执行多次存储处理,可以减少用户与系统的交互过程,降低系统负担。
一示例中,在确定条带存储数据成功之后,该方法还可以包括:清理M个第一内存数据块与N个第二内存数据块。
在清理内存数据块时,对第二内存数据块进行释放,并将第一内存数据块执行清零处理,同时将s置为0。
本实施例提供的数据存储方法,接收需要存储的原始数据,并在内存中分配M个第一内存数据块,以用户存储原始数据,然后获取M个第一内存数据块的剩余空间容量与原始数据的数据量;当原始数据的数据量大于所述剩余空间容量时,将原始数据中的部分原始数据写入至M个第一内存数据块;当M个第一内存数据块已写满数据时,在内存中分配N个第二内存数据块,并对M个第一内存数据块中的数据进行编码,再将编码后的数据写入至N个第二内存数据块;并且,在将部分原始数据成功存储到磁盘数据块后,将原始数据中的剩余原始数据,作为需要存储的原始数据,并再次执行原始数据的存储过程,从而实现了原始数据的分批次的并行存储,提高了数据存储的灵活性。
请参阅图3,图3为本发明实施例提供的数据存储方法的又一种流程图。
如图3所示,本实施例提供的数据存储方法可包括:
S301:接收需要存储的原始数据。
S302:在内存中分配M个第一内存数据块,并将原始数据写入至M个第一内存数据块。
其中,M为大于1的正整数,即M>1。
S303:当M个第一内存数据块已写满数据时,在内存中分配N个第二内存数据块,并对M个第一内存数据块中的数据进行编码,再将编码后的数据写入至N个第二内存数据块。
其中,N为大于0的正整数,即N>0。
S304:向信息管理模块申请包括K个磁盘数据块的条带。
S305:获取K个磁盘数据块的逻辑块编号,以及K个磁盘数据块对应的磁盘的连接地址。
信息管理模块在提供包括K个磁盘数据块的条带时,也会返回各磁盘数据块对应的磁盘的连接地址,以及K个磁盘数据块的逻辑块编号,也便于实现对磁盘数据块的接入。
例如,在8+4的模式下,信息管理模块在提供包括12个磁盘数据块的条带时,还返回12个磁盘的连接地址以及12个磁盘数据块对应的逻辑块编号。
S306:根据逻辑块编号与连接地址,连接K个磁盘数据块,并建立K个内存数据块与K个磁盘数据块的一一对应关系。
比如,0号内存数据块对应到0号磁盘数据块;1号内存数据块对应到1号磁盘数据块;......,11号内存数据块对应到11号磁盘数据块。
S307:依据所述一一对应关系,将K个内存数据块的数据,并行传输至K个磁盘数据块。
其中,K=M+N,K个磁盘数据块与K个内存数据块一一对应,K个内存数据块包括M个第一内存数据块与N个第二内存数据块,K个磁盘数据块包括M个第一磁盘数据块与N个第二磁盘数据块;
在接入这12个磁盘数据块后,将12个内存数据块的数据并行传输到对应的磁盘数据块中。即,0号内存数据块的数据传输给0号磁盘数据块,1号内存数据块的数据传输给1号磁盘数据块,以此类推,将12个内存数据块中的数据都传递至对应的磁盘数据块上进行存储。
S308:获取条带中数据存储成功的磁盘数据块的数目。
S309:当数据存储成功的磁盘数据块的数目大于或等于预设数目时,确定条带存储数据成功。
本实施例提供的数据存储方法,在向信息管理模块申请包括K个磁盘数据块的条带后,获取K个磁盘数据块的逻辑块编号,以及K个磁盘数据块对应的磁盘的连接地址,并根据逻辑块编号与连接地址,连接K个磁盘数据块,并建立K个内存数据块与K个磁盘数据块的一一对应关系,然后依据所述一一对应关系,将K个内存数据块的数据,并行传输至K个磁盘数据块,从而实现了内存数据块到磁盘数据块的一一对应的并行传输过程,从而有效地提高了数据存储效率。
请参阅图4,图4为本发明实施例提供的数据存储方法的又一种流程图。
如图4所示,本实施例提供的数据存储方法可包括:
S401:接收需要存储的原始数据;
S402:在内存中分配M个第一内存数据块,并将原始数据写入至M个第一内存数据块。
其中,M为大于1的正整数,即M>1。
S403:当M个第一内存数据块已写满数据时,在内存中分配N个第二内存数据块,并对M个第一内存数据块中的数据进行编码,再将编码后的数据写入至N个第二内存数据块。
其中,N为大于0的正整数,即N>0。
S404:向信息管理模块申请包括K个磁盘数据块的条带,并生成与K个磁盘数据块一一对应的K个状态标记。
仍以8+4模式为例,将这12个磁盘数据块按照二进制位进行标记,即0号磁盘数据块标记到第0位,1号磁盘数据块标记到第1位,2号磁盘数据块标记到第2位,......,第11号磁盘数据块标记到11位。标记好二进制位后,可以先将这些磁盘数据块对应的二进制位都初始化为0,即,000000000000。
S405:将K个内存数据块中的数据并行传输至K个磁盘数据块。
其中,K=M+N,K个磁盘数据块与K个内存数据块一一对应,K个内存数据块包括M个第一内存数据块与N个第二内存数据块,K个磁盘数据块包括M个第一磁盘数据块与N个第二磁盘数据块。
S406:获取K个磁盘数据块的数据存储结果。
数据传输完毕后,等待每一个磁盘返回的磁盘数据块的数据存储结果。由于网络繁忙的问题,磁盘IO繁忙的问题,磁盘性能的问题,即使按照磁盘数据块0~11的顺序存储数据,磁盘也并不一定就会按照0~11这样的顺序返回存储的结果,还有可能在传输的过程中,由于网络原因,磁盘等原因,导致某一个或几个磁盘断网离线的可能,则每一个磁盘返回结果的顺序并不一定是调用磁盘存储的顺序。
12个磁盘中任何一个磁盘都有可能会先返回磁盘数据块的数据存储结果。所以,在前面标记了磁盘数据块对应的二进制位的序号,其中,0号磁盘数据块实际上也是指0号磁盘对应的数据块,1号磁盘数据块就是1号磁盘对应的数据块。
S407:当目标磁盘数据块的数据存储结果表征目标磁盘数据块存储数据成功时,将目标磁盘数据块对应的状态标记设定为成功状态。
其中,所述目标磁盘数据块为,所述K个磁盘数据块中的任一磁盘数据块。
当任何一个磁盘返回结果后,标记这个磁盘已经操作完成,若数据成功写入到磁盘的对应的数据块中,返回成功状态,那么在对应的磁盘数据块的二进制位上标记为1(即成功状态);否则标记为0或不进行标记(默认为0)。当所有的磁盘都返回结果后,所有磁盘数据块对应的二进制位都进行了标记0或1。
S408:统计K个状态标记中成功状态的数目,将成功状态的数目确定为条带中数据存储成功的磁盘数据块的数目。
当所有的磁盘都返回了结果并标记了二进制位的状态后,统计二进制位上1的个数。
S409:当数据存储成功的磁盘数据块的数目大于或等于预设数目时,确定条带存储数据成功。
在8+4模式下,当二进制位上1的个数大于或等于8时,或者,当二进制位上的0的个数小于或等于4时,例如,K个状态标记为101011101111,则表示该条带上数据存储成功。然后,可以将本次的存储结果汇报给信息管理模块,信息管理模块记录该条带以及本次存储的文件大小。
相应的,当数据存储成功的磁盘数据块的数目小于预设数目时,例如,在8+4模式下,得到K个状态标记为101000000010,则确定条带存储数据失败;当条带存储数据失败时,可以重新执行步骤S404。
本实施例提供的数据存储方法,在向信息管理模块申请包括K个磁盘数据块的条带时,还生成与K个磁盘数据块一一对应的K个状态标记;在将K个内存数据块中的数据并行传输至K个磁盘数据块后,获取K个磁盘数据块的数据存储结果,当目标磁盘数据块的数据存储结果表征目标磁盘数据块存储数据成功时,将目标磁盘数据块对应的状态标记设定为成功状态,统计K个状态标记中成功状态的数目,将成功状态的数目确定为条带中数据存储成功的磁盘数据块的数目,从而实现了数据存储状态的集中监控,并当数据存储成功的磁盘数据块的数目大于或等于预设数目时,确定条带存储数据成功,从而提高了数据存储的安全性与可靠性。
请参阅图5,图5为本发明实施例提供的数据存储方法的再一种流程图。
本实施例提供的数据存储方法,是在前述实施例提供的数据存储方法的基础上,针对接收到的文件关闭请求进行处理,以保证数据的顺利存储。
如图5所示,本实施例提供的数据存储方法可包括:
S501:接收用户发出的文件关闭请求。
其中,所述文件关闭请求,用于请求关闭用来写入原始数据的文件。
S502:响应于文件关闭请求,获取M个第一内存数据块中已写入数据的数据量。
S503:判断已写入数据的数据量是否大于0,如是执行,S504,若否,执行S505。
S504:利用数值0,将M个第一内存数据块的剩余空间补齐,并继续执行数据存储流程。
其中,继续执行数据存储流程是指,继续执行前述实施例中的当M个第一内存数据块已写满数据时,在内存中分配N个第二内存数据块,并对M个第一内存数据块中的数据进行编码,再将编码后的数据写入至N个第二内存数据块的步骤,如步骤前述实施例中的S103~S106、S205~S208、S303~S309或S403~S409。
也就是说,当所述已写入数据的数据量大于0时,利用数值0,将M个第一内存数据块的剩余空间补齐,使得第一内存数据块处于已写满状态。
在将M个第一内存数据块的剩余空间补齐后,执行当M个第一内存数据块已写满数据时,在内存中分配N个第二内存数据块,并对M个第一内存数据块中的数据进行编码,再将编码后的数据写入至N个第二内存数据块的步骤,直至将M个第一内存数据块中的数据全部存储到磁盘中。
S505:结束数据存储流程。
当已写入数据的数据量等于0时,表示没有写入任何数据或数据已经写入到磁盘中了,所以可以结束数据存储流程。其中,结束存储流程可包括:释放所有内存数据块,释放原始数据对应的文件管理,并返回已经写入文件的数据量大小,返回成功状态等。
本实施例提供的数据存储方法,在接收到用户发出的文件关闭请求时,获取M个第一内存数据块中已写入数据的数据量,当已写入数据的数据量大于0时,利用数值0,将M个第一内存数据块的剩余空间补齐,并执行当M个第一内存数据块已写满数据时,在内存中分配N个第二内存数据块,并对M个第一内存数据块中的数据进行编码,再将编码后的数据写入至N个第二内存数据块的步骤;当已写入数据的数据量等于0时,直接结束数据存储流程,从而保证了文件关闭时将内存数据块中未写入磁盘数据块的数据及时写入磁盘数据块,而并不会做丢弃处理,从而提高了数据存储的安全性与可靠性。
本发明实施例还提供了数据存储装置,所述数据存储装置用于实施本发明实施例提供的数据存储方法,下文描述的数据存储装置的技术内容,可与上文描述的数据存储方法的技术内容与相互对应参照。
请参阅图6,图6为本发明实施例提供的数据存储装置的一种结构示意图。
如图6所示,本实施例提供的数据存储装置主要包括数据接入模块100;所述数据接入模块100包括:
原始数据接收单元110,用于接收需要存储的原始数据。
原始数据写入单元120,用于在内存中分配M个第一内存数据块,并将所述原始数据写入至所述M个第一内存数据块;M>1。
编码数据写入单元130,用于当所述M个第一内存数据块已写满数据时,在所述内存中分配N个第二内存数据块,并对所述M个第一内存数据块中的数据进行编码,再将编码后的数据写入至所述N个第二内存数据块;N>0。
磁盘数据存储单元140,用于向信息管理模块申请包括K个磁盘数据块的条带,并将K个内存数据块中的数据并行传输至所述K个磁盘数据块。
其中,K=M+N,所述K个磁盘数据块与所述K个内存数据块一一对应,所述K个内存数据块包括所述M个第一内存数据块与所述N个第二内存数据块,所述K个磁盘数据块包括M个第一磁盘数据块与N个第二磁盘数据块。
成功数目获取单元150,用于获取所述条带中数据存储成功的磁盘数据块的数目。
存储结果确定单元160,用于当所述数据存储成功的磁盘数据块的数目大于或等于预设数目时,确定所述条带存储数据成功。
一示例中,原始数据写入单元120具体用于:
获取所述M个第一内存数据块的剩余空间容量,与,所述原始数据的数据量;当所述原始数据的数据量大于所述剩余空间容量时,将所述原始数据中的部分原始数据写入至所述M个第一内存数据块;其中,所述部分原始数据的数据量等于所述剩余空间容量;
相应的,存储结果确定单元160在所述确定所述条带存储数据成功之后,将所述原始数据中的剩余原始数据,作为所述需要存储的原始数据,触发原始数据写入单元120再次执行所述在内存中分配M个第一内存数据块,并将所述原始数据写入至所述M个第一内存数据块的步骤。
一示例中,磁盘数据存储单元140具体用于:
向信息管理模块申请包括K个磁盘数据块的条带;获取所述K个磁盘数据块的逻辑块编号,以及所述K个磁盘数据块对应的磁盘的连接地址;根据所述逻辑块编号与所述连接地址,连接所述K个磁盘数据块,并建立所述K个内存数据块与所述K个磁盘数据块的一一对应关系;依据所述一一对应关系,将所述K个内存数据块的数据,并行传输至所述K个磁盘数据块。
一示例中,所述数据接入模块100还包括:标记生成单元,用于生成与所述K个磁盘数据块一一对应的K个状态标记。
相应的,成功数目获取单元150,具体用于:
获取所述K个磁盘数据块的数据存储结果;当目标磁盘数据块的数据存储结果表征所述目标磁盘数据块存储数据成功时,将所述目标磁盘数据块对应的状态标记设定为成功状态;其中,所述目标磁盘数据块为,所述K个磁盘数据块中的任一磁盘数据块;统计所述K个状态标记中成功状态的数目;将所述成功状态的数目确定为所述条带中数据存储成功的磁盘数据块的数目。
一示例中,所述数据接入模块100还可包括:
内存清理单元,用于在所述确定所述条带存储数据成功之后,清理所述M个第一内存数据块与所述N个第二内存数据块。
一示例中,所述存储结果确定单元160,还用于:
当所述数据存储成功的磁盘数据块的数目小于预设数目时,确定所述条带存储数据失败。当存储结果确定单元160确定所述条带存储数据失败时,触发磁盘数据存储单元140再次执行所述向信息管理模块申请包括K个磁盘数据块的条带,并将K个内存数据块中的数据并行传输至所述K个磁盘数据块的步骤。
一示例中,所述数据接入模块100还包括:
文件关闭处理单元,用于接收用户发出的文件关闭请求;所述文件关闭请求,用于请求关闭用来写入所述原始数据的文件;响应于所述文件关闭请求,获取所述M个第一内存数据块中已写入数据的数据量;当所述已写入数据的数据量大于0时,利用数值0,将所述M个第一内存数据块的剩余空间补齐;在将所述M个第一内存数据块的剩余空间补齐后,触发编码数据写入单元130执行所述当所述M个第一内存数据块已写满数据时,在所述内存中分配N个第二内存数据块,并对所述M个第一内存数据块中的数据进行编码,再将编码后的数据写入至所述N个第二内存数据块的步骤。
其中,在所述响应于所述文件关闭请求,获取所述M个第一内存数据块中已写入数据的数据量之后,当所述已写入数据的数据量等于0时,结束数据存储流程。
本实施例提供的数据存储装置,通过数据接入模块,接收需要存储的原始数据;在内存中分配M个第一内存数据块,并将原始数据写入至M个第一内存数据块;当M个第一内存数据块已写满数据时,在内存中分配N个第二内存数据块,并对M个第一内存数据块中的数据进行编码,再将编码后的数据写入至N个第二内存数据块;然后,向信息管理模块申请包括K个磁盘数据块的条带,并将K个内存数据块中的数据并行传输至K个磁盘数据块;当数据存储成功的磁盘数据块的数目大于或等于预设数目时,确定条带存储数据成功,从而不仅以并行传输的方式提高了数据存储的效率,缩短了数据存储的等待时间,并且通过同时存储原始数据与编码数据,提高了丢失数据的可恢复性,保证了数据存储的安全性与可靠性。
请参阅图7,图7为本发明实施例提供的数据存储装置的另一种结构示意图。
如图7所示,所述装置除了包括前述实施例中提供的数据接入模块100之外,还可包括信息管理模块200、磁盘模块300与用户模块400。
其中,用户模块400,主要用于提供用户操作接口,并将用户传入的原始数据传递给所述数据接入模块100;磁盘模块300,主要用于提供多个磁盘,所述多个磁盘中每个磁盘均具有对外的数据读写接口;信息管理模块200,主要用于提供磁盘管理、磁盘组管理、条带管理与文件管理。
进一步地,用户模块400是用户打开文件(创建文件)、写文件内容、关闭文件等入口。用户模块400向已经创建好的文件中写入数据,用户模块400将要写入的原始数据传递给数据接入模块100,数据接入模块100将原始数据写入到信息管理模块200分配磁盘模块300的磁盘数据块后,返回用户模块400一个写入后的状态。
用户模块400根据写入状态确认文件数据是否写入成功。若用户模块400确认文件写入成功后,可以继续写入文件的内容;也可以关闭文件操作。若文件写入失败,则直接关闭文件。
用户模块400的主要业务流程为:创建文件->写文件内容->关闭文件。
数据接入模块100是接收用户的操作的模块,执行打开文件、文件管理、文件数据分块、数据编码、请求信息管理模块200分配条带、条带中的数据块排列、写数据到磁盘模块300对应磁盘的对应的数据块、向信息管理模块200汇报结果、报告用户模块400写入状态等操作。
数据接入模块100在接收到用户模块400的创建文件的请求时,请求中包括文件名,并将该请求发送到信息管理模块200。信息管理模块200检查文件是否存在,若文件存在,返回数据接入模块100创建文件失败,数据接入模块100返回用户模块400创建文件失败,流程结束。若信息管理模块200检查文件不存,直接创建文件,信息管理模块200返回文件的fid给数据接入模块100,数据接入模块100将文件的fid存储下来并进行管理,并产生一个唯一的oid与fid相关联,返回用户模块400该oid以及文件创建成功的状态。
相应的,用户模块400写入数据的时候,通过oid、数据内容、数据长度传输到数据接入模块100。数据接入模块100首先将数据存储到其内存的内存数据块中。
信息管理模块200,主要是实现文件管理、磁盘管理、磁盘组管理、磁盘条带管理。磁盘模块300提供了对外的每一个磁盘的接口连接。信息管理模块200和数据接入模块100可以通过各个磁盘提供的连接对磁盘进行管理和操作。
用户在创建文件时,最终会由信息管理模块200创建一个文件,并返回给用户模块400该文件的实例id,即oid。
信息管理模块200的磁盘管理包括对磁盘的地址、磁盘的识别标志等进行管理。每一个磁盘在出厂的时候都有一个唯一的序号。这个唯一的序号作为磁盘的识别标志。
磁盘组管理是将多个磁盘作为一个磁盘组,如将12个磁盘作为一个8+4的磁盘组。将所有的磁盘进行分组,每一组的磁盘个数是恒定的。
磁盘条带管理是从每一个磁盘获取一个数据块,将数据块有序排序,例如8+4模式中,前面8个磁盘数据块存储的是文件的原始数据,后面4个磁盘数据块存储的是文件的编码数据。
当数据接入模块100申请到的条带,条带标记为正在使用。若写文件成功,这个条带标记为已经使用,同时标记该条带属于哪一个文件,写成功的状态位,即前面说的二进制位信息。并标记已经使用。若写条带失败,该条带归还给系统,标记为没有使用状态。
文件管理包括文件名,文件的fid,文件大小,文件的条带列表的管理。文件的fid是在文件创建的时候产生的一个唯一的文件标识。文件大小是指每次写文件到磁盘后更新的文件实际的原始数据的大小,其中不包括编码数据和填充的0的数据。条带列表包括已经写入文件的数据的条带的列表,用来标识该文件已经使用了哪些条带信息。
磁盘模块300是所有磁盘的集合。每一个磁盘对外提供了一个接口。该接口一般是给数据接入模块100进行读写数据使用的。
数据接入模块100通过磁盘的接口、数据块的逻辑块编号确定唯一的一个磁盘的唯一的一个数据块。通过上面的两个信息可以对某个磁盘对应的数据块进行读写操作。
本实施例提供的数据存储装置,在存储文件数据时,首先,在数据接入模块对原始数据进行编码,并将编码后的数据存储到内存数据块中;然后,向信息管理模块申请一个条带,并将条带中的磁盘块进行排列,排列后,每一个磁盘以及对应的磁盘数据块对应一个序号;然后连接这个条带对应的磁盘组;并将原始数据和编码数据并行传输给磁盘模块,磁盘模块将数据存储到这个条带对应的磁盘数据块中;再然后数据接入模块等待每一个磁盘的返回结果,将返回结果进行标记,并标记保存成功的磁盘数据块;最后,统计保存成功的磁盘数据块的个数,并确认数据存储成功的磁盘数据块的个数达到了有效个数后,将数据存储结果汇报给信息管理模块,然后返回给用户模块成功状态。
本发明将文件进行并行存储到磁盘,用户等待的时间短,提高了数据存储效果;并当用户模块写入的文件数据过大时,可以在数据接入模块分多次进行存储处理,可以减少用户和数据接入模块的交互,降低系统负担;并行存储后通过二进制位标志文件的成功状态,以备处理后续的恢复数据的精确处理,提高了数据存储安全性与可靠性。
最后,还需要说明的是,在本文中,诸如第一和第一等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式来实现。基于这样的理解,本申请的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本申请的限制。

Claims (9)

1.一种数据存储方法,其特征在于,所述方法包括:
接收需要存储的原始数据;
在内存中分配M个第一内存数据块,并将所述原始数据写入至所述M个第一内存数据块;M>1;
当所述M个第一内存数据块已写满数据时,在所述内存中分配N个第二内存数据块,并对所述M个第一内存数据块中的数据进行编码,再将编码后的数据写入至所述N个第二内存数据块;N>0;
向信息管理模块申请包括K个磁盘数据块的条带,并生成与所述K个磁盘数据块一一对应的K个状态标记;
将K个内存数据块中的数据并行传输至所述K个磁盘数据块;其中,K=M+N,所述K个磁盘数据块与所述K个内存数据块一一对应,所述K个内存数据块包括所述M个第一内存数据块与所述N个第二内存数据块,所述K个磁盘数据块包括M个第一磁盘数据块与N个第二磁盘数据块;
获取所述条带中数据存储成功的磁盘数据块的数目;其中,所述获取所述条带中数据存储成功的磁盘数据块的数目,包括:获取所述K个磁盘数据块的数据存储结果;当目标磁盘数据块的数据存储结果表征所述目标磁盘数据块存储数据成功时,将所述目标磁盘数据块对应的状态标记设定为成功状态;其中,所述目标磁盘数据块为,所述K个磁盘数据块中的任一磁盘数据块;统计所述K个状态标记中成功状态的数目;将所述成功状态的数目确定为所述条带中数据存储成功的磁盘数据块的数目;
当所述数据存储成功的磁盘数据块的数目大于或等于预设数目时,确定所述条带存储数据成功。
2.如权利要求1所述的方法,其特征在于,所述将所述原始数据写入至所述M个第一内存数据块包括:
获取所述M个第一内存数据块的剩余空间容量,与,所述原始数据的数据量;
当所述原始数据的数据量大于所述剩余空间容量时,将所述原始数据中的部分原始数据写入至所述M个第一内存数据块;其中,所述部分原始数据的数据量等于所述剩余空间容量;
相应的,在所述确定所述条带存储数据成功之后,将所述原始数据中的剩余原始数据,作为所述需要存储的原始数据,再次执行所述在内存中分配M个第一内存数据块,并将所述原始数据写入至所述M个第一内存数据块的步骤。
3.如权利要求1所述的方法,其特征在于,所述向信息管理模块申请包括K个磁盘数据块的条带,并将K个内存数据块中的数据并行传输至所述K个磁盘数据块包括:
向信息管理模块申请包括K个磁盘数据块的条带;
获取所述K个磁盘数据块的逻辑块编号,以及所述K个磁盘数据块对应的磁盘的连接地址;
根据所述逻辑块编号与所述连接地址,连接所述K个磁盘数据块,并建立所述K个内存数据块与所述K个磁盘数据块的一一对应关系;
依据所述一一对应关系,将所述K个内存数据块的数据,并行传输至所述K个磁盘数据块。
4.如权利要求1所述的方法,其特征在于,在所述确定所述条带存储数据成功之后,所述方法还包括:
清理所述M个第一内存数据块与所述N个第二内存数据块。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
当所述数据存储成功的磁盘数据块的数目小于预设数目时,确定所述条带存储数据失败;
当所述条带存储数据失败时,再次执行所述向信息管理模块申请包括K个磁盘数据块的条带,并将K个内存数据块中的数据并行传输至所述K个磁盘数据块的步骤。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:
接收用户发出的文件关闭请求;所述文件关闭请求,用于请求关闭用来写入所述原始数据的文件;
响应于所述文件关闭请求,获取所述M个第一内存数据块中已写入数据的数据量;
当所述已写入数据的数据量大于0时,利用数值0,将所述M个第一内存数据块的剩余空间补齐;
在将所述M个第一内存数据块的剩余空间补齐后,执行所述当所述M个第一内存数据块已写满数据时,在所述内存中分配N个第二内存数据块,并对所述M个第一内存数据块中的数据进行编码,再将编码后的数据写入至所述N个第二内存数据块的步骤。
7.如权利要求6所述的方法,其特征在于,在所述响应于所述文件关闭请求,获取所述M个第一内存数据块中已写入数据的数据量之后,所述方法还包括:
当所述已写入数据的数据量等于0时,结束数据存储流程。
8.一种数据存储装置,其特征在于,所述装置包括数据接入模块;所述数据接入模块包括:
原始数据接收单元,用于接收需要存储的原始数据;
原始数据写入单元,用于在内存中分配M个第一内存数据块,并将所述原始数据写入至所述M个第一内存数据块;M>1;
编码数据写入单元,用于当所述M个第一内存数据块已写满数据时,在所述内存中分配N个第二内存数据块,并对所述M个第一内存数据块中的数据进行编码,再将编码后的数据写入至所述N个第二内存数据块;N>0;
磁盘数据存储单元,用于向信息管理模块申请包括K个磁盘数据块的条带,并生成与所述K个磁盘数据块一一对应的K个状态标记;将K个内存数据块中的数据并行传输至所述K个磁盘数据块;其中,K=M+N,所述K个磁盘数据块与所述K个内存数据块一一对应,所述K个内存数据块包括所述M个第一内存数据块与所述N个第二内存数据块,所述K个磁盘数据块包括M个第一磁盘数据块与N个第二磁盘数据块;
成功数目获取单元,用于获取所述条带中数据存储成功的磁盘数据块的数目;其中,所述获取所述条带中数据存储成功的磁盘数据块的数目,包括:获取所述K个磁盘数据块的数据存储结果;当目标磁盘数据块的数据存储结果表征所述目标磁盘数据块存储数据成功时,将所述目标磁盘数据块对应的状态标记设定为成功状态;其中,所述目标磁盘数据块为,所述K个磁盘数据块中的任一磁盘数据块;统计所述K个状态标记中成功状态的数目;将所述成功状态的数目确定为所述条带中数据存储成功的磁盘数据块的数目;
存储结果确定单元,用于当所述数据存储成功的磁盘数据块的数目大于或等于预设数目时,确定所述条带存储数据成功。
9.如权利要求8所述的装置,其特征在于,所述装置还包括用户模块、磁盘模块与所述信息管理模块;
所述用户模块,用于提供用户操作接口,并将用户传入的原始数据传递给所述数据接入模块;
所述磁盘模块,用于提供多个磁盘,所述多个磁盘中每个磁盘均具有对外的数据读写接口;
所述信息管理模块,用于提供磁盘管理、磁盘组管理、条带管理与文件管理。
CN201811583162.7A 2018-12-24 2018-12-24 数据存储方法及装置 Active CN111352579B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811583162.7A CN111352579B (zh) 2018-12-24 2018-12-24 数据存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811583162.7A CN111352579B (zh) 2018-12-24 2018-12-24 数据存储方法及装置

Publications (2)

Publication Number Publication Date
CN111352579A CN111352579A (zh) 2020-06-30
CN111352579B true CN111352579B (zh) 2023-11-10

Family

ID=71191950

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811583162.7A Active CN111352579B (zh) 2018-12-24 2018-12-24 数据存储方法及装置

Country Status (1)

Country Link
CN (1) CN111352579B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112214175A (zh) * 2020-10-21 2021-01-12 重庆紫光华山智安科技有限公司 数据处理方法、装置、数据节点及存储介质
CN113326165B (zh) * 2021-08-04 2021-11-16 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、设备及计算机可读存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1955939A (zh) * 2006-10-13 2007-05-02 清华大学 基于虚拟内存盘的备份与恢复方法
CN101566924A (zh) * 2008-04-23 2009-10-28 中兴通讯股份有限公司 一种磁盘阵列的数据读写方法
CN102420856A (zh) * 2011-11-17 2012-04-18 杭州华三通信技术有限公司 一种数据处理方法和设备
CN102609218A (zh) * 2012-01-18 2012-07-25 清华大学 并行闪存转换层方法与系统
CN106383664A (zh) * 2016-08-31 2017-02-08 北京小米移动软件有限公司 数据存储方法及装置
CN108628541A (zh) * 2017-03-22 2018-10-09 华为技术有限公司 一种文件存储的方法、装置及存储系统
CN108958660A (zh) * 2018-07-02 2018-12-07 深圳市茁壮网络股份有限公司 分布式存储系统及其数据处理方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5712713B2 (ja) * 2011-03-18 2015-05-07 富士通株式会社 制御装置、制御方法およびストレージ装置
US10831398B2 (en) * 2016-09-19 2020-11-10 International Business Machines Corporation Storage device efficiency during data replication

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1955939A (zh) * 2006-10-13 2007-05-02 清华大学 基于虚拟内存盘的备份与恢复方法
CN101566924A (zh) * 2008-04-23 2009-10-28 中兴通讯股份有限公司 一种磁盘阵列的数据读写方法
CN102420856A (zh) * 2011-11-17 2012-04-18 杭州华三通信技术有限公司 一种数据处理方法和设备
CN102609218A (zh) * 2012-01-18 2012-07-25 清华大学 并行闪存转换层方法与系统
CN106383664A (zh) * 2016-08-31 2017-02-08 北京小米移动软件有限公司 数据存储方法及装置
CN108628541A (zh) * 2017-03-22 2018-10-09 华为技术有限公司 一种文件存储的方法、装置及存储系统
CN108958660A (zh) * 2018-07-02 2018-12-07 深圳市茁壮网络股份有限公司 分布式存储系统及其数据处理方法和装置

Also Published As

Publication number Publication date
CN111352579A (zh) 2020-06-30

Similar Documents

Publication Publication Date Title
CN110140114A (zh) 管理存储系统中数据对象的i/o操作
CN110134338B (zh) 一种分布式存储系统及其数据冗余保护方法和相关设备
CN107209714A (zh) 分布式存储系统及分布式存储系统的控制方法
US20150113026A1 (en) Rollover strategies in a n-bit dictionary compressed column store
CN111352579B (zh) 数据存储方法及装置
CN103514249A (zh) 一种数据自精简方法和系统及存储装置
CN108399050B (zh) 一种数据处理方法及装置
CN104220991A (zh) 用于允许数据在nand闪存上的有效存储的架构
CN111435286B (zh) 一种数据存储方法、装置和系统
CN110147203B (zh) 一种文件管理方法、装置、电子设备及存储介质
CN109918352B (zh) 存储器系统和存储数据的方法
WO2024061108A1 (en) Distributed storage systems and methods thereof, device and storage medium
CN109558333A (zh) 具有可变额外存储空间(op)的固态存储设备命名空间
CN115292266A (zh) 一种基于存储器的高可靠日志存储方法
CN107844436B (zh) 一种缓存中脏数据的组织管理方法、系统及存储系统
US11226778B2 (en) Method, apparatus and computer program product for managing metadata migration
CN107092443B (zh) 数据迁移方法及装置
CN111008181A (zh) 一种分布式文件系统存储策略切换方法、系统、终端及存储介质
CN108958660B (zh) 分布式存储系统及其数据处理方法和装置
CN110502187A (zh) 一种快照回滚方法及装置
CN113495889A (zh) 一种分布式对象存储方法、装置、电子设备及存储介质
WO2021227789A1 (zh) 存储空间的分配方法、装置、终端及计算机可读存储介质
CN109977074B (zh) 一种基于hdfs的lob数据处理方法及装置
CN111124313A (zh) 电力采集终端数据读写方法、装置和电子设备
CN114327942A (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