CN117055807A - 数据存储方法、装置、计算机设备和存储介质 - Google Patents

数据存储方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN117055807A
CN117055807A CN202310877033.3A CN202310877033A CN117055807A CN 117055807 A CN117055807 A CN 117055807A CN 202310877033 A CN202310877033 A CN 202310877033A CN 117055807 A CN117055807 A CN 117055807A
Authority
CN
China
Prior art keywords
version number
data
user data
writing
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.)
Pending
Application number
CN202310877033.3A
Other languages
English (en)
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.)
Tianjin Zhongke Shuguang Storage Technology Co ltd
Original Assignee
Tianjin Zhongke Shuguang Storage Technology Co ltd
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 Tianjin Zhongke Shuguang Storage Technology Co ltd filed Critical Tianjin Zhongke Shuguang Storage Technology Co ltd
Priority to CN202310877033.3A priority Critical patent/CN117055807A/zh
Publication of CN117055807A publication Critical patent/CN117055807A/zh
Pending legal-status Critical Current

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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • 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/0629Configuration or reconfiguration 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种数据存储方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:将第一用户数据和第二用户数据并发写入目标条带;在写入第二用户数据的过程中,若第一用户数据写入已完成时,则根据第一用户数据生成第一校验数据,并将第一校验数据对应的第一版本号作为目标条带的当前版本号;将第一用户数据、第一校验数据以及目标条带的当前版本号进行数据落盘处理;当第二用户数据写入完成时,根据第二用户数据和第一用户数据生成第二校验数据,并基于第二校验数据对应的第二版本号更新目标条带的当前版本号;将第二用户数据、第二校验数据以及目标条带的当前版本号进行数据落盘处理。采用本方法提高了数据存储的效率。

Description

数据存储方法、装置、计算机设备和存储介质
技术领域
本申请涉及分布式存储技术领域,特别是涉及一种数据存储方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
目前的分布式存储系统中,提出了一种EC数据存储方式,该EC数据存储方式采用数据分片和生成数据分片对应的校验数据的形式来实现数据存储。然而,在EC数据存储过程中对于非满条带写,存在写惩罚机制,为了减少写惩罚,需要先写满条带,然后再计算校验数据。这就造成了数据存储的效率较低。
为了降低EC数据存储的写惩罚机制的影响,提出了对EC数据存储方式的优化方案,具体的:例如,先将数据写入副本,后台进行EC转换;或者,通过聚合,降低非满条带写的概率等,从而,加快EC存储方式中写满条带的速度,保证尽快执行将条带中的数据写入存储节点的操作。
然而,目前提出的多种EC数据存储的优化方案,在后台EC转换速率以及聚合IO的处理效率较低的情况下,会出现较长等待时间,进而,导致数据写入磁盘的效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种数据存储方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种数据存储方法。所述方法包括:
将第一用户数据和第二用户数据并发写入目标条带;
在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号;
将所述第一用户数据、所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理;
当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号;
将所述第二用户数据、所述第二校验数据以及所述目标条带的当前版本号进行数据落盘处理。
本实施例中,通过将第一用户数据和第二用户数据并发写入目标条带,且分别设置第一校验数据和第二校验数据对应版本号,通过携带版本号进行数据落盘处理,避免数据存储冲突,提高数据写入效率。
在其中一个实施例中,所述将第一用户数据和第二用户数据并发写入目标条带,包括:
并发通过第一数据写操作将第一用户数据写入目标条带的第一写入位置,以及通过第二数据写操作将第二用户数据写入所述目标条带的第二写入位置;
所述第一写入位置和所述第二写入位置为所述目标条带中的不同区域。
本实施例中,通过第一数据写操作和第二数据写操作完成第一用户数据和第二用户数据的并发写入,将第一用户数据和第二用户数据写入到同一目标条带,减少非满条带的写惩罚,同时,提高数据写入效率。
在其中一个实施例中,所述在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号,包括:
在写入所述第二用户数据的过程中,若所述第一用户数据已完成写入,则根据所述目标条带中的所述第一用户数据,生成第一校验数据,并为所述第一校验数据设置第一版本号;
将所述第一版本号作为所述目标条带对应的当前版本号,写入所述目标条带的校验区域。
本实施例中,针对第一用户数据已完成写入的情况,生成基于第一用户数据的第一校验数据,并为第一校验数据设置第一版本号,该第一版本号作为目标条带的当前版本号,可以用于数据版本切换,避免了数据存储冲突处理。
在其中一个实施例中,所述当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号,包括:
当所述第二用户数据写入完成时,读取所述目标条带中的所述第二用户数据和所述第一用户数据,生成第二校验数据,并为所述第二校验数据设置第二版本号;
利用所述第二版本号覆盖所述目标条带的校验区域中的原始版本号,将所述第二版本号作为所述目标条带的当前版本号。
本实施例中,在第二用户数据写入完成时,基于第一用户数据和第二用户数据生成第二校验数据,以及为第二校验数据设置对应的第二版本号,通过第二版本号更新目标条带的当前版本号,目标条带的当前版本号可以用于数据版本切换,避免了数据存储冲突处理。
在其中一个实施例中,所述将所述第一用户数据、所述第一校验数据以及所述第一版本号进行数据落盘处理之前,所述方法还包括:
获取目标磁盘的磁盘版本号;
判断所述磁盘版本号与所述目标条带的当前版本号的大小关系;
若所述当前版本号大于所述磁盘版本号,则基于所述当前版本号更新所述磁盘版本号。
本实施例中,通过合理地设计目标条带的版本号和版本号校验机制,有效地保障了分布式存储系统中数据的一致性和安全性。
在其中一个实施例中,所述方法还包括:
若所述当前版本号小于或者等于所述磁盘版本号,计算所述磁盘版本号与所述当前版本号间的差值;
若所述差值超过预设的差值阈值,则确定出现版本号反转,基于所述当前版本号更新所述磁盘版本号。
本实施例中,为了避免是目标条带版本号溢出反转,而造成无法使得新的用户数据写入磁盘,在数据落盘校验机制中增加了版本号溢出反转的校验条件,提高了数据校验的合理性,进而,保证了分布式存储系统中数据的一致性和安全性。
在其中一个实施例中,所述将所述第一用户数据、所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理之前,所述方法还包括:
在目标存储节点存在异常的情况下,在新的目标存储节点的日志中获取所述目标条带的当前版本号;
基于所述当前版本号,执行所述判断所述磁盘版本号与所述目标条带的当前版本号的大小关系的步骤。
本实施例中,通过为各存储节点设置日志,在某一目标存储节点存在异常的情况下,在新的目标存储节点的日志中可以获取异常的目标存储节点的目标条带的当前版本号,从而实现基于当前版本号的数据落盘操作,保证了分布式存储系统中数据存储的一致性和安全性。
第二方面,本申请还提供了一种数据存储装置。所述装置包括:
写入模块,用于将第一用户数据和第二用户数据并发写入目标条带;
第一处理模块,用于在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号;
第一落盘模块,用于将所述第一用户数据、所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理;
第二处理模块,用于当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号;
第二落盘模块,用于将所述第二用户数据、所述第二校验数据以及所述目标条带的当前版本号进行数据落盘处理。
本实施例中,通过将第一用户数据和第二用户数据并发写入目标条带,且分别设置第一校验数据和第二校验数据对应版本号,通过携带版本号进行数据落盘处理,避免数据存储冲突,提高数据写入效率。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
将第一用户数据和第二用户数据并发写入目标条带;
在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号;
将所述第一用户数据、所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理;
当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号;
将所述第二用户数据、所述第二校验数据以及所述目标条带的当前版本号进行数据落盘处理。
本实施例中,通过将第一用户数据和第二用户数据并发写入目标条带,且分别设置第一校验数据和第二校验数据对应版本号,通过携带版本号进行数据落盘处理,避免数据存储冲突,提高数据写入效率。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
将第一用户数据和第二用户数据并发写入目标条带;
在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号;
将所述第一用户数据、所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理;
当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号;
将所述第二用户数据、所述第二校验数据以及所述目标条带的当前版本号进行数据落盘处理。
本实施例中,通过将第一用户数据和第二用户数据并发写入目标条带,且分别设置第一校验数据和第二校验数据对应版本号,通过携带版本号进行数据落盘处理,避免数据存储冲突,提高数据写入效率。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
将第一用户数据和第二用户数据并发写入目标条带;
在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号;
将所述第一用户数据、所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理;
当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号;
将所述第二用户数据、所述第二校验数据以及所述目标条带的当前版本号进行数据落盘处理。
上述数据存储方法、装置、计算机设备、存储介质和计算机程序产品,将第一用户数据和第二用户数据并发写入目标条带;在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号;将所述第一用户数据、所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理;当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号;将所述第二用户数据、所述第二校验数据以及所述目标条带的当前版本号进行数据落盘处理。采用本方法,通过将第一用户数据和第二用户数据并发写入目标条带,且为第一校验数据和第二校验数据设置对应版本号,携带版本号进行数据落盘处理,避免数据存储冲突,提高数据写入效率。
附图说明
图1为一个实施例中数据存储方法的流程示意图;
图2为一个实施例中IO1和IO2将第一用户数据和第二用户数据并发写入目标条带的示意图;
图3为一个实施例中第一用户数据落盘处理步骤的流程示意图;
图4为一个实施例中为第二用户数据生成第二校验数据和第二版本号步骤的流程示意图;
图5为一个实施例中落盘处理过程中版本号校验方法的流程示意图;
图6为一个实施例中防止版本号溢出反转的校验方法的流程示意图;
图7为一个实施例中分布式存储系统的集群中各存储节点设置的日志的示意图;
图8为一个实施例中异常情况下获取目标条带的当前版本号的方法的流程示意图;
图9为一个实施例中数据存储装置的结构框图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种数据存储方法,本实施例以该方法应用于分布式存储系统进行举例说明,本实施例中,该方法包括以下步骤:
步骤102,将第一用户数据和第二用户数据并发写入目标条带。
在实施中,分布式存储系统中包含存储节点、存储设备、数据写操作(用IO表示)、网络设备、控制器等。存储设备中存储有用于写入数据的条带。
用户可以通过数据写操作的客户端应用程序向分布式存储系统提交数据存储请求,该数据存储请求携带有用户数据的相关信息和存储位置等信息。即通过数据存储请求提交数据写入操作,然后,分布式存储系统响应于该数据存储请求,在分布式存储系统的机头节点中通过第一数据写操作(用IO1表示)在前,第二数据写操作(用IO2表示)在后,并发将第一用户数据和第二用户数据写入存储设备的目标条带的目标位置。
其中,由于在EC存储模式中存在写惩罚机制,即以条带为单位的磁盘阵列(RAID)进行写操作时,当写入磁盘条带的用户数据的数量小于磁盘条带大小(即非写满条带)时,在每次写入用户数据时会对整个磁盘读条带上写缺失的部分进行补读,修改和写回操作,从而,导致写操作的开销增加,写入性能下降,甚至可能会影响分布式存储系统的寿命。因此,在分布式存储系统中可能存在IO1将第一用户数据,IO2将第二用户数据写入同一目标条带的情况。
步骤104,在写入第二用户数据的过程中,若第一用户数据写入已完成时,则根据第一用户数据生成第一校验数据,并将第一校验数据对应的第一版本号作为目标条带的当前版本号。
在实施中,第一用户数据和第二用户数据并发写入目标条带时,若第一用户数据优先写入完成,则可以先对第一用户数据进行处理,无需等待目标条带写满。由此,当第一用户数据写入已完成时,则基于EC(Erasure Coding,纠错编码)存储模式,先根据第一用户数据,生成第一校验数据,并为第一校验数据设置对应的第一版本号,从而,可以将第一校验数据对应的第一版本号作为目标条带对应的当前版本号。
步骤106,将第一用户数据、第一校验数据以及目标条带的当前版本号进行数据落盘处理。
在实施中,第一用户数据、第一校验数据以及目标条带的当前版本号进行落盘处理。具体地,分布式存储系统中的存储节点(例如,机头节点)读取目标条带的当前版本号、第一用户数据和第一校验数据。并按照预定的存储格式将第一用户数据、第一校验数据以及当前版本号写入磁盘,若磁盘中存在原始版本的第一用户数据,则基于新的第一用户数据和第一校验数据进行数据更新,修改磁盘中原始的第一用户数据和原始的第一校验数据,并基于当前版本号覆盖磁盘中原始保存的版本号,以实现新的第一用户数据的落盘处理。
其中,存储节点同时将第一用户数据、第一校验数据和第一版本号并行写入磁盘,避免了第一版本号串行写入增大IO时延。
步骤108,当第二用户数据写入完成时,根据第二用户数据和第一用户数据生成第二校验数据,并基于第二校验数据对应的第二版本号更新目标条带的当前版本号。
在实施中,分布式存储系统支持第一用户数据和第二用户数据的并发写入,在并发写入的过程中,如果第一用户数据率先写入完成,则按照先完成先落盘的策略,第一用户数据先进行落盘操作,以保证数据写入的效率。而此时若目标条带中第二用户数据也写入完成时,则分布式存储系统的存储节点(例如,机头节点)读取目标条带上已写入的第一用户数据和第二用户数据,根据第二用户数据和第一用户数据生成第二校验数据,并为第二校验数据设置第二版本号。然后,分布式存储系统的存储节点基于第二校验数据对应的第二版本号更新目标条带的当前版本号,以进行第二用户数据的落盘处理。
步骤110,将第二用户数据、第二校验数据以及目标条带的当前版本号进行数据落盘处理。
在实施中,分布式存储系统中的机头节点将第二用户数据、第二校验数据以及目标条带的当前版本号进行数据落盘处理。具体地,第二用户数据、第二校验数据以及目标条带的当前版本号进行落盘处理的过程与上述步骤106中第一用户数据、第一校验数据以及目标条带的当前版本号进行落盘处理的过程相似,本申请实施例在此不再赘述。
上述数据存储方法中,将第一用户数据和第二用户数据并发写入目标条带。在写入第二用户数据的过程中,若第一用户数据写入已完成时,则根据第一用户数据生成第一校验数据,并将第一校验数据对应的第一版本号作为目标条带的当前版本号。将第一用户数据、第一校验数据以及目标条带的当前版本号进行数据落盘处理。当第二用户数据写入完成时,根据第二用户数据和第一用户数据生成第二校验数据,并基于第二校验数据对应的第二版本号更新目标条带的当前版本号。然后,将第二用户数据、第二校验数据以及目标条带的当前版本号进行数据落盘处理。采用本方法,通过将第一用户数据和第二用户数据并发写入目标条带,且分别设置第一校验数据和第二校验数据对应版本号,通过携带版本号进行数据落盘处理,避免数据存储冲突,提高数据写入效率。
在一个可选的实施例中,在分布式存储系统的设计中,磁盘处理能力是一个重要的指标,它决定了存储节点的性能和吞吐量,对系统的整体性能和效率有着重要的影响。如果磁盘处理能力不足,就会导致IO增加,磁盘太忙,IO时延变大等问题。因此,在设计存储系统时,需要考虑磁盘处理能力的需求,并选择适当的硬件配置,以保障系统的性能和效率。对于全闪存环境或ssd盘占比高的混闪存环境,由于闪存的读写速度要比机械硬盘快很多,磁盘处理能力相对较高,因此,本申请的数据存储方法适用于全闪存环境或ssd盘占比高的混闪存环境。
在一个可选的实施例中,在分布式存储系统中,内存是用来缓存数据和元数据的关键资源之一,对存储系统的性能和效率有着重要的影响。本申请实施例中为了减少故障情况下IO滞留对内存消耗的增加,可以根据IOPS(Input/Output Operations Per Second,即每秒输入/输出操作次数)来确定内存的大小,并根据实际的存储环境进行合理的分配。具体来说,对于处理时延低的环境中,内存流转效率高,IOPS高的情况下,可以分配相对较少的内存;而在时延高的环境中,内存周转效率低,需要分配更多的内存才能保证系统的性能和效率。其中,内存的具体数量可以根据集群中磁盘数、队列深度等参数进行估算,并根据实际情况进行调整。因此,在出现预分内存不足的情况下,本申请的数据存储方法中包含退化模式,即通过该退化模式可以将数据存储方式退化为原始数据存储方式,而非必须选用本申请数据存储方法中的数据存储方式,以减少内存的消耗占用。
在一个实施例中,步骤102中将第一用户数据和第二用户数据并发写入目标条带包括以下步骤:
步骤1021,并发通过第一数据写操作将第一用户数据写入目标条带的第一写入位置,以及通过第二数据写操作将第二用户数据写入目标条带的第二写入位置。
其中,第一写入位置和第二写入位置为目标条带中的不同区域。
在实施中,分布式存储系统的存储节点(例如,机头节点)并发通过IO1和IO2完成第一用户数据和第二用户数据的写入。具体地,如图2所示,在目标条带上包含多个片段(chunk)组成,每个片段即为可写入用户数据的写入位置,图2中分别标号为0、1、2、3。在并发写的过程中,IO1将第一用户数据写入目标条带的第一写入位置,即将第一用户数据写入目标条带的标号为“0”的位置。IO2将第二用户数据写入目标条带的第二写入位置,即将第二用户数据写入目标条带的标号为“1”的位置。
本实施例中,通过第一数据写操作和第二数据写操作完成第一用户数据和第二用户数据的并发写入,将第一用户数据和第二用户数据写入到同一目标条带,减少非满条带的写惩罚,同时,提高数据写入效率。
在一个实施例中,如图3所示,步骤104中在写入第二用户数据的过程中,若第一用户数据写入已完成时,则根据第一用户数据生成第一校验数据,并将第一校验数据对应的第一版本号作为目标条带的当前版本号,包括:
步骤302,在写入第二用户数据的过程中,若第一用户数据已完成写入,则根据目标条带中的第一用户数据,生成第一校验数据,并为第一校验数据设置第一版本号。
在实施中,分布式存储系统中的存储节点在写入第二用户数据的过程中,若第一用户数据已完成写入,则根据目标条带中内的第一用户数据,生成第一校验数据,并为第一校验数据设置第一版本号。具体地,在分布式存储系统中,存储节点通过IO1和IO2并发写入第一用户数据和第二用户数据,在第二用户数据写入过程中,若第一用户数据已经完成写入,那么,此时,目标条带上已存在的数据为第一用户数据,进而,存储节点读取目标条带上已写入的第一用户数据,基于预设的校验算法,例如,纠删码编码算法(Erasure Code),生成第一用户数据对应的第一校验数据,并为第一校验数据设置第一版本号。
步骤304,将第一版本号作为目标条带对应的当前版本号,写入目标条带的校验区域。
在实施中,分布式存储系统将第一版本号作为目标条带对应的当前版本号,写入目标条带的校验区域。当前版本号是指目标条带中当前有效的数据版本号,它可以用于数据版本切换、数据冲突处理等操作。如图2所示,该目标条带的校验区域片段的标号为“4”和“5”,因此,为第一校验数据设置第一版本号后,将第一版本号作为目标条带的当前版本号,对应标注到目标条带的校验区域。
本实施例中,针对第一用户数据已完成写入的情况,生成基于第一用户数据的第一校验数据,并为第一校验数据设置第一版本号,该第一版本号作为目标条带的当前版本号,可以用于数据版本切换,避免了数据存储冲突处理。
在一个实施例中,如图4所示,步骤108中当第二用户数据写入完成时,根据第二用户数据和第一用户数据生成第二校验数据,并基于第二校验数据对应的第二版本号更新目标条带的当前版本号,具体包括:
步骤402,当第二用户数据写入完成时,读取目标条带中的第二用户数据和第一用户数据,生成第二校验数据,并为第二校验数据设置第二版本号。
在实施中,当第二用户数据也写入完成时,分布式存储系统中的存储节点读取依照目标条带中标号的顺序,读取用户数据。目标条带中已存在的第二用户数据和第一用户数据,则存储节点基于第一用户数据和第二用户数据,生成第二校验数据,并为第二校验数据设置第二版本号。
可选的,生成第二校验数据的方法也可以为纠删码编码算法,也可以选用其他生成校验数据的算法,本申请实施例对于校验算法不做限定。
步骤404,利用第二版本号覆盖目标条带的校验区域中的原始版本号,将第二版本号作为目标条带的当前版本号。
在实施中,分布式存储系统中的存储节点利用第二版本号覆盖目标条带的校验区域中的原始版本号,将第二版本号作为目标条带的当前版本号。具体地,为了保证数据的完整性和可靠性,在分布式存储系统中通常使用数据校验技术来检测并纠正存储节点上的数据错误。数据的校验通常与版本号相关联,因为每个版本的用户数据都应该对应着相应版本的校验数据。如果目标条带的校验数据被更新,那么相应的校验数据的版本号也需要更新。从而,在第二用户数据写入完成后,基于第一用户数据和第二用户数据重新生成了新的校验数据,即第二校验数据。因此,在目标条带的校验区域,如图2中标号“4”和“5”的片段(chunk)所示,新的第二校验数据会覆盖该校验区域中的原始校验数据(即第一校验数据),并且该第二校验数据对应有第二版本号,则该第二版本号会覆盖目标条带中校验区域存储的原始版本号(即第一版本号),使得第二版本号作为目标条带的当前版本号
本实施例中,在第二用户数据写入完成时,基于第一用户数据和第二用户数据生成第二校验数据,以及为第二校验数据设置对应的第二版本号,通过第二版本号更新目标条带的当前版本号,目标条带的当前版本号可以用于数据版本切换,避免了数据存储冲突处理。
在一个实施例中,如图5所示,在对第一用户数据进行落盘处理之前,即在步骤106之前,该方法还包括:
步骤502,获取目标磁盘的磁盘版本号。
在实施中,在分布式存储系统的存储节点中,逻辑盘(包含目标磁盘的一部分或多个目标磁盘)被划分为数据区和meta数据区。版本号通常是保存在元数据(metadata)中的一份数据,因此,版本号保存在逻辑盘的meta区。在逻辑盘的meta数据区获取目标磁盘的磁盘版本号,该目标磁盘的磁盘版本号为磁盘保存的上一次数据存储时记录的版本号。
步骤504,判断磁盘版本号与目标条带的当前版本号的大小关系。
在实施中,分布式存储系统中的存储节点判断磁盘版本号与目标条带的当前版本号的大小关系,以确定第一用户数据是否符合落盘处理的条件。具体地,在分布式存储系统中,目标条带通常都有一个版本号,用于标识该目标条带中数据的不同版本。版本号通常是一个整数值,每次修改数据时都会使版本号增加。为了实现版本管理,磁盘中每个数据页都保存了一个版本号。当进行写入操作时,先检查新来的目标条带的版本号是否小于已经保存在磁盘上的版本号,如果小于则不进行写入,否则才会执行写入操作并更新版本号的操作。
步骤506,若当前版本号大于磁盘版本号,则基于当前版本号更新磁盘版本号。
在实施中,在分布式存储系统中,若当前版本号大于磁盘版本号,表征可以进行第一用户数据的落盘处理,则基于当前版本号更新磁盘版本号,以进行数据落盘。
本实施例中,通过合理地设计目标条带的版本号和版本号校验机制,有效地保障了分布式存储系统中数据的一致性和安全性。
在一个实施例中,在基于版本号进行磁盘落盘时的数据校验时,还可能会出现目标条带版本号的溢出反转的情况,即虽然当前版本号小于磁盘原始版本号时,但是当前版本号对应的用户数据并非是已存入磁盘的原始数据,而是由于版本号溢出导致的当前版本号过小,因此,为了避免是目标条带版本号溢出反转,而造成无法使得新的用户数据写入磁盘,如图6所示,该方法还包括:
步骤602,若当前版本号小于或者等于磁盘版本号,计算磁盘版本号与当前版本号间的差值。
在实施中,在进行版本号校验时,若当前版本号小于或者等于磁盘版本号,则为了防止版本号溢出反转的情况,分布式存储系统中的存储节点先计算磁盘版本号与当前版本号间的差值。
步骤604,若差值超过预设的差值阈值,则确定出现版本号反转,基于当前版本号更新磁盘版本号。
在实施中,若差值超过预设的差值阈值,则确定出现版本号反转,即反映出当前版本号小于磁盘版本号是因为出现了版本号溢出反转,而非是因为磁盘中已存储本次待落盘的用户数据,因此,本次用户数据是可以进行落盘处理,进而,存储节点基于当前版本号更新磁盘版本号。反之,若差值未超过预设的差值阈值,则表征是正常的版本号校验情况,即当前版本号对应的用户数据已经存储至磁盘中,无需再次进行落盘处理,本次用户数据舍弃,也再进行磁盘版本号的更新。
本实施例中,为了避免是目标条带版本号溢出反转,而造成无法使得新的用户数据写入磁盘,在数据落盘校验机制中增加了版本号溢出反转的校验条件,提高了数据校验的合理性,进而,保证了分布式存储系统中数据的一致性和安全性。
在一个实施例中,本申请还提供一种可以应对异常情况的分布式存储系统,该分布式存储系统包含多个存储节点的集群环境,如图7所示,在该集群环境中包括至少3个存储节点,其中一个节点掉电,可能导致机头节点(分布式存储系统中作为管理和控制整个存储系统的关键节点)中的目标条带的当前版本号信息丢失,为了避免由于meta(元数据)未固化带来的当前版本号误判问题,在新节点接管LUN(Logical Unit Number,标识存储设备中的逻辑存储单元的一种标识符)之后,在新节点上进行LUN重建时,先通过从其他存储节点或备份中恢复丢失的版本号信息的方式,及时同步该目标条带的元数据信息到新节点上。这样可以确保新节点上获取到的是最新的版本号,避免因元数据未固化或未同步等问题带来的误判问题,具体地,如图8所示,在步骤106之前,该方法还包括:
步骤802,在目标存储节点存在异常的情况下,在新的目标存储节点的日志中获取目标条带的当前版本号。
在实施中,分布式存储系统中,为了确保数据的可靠性和容错性,通常采用多副本复制技术对数据进行存储和备份,因此,在分布式存储系统的每个存储节点上都设置有日志盘,3节点的集群,日志记录也设置为3副本(其中的编号如日志3-1,表示存储节点3保存在存储节点1中的日志)。这样,在目标存储节点存在异常的情况下,分布式存储系统在新的目标存储节点的日志中获取异常的目标存储节点的目标条带的当前版本号,
步骤804,基于当前版本号,执行判断磁盘版本号与目标条带的当前版本号的大小关系的步骤。
在实施中,分布式存储系统基于当前版本号,恢复数据的落盘处理操作,执行判断磁盘版本号与目标条带的当前版本号的大小关系的步骤,即执行步骤504。步骤504的具体过程在此不再赘述。
可选的,在集群环境中,由于数据在多个存储节点之间进行分布和复制,可能会出现磁盘上的数据临时性不一致的问题,也就是不同存储节点上的数据可能存在一定的时间差。但是,通常情况下这种临时性的不一致并不会对读取操作造成影响,因为读取操作通常都是直接从条带缓存中获取数据,并不需要进行磁盘访问。在条带缓存中,如果非IO写的页已经从磁盘上补读完成放到了条带缓存中,并且没有发生任何更新操作,那么当用户进行读取操作时,可以直接从缓存中获取数据,并不需要再次进行磁盘访问。这种方式可以避免频繁的磁盘访问,提高存储系统的性能和效率。
本实施例中,通过为各存储节点设置日志,在某一目标存储节点存在异常的情况下,在新的目标存储节点的日志中可以获取异常的目标存储节点的目标条带的当前版本号,从而实现基于当前版本号的数据落盘操作,保证了分布式存储系统中数据存储的一致性和安全性。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据存储方法的数据存储装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据存储装置实施例中的具体限定可以参见上文中对于数据存储方法的限定,在此不再赘述。
在一个实施例中,如图9所示,提供了一种数据存储装置900,包括:写入模块901、第一处理模块902、第一落盘模块903、第二处理模块904和第二落盘模块905,其中:
写入模块901,用于将第一用户数据和第二用户数据并发写入目标条带;
第一处理模块902,用于在写入第二用户数据的过程中,若第一用户数据写入已完成时,则根据第一用户数据生成第一校验数据,并将第一校验数据对应的第一版本号作为目标条带的当前版本号;
第一落盘模块903,用于将第一用户数据、第一校验数据以及目标条带的当前版本号进行数据落盘处理;
第二处理模块904,用于当第二用户数据写入完成时,根据第二用户数据和第一用户数据生成第二校验数据,并基于第二校验数据对应的第二版本号更新目标条带的当前版本号;
第二落盘模块905,用于将第二用户数据、第二校验数据以及目标条带的当前版本号进行数据落盘处理。
在一个实施例中,写入模块901具体用于并发通过第一数据写操作将第一用户数据写入目标条带的第一写入位置,以及通过第二数据写操作将第二用户数据写入目标条带的第二写入位置;
第一写入位置和第二写入位置为目标条带中的不同区域。
在一个实施例中,第一处理模块902具体用于在写入第二用户数据的过程中,若第一用户数据已完成写入,则根据目标条带中的第一用户数据,生成第一校验数据,并为第一校验数据设置第一版本号;
将第一版本号作为目标条带对应的当前版本号,写入目标条带的校验区域。
在一个实施例中,第二处理模块904,具体用于当第二用户数据写入完成时,读取目标条带中的第二用户数据和第一用户数据,生成第二校验数据,并为第二校验数据设置第二版本号;
利用第二版本号覆盖目标条带的校验区域中的原始版本号,将第二版本号作为目标条带的当前版本号。
在一个实施例中,该装置900还包括:
第一获取模块,用于获取目标磁盘的磁盘版本号;
判别模块,用于判断磁盘版本号与目标条带的当前版本号的大小关系;
第一更新模块,用于若当前版本号大于磁盘版本号,则基于当前版本号更新磁盘版本号。
在一个实施例中,该装置900还包括:
计算模块,用于若当前版本号小于或者等于磁盘版本号,计算磁盘版本号与当前版本号间的差值;
第二更新模块,用于若差值超过预设的差值阈值,则确定出现版本号反转,基于当前版本号更新磁盘版本号。
在一个实施例中,该装置900还包括:
第二获取模块,用于在目标存储节点存在异常的情况下,在新的目标存储节点的日志中获取目标条带的当前版本号;
判别模块,用于基于当前版本号,执行判断磁盘版本号与目标条带的当前版本号的大小关系的步骤。
上述数据存储装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储用户数据、校验数据和日志数据等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据存储方法。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
将第一用户数据和第二用户数据并发写入目标条带;
在写入第二用户数据的过程中,若第一用户数据写入已完成时,则根据第一用户数据生成第一校验数据,并将第一校验数据对应的第一版本号作为目标条带的当前版本号;
将第一用户数据、第一校验数据以及目标条带的当前版本号进行数据落盘处理;
当第二用户数据写入完成时,根据第二用户数据和第一用户数据生成第二校验数据,并基于第二校验数据对应的第二版本号更新目标条带的当前版本号;
将第二用户数据、第二校验数据以及目标条带的当前版本号进行数据落盘处理。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
并发通过第一数据写操作将第一用户数据写入目标条带的第一写入位置,以及通过第二数据写操作将第二用户数据写入目标条带的第二写入位置;
第一写入位置和第二写入位置为目标条带中的不同区域。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
在写入第二用户数据的过程中,若第一用户数据已完成写入,则根据目标条带中的第一用户数据,生成第一校验数据,并为第一校验数据设置第一版本号;
将第一版本号作为目标条带对应的当前版本号,写入目标条带的校验区域。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
当第二用户数据写入完成时,读取目标条带中的第二用户数据和第一用户数据,生成第二校验数据,并为第二校验数据设置第二版本号;
利用第二版本号覆盖目标条带的校验区域中的原始版本号,将第二版本号作为目标条带的当前版本号。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取目标磁盘的磁盘版本号;
判断磁盘版本号与目标条带的当前版本号的大小关系;
若当前版本号大于磁盘版本号,则基于当前版本号更新磁盘版本号。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
若当前版本号小于或者等于磁盘版本号,计算磁盘版本号与当前版本号间的差值;
若差值超过预设的差值阈值,则确定出现版本号反转,基于当前版本号更新磁盘版本号。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
在目标存储节点存在异常的情况下,在新的目标存储节点的日志中获取目标条带的当前版本号;
基于当前版本号,执行判断磁盘版本号与目标条带的当前版本号的大小关系的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (10)

1.一种数据存储方法,其特征在于,所述方法包括:
将第一用户数据和第二用户数据并发写入目标条带;
在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号;
将所述第一用户数据、所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理;
当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号;
将所述第二用户数据、所述第二校验数据以及所述目标条带的当前版本号进行数据落盘处理。
2.根据权利要求1所述的方法,其特征在于,所述将第一用户数据和第二用户数据并发写入目标条带,包括:
并发通过第一数据写操作将第一用户数据写入目标条带的第一写入位置,以及通过第二数据写操作将第二用户数据写入所述目标条带的第二写入位置;
所述第一写入位置和所述第二写入位置为所述目标条带中的不同区域。
3.根据权利要求1所述的方法,其特征在于,所述在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号,包括:
在写入所述第二用户数据的过程中,若所述第一用户数据已完成写入,则根据所述目标条带中的所述第一用户数据,生成第一校验数据,并为所述第一校验数据设置第一版本号;
将所述第一版本号作为所述目标条带对应的当前版本号,写入所述目标条带的校验区域。
4.根据权利要求1所述的方法,其特征在于,所述当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号,包括:
当所述第二用户数据写入完成时,读取所述目标条带中的所述第二用户数据和所述第一用户数据,生成第二校验数据,并为所述第二校验数据设置第二版本号;
利用所述第二版本号覆盖所述目标条带的校验区域中的原始版本号,将所述第二版本号作为所述目标条带的当前版本号。
5.根据权利要求1所述的方法,其特征在于,所述将所述第一用户数据、所述第一校验数据以及所述第一版本号进行数据落盘处理之前,所述方法还包括:
获取目标磁盘的磁盘版本号;
判断所述磁盘版本号与所述目标条带的当前版本号的大小关系;
若所述当前版本号大于所述磁盘版本号,则基于所述当前版本号更新所述磁盘版本号。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若所述当前版本号小于或者等于所述磁盘版本号,计算所述磁盘版本号与所述当前版本号间的差值;
若所述差值超过预设的差值阈值,则确定出现版本号反转,基于所述当前版本号更新所述磁盘版本号。
7.根据权利要求5所述的方法,其特征在于,所述将所述第一用户数据、所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理之前,所述方法还包括:
在目标存储节点存在异常的情况下,在新的目标存储节点的日志中获取所述目标条带的当前版本号;
基于所述当前版本号,执行所述判断所述磁盘版本号与所述目标条带的当前版本号的大小关系的步骤。
8.一种数据存储装置,其特征在于,所述装置包括:
写入模块,用于将第一用户数据和第二用户数据并发写入目标条带;
第一处理模块,用于在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号;
第一落盘模块,用于将所述第一用户数据、所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理;
第二处理模块,用于当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号;
第二落盘模块,用于将所述第二用户数据、所述第二校验数据以及所述目标条带的当前版本号进行数据落盘处理。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202310877033.3A 2023-07-17 2023-07-17 数据存储方法、装置、计算机设备和存储介质 Pending CN117055807A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310877033.3A CN117055807A (zh) 2023-07-17 2023-07-17 数据存储方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310877033.3A CN117055807A (zh) 2023-07-17 2023-07-17 数据存储方法、装置、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN117055807A true CN117055807A (zh) 2023-11-14

Family

ID=88656282

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310877033.3A Pending CN117055807A (zh) 2023-07-17 2023-07-17 数据存储方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN117055807A (zh)

Similar Documents

Publication Publication Date Title
US6859888B2 (en) Data storage array apparatus storing error information without delay in data access, and method, program recording medium, and program for the same
US9547552B2 (en) Data tracking for efficient recovery of a storage array
US11698728B2 (en) Data updating technology
CN110442535B (zh) 提高分布式固态盘键值缓存系统可靠性的方法及系统
US10521148B2 (en) Data storage device backup
JP2006259894A (ja) ストレージ制御装置および方法
CN111722793A (zh) 开放通道存储设备的操作方法
EP3839716B1 (en) Data storage method and apparatus and storage system
WO2019001521A1 (zh) 数据存储方法、存储设备、客户端及系统
JP2017079053A (ja) ストレージジャーナリングを改善する方法およびシステム
US11347653B2 (en) Persistent storage device management
US11449402B2 (en) Handling of offline storage disk
CN113885809B (zh) 数据管理系统及方法
US20150347224A1 (en) Storage control apparatus and method therefor
US7702864B2 (en) Apparatus, system, and method for writing stripes in parallel to unique persistent storage devices
US12118222B2 (en) Controlling memory overhead for storing integrity data in solid state drives
CN115599314B (zh) 数据冗余策略变更方法、装置、存储节点和存储介质
CN109542671B (zh) 校验数据生成方法及固态硬盘
CN117055807A (zh) 数据存储方法、装置、计算机设备和存储介质
US8140752B2 (en) Method of executing a background task and an array controller
US10747610B2 (en) Leveraging distributed metadata to achieve file specific data scrubbing
US12073081B2 (en) Priority based raid (redundant array of independent disks) rebuild for a data storage system
CN117234436B (zh) 一种磁盘阵列的扩容方法、装置、存储系统及产品
US11822829B2 (en) Method, device, and program product for data rebuilding
CN116048869A (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