[go: up one dir, main page]

CN118779146A - 数据存储方法、设备、介质及产品 - Google Patents

数据存储方法、设备、介质及产品 Download PDF

Info

Publication number
CN118779146A
CN118779146A CN202411268036.8A CN202411268036A CN118779146A CN 118779146 A CN118779146 A CN 118779146A CN 202411268036 A CN202411268036 A CN 202411268036A CN 118779146 A CN118779146 A CN 118779146A
Authority
CN
China
Prior art keywords
data
disk
check value
target
hot spare
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202411268036.8A
Other languages
English (en)
Other versions
CN118779146B (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.)
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Original Assignee
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center 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 Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd filed Critical Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority to CN202411268036.8A priority Critical patent/CN118779146B/zh
Publication of CN118779146A publication Critical patent/CN118779146A/zh
Application granted granted Critical
Publication of CN118779146B publication Critical patent/CN118779146B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1456Hardware arrangements for backup

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本申请提供一种数据存储方法、设备、介质及产品,涉及数据处理技术领域,应用于包括数据盘和热备盘的磁盘阵列的控制器,该方法包括:接收主机端发出的写请求,基于写请求,计算目标条带,将写请求对应的目标数据,以及目标数据对应第一校验值,写入到目标条带的数据盘区域中;将目标数据对应的第二校验值,写入到目标条带的热备盘区域中,通过将数据和第一校验值存储在数据盘中,能够达到与RAID5阵列相同的数据读写性能,同时,将第二校验值存储在热备盘中,能够合理利用了热备盘中的空间对第二校验值进行存储,避免了热备盘空间的空闲和浪费,又能够提供与RAID6阵列相同的双校验值的数据安全保护机制。

Description

数据存储方法、设备、介质及产品
技术领域
本申请涉及数据处理技术领域,特别是涉及一种数据存储方法、设备、介质及产品。
背景技术
近几年来,RAID(即独立磁盘的冗余阵列)是一种存储技术,它通过增加校验冗余能力来提高存储性能和可靠性。RAID技术可以将多块磁盘组合在一起以提供单个可使用的更大容量的逻辑磁盘、并发的I/O读写能力和数据冗余能力等。RAID阵列使用条带、镜像和校验来保证数据安全性,它的发展主要经历了以下,RAID0,RAID1,RAID10,RAID5,RAID6。其中RAID5在磁盘阵列中增加了P校验分块,可以通过P校验分块恢复一块故障盘的数据。随后,RAID6在磁盘阵列中又增加了Q校验分块,通过校验P、Q校验分块可以恢复RAID6阵列中的两块故障盘数据。目前业界在软RAID存储技术基础上提出了硬RAID存储技术(RAID卡),顾名思义硬RAID存储技术就是将软RAID存储技术中的一些算法、数据管理以及一些功能都交给硬件管理和实现,以达到提高存储系统的I/O性能。
RAID5/RAID6阵列技术存在下面一些优缺点:
RAID6阵列拥有两个校验块,因此它可以容忍2块磁盘的损坏而不发生数据丢失。它的数据安全性更高,但是相较于RAID5阵列由于它在写入数据时需要多计算1个校验值,多写入了一次磁盘,性能相对较低。
RAID5阵列在使用过程中如果发生坏盘,将会失去数据冗余度保护。常见的做法是给RAID5阵列配备1块热备盘,当出现磁盘损坏时,可以通过数据恢复算法将损坏磁盘的数据重构出来重新存储在热备盘上。这样就存在1个问题,热备盘绝大部分时间都处于空闲状态,无法充分利用热备盘的空间。
另外RAID5阵列在出现磁盘损坏数据重构时,如果再次出现其他磁盘损坏,则会出现数据丢失的情况。
发明内容
有鉴于此,本申请实施例提供一种数据存储方法、设备、介质及产品,以便克服上述问题或者至少部分地解决上述问题。
本申请实施例第一方面提供了一种数据存储方法,应用于磁盘阵列的控制器,所述磁盘阵列包括数据盘和热备盘,所述方法包括:
接收主机端发出的写请求,基于所述写请求,计算所述磁盘阵列中与所述写请求对应的目标条带,所述目标条带包括数据盘区域和热备盘区域,所述数据盘包含多个条带的数据盘区域,所述热备盘包含多个条带的热备盘区域;
将所述写请求对应的目标数据,以及所述目标数据对应第一校验值,写入到所述目标条带的数据盘区域中;
将所述目标数据对应的第二校验值,写入到所述目标条带的热备盘区域中。
可选地,在将所述写请求对应的目标数据,以及所述目标数据对应第一校验值,写入到所述目标条带的数据盘区域中之后,还包括:
向所述主机端返回针对所述写请求的写入成功响应;
将所述目标数据对应的第二校验值,写入到所述目标条带的热备盘区域中,包括:
在向所述主机端返回针对所述写请求的写入成功响应之后,将所述目标数据对应的第二校验值,写入到所述目标条带的热备盘区域中。
可选地,所述方法还包括:
从所述控制器的内存中,为所述磁盘阵列分配存储空间作为缓存空间,所述缓存空间用于缓存所述第二校验值;
在将所述目标数据对应的第二校验值,写入到所述目标条带的热备盘区域中之前,还包括:将所述目标数据对应的第二校验值,缓存在所述缓存空间中。
可选地,所述将所述目标数据对应的第二校验值,写入到所述目标条带的热备盘区域中,包括:
当触发将所述第二校验值写入所述热备盘区域的预设条件时,将所述缓存空间中缓存的第二校验值写入所述热备盘区域中;
其中,所述预设条件包括以下任一项:
所述磁盘阵列的控制器的当前负载低于第一预设阈值;
和/或,所述缓存空间的占用量达到第二预设阈值。
可选地,所述第二校验值在所述缓存空间中以红黑树的形式进行管理,所述红黑树的每个节点对应一个条带的第二校验值;将所述缓存空间中缓存的第二校验值写入所述热备盘区域中,包括:
计算所述第二校验值,基于所述目标条带的条带ID,判断在所述红黑树中是否存在与所述目标条带对应的节点;
当所述红黑树中存在与所述目标条带对应的节点时,将所述目标条带对应的节点所指向的缓存空间中的第一缓存区域的数据更新为所述第二校验值,以及使所述目标条带对应的节点指向所述写请求中的逻辑块地址;
当所述红黑树中不存在与所述目标条带对应的节点时,在所述缓存空间中申请第二缓存区域,并将所述第二校验值写入到所述第二缓存区域中;
在所述红黑树中构建新的节点,在所述新的节点中填入所述第二校验值的相关信息,所述第二校验值的相关信息包括:所述第二缓存区域对应的数据块地址、所述磁盘阵列的磁盘阵列ID、所述目标条带的条带ID以及所述目标条带对应的节点指向所述写请求中的逻辑块地址。
可选地,所述将所述缓存空间中缓存的第二校验值写入所述热备盘区域中,包括:
将所述红黑树标记为写入状态;
创建新的红黑树,并将所述新的红黑树与所述磁盘阵列进行关联;
对所述红黑树进行中序遍历,按照所述写请求中的逻辑块地址从小到大的顺序,将所述红黑树对应的多个第二校验值写入到所述热备盘区域中。
可选地,在创建新的红黑树,并将所述新的红黑树与所述磁盘阵列进行关联之后,还包括:
当需要写入新的第二校验值时,在所述新的红黑树中创建新的节点;
将所述第二校验值的相关信息写入到所述新的节点中,所述第二校验值的相关信息包括:所述第二缓存区域对应的数据块地址、所述磁盘阵列的磁盘阵列ID、所述目标条带的条带ID以及所述目标条带对应的节点指向所述写请求中的逻辑块地址。
可选地,所述基于所述写请求,计算所述磁盘阵列中与所述写请求对应的目标条带,包括:
获取所述写请求中的逻辑块地址、所述目标数据的长度以及所述条带中包含的单个数据块的大小;
根据所述逻辑块地址、所述目标数据的长度以及所述条带中包含的单个数据块的大小,计算出所述写请求对应的目标条带。
可选地,所述方法还包括:
当所述磁盘阵列中的数据盘发生故障时,基于所述磁盘阵列中除故障的数据盘以外的其他未故障的数据盘中存储的数据和第一校验值,和/或热备盘中存储的第二校验值,对所述故障的数据盘中存储的数据进行恢复。
可选地,所述方法还包括:
当所述磁盘阵列中的第一数据盘发生故障时,基于所述磁盘阵列中除所述第一数据盘以外的其他未故障的数据盘中存储的数据和第一校验值,依次对发生故障的第一数据盘中包含的各个数据盘区域中的数据和第一校验值进行恢复;
按照相同条带,将恢复得到的数据和第一校验值,存储在与故障的第一数据盘中包含的各个数据盘区域对应的热备盘中的热备盘区域中。
可选地,所述方法还包括:
在对所述发生故障的第一数据盘进行故障恢复的过程中出现第二数据盘故障的情况下,基于所述磁盘阵列中除了所述第一数据盘和所述第二数据盘以外的其他未故障的数据盘中的数据和第一校验值,以及热备盘中的第二校验值,依次对所述第一数据盘中还未恢复的数据和所述第二数据盘中各个数据盘区域中包含的数据进行恢复。
可选地,所述方法还包括:
当所述磁盘阵列未出现数据盘故障或仅出现一个数据盘故障时,将所述热备盘移除,或通过所述热备盘响应所述主机端的其他请求。
本申请实施例第二方面提供了一种数据存储装置,应用于磁盘阵列的控制器,所述磁盘阵列包括数据盘和热备盘,所述装置包括:
计算模块,用于接收主机端发出的写请求,基于所述写请求,计算所述磁盘阵列中与所述写请求对应的目标条带,所述目标条带包括数据盘区域和热备盘区域,所述数据盘包含多个条带的数据盘区域,所述热备盘包含多个条带的热备盘区域;
第一写入模块,用于将所述写请求对应的目标数据,以及所述目标数据对应第一校验值,写入到所述目标条带的数据盘区域中;
第二写入模块,用于将所述目标数据对应的第二校验值,写入到所述目标条带的热备盘区域中。
本申请实施例第三方面,提供一种电子设备,包括存储器、处理器以及存储在存储器上的计算机程序,其中,所述处理器执行所述计算机程序以实现如第一方面所述的方法。
本申请实施例第四方面,提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如第一方面所述的方法。
本申请实施例第五方面,提供一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如第一方面所述的方法。
本申请的有益效果:
本申请实施例提供一种数据读取方法、设备、介质及产品,应用于磁盘阵列的控制器,所述磁盘阵列包括数据盘和热备盘,所述方法包括:接收主机端发出的写请求,基于所述写请求,计算所述磁盘阵列中与所述写请求对应的目标条带,所述目标条带包括数据盘区域和热备盘区域,所述数据盘包含多个条带的数据盘区域,所述热备盘包含多个条带的热备盘区域;将所述写请求对应的目标数据,以及所述目标数据对应第一校验值,写入到所述目标条带的数据盘区域中;将所述目标数据对应的第二校验值,写入到所述目标条带的热备盘区域中。
通过上述实施例,提供了一种新的磁盘阵列,在该磁盘阵列中按照新的数据存储方式进行目标数据以及校验值的存储,其中,将数据和第一校验值存储在数据盘中,能够达到与RAID5阵列相同的数据读写性能,同时,将第二校验值存储在热备盘中,能够合理利用了热备盘中的空间对第二校验值进行存储,避免了热备盘空间的空闲和浪费,又能够提供与RAID6阵列相同的双校验值的数据安全保护机制,能够应对2块数据盘故障的数据恢复。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
为了更清楚地说明本申请的技术方案,下面将对本申请的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提供的一种数据存储方法的流程示意图;
图2是传统的RAID5阵列的示意图;
图3是传统的RAID6阵列的示意图;
图4是本申请一实施例提供的一种磁盘阵列的示意图;
图5是本申请一实施例提供的一种磁盘阵列以及缓存空间的示意图;
图6是本申请另一实施例提供的一种数据存储方法的流程示意图;
图7是本申请一实施例提供的一种第二校验值写入热备盘的流程示意图;
图8是相关技术中示出的一种RAID5阵列进行数据恢复的示意图;
图9是本申请一实施例示出的一种磁盘阵列进行数据恢复的示意图;
图10是本申请一实施例提供的一种数据存储装置的框架示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
RAID:Redundant Array of Independent Disks,独立磁盘组成的具有冗余性的阵列,RAID是由很多块独立的磁盘,组合成的一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。
chunk:又称为strip;将一个分区分成多个大小相等的、地址相邻的块(Block),这些块称为分块。分块通常被认为是条带的元素。虚拟磁盘以它为单位将虚拟磁盘的地址映射到成员磁盘的地址。
条带:又称为stripe;是阵列的不同分区上的位置相关的strip的集合,是组织不同分区上分块的单位。在RAID5和RAID6中以条带为单元由数据分块通过一定的算法求得校验分块。
RAID5: 一种磁盘阵列配置,它通过将数据和校验信息分布存储在多个硬盘驱动器上来提供数据冗余和性能增强。Raid阵列的每个条带在存储用户数据分块的同时,利用校验算法计算出1个校验数据分块存储起来。当阵列中出现1块磁盘驱动器损坏,可以通过剩余的硬盘驱动器重新生成丢失的数据条带。
RAID6:一种磁盘阵列配置,它在RAID5的基础上提供了更高的数据冗余和容错能力。RAID6在每个数据条带中使用了两个校验信息块,而不是一个。这意味着即使在两个硬盘驱动器同时发生故障的情况下,系统仍然可以继续运行,并且可以通过剩余的硬盘驱动器重新生成丢失的数据条带:
热备盘(Hot Spare):一种在RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)阵列中用于替代故障磁盘的备用磁盘。热备盘通常在RAID阵列中保持处于活动状态,但并不参与数据读写操作,而是在检测到其他磁盘故障时,自动替代故障磁盘并恢复RAID阵列的正常运行。
红黑树:一种自平衡的二叉查找树,它的节点可以是红色或黑色,通过调整节点的颜色和旋转节点的位置,可以在插入、删除等操作后自动保持平衡,从而保证了其查询、插入、删除等操作的时间复杂度为 O(log n)。而且它的空间效率高,不需要额外的空间来存储平衡因子等信息,其每个节点只需要一个颜色标志位,因此相对于其它平衡树数据结构,它具有更高的空间效率。红黑树在插入、删除等操作后,能够维护输入数据的相对顺序,也就是说,相同大小的元素在插入后的相对位置不会发生变化。因此红黑树对于缓存中对随机的IO数据进行排序的理想数据结构。
LBA:logical Block Addressing(逻辑块地址)的缩写,是一种在计算机存储设备中用于定位数据的方法。在LBA中,每个逻辑块都被赋予一个唯一的地址,而不是像以前那样使用柱面、磁头和扇区的组合。这简化了数据存取的管理,同时提高了存储设备的容量和性能。LBA通常用于硬盘驱动器和光盘驱动器等存储设备中。
基于上述背景技术所述的技术问题,需要对传统的RAID阵列技术进行改进,以实现在不降低RAID5阵列性能的基础上,进一步提高RAID5阵列的数据安全性,以及减少RAID阵列中的热备盘空间浪费。
有鉴于此,本申请提出一种在不降低RAID5阵列的性能的基础上,提高RAID5阵列数据的安全性的技术,具体来说,就是利用RAID5阵列的热备盘来存储第二校验值,通过对第二校验值进行聚合后再进行延迟写入的方式,这样能够在不降低RAID5阵列IO性能的情况下,又提高了RAID5阵列的数据安全性。
其中,被用作存储第二校验值的热备盘,也可以随时被踢出阵列用作他用。本申请提供的这种阵列技术介于RAID5和RAID6之间,在本申请中,称之为RAID5+阵列或者RAID5plus阵列。
图1是本申请一实施例提供的一种数据存储方法的流程示意图,如图1所示。
本申请一实施例提供了一种数据存储方法,应用于磁盘阵列的控制器,所述磁盘阵列包括数据盘和热备盘,所述方法包括:
在步骤S101中,接收主机端发出的写请求,基于所述写请求,计算所述磁盘阵列中与所述写请求对应的目标条带,所述目标条带包括数据盘区域和热备盘区域,所述数据盘包含多个条带的数据盘区域,所述热备盘包含多个条带的热备盘区域;
在步骤S102中,将所述写请求对应的目标数据,以及所述目标数据对应第一校验值,写入到所述目标条带的数据盘区域中;
在步骤S103中,将所述目标数据对应的第二校验值,写入到所述目标条带的热备盘区域中。
首先,图2是传统的RAID5阵列的示意图,图3是传统的RAID6阵列的示意图,如图2和图3所示,其中,图2和图3中的数字部分表示数据,P表示第一校验值P,Q表示第二校验值Q。
如果使用传统的RAID5阵列技术,首先,传统的RAID5阵列只能提供单个校验块的数据保护,同时热备盘的空间存在浪费。
如果使用RAID6阵列技术,虽然提供了两块校验值的数据保护,但是会降低数据的写入性能。
图4是本申请一实施例提供的一种磁盘阵列的示意图,本申请提供的一种数据存储方法应用于图4所示的磁盘阵列的控制器中,其中,磁盘阵列包括数据盘和热备盘。
在步骤S101中,当主机端需要向磁盘阵列写入目标数据时,会向磁盘阵列的控制器发出用于写入目标数据的写请求,磁盘阵列的控制器在接收了主机端发出的写请求之后,能够根据接收到的写请求,计算出磁盘阵列中与写请求对应的目标条带,目标条带用于存储写请求对应的目标数据。
其中,如图4所示,磁盘阵列中包含多个磁盘,图4中每一列对应一个磁盘,图4中每一行对应一个条带,磁盘分为数据盘和热备盘这两种类型,每个数据盘都可以分为多个数据盘区域,不同的数据盘区域分布在不同的条带上,同样,每个热备盘都可以分为多个热备盘区域,不同的热备盘区域也分布在不同的条带上,数据盘区域用于存储第一校验值和数据,热备盘区域用于存储第二校验值,一个条带中既有数据盘区域也有热备盘区域,也就是说,目标条带包括数据盘区域和热备盘区域,数据盘包含多个条带的数据盘区域,热备盘包含多个条带的热备盘区域,写请求的目标数据以及校验值存储在目标条带的各个区域中。
进一步,在步骤S102中,目标数据是分散存储在磁盘阵列的各个磁盘中的,在确定出用于写入目标数据的目标条带之后,将写请求对应的目标数据,以及目标数据对应第一校验值,写入到目标条带包含的多个数据盘区域中。
最后,在步骤S103中,本申请中在写入第二校验值时,没有采用传统的RAID6阵列中将第二校验值分散存储到各个磁盘中,而是将第二校验值统一存储在热备盘的存储空间中,充分的考虑热备盘可能被随时替换的特点,保证了替换热备盘的过程中数据不受影响。因此,在写入目标数据以及目标数据对应的第一校验值之后,再将目标数据对应的第二校验值,写入到目标条带的热备盘区域中。
通过上述实施例,提供了一种新的磁盘阵列,在该磁盘阵列中按照新的数据存储方式进行目标数据以及校验值的存储,其中,将数据和第一校验值存储在数据盘中,能够达到与RAID5阵列相同的数据读写性能,同时,将第二校验值存储在热备盘中,能够合理利用了热备盘中的空间对第二校验值进行存储,避免了热备盘空间的空闲和浪费,又能够提供与RAID6阵列相同的双校验值的数据安全保护机制。
可选地,在步骤S102之后,还包括:
向所述主机端返回针对所述写请求的写入成功响应;
所述步骤S103,包括:
在向所述主机端返回针对所述写请求的写入成功响应之后,将所述目标数据对应的第二校验值,写入到所述目标条带的热备盘区域中。
具体的,在一种实施例中,第二校验值是在目标数据和第一校验值写入之后再写入的,为了进一步提高磁盘阵列的写入性能,避免热备盘写入的时间过长导致影响写请求的响应时间。因此,在步骤S102完成之后,此时可以立即向主机端返回针对写请求的写入成功响应,以告知主机端目标数据已经成功写入磁盘阵列中。
在向主机端返回写入成功响应之后,再计算目标数据对应的第二校验值,将第二校验值,写入到目标条带的热备盘区域中,通过这样的方式,主机端无需等待第二校验值在热备盘中落盘。
通过上述实施例,能够提供和传统raid5相当的IO写入性能和延迟,在将第一校验值P和目标数据写入磁盘阵列之后,立即给主机回复响应,提高磁盘阵列的写入性能、减少延迟、改善主机端的用户体验和提高可扩展性。
可选地,为了在遇到突发情况(如电源故障或硬件错误)时确保数据的完整性和可用性,可以采用以下方法:
冗余写入:将目标数据和第一校验值写入多个数据盘。如果一个数据盘发生故障,仍然可以从其他数据盘恢复数据。
校验和:使用校验和算法来验证数据的完整性。如果检测到错误,可以根据校验和重建损坏的数据。
写时复制:在将目标数据写入主存储设备之前,将其复制到另一个设备(例如闪存)。如果主存储设备发生故障,可以使用副本恢复数据。
热备盘:在磁盘阵列中使用一个或多个热备盘。如果一个数据盘发生故障,热备盘可以自动接管并重建丢失的数据。
可选地,所述方法还包括:
从所述控制器的内存中,为所述磁盘阵列分配存储空间作为缓存空间,所述缓存空间用于缓存所述第二校验值;
在步骤S103之前,还包括:将所述目标数据对应的第二校验值,缓存在所述缓存空间中。
具体的,在一种实施例中,为了进一步优化磁盘阵列的写入性能,磁盘阵列的控制器能够预先在控制器的内存中为磁盘阵列分配一部分存储空间作为缓存第二校验值的缓存空间。
在多个写请求对应的第二校验值能够在写入到热备盘之前,先缓存在缓存空间中,通过将第二个校验值缓存在控制器的内存中,而不是每个写请求到来之后,都直接写入到热备盘中,可以减少对热备盘的写入操作。并且,将第二个校验值缓存在控制器的内存中可以提高写入速度,因为写入控制器的内存比写入热备盘快很多。有利于需要快速写入数据的应用程序(例如数据库或日志记录系统)。
通过上述实施例,可以提高磁盘阵列的写入性能,特别适用于需要快速写入大量数据和校验值的应用程序。
可选地,所述步骤S103,包括:
当触发将所述第二校验值写入所述热备盘区域的预设条件时,将所述缓存空间中缓存的第二校验值写入所述热备盘区域中;
其中,所述预设条件包括以下任一项:
所述磁盘阵列的控制器的当前负载低于第一预设阈值;
和/或,所述缓存空间的占用量达到第二预设阈值。
具体的,在一种实施例中,触发将第二校验值从缓存空间中写入到热备盘区域的预设条件包含两种,一种是磁盘阵列的控制器的当前负载低于第一预设阈值的情况下,也就是磁盘阵列的控制器的当前负载较低的情况,此时磁盘阵列处于空闲状态,可以利用这段时间将缓存空间中缓存的第二校验值写入热备盘区域中。而不会影响其他任务的进行,另一种是缓存空间的占用量达到第二预设阈值,也就是缓存空间中的空闲空间不足的情况下,此时需要将已经缓存的多个写请求对应的第二校验值写入到热备盘区域中,以保证缓存空间能够容纳新的写请求所对应的第二校验值,这两种触发方式都是通过控制器进行监控的。
其中,第一预设阈值和第二预设阈值可以根据实际需求进行设置,当控制器的方式负载低于第一预设阈值时表示控制器当前处于空闲状态,当存储空间的占用量达到第二预设阈值时,表示存储空间中的空闲空间不足。
通过上述实施例,提供了两种第二校验值从缓存空间中写入到热备盘的触发方式,在控制器空闲的时间或者数据积攒到一定量后再写入磁盘中,能够有效利用控制器负载较低时的空闲时间以及在缓存空间占用率较高是及时为其他第二校验值的写入操作腾出空闲的空间。
除此之外,触发第二校验值的写入操作还可以有以下几种方式:
定时间隔:定期触发第二校验值的写入操作,每隔一段时间(例如每5分钟或每1小时)。这可以确保即使控制器负载较高或缓存空间占用量较低,第二个校验值也会定期写入热备盘区域。
直接写入:在扩展器负载较低时,直接将第二校验值写入热备盘区域,无需经过缓存空间,从而简化第二校验值的写入过程。
数据保护策略:将第二校验值的写入触发与数据保护策略相结合。例如,可以在创建新的快照或备份时触发第二校验值的写入操作,以确保第二校验值在这些保护操作中包含在内。
例如:
文件服务器:每隔30分钟触发第二校验值的写入,以确保即使服务器负载较高,校验值也会定期写入热备盘区域。
虚拟机管理程序:在创建虚拟机快照时触发第二校验值的写入,以确保校验值包含在快照中。
具体的触发方式的选择将取决于应用程序或数据保护策略的要求。
可选地,所述第二校验值在所述缓存空间中以红黑树的形式进行管理,所述红黑树的每个节点对应一个条带的第二校验值;将所述缓存空间中缓存的第二校验值写入所述热备盘区域中,包括:
计算所述第二校验值,基于所述目标条带的条带ID,判断在所述红黑树中是否存在与所述目标条带对应的节点;
当所述红黑树中存在与所述目标条带对应的节点时,将所述目标条带对应的节点所指向的缓存空间中的第一缓存区域的数据更新为所述第二校验值,以及使所述目标条带对应的节点指向所述写请求中的逻辑块地址;
当所述红黑树中不存在与所述目标条带对应的节点时,在所述缓存空间中申请第二缓存区域,并将所述第二校验值写入到所述第二缓存区域中;
在所述红黑树中构建新的节点,在所述新的节点中填入所述第二校验值的相关信息,所述第二校验值的相关信息包括:所述第二缓存区域对应的数据块地址、所述磁盘阵列的磁盘阵列ID、所述目标条带的条带ID以及所述目标条带对应的节点指向所述写请求中的逻辑块地址。
图5是本申请一实施例提供的一种磁盘阵列以及缓存空间的示意图,图6是本申请另一实施例提供的一种数据存储方法的流程示意图。
具体的,在一种实施例中,如图5所示,可以通过红黑树对缓存空间中的多个第二校验值进行管理,其中,红黑树的每个节点对应磁盘阵列中的一个条带中存储的数据的第二校验值,每个节点对所关联的第二校验值的相关信息进行存储,以图5为例,每个磁盘阵列都标记了磁盘阵列的阵列ID、阵列类型、数据盘、热备盘以及第二校验值所在的缓存空间的缓存地址,对于缓存空间,通过红黑树的各个节点对多个第二校验值所在的数据块进行管理,每个节点记录了每个第二校验值的阵列ID、条带ID以及第二校验值所在的数据块的数据块地址等相关信息。
在写入第一校验值和目标数据之后,计算出目标数据对应的第二校验值,并根据存储目标数据的目标条带对应的条带ID,对红黑树中已有的各个节点进行遍历,以判断在红黑树中是否存在与目标条带对应的节点。
当红黑树中存在与目标条带对应的节点时,说明此时的写请求是对目标数据进行更改,因此,需要将目标条带对应的节点所指向的缓存空间中的第一缓存区域的数据更新为所述第二校验值,此时,目标条带对应的节点所指向的缓存空间中的第一缓存区域的数据为更改前的目标数据对应的第二校验值,在更新完第二校验值之后,将目标条带对应的节点指向写请求中的逻辑块地址,以将红黑树中的第二校验值对应的节点与写请求中目标数据所在的目标条带的逻辑块地址进行关联,便于后续将第二校验值写入到目标条带中的热备盘区域中。
当红黑树中不存在与目标条带对应的节点时,表示目标数据是新写入的一个数据,此时,需要在缓存空间中申请出第二缓存区域,第二缓存区域是空的,并将第二校验值写入到第二缓存区域中,进一步,在红黑树中构建出新的节点,并在新的节点中填入第二校验值的相关信息,以使新的节点与第二缓存区域关联,其中,第二校验值的相关信息包括:第二缓存区域在缓存空间中对应的数据块的数据块地址、磁盘阵列的磁盘阵列ID、目标条带的条带ID以及写请求中的逻辑块地址,所述写请求中的逻辑块地址表示的是目标条带在磁盘阵列中的逻辑块地址。
通过上述实施例,使用红黑树来管理第二个校验值可以提高第二校验值的写入性能,由于红黑树是一种自平衡二叉搜索树,可以快速实现节点的查找和节点的插入等操作。进而便于快速找到目标条带对应的节点,并更新或插入第二个校验值。并且,通过更新现有节点而不是创建新的节点来写入第二个校验值,可以减少写入放大。写入放大是指写入数据量大于实际需要更新的数据量的比率,除此之外,红黑树支持并发访问,这使得多个应用程序可以同时写入不同的条带的第二个校验值,而不会相互影响。
在将第二校验值写入缓存空间的过程中,先确定出是否存在与目标条带对应的节点,再确定是否需要创建新的节点,从而不会出现一个目标条带对应多个节点的情况,进而不会出现在第二校验值写入热备盘的过程中,同一个目标条带写入两个第二校验值的情况,避免了当数据盘故障时,因错误的第二校验值导致数据恢复错误的问题。
可选地,所述步骤S101,包括:
获取所述写请求中的逻辑块地址、所述目标数据的长度以及所述条带中包含的单个数据块的大小;
根据所述逻辑块地址、所述目标数据的长度以及所述条带中包含的单个数据块的大小,计算出所述写请求对应的目标条带。
具体的,在一种实施例中,写请求中会携带在磁盘阵列中需要写入的逻辑块地址,目标数据的长度以及磁盘阵列中的每个条带中包含的单个数据块的大小。
进而根据逻辑块地址、目标数据的长度以及条带中包含的单个数据块的大小,计算出写请求对应的条带的条带ID,条带ID所对应的条带则为目标条带。
通过上述实施例,在接收到主节端的写请求之后,需要根据写请求计算出在磁盘阵列中,用于存储目标数据以及校验值的目标条带。
作为一种示例,以图6为例对本申请提出的一种数据存储方法的流程进行说明,首先,磁盘阵列的控制器接收主机端发出的写请求,对写请求携带的逻辑块地址、目标数据的长度以及条带中包含的单个数据块的大小计算出目标条带的条带ID,即确定出了目标数据需要写入哪个条带,然后计算出第一校验值(P),将第一校验值与目标数据一同写入目标条带包含的数据盘区域中再想主机端返回针对写请求的写入成功响应,在次之后,再计算第二校验值(Q),并在红黑树中查找是否存在已有的节点与目标条带是对应的,如果有,则将这个节点所指向的数据块中之前存储的第二校验值按照与目标数据对应的第二校验值进行更新并存储,再按照目标数据对应的第二校验值的相关信息对节点进行更新;如果没有,则在缓存空间中申请一块数据块,将目标数据对应的第二校验值写入到这个数据库中,然后在红黑树中建立新的节点,将目标数据对应的第二校验值的相关信息写入到这个节点中,并与目标数据对应的第二校验值所在的数据块进行关联,最后将这个节点插入到红黑树中。
可选地,所述将所述缓存空间中缓存的第二校验值写入所述热备盘区域中,包括:
将所述红黑树标记为写入状态;
创建新的红黑树,并将所述新的红黑树与所述磁盘阵列进行关联;
对所述红黑树进行中序遍历,按照所述写请求中的逻辑块地址从小到大的顺序,将所述红黑树对应的多个第二校验值写入到所述热备盘区域中。
图7是本申请一实施例提供的一种第二校验值写入热备盘的流程示意图。
具体的,如图7所示,在一种实施例中,在触发了将缓存空间中缓存的第二校验值写入热备盘区域的操作的预设条件之后,先将包含需要写入的多个第二校验值对应的红黑树标记为写入状态,被标记为写入状态的红黑树则无法进行第二校验值的缓存,因此,需要创建新的红黑树来响应后续的第二校验值的写入过程,在创建完新的红黑树之后,将所创建的新的红黑树与磁盘阵列进行关联,这样的话,新的第二校验值将不会记录在标记为写入状态的红黑树中,而是记录在新的红黑树中。
对于需要写入多个第二校验值的红黑树,由于在红黑树中,是按照写请求对应的逻辑块地址的大小进行存储的,因此,可以对红黑树进行中序遍历,在遍历的过程中按照写请求中的逻辑块地址从小到大的顺序,将红黑树对应的多个第二校验值依次写入到对应的热备盘区域中,按照逻辑块地址从小到大的顺序写入多个第二个校验值可以提高写入性能的方式可以减少磁盘寻道时间。
通过上述实施例,详细说明了将缓存空间中的第二校验值写入到热备盘的过程,以及新的红黑树的创建过程,这种多个第二校验值先在缓存空间中聚合,再延迟写入热备盘的方式,减少了磁盘阵列写入的次数,提高了磁盘阵列的性能。
可选地,在创建新的红黑树,并将所述新的红黑树与所述磁盘阵列进行关联之后,还包括:
当需要写入新的第二校验值时,在所述新的红黑树中创建新的节点;
将所述第二校验值的相关信息写入到所述新的节点中,所述第二校验值的相关信息包括:所述第二缓存区域对应的数据块地址、所述磁盘阵列的磁盘阵列ID、所述目标条带的条带ID以及所述目标条带对应的节点指向所述写请求中的逻辑块地址。
具体的,在一种实施例中,在红黑树标记为写入状态之后,新的第二校验值则会在新的红黑树上进行记录,因此,当需要写入新的第二校验值时,在新的红黑树中创建新的节点,后续需要缓存的第二校验值则需要判断新的红黑树上已有的节点中是否存在对应的目标条带相同的节点,若存在,则按照上述实施例的步骤通过新的第二校验值对原有的第二校验值进行更新。
进一步,并将第二校验值的相关信息写入到新的节点中,第二校验值的相关信息包括:第二缓存区域对应的数据块地址、磁盘阵列的磁盘阵列ID、目标条带的条带ID以及目标条带对应的节点指向的写请求中的逻辑块地址。
通过上述实施例,能够在需要写入热备盘的多个第二校验值对应的红黑树标记为写入之后,通过新的红黑树来响应后续的需要进行缓存的新的第二校验值的记录过程。
可选地,所述方法还包括:
当所述磁盘阵列中的数据盘发生故障时,基于所述磁盘阵列中除故障的数据盘以外的其他未故障的数据盘中存储的数据和第一校验值,和/或热备盘中存储的第二校验值,对所述故障的数据盘中存储的数据进行恢复。
具体的,在一种实施例中,由于磁盘阵列中包含双校验值,即第一校验值和第二校验值,因此,可以有效应对数据盘故障的情况,在这种情况下,当出现故障的数据盘时,可以根据磁盘阵列中除故障的数据盘以外的其他未故障的数据盘中存储的数据和第一校验值,和/或热备盘中存储的第二校验值,对故障的数据盘中存储的数据进行恢复,其中,数据恢复的过程中,其他未故障的数据盘中存储的数据和第一校验值是必须的,而热备盘中存储的第二校验值可以根据实际需求来确定是否需要使用。
通过上述实施例,能够在数据盘故障时,通过其他未故障的数据盘中存储的数据和第一校验值,和/或热备盘中存储的第二校验值对故障的数据盘中的数据进行恢复,保证数据不丢失。
可选地,所述方法还包括:
当所述磁盘阵列中的第一数据盘发生故障时,基于所述磁盘阵列中除所述第一数据盘以外的其他未故障的数据盘中存储的数据和第一校验值,依次对发生故障的第一数据盘中包含的各个数据盘区域中的数据和第一校验值进行恢复;
按照相同条带,将恢复得到的数据和第一校验值,存储在与故障的第一数据盘中包含的各个数据盘区域对应的热备盘中的热备盘区域中。
具体的,在一种实施例中,第一数据盘为磁盘阵列中的任意一个数据盘,当磁盘阵列中的第一数据盘发生故障时此时由于只有一个数据盘故障,因此,可以直接根据磁盘阵列中除第一数据盘以外的其他未故障的数据盘中存储的数据和第一校验值对发生故障的第一数据盘中包含的各个数据盘区域中的数据和第一校验值进行恢复。
并将恢复得到的数据和第一校验值存储在热备盘中,在这个过程中,按照是否为相同的条带进行数据的恢复,也就是说,故障的数据盘中包含的各个数据盘区域,每个数据盘区域中的数据被恢复在这个数据盘区域所在的条带中的热备盘区域中,将热备盘区域中的第二校验值进行覆盖。
通过上述实施例,针对一个数据盘故障的情况,能够通过除这个故障的数据盘以外的其他未故障的数据盘中存储的数据和第一校验值,将故障的数据盘中的数据恢复到热备盘中,避免了数据丢失的情况。
可选地,所述方法还包括:
在对所述发生故障的第一数据盘进行故障恢复的过程中出现第二数据盘故障的情况下,基于所述磁盘阵列中除了所述第一数据盘和所述第二数据盘以外的其他未故障的数据盘中的数据和第一校验值,以及热备盘中的第二校验值,依次对所述第一数据盘中还未恢复的数据和所述第二数据盘中各个数据盘区域中包含的数据进行恢复。
具体的,在一种实施例中,当在对第一数据盘进行恢复的过程中,出现了另一个第二数据盘故障的情况,此时无法仅通过除这个故障的数据盘以外的其他未故障的数据盘中存储的数据和第一校验值对故障的数据盘中的全部数据进行恢复,而是需要结合热备盘中的第二校验值,通过双校验值,即可应当两个数据盘故障后的数据恢复过程。
图8是相关技术中示出的一种RAID5阵列进行数据恢复的示意图,如图8所示。
首先是数据盘3出现故障,导致在图8中对应“2、P、7、10”这些数据及校验值丢失,其中,P为第一校验值,此时,由于只有一个数据盘故障,因此,可以根据数据盘1、数据盘2、数据盘4对数据盘3依次按照条带的顺序对数据盘3的数据进行恢复,并将恢复的数据写入热备盘中,当将条带2中丢失的数据“2、P”恢复到热备盘之后,此时又出现数据盘2故障时,对于条带3和条带4中丢失的数据,由于存在2个数据盘故障,则无法通过第一校验值P和其他数据进行恢复,因此,对于RAID5阵列而言,当出现2个数据盘故障时,无法支持数据的完整性。
图9是本申请一实施例示出的一种磁盘阵列进行数据恢复的示意图,如图9所示。
首先,对于数据盘3单独损坏的情况,可以仅通过第一校验值和其他数据进行数据的恢复,当在恢复数据盘3的过程中,出现了数据盘2损坏时,例如,在数据盘3中在条带1和条带2的数据“2、P”已经恢复并写入热备盘中之后,出现了数据盘2故障,此时,对于条带3和条带4中需要恢复的数据,还可以利用热备盘中的第二校验值Q进行恢复,并在恢复后写入热备盘中。
通过上述实施例,针对一个数据盘故障后,在对这个故障的数据盘进行数据恢复的过程中,又出现第二个数据盘故障时,能够结合热备盘中存储的第二校验值来应对两个数据盘故障的数据恢复过程,避免了数据丢失的情况。
可选地,所述方法还包括:
当所述磁盘阵列未出现数据盘故障或仅出现一个数据盘故障时,将所述热备盘移除,或通过所述热备盘响应所述主机端的其他请求。
具体的,在一种实施例中,与传统的RAID6阵列不同,由于第二校验值都被统一存储在热备盘中,使得热备盘中仅包含第二校验值,因此,对于磁盘阵列而言,热备盘是具备灵活性的,例如在磁盘阵列未出现数据盘故障或仅出现一个数据盘故障情况,都可以随时拔走做其他用途,当需要利用第二校验值时,再重新加入磁盘阵列中,由于数据均存储在数据盘中,在热备盘的移动过程中,对于磁盘阵列中存储的数据的分布也无需进行任何调整,从而使得数据是不受影响的,除此之外,也可以通过热备盘响应主节端的其他请求。
通过上述实施例,本申请提供的磁盘阵列中数据和校验值的分布方式,能够将第二校验值统一写入热备盘中,在加强数据安全的基础上,提高了磁盘阵列的灵活性,当用户需要热备盘做其他用途是,可以随时拔走做其他用途,磁盘阵列的数据分布不需要做任何调整。
综上所述,本申请的各个实施例示出的数据存储方法有以下有益效果:
1、本申请提到的使用利用热备盘来提高传统的raid5阵列数据安全的方法,提高了传统的raid5阵列的数据安全性。
2、本申请提到的延迟写入第二校验值Q的方法,在更高数据安全的同时,提高了和与传统raid5阵列相当的写入性能
3、本申请提到的使用红黑树给第二校验值Q进行排序的方法,避免了数据写放大的问题,并且提高了第二校验值Q的写入性能。
4、利用本申请示出的磁盘阵列进行数据存储,充分利用了热备盘的空间,避免了热备盘空间的浪费。
5、利用本申请示出的磁盘阵列进行数据存储,将第二校验值Q统一写入热备盘中,在加强数据安全的基础上,提高了热备盘使用的灵活性,用户需要热备盘做其他用途时,可以随时拔走做其他用途,磁盘阵列的数据分布不需要做任何调整。
6、本申请提到的利用热备盘来提高磁盘阵列数据安全的方法,能够在应对一个数据盘故障的数据恢复的过程中,保证对再次掉盘的数据也不会丢失。
图10是本申请一实施例提供的一种数据存储装置的框架示意图,如图10所示。
基于同一发明构思,本申请实施例第二方面提供了一种数据存储装置,应用于磁盘阵列的控制器,所述磁盘阵列包括数据盘和热备盘,所述装置包括:
计算模块11,用于接收主机端发出的写请求,基于所述写请求,计算所述磁盘阵列中与所述写请求对应的目标条带,所述目标条带包括数据盘区域和热备盘区域,所述数据盘包含多个条带的数据盘区域,所述热备盘包含多个条带的热备盘区域;
第一写入模块12,用于将所述写请求对应的目标数据,以及所述目标数据对应第一校验值,写入到所述目标条带的数据盘区域中;
第二写入模块13,用于将所述目标数据对应的第二校验值,写入到所述目标条带的热备盘区域中。
可选地,所述装置还包括:
响应模块,用于在将所述写请求对应的目标数据,以及所述目标数据对应第一校验值,写入到所述目标条带的数据盘区域中之后,向所述主机端返回针对所述写请求的写入成功响应;
所述第二写入模块13,包括:
第二写入单元,用于在向所述主机端返回针对所述写请求的写入成功响应之后,将所述目标数据对应的第二校验值,写入到所述目标条带的热备盘区域中。
可选地,所述装置还包括:
缓存空间分配模块,用于从所述控制器的内存中,为所述磁盘阵列分配存储空间作为缓存空间,所述缓存空间用于缓存所述第二校验值;
缓存模块,用于在将所述目标数据对应的第二校验值,写入到所述目标条带的热备盘区域中之前,将所述目标数据对应的第二校验值,缓存在所述缓存空间中。
可选地,所述缓存模块,包括:
缓存单元,用于当触发将所述第二校验值写入所述热备盘区域的预设条件时,将所述缓存空间中缓存的第二校验值写入所述热备盘区域中;
其中,所述预设条件包括以下任一项:
所述磁盘阵列的控制器的当前负载低于第一预设阈值;
和/或,所述缓存空间的占用量达到第二预设阈值。
可选地,所述第二校验值在所述缓存空间中以红黑树的形式进行管理,所述红黑树的每个节点对应一个条带的第二校验值;所述缓存单元,包括:
计算单元,用于计算所述第二校验值,基于所述目标条带的条带ID,判断在所述红黑树中是否存在与所述目标条带对应的节点;
第一缓存单元,用于当所述红黑树中存在与所述目标条带对应的节点时,将所述目标条带对应的节点所指向的缓存空间中的第一缓存区域的数据更新为所述第二校验值,以及使所述目标条带对应的节点指向所述写请求中的逻辑块地址;
第二缓存单元,用于当所述红黑树中不存在与所述目标条带对应的节点时,在所述缓存空间中申请第二缓存区域,并将所述第二校验值写入到所述第二缓存区域中;
第一相关信息写入单元,用于在所述红黑树中构建新的节点,在所述新的节点中填入所述第二校验值的相关信息,所述第二校验值的相关信息包括:所述第二缓存区域对应的数据块地址、所述磁盘阵列的磁盘阵列ID、所述目标条带的条带ID以及所述目标条带对应的节点指向所述写请求中的逻辑块地址。
可选地,所述缓存单元,包括:
标记单元,用于将所述红黑树标记为写入状态;
红黑树创建单元,用于创建新的红黑树,并将所述新的红黑树与所述磁盘阵列进行关联;
遍历单元,用于对所述红黑树进行中序遍历,按照所述写请求中的逻辑块地址从小到大的顺序,将所述红黑树对应的多个第二校验值写入到所述热备盘区域中。
可选地,所述装置还包括:
新的第二校验值写入单元,用于在创建新的红黑树,并将所述新的红黑树与所述磁盘阵列进行关联之后,当需要写入新的第二校验值时,在所述新的红黑树中创建新的节点;
第二相关信息写入单元,用于将所述第二校验值的相关信息写入到所述新的节点中,所述第二校验值的相关信息包括:所述第二缓存区域对应的数据块地址、所述磁盘阵列的磁盘阵列ID、所述目标条带的条带ID以及所述目标条带对应的节点指向所述写请求中的逻辑块地址。
可选地,所述计算模块11,包括:
获取单元,用于获取所述写请求中的逻辑块地址、所述目标数据的长度以及所述条带中包含的单个数据块的大小;
计算单元,用于根据所述逻辑块地址、所述目标数据的长度以及所述条带中包含的单个数据块的大小,计算出所述写请求对应的目标条带。
可选地,所述装置还包括:
恢复模块,用于当所述磁盘阵列中的数据盘发生故障时,基于所述磁盘阵列中除故障的数据盘以外的其他未故障的数据盘中存储的数据和第一校验值,和/或热备盘中存储的第二校验值,对所述故障的数据盘中存储的数据进行恢复。
可选地,所述装置还包括:
第一恢复模块,用于当所述磁盘阵列中的第一数据盘发生故障时,基于所述磁盘阵列中除所述第一数据盘以外的其他未故障的数据盘中存储的数据和第一校验值,依次对发生故障的第一数据盘中包含的各个数据盘区域中的数据和第一校验值进行恢复;
存储单元,用于按照相同条带,将恢复得到的数据和第一校验值,存储在与故障的第一数据盘中包含的各个数据盘区域对应的热备盘中的热备盘区域中。
可选地,所述装置还包括:
第二恢复单元,用于在对所述发生故障的第一数据盘进行故障恢复的过程中出现第二数据盘故障的情况下,基于所述磁盘阵列中除了所述第一数据盘和所述第二数据盘以外的其他未故障的数据盘中的数据和第一校验值,以及热备盘中的第二校验值,依次对所述第一数据盘中还未恢复的数据和所述第二数据盘中各个数据盘区域中包含的数据进行恢复。
可选地,所述装置还包括:
移除模块,用于当所述磁盘阵列未出现数据盘故障或仅出现一个数据盘故障时,将所述热备盘移除,或通过所述热备盘响应所述主机端的其他请求。
基于同一发明构思,本申请另一实施例还提供了一种电子设备,包括存储器、处理器以及存储在存储器上的计算机程序,其中,所述处理器执行所述计算机程序以实现如上述任一实施例所述的数据存储方法。
基于同一发明构思,本申请另一实施例还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行如上述任一实施例所述的数据存储方法。
基于同一发明构思,本申请另一实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如上述任一实施例所述的数据存储方法。
对于装置而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种数据存储方法、电子设备、产品及介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。

Claims (15)

1.一种数据存储方法,其特征在于,应用于磁盘阵列的控制器,所述磁盘阵列包括数据盘和热备盘,所述方法包括:
接收主机端发出的写请求,基于所述写请求,计算所述磁盘阵列中与所述写请求对应的目标条带,所述目标条带包括数据盘区域和热备盘区域,所述数据盘包含多个条带的数据盘区域,所述热备盘包含多个条带的热备盘区域;
将所述写请求对应的目标数据,以及所述目标数据对应第一校验值,写入到所述目标条带的数据盘区域中;
将所述目标数据对应的第二校验值,写入到所述目标条带的热备盘区域中。
2.根据权利要求1所述的数据存储方法,其特征在于,在将所述写请求对应的目标数据,以及所述目标数据对应第一校验值,写入到所述目标条带的数据盘区域中之后,还包括:
向所述主机端返回针对所述写请求的写入成功响应;
将所述目标数据对应的第二校验值,写入到所述目标条带的热备盘区域中,包括:
在向所述主机端返回针对所述写请求的写入成功响应之后,将所述目标数据对应的第二校验值,写入到所述目标条带的热备盘区域中。
3.根据权利要求1所述的数据存储方法,其特征在于,所述方法还包括:
从所述控制器的内存中,为所述磁盘阵列分配存储空间作为缓存空间,所述缓存空间用于缓存所述第二校验值;
在将所述目标数据对应的第二校验值,写入到所述目标条带的热备盘区域中之前,还包括:将所述目标数据对应的第二校验值,缓存在所述缓存空间中。
4.根据权利要求3所述的数据存储方法,其特征在于,所述将所述目标数据对应的第二校验值,写入到所述目标条带的热备盘区域中,包括:
当触发将所述第二校验值写入所述热备盘区域的预设条件时,将所述缓存空间中缓存的第二校验值写入所述热备盘区域中;
其中,所述预设条件包括以下任一项:
所述磁盘阵列的控制器的当前负载低于第一预设阈值;
和/或,所述缓存空间的占用量达到第二预设阈值。
5.根据权利要求3所述的数据存储方法,其特征在于,所述第二校验值在所述缓存空间中以红黑树的形式进行管理,所述红黑树的每个节点对应一个条带的第二校验值;将所述缓存空间中缓存的第二校验值写入所述热备盘区域中,包括:
计算所述第二校验值,基于所述目标条带的条带ID,判断在所述红黑树中是否存在与所述目标条带对应的节点;
当所述红黑树中存在与所述目标条带对应的节点时,将所述目标条带对应的节点所指向的缓存空间中的第一缓存区域的数据更新为所述第二校验值,以及使所述目标条带对应的节点指向所述写请求中的逻辑块地址;
当所述红黑树中不存在与所述目标条带对应的节点时,在所述缓存空间中申请第二缓存区域,并将所述第二校验值写入到所述第二缓存区域中;
在所述红黑树中构建新的节点,在所述新的节点中填入所述第二校验值的相关信息,所述第二校验值的相关信息包括:所述第二缓存区域对应的数据块地址、所述磁盘阵列的磁盘阵列ID、所述目标条带的条带ID以及所述目标条带对应的节点指向所述写请求中的逻辑块地址。
6.根据权利要求5所述的数据存储方法,其特征在于,所述将所述缓存空间中缓存的第二校验值写入所述热备盘区域中,包括:
将所述红黑树标记为写入状态;
创建新的红黑树,并将所述新的红黑树与所述磁盘阵列进行关联;
对所述红黑树进行中序遍历,按照所述写请求中的逻辑块地址从小到大的顺序,将所述红黑树对应的多个第二校验值写入到所述热备盘区域中。
7.根据权利要求6所述的数据存储方法,其特征在于,在创建新的红黑树,并将所述新的红黑树与所述磁盘阵列进行关联之后,还包括:
当需要写入新的第二校验值时,在所述新的红黑树中创建新的节点;
将所述第二校验值的相关信息写入到所述新的节点中,所述第二校验值的相关信息包括:所述第二缓存区域对应的数据块地址、所述磁盘阵列的磁盘阵列ID、所述目标条带的条带ID以及所述目标条带对应的节点指向所述写请求中的逻辑块地址。
8.根据权利要求1所述的数据存储方法,其特征在于,所述基于所述写请求,计算所述磁盘阵列中与所述写请求对应的目标条带,包括:
获取所述写请求中的逻辑块地址、所述目标数据的长度以及所述条带中包含的单个数据块的大小;
根据所述逻辑块地址、所述目标数据的长度以及所述条带中包含的单个数据块的大小,计算出所述写请求对应的目标条带。
9.根据权利要求1所述的数据存储方法,其特征在于,所述方法还包括:
当所述磁盘阵列中的数据盘发生故障时,基于所述磁盘阵列中除故障的数据盘以外的其他未故障的数据盘中存储的数据和第一校验值,和/或热备盘中存储的第二校验值,对所述故障的数据盘中存储的数据进行恢复。
10.根据权利要求9所述的数据存储方法,其特征在于,所述方法还包括:
当所述磁盘阵列中的第一数据盘发生故障时,基于所述磁盘阵列中除所述第一数据盘以外的其他未故障的数据盘中存储的数据和第一校验值,依次对发生故障的第一数据盘中包含的各个数据盘区域中的数据和第一校验值进行恢复;
按照相同条带,将恢复得到的数据和第一校验值,存储在与故障的第一数据盘中包含的各个数据盘区域对应的热备盘中的热备盘区域中。
11.根据权利要求10所述的数据存储方法,其特征在于,所述方法还包括:
在对所述发生故障的第一数据盘进行故障恢复的过程中出现第二数据盘故障的情况下,基于所述磁盘阵列中除了所述第一数据盘和所述第二数据盘以外的其他未故障的数据盘中的数据和第一校验值,以及热备盘中的第二校验值,依次对所述第一数据盘中还未恢复的数据和所述第二数据盘中各个数据盘区域中包含的数据进行恢复。
12.根据权利要求1-11任一所述的数据存储方法,其特征在于,所述方法还包括:
当所述磁盘阵列未出现数据盘故障或仅出现一个数据盘故障时,将所述热备盘移除,或通过所述热备盘响应所述主机端的其他请求。
13.一种电子设备,其特征在于,包括存储器、处理器以及存储在存储器上的计算机程序,其中,所述处理器执行所述计算机程序以实现如权利要求1-12中任一项所述的数据存储方法。
14.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1-12中任一项所述的数据存储方法。
15.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-12中任一项所述的数据存储方法。
CN202411268036.8A 2024-09-11 2024-09-11 数据存储方法、设备、介质及产品 Active CN118779146B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202411268036.8A CN118779146B (zh) 2024-09-11 2024-09-11 数据存储方法、设备、介质及产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202411268036.8A CN118779146B (zh) 2024-09-11 2024-09-11 数据存储方法、设备、介质及产品

Publications (2)

Publication Number Publication Date
CN118779146A true CN118779146A (zh) 2024-10-15
CN118779146B CN118779146B (zh) 2025-01-24

Family

ID=92992863

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202411268036.8A Active CN118779146B (zh) 2024-09-11 2024-09-11 数据存储方法、设备、介质及产品

Country Status (1)

Country Link
CN (1) CN118779146B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN119536664A (zh) * 2025-01-22 2025-02-28 苏州元脑智能科技有限公司 磁盘数据的处理方法和装置、存储介质及电子设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102184079A (zh) * 2011-04-29 2011-09-14 华中科技大学 一种raid5级别磁盘阵列的写性能优化方法
CN107885613A (zh) * 2017-11-09 2018-04-06 郑州云海信息技术有限公司 一种基于raid5的数据写入方法、装置及介质
US20200142830A1 (en) * 2018-11-02 2020-05-07 EMC IP Holding Company LLC Memory management of multi-level metadata cache for content-based deduplicated storage
CN115454727A (zh) * 2022-11-11 2022-12-09 苏州浪潮智能科技有限公司 一种数据恢复方法、装置、设备及可读存储介质
CN115793985A (zh) * 2023-01-09 2023-03-14 苏州浪潮智能科技有限公司 一种安全存储方法、装置、设备及存储介质
CN116149574A (zh) * 2023-04-20 2023-05-23 苏州浪潮智能科技有限公司 Raid阵列的管理方法、装置、raid卡及存储介质
CN116431080A (zh) * 2023-06-09 2023-07-14 苏州浪潮智能科技有限公司 一种数据落盘方法、系统、设备及计算机可读存储介质
CN117472292A (zh) * 2023-12-27 2024-01-30 苏州元脑智能科技有限公司 独立磁盘冗余阵列的数据重构方法及存储系统、控制器
CN118069406A (zh) * 2024-04-16 2024-05-24 苏州元脑智能科技有限公司 一种存储数据校验系统及方法
CN118394565A (zh) * 2024-06-28 2024-07-26 苏州元脑智能科技有限公司 一种存储系统的异或计算方法、装置以及产品

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102184079A (zh) * 2011-04-29 2011-09-14 华中科技大学 一种raid5级别磁盘阵列的写性能优化方法
CN107885613A (zh) * 2017-11-09 2018-04-06 郑州云海信息技术有限公司 一种基于raid5的数据写入方法、装置及介质
US20200142830A1 (en) * 2018-11-02 2020-05-07 EMC IP Holding Company LLC Memory management of multi-level metadata cache for content-based deduplicated storage
CN115454727A (zh) * 2022-11-11 2022-12-09 苏州浪潮智能科技有限公司 一种数据恢复方法、装置、设备及可读存储介质
WO2024098696A1 (zh) * 2022-11-11 2024-05-16 苏州元脑智能科技有限公司 一种数据恢复方法、装置、设备及可读存储介质
CN115793985A (zh) * 2023-01-09 2023-03-14 苏州浪潮智能科技有限公司 一种安全存储方法、装置、设备及存储介质
CN116149574A (zh) * 2023-04-20 2023-05-23 苏州浪潮智能科技有限公司 Raid阵列的管理方法、装置、raid卡及存储介质
CN116431080A (zh) * 2023-06-09 2023-07-14 苏州浪潮智能科技有限公司 一种数据落盘方法、系统、设备及计算机可读存储介质
CN117472292A (zh) * 2023-12-27 2024-01-30 苏州元脑智能科技有限公司 独立磁盘冗余阵列的数据重构方法及存储系统、控制器
CN118069406A (zh) * 2024-04-16 2024-05-24 苏州元脑智能科技有限公司 一种存储数据校验系统及方法
CN118394565A (zh) * 2024-06-28 2024-07-26 苏州元脑智能科技有限公司 一种存储系统的异或计算方法、装置以及产品

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
吴素贞;陈晓熹;毛波;: "GC-RAIS:一种基于垃圾回收感知的固态盘阵列", 计算机研究与发展, no. 01, 15 January 2013 (2013-01-15) *
孙志卓;张全新;李元章;谭毓安;刘靖宇;马忠梅;: "连续数据存储中面向RAID5的写操作优化设计", 计算机研究与发展, no. 08, 15 August 2013 (2013-08-15) *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN119536664A (zh) * 2025-01-22 2025-02-28 苏州元脑智能科技有限公司 磁盘数据的处理方法和装置、存储介质及电子设备

Also Published As

Publication number Publication date
CN118779146B (zh) 2025-01-24

Similar Documents

Publication Publication Date Title
US7814273B2 (en) Dynamically expandable and contractible fault-tolerant storage system permitting variously sized storage devices and method
JP6144819B2 (ja) 不揮発性メモリシステムにおける同期ミラーリング
US7055058B2 (en) Self-healing log-structured RAID
US8839028B1 (en) Managing data availability in storage systems
US20220342541A1 (en) Data updating technology
CN100390745C (zh) 在处理数据时检验数据完整性的装置及方法
US11467746B2 (en) Issuing efficient writes to erasure coded objects in a distributed storage system via adaptive logging
CN116339644B (zh) 一种独立磁盘冗余阵列创建方法、装置、设备及介质
CN118779146A (zh) 数据存储方法、设备、介质及产品
CN102147714A (zh) 一种网络存储系统的管理方法及装置
CN100388239C (zh) 在线增加廉价磁盘冗余阵列磁盘数量的方法与系统
WO2023125507A1 (zh) 生成块组的方法、装置和设备
CN116414294A (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