CN117744086A - 一种写漏洞处理方法及电子设备和存储介质 - Google Patents

一种写漏洞处理方法及电子设备和存储介质 Download PDF

Info

Publication number
CN117744086A
CN117744086A CN202311616407.2A CN202311616407A CN117744086A CN 117744086 A CN117744086 A CN 117744086A CN 202311616407 A CN202311616407 A CN 202311616407A CN 117744086 A CN117744086 A CN 117744086A
Authority
CN
China
Prior art keywords
controller
data
target stripe
storage device
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
CN202311616407.2A
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.)
Suzhou Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain Intelligent 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 Suzhou Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Priority to CN202311616407.2A priority Critical patent/CN117744086A/zh
Publication of CN117744086A publication Critical patent/CN117744086A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本申请实施例公开了一种写漏洞处理方法及电子设备和存储介质,涉及存储技术领域,在负责执行数据写入操作的控制器无法正常启动的情况下,及时消除Write Hole问题。该方法包括:第一控制器检测第二控制器是否正常完成数据写入操作;在所述第二控制器未正常完成数据写入操作的情况下,所述第一控制器从所述第一控制器所配置的非易失性存储设备中获取目标条带信息,所述目标条带信息是预先存储至所述非易失性存储设备中的,用于指示所述第二控制器在执行数据写入操作的过程中所需进行数据写入的目标条带;所述第一控制器根据所述目标条带信息所指示的目标条带当前所存储的数据,对所述目标条带进行校验数据的重构和覆写。

Description

一种写漏洞处理方法及电子设备和存储介质
技术领域
本申请涉及存储技术领域,特别是涉及一种写漏洞处理方法及电子设备和存储介质。
背景技术
对于通过条带内部的校验数据进行数据保护的存储设备,在对该存储设备进行数据写入的过程中,可能会出现数据块(即有效数据)已完成落盘而校验块(即校验数据)还未完成落盘的情况,这会导致校验数据和条带中的有效数据无法匹配,出现条带数据不一致的情况,这种情况被称之为写漏洞(Write Hole)问题。
相关技术中,通常是借助于控制器(其为负责执行数据写入操作的控制器)所配置的非易失性存储设备(如掉电非易失性内存)实现对输入/输出(Input/Output,IO)数据的写缓存,在落盘IO数据的过程中,因该控制器重启而未完成落盘的IO数据可以由非易失性存储设备保存下来,在该控制器正常重启后,根据非易失性存储设备中的IO数据再次执行落盘操作,以此来消除Write Hole问题。但上述写漏洞处理方案,在负责执行数据写入操作的控制器无法正常启动的情况下,无法实现对Write Hole问题的消除。
发明内容
本申请实施例的目的是提供一种写漏洞处理方法及电子设备和存储介质,可以在负责执行写漏洞处理操作的控制器无法正常启动的情况下,及时消除Write Hole问题。
为解决上述技术问题,第一方面,本申请实施例提供一种写漏洞处理方法,应用于存储设备,所述存储设备包括第一控制器和第二控制器,所述第一控制器和所述第二控制器为一对互为冗余的控制器,所述第二控制器为正在基于自身所配置的非易失性存储设备所存储的数据,执行数据写入操作的控制器;所述方法包括:
所述第一控制器检测所述第二控制器是否正常完成数据写入操作;
在所述第二控制器未正常完成数据写入操作的情况下,所述第一控制器从所述第一控制器所配置的非易失性存储设备中获取磁盘冗余阵列的目标条带信息,所述目标条带信息是预先存储至所述非易失性存储设备中的,用于指示所述第二控制器在执行数据写入操作的过程中所需进行数据写入的目标条带;
所述第一控制器根据所述目标条带信息所指示的目标条带当前所存储的数据,对所述目标条带进行校验数据的重构和覆写。
第二方面,本申请实施例还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上的计算机程序,所述处理器执行所述计算机程序以实现如第一方面所述的写漏洞处理方法。
第三方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现如第一方面所述的写漏洞处理方法。
第四方面,本申请实施例还提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如第一方面所述的写漏洞处理方法。
由上述技术方案可以看出,通过在冗余的控制器(即第一控制器)所配置的非易失性存储设备中预先存储目标条带信息,使得第一控制器在第二控制器因无法正常启动而未正常完成数据写入操作的情况下,能够准确找到第二控制器进行数据写入的目标条带,并对该目标条带进行数据一致性修复,从而及时消除Write Hole问题;且选择对目标条带信息进行存储,能够减少第一控制器侧(即第一控制器及其所配置非易失性存储设备)所需获取和存储的数据,从而保证存储设备整体的IO处理效率。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为相关技术中的一种独立磁盘冗余阵列的示意图;
图2为相关技术中的一种存储设备的示意图;
图3为本申请实施例提供的一种写漏洞处理方法的实施流程图;
图4为本申请实施例提供的一种写漏洞处理过程中故障恢复的实现过程的示意图;
图5为本申请实施例提供的一种写漏洞处理过程中记录写IO信息的实现过程的示意图;
图6为本申请实施例提供的一种写漏洞处理过程中消除写IO信息的实现过程的示意图;
图7为本申请实施例提供的一种写漏洞处理装置的结构示意图;
图8为本申请实施例提供的一种电子设备的示意图;
图9为本申请实施例提供的一种计算机可读存储介质的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
独立磁盘冗余阵列(Redundant Array of Independent Disks,RAID)的基本特征主要包括数据条带化和奇偶性校验。数据条带化就是将用户端下发的一块连续的IO数据分割成很多分块,并把这些分块分别存储到不同的磁盘上,如图1所示的独立磁盘冗余阵列,每一行的数据分块组成一个条带;奇偶性校验则是RAID用条带上的数据块通过异或算法计算出对应的校验块写到指定磁盘上,当RAID的一个磁盘故障后,可以利用剩下的数据块和校验块把故障磁盘上的数据通过异或计算重新构建到热备块上。其中,图1中的数据分块包括:数据块(D1、D2和D3);校验块(P和Q);热备块(B1、B2、B3、B4和B5)。
对于一个通过条带内部的校验数据进行数据保护的存储设备,在对基于奇偶性校验生成的校验块进行落盘(即存储至磁盘)的过程中,如果存储设备中的控制器等设备发生故障,可能会出现数据块已完成落盘而校验块还未完成落盘的情况,这会导致校验数据和条带中的有效数据无法匹配,出现条带数据不一致的情况,这种情况被称之为Write Hole问题。
Write Hole问题会破坏条带数据的一致性,且影响条带数据的正确性。以用户要对图1中条带1的D1分块位置写4千字节(Kilobyte,K)大小的数据为例,当要往D1分块位置写数据时,会同时更新条带1上的P、Q校验块,如果在D1分块位置完成数据写入,而未对校验块P、Q完成更新(如因设备故障导致未对P、Q分块位置写完数据),则条带1会处于条带不一致的状态。在这种情况下,如果除D1所在磁盘(即图1的虚线框中的磁盘)之外的其它磁盘(比如磁盘3)发生故障,RAID会利用条带1上其他分块位置中的数据把磁盘3中D3分块位置中的数据重构出来,由于在重构过程中会使用到条带1上D1和P两个分块位置中的数据,则恢复出来的数据将存在错误(其不再是原来的D3分块位置中的数据)。所以,数据不一致的条带将会引入数据正确性的问题,即Write Hole问题不仅破坏被更新过的数据,还会潜在影响未更新数据的正确性,在极端情况下甚至会影响整个条带中数据的正确性。
相关技术中,主要借助于掉电非易失性内存等非易失性存储设备对IO数据实现写缓存,达到原子写操作的目的。RAID在处理写IO时,首先将数据写入非易失性内存中,在非易失性内存中的数据聚合完毕之后再对相应条带进行数据写入。在将数据完全写入至条带相关的磁盘之后,再将非易失性内存中的数据清除。在RAID落盘IO数据的过程中,如果设备因故障而发生重启,未完成落盘的IO数据可以由非易失性内存保存下来,在设备恢复正常后,RAID会对非易失性内存中的IO数据再次执行落盘操作,以此来消除Write Hole问题。
本申请考虑到为了提升存储设备的可靠性,目前的存储设备通常会将两个配置相同的控制器作为一对互为冗余的控制器,以避免控制器出现故障后存储设备直接宕机而无法运行的情况。如图2所示的存储设备,用户主机下发的写IO既可以在控制器1上执行落盘(即执行数据写入操作),也可以在控制器2上执行落盘,但只能选择一个控制器执行落盘,通常会根据卷归属来确定从哪个控制器下发数据进行落盘。
在上述的存储架构下,只有执行落盘(即处理写IO)的控制器上的非易失性内存中保存有IO数据,而互为冗余的另一个控制器上则没有IO数据。如果非易失性内存中保存有IO数据的控制器因自身突发故障或未能正常重启等原因而无法正常启动,则存储设备就无法利用该控制器上保存的IO数据来及时消除Write hole问题,进而导致RAID的条带数据一致性无法及时得到保障,此时通常会要求RAID离线,直到非易失性内存中保存有IO数据的控制器正常启动并消除Write hole问题之后,该RAID才会正常上线。
针对上述相关技术中存在的问题,本申请提出了一种写漏洞处理方案,当处理写IO的控制器因无法消除Write hole问题(如无法正常启动)而导致未正常完成数据写入操作时,能够在不影响存储设备的IO处理效率的前提下,及时消除Write hole问题,保障条带数据的一致性。
下面结合附图,通过一些实施例及其应用场景对本申请实施例提供的一种写漏洞处理方法及电子设备和存储介质进行详细地说明。
第一方面,参见图3所示,为本申请实施例所提供的一种写漏洞处理方法的实施流程图,该写漏洞处理方法应用于存储设备,所述存储设备包括第一控制器和第二控制器,所述第一控制器和所述第二控制器为一对互为冗余的控制器,所述第二控制器为正在基于自身所配置的非易失性存储设备所存储的数据,执行数据写入操作的控制器,该方法可以包括以下步骤:
步骤S101:所述第一控制器检测所述第二控制器是否正常完成数据写入操作。
在具体实施时,第二控制器在接收到数据写入请求之后,可以通过消息通知的方式告知其冗余的控制器(即第一控制器),自身将执行数据写入操作,并在正常完成针对该数据写入请求的数据写入操作(对应写入过程中未出现Write hole问题或出现的Writehole问题被第二控制器及时修复的情况)之后,再通过消息通知的方式告知第一控制器自身已正常完成数据写入操作,若第一控制器在设定时间段内未接收到第二控制器告知已完成数据写入操作的通知消息,则可确定该第二控制器因无法消除Write hole问题而导致数据写入操作未正常完成,第一控制器随后代替该第二控制器对Write hole问题进行处理。
作为一种可能的实施方式,在发生存储设备断电重启或者控制器重启的情况下,未重启或正常重启后的第一控制器可以通过心跳包等方式检测该第二控制器是否存在,若检测到该第二控制器不存在,则说明该第二控制器未能正常启动,因此也无法独立、及时地对Write hole问题进行处理(对应第二控制器未正常完成数据写入操作的情况),此时第一控制器将代替第二控制器对Write hole问题及时进行处理。
步骤S102:在所述第二控制器未正常完成数据写入操作的情况下,所述第一控制器从所述第一控制器所配置的非易失性存储设备中获取磁盘冗余阵列的目标条带信息,所述目标条带信息是预先存储至所述非易失性存储设备中的,用于指示所述第二控制器在执行数据写入操作的过程中所需进行数据写入的目标条带。
在具体实施时,第二控制器可以将目标条带信息发送至第一控制器,由此告知第一控制器自身将对哪些条带进行数据写入,第一控制器随后将该目标条带信息存储至自身所配置的非易失性存储设备(如掉电非易失性内存)中,以便在第二控制器无法正常启动的情况下,基于该预先存储的目标条带信息以代替第二控制器处理Write hole问题。
作为一种可能的实施方式,上述第一控制器(或第二控制器)所配置的非易失性存储设备可以为能够支持第一控制器和第二控制器共同进行访问的非易失性存储设备,并由第二控制器将目标条带信息写入至该非易失性存储设备中进行存储,在该第二控制器未正常完成数据写入操作的情况下,由第一控制器从该非易失性存储设备中读取目标条带信息以处理Write hole问题;在该第二控制器正常完成数据写入操作的情况下,第一控制器无需对该非易失性存储设备进行访问,由此可以大幅减少因传输目标条带信息所导致的对第一控制器和第二控制器之间的传输带宽占用,从而降低对第一控制器和第二控制器之间的元数据等其它数据传输的影响。
步骤S103:所述第一控制器根据所述目标条带信息所指示的目标条带当前所存储的数据,对所述目标条带进行校验数据的重构和覆写。
在具体实施时,第一控制器根据该目标条带信息可以知晓第二控制器对哪些条带进行了数据写入,由此实现Write hole问题的定位,随后第一控制器可以根据这些条带上当前所存储的有效数据,重新计算校验数据(即进行校验数据的重构),再使用该重构的校验数据覆盖这些条带上当前所存储的校验数据(即进行校验数据的覆写),由此恢复这些条带的数据一致性,达到及时消除Write hole问题的目的。
由上述技术方案可以看出,通过在冗余的控制器(即第一控制器)所配置的非易失性存储设备中预先存储目标条带信息,使得第一控制器在第二控制器因无法正常启动而未正常完成数据写入操作的情况下,能够准确找到第二控制器进行数据写入的目标条带,并对该目标条带进行数据一致性修复,从而及时消除Write Hole问题;且选择对目标条带信息进行存储,能够减少第一控制器侧(即第一控制器及其所配置非易失性存储设备)所需获取和存储的数据,从而保证存储设备整体的IO处理效率。
示例性地,参照如图4所示的写漏洞处理过程中故障恢复的实现过程的示意图,该故障恢复的实现过程的主要包括如下步骤:
(1)存储设备在处理主机下发的写IO的过程中,如果发生设备断电重启或者单控制器重启,就需要消除Write hole引发的条带不一致问题。当非易失性内存中保存有写IO数据的控制器(即用于处理写IO的控制器2,对应上述第二控制器)能正常重启时,可以直接重新落盘非易失性内存中的IO数据以消除Write hole问题。
(2-1)当非易失性内存中保存有写IO条带号的控制器(即冗余的控制器1,对应上述第一控制器)正常启动后,会检测控制器2是否存在。
(2-2)如果控制器2存在,就是步骤(1)描述的场景,该场景下控制器1只需要等待控制器2把数据恢复即可。
(2-3)如果控制器2不存在,就需要控制器1代替控制器2来恢复数据,控制器1首先需要检测自身所配置的非易失性内存中是否保存了写IO的条带号,如果有,则启动数据修复操作,进入步骤(3)。
(3)控制器1读取到条带号之后,会把该条带上所有的数据块都读取出来,通过异或算法计算出P、Q校验块,然后把新计算出的P、Q校验块写入对应磁盘,等到P、Q校验块成功写入磁盘后,控制器1把该条带号从自身的非易失性内存中清除。
(4)基于上述步骤(3),控制器1逐个读取自身所配置的非易失性内存中的写IO的条带号,进行数据修复操作,直至检测到该非易失性内存中没有写IO条带号,则结束数据修复操作,由此代替控制器2完成数据恢复。
可选地,在一个实施例中,在所述第一控制器检测所述第二控制器是否正常完成数据写入操作之前,所述方法还包括:
所述第一控制器响应于接收到所述第二控制器发送的携带所述目标条带信息的第一请求,将所述目标条带信息存储至所述第一控制器所配置的非易失性存储设备中。
在具体实施时,第二控制器在接收到数据写入请求之后,可以根据该数据写入请求,确定自身需要对哪些条带进行数据写入,如第二控制器可以根据该数据写入请求中的逻辑区块地址(Logical Block Address,LBA),确定所需进行数据写入的一个或多个条带的条带号或所对应的起始LBA等信息(即目标条带信息),再基于该目标条带信息生成并发送第一请求,以使第一控制器在接收到第一请求之后,自动将该第一请求所携带的目标条带信息存储至该第一控制器所配置的非易失性存储设备中,由此实现了第一控制器与第二控制器之间用于记录写IO信息(即目标条带信息)的通信交互流程。
作为一种可能的实施方式,在所述第一控制器响应于接收到所述第二控制器发送的携带所述目标条带信息的第一请求,将所述目标条带信息存储至所述第一控制器所配置的非易失性存储设备中之前,所述方法还包括:
所述第二控制器根据接收到的数据写入请求中的起始逻辑区块地址,确定所述目标条带信息;
所述第二控制器向所述第一控制器发送携带所述目标条带信息的第一请求。
在具体实施时,第二控制器可以将数据写入请求中的起始逻辑区块地址直接作为目标条带信息,并通过第一请求将该起始逻辑区块地址发送至第一控制器,以使第一控制器存储该起始逻辑区块地址,当需要第一控制器对写漏洞问题进行处理时,第一控制器可以根据存储的该起始逻辑区块地址、以及磁盘冗余阵列的条带宽度,确定目标条带的条带号,进而根据该条带号对目标条带所存储的数据进行读取、重构和覆写等操作,以对目标条带实现数据一致性修复;第二控制器也可以根据数据写入请求中的起始逻辑区块地址、以及磁盘冗余阵列的条带宽度,确定目标条带的条带号,将该条带号作为目标条带信息,并通过第一请求将该条带号发送至第一控制器,以使第一控制器存储该条带号,当需要第一控制器对写漏洞问题进行处理时,第一控制器可以根据存储的该条带号,直接对目标条带所存储的数据进行读取、重构和覆写等操作,以对目标条带实现数据一致性修复,由此可以免去第一控制器对条带号的确定步骤,提高第一控制器对写漏洞的处理效率。
可以理解的是,本申请实施例通过在第一控制器和第二控制器之间传输目标条带信息,以减少通信内容,加快消息通信,由此保障IO处理性能。若在不考虑IO处理性能的前提下,第二控制器可以将写IO的所有数据内容(即所需写入条带的所有校验数据和有效数据)作为写IO信息并发送给第一控制器进行存储,这样两个控制器都可以拥有写IO的所有数据内容,在需要修复Write hole问题时,直接基于非易失性存储设备中的数据内容进行数据重写即可。
在该实施例中,第一控制器在第二控制器未正常完成数据写入操作的情况下,首先检测自身所配置的非易失性存储设备中是否已预先存储所需对所述目标条带写入的所有数据,如对该目标条带所需写入的数据块和校验块。
在该第一控制器所配置的非易失性存储设备中已预先存储所需对所述目标条带写入的所有数据的情况下,第一控制器则可根据该非易失性存储设备中的所需对所述目标条带写入的所有数据,对所述目标条带进行数据重写,由此可以修复Write hole问题,且保障主机下发的写IO能够正常落盘;
在该第一控制器所配置的非易失性存储设备中未预先存储所需对所述目标条带写入的所有数据的情况下,第一控制器则需要根据所述目标条带信息所指示的目标条带当前所存储的数据,对所述目标条带进行校验数据的重构和覆写,以修复Write hole问题。
可选地,本申请实施例中所述的所需对所述目标条带写入的所有数据,可以通过以下步骤确定:
所述第二控制器根据自身接收到的数据写入请求所对应的待写入数据块,确定所需对所述目标条带写入的目标校验块;
所述第二控制器将所述待写入数据块和所述目标校验块,确定为所述所需对所述目标条带写入的所有数据。
在具体实施时,第二控制器在接收到数据写入请求之后,可以根据该数据写入请求所对应的待写入数据块,以及该待写入数据块所需写入条带上当前所存储的数据,确定所需写入的校验块(即目标校验块)。第二控制器将该待写入数据块和确定出的目标校验块作为所需对所述目标条带写入的所有数据,并可以将该所需对所述目标条带写入的所有数据存储至自身所配置的非易失性存储设备,以便在出现Write hole问题时,基于该存储的所需对所述目标条带写入的所有数据,对目标条带的数据进行重写以修复Write hole问题;也可以将该所需对所述目标条带写入的所有数据发送至第一控制器进行存储,以使第一控制器能够具备通过对目标条带的数据进行重写以修复Write hole问题的能力。
作为一种可能的实施方式,在所述第一控制器响应于接收到所述第二控制器发送的携带所述目标条带信息的第一请求,将所述目标条带信息存储至所述第一控制器所配置的非易失性存储设备中之后,所述方法还包括:
所述第一控制器向所述第二控制器发送针对所述第一请求的第一回复;
所述第二控制器响应于接收到所述第一回复,开始执行数据写入操作。
在具体实施时,第一控制器在正常接收到目标条带信息,并将其成功存储至自身所配置的非易失性存储设备中之后,再对第二控制器发送针对所述第一请求的第一回复,以使所述第二控制器开始执行数据写入操作;若第一控制器因网络拥塞等原因,未正常接收到目标条带信息,或未将其成功存储至自身所配置的非易失性存储设备,则不会对第二控制器发送第一回复,第二控制器在设定时间段内未收到第一回复,则可以对该第一控制器重发第一请求,直至收到相应的第一回复后,第二控制器才开始执行数据写入操作,由此可以避免第二控制器在第一控制器未成功记录写IO信息的情况下就开始执行数据写入操作,导致后续第一控制器无法正常处理Write hole问题的情况发送。
示例性地,参照如图5所示的写漏洞处理过程中记录写IO信息的实现过程的示意图,该记录写IO信息的实现过程主要包括如下步骤:
(1)主机通过数据写入请求向存储设备下发的写IO,在选择从存储设备中的控制器2(即第二控制器)下发时,控制器2中的RAID模块会用该写IO的起始LBA除以条带宽度,计算出该写IO落在哪个条带上。
(2)该处理写IO的控制器2向其冗余的控制器1(即第一控制器)发送用于保存写IO信息的请求(即第一请求),第一请求中会带有该写IO所属的条带号(即目标条带信息)。
(3)控制器1收到第一请求后,会把该写IO所属的条带号保存到自身所配置的非易失性内存中,然后给控制器2回复请求应答(即发送第一回复)。
(4)控制器2收到该请求回复后,开始执行数据写入操作,首先通过异或算法计算出P、Q校验块的内容,把要写入的数据块内容和P、Q校验块内容填充到自身所配置的非易失性内存中,再开始将数据块和P、Q校验块落盘(即开始处理写IO)。
可选地,在一个实施例中,在所述第一控制器检测所述第二控制器是否正常完成数据写入操作之后,所述方法还包括:
所述第二控制器在对所述目标条带完成数据写入的情况下,向所述第一控制器发送携带所述目标条带信息的第二请求;
所述第一控制器响应于接收到所述第二控制器发送的携带所述目标条带信息的第二请求,清除所述第一控制器所配置的非易失性存储设备中的目标条带信息,并停止检测所述第二控制器是否正常完成数据写入操作。
在具体实施时,第二控制器在对目标条带完成数据写入之后,向第一控制器发送用于消除写IO信息的第二请求,第一控制器在收到该第二请求之后,即可知晓该第二控制器已对该目标条带正常完成数据写入操作,第一控制器随后停止对第二控制器是否正常完成数据写入操作的检测,并将该第二请求指示所需消除的写IO信息(即目标条带信息),从自身所配置的非易失性存储设备中删除,以使该非易失性存储设备能够维持充足的可用存储空间,保障后续写IO信息的正常记录。
作为一种可能的实施方式,所述第二控制器是基于自身所配置的非易失性存储设备中的所需对所述目标条带写入的所有数据,对所述目标条带进行写漏洞处理的;
在所述清除所述第一控制器所配置的非易失性存储设备中的目标条带信息之后,所述方法还包括:
所述第一控制器向所述第二控制器发送针对所述第二请求的第二回复;
所述第二控制器响应于接收到所述第二回复,清除自身所配置的非易失性存储设备中对所述目标条带已写入的所有数据。
在具体实施时,第一控制器在正常接收到第二请求,并成功清除自身所存储的相关写IO信息(即目标条带信息)之后,再对第二控制器发送针对所述第二请求的第二回复,以使所述第二控制器开始清除自身存储的相关写IO信息(即所需写入目标条带的IO数据),由此实现了用于消除写IO信息的第一控制器与第二控制器之间的通信交互流程。
可以理解的是,在不保障主机下发的写IO能够正常进行落盘的情况下,第二控制器也可以利用目标条带信息对校验数据的重构和覆写,来代替对目标条带所需写入的所有数据的重写,以实现对Write hole问题的处理,此时第二控制器会将目标条带信息作为写IO信息进行记录和消除。
示例性地,参照如图6所示的写漏洞处理过程中消除写IO信息的实现过程的示意图,该消除写IO信息的实现过程主要包括如下步骤:
(1)处理写IO的控制器2(即第二控制器)在对数据块和P、Q校验块都完成落盘后,会向其冗余的控制器1(即第一控制器)发送用于清除写IO信息的请求(即第二请求),该第二请求中会带有该写IO所属的条带号(即目标条带信息)。
(2)控制器1收到请求后,会把该写IO所属条带号从自身所配置的非易失性内存中清除,然后给控制器2回复请求应答(即发送第二回复)。
(3)控制器2收到该请求回复后,先把自身所配置的非易失性内存中保存的数据块内容和P、Q校验块内容清除,在结束对该写IO的处理,并向主机返回写IO处理结果。
基于上述实施例,本申请考虑到存储设备中非易失性内存中保存有IO数据的控制器在发生故障而无法正在启动时,正常运行的冗余控制器因为没有保存未完成的IO数据会无法消除Write hole问题,导致用户数据无法得到保障,故本申请提出了一种写漏洞处理方案,通过使互为冗余的两个控制器都能保存写IO的相关信息,能够保障对写入过程中Write hole问题的及时消除,且通过使冗余的控制器存储条带信息以消除Write hole问题,能够少冗余的控制器所需接收或存储的数据量,由此在不影响存储设备IO处理效率的前提下,保障了Write hole问题的及时消除,从而实现对RAID条带数据一致性的可靠维护。
第二方面,本申请实施例提供了一种写漏洞处理装置,应用于存储设备,所述存储设备包括第一控制器和第二控制器,所述第一控制器和所述第二控制器为一对互为冗余的控制器,所述第二控制器为正在基于自身所配置的非易失性存储设备所存储的数据,执行数据写入操作的控制器,如图7所示,该装置包括:
第一检测模块,用于所述第一控制器检测所述第二控制器是否正常完成数据写入操作;
第一获取模块,用于所述第一控制器在所述第二控制器未正常完成数据写入操作的情况下,从所述第一控制器所配置的非易失性存储设备中获取磁盘冗余阵列的目标条带信息,所述目标条带信息是预先存储至所述非易失性存储设备中的,用于指示所述第二控制器在执行数据写入操作的过程中所需进行数据写入的目标条带;
第一覆写模块,用于所述第一控制器根据所述目标条带信息所指示的目标条带当前所存储的数据,对所述目标条带进行校验数据的重构和覆写。
可选地,所述装置还包括:
第一存储模块,用于所述第一控制器响应于接收到所述第二控制器发送的携带所述目标条带信息的第一请求,将所述目标条带信息存储至所述第一控制器所配置的非易失性存储设备中。
可选地,所述装置还包括:
第一回复模块,用于所述第一控制器向所述第二控制器发送针对所述第一请求的第一回复,以使所述第二控制器开始执行数据写入操作;
第一写入模块,用于所述第二控制器响应于接收到所述第一回复,开始执行数据写入操作。
可选地,所述装置还包括:
第一处理模块,用于所述第二控制器根据接收到的数据写入请求中的起始逻辑区块地址,确定所述目标条带信息;
第一发送模块,用于所述第二控制器向所述第一控制器发送携带所述目标条带信息的第一请求。
可选地,所述装置还包括:
第二发送模块,用于所述第二控制器在对所述目标条带完成数据写入的情况下,向所述第一控制器发送携带所述目标条带信息的第二请求;
第一清除模块,用于所述第一控制器响应于接收到所述第二控制器发送的携带所述目标条带信息的第二请求,清除所述第一控制器所配置的非易失性存储设备中的目标条带信息,并停止检测所述第二控制器是否正常完成数据写入操作。
可选地,所述第二控制器是基于自身所配置的非易失性存储设备中的所需对所述目标条带写入的所有数据,对所述目标条带进行写漏洞处理的;
所述装置还包括:
第二回复模块,用于所述第一控制器向所述第二控制器发送针对所述第二请求的第二回复;
第二清除模块,用于所述第二控制器响应于接收到所述第二回复,清除自身所配置的非易失性存储设备中对所述目标条带已写入的所有数据。
可选地,所述装置还包括:
第二检测模块,用于所述第一控制器在所述第二控制器未正常完成数据写入操作的情况下,检测所述第一控制器所配置的非易失性存储设备中是否已预先存储所需对所述目标条带写入的所有数据;
第一重写模块,用于所述第一控制器在所述第一控制器所配置的非易失性存储设备中已预先存储所需对所述目标条带写入的所有数据的情况下,根据所述非易失性存储设备中的所需对所述目标条带写入的所有数据,对所述目标条带进行数据重写;
所述第一覆写模块包括:
第一覆写子模块,用于所述第一控制器在所述第一控制器所配置的非易失性存储设备中未预先存储所需对所述目标条带写入的所有数据的情况下,根据所述目标条带信息所指示的目标条带当前所存储的数据,对所述目标条带进行校验数据的重构和覆写。
可选地,所述装置还包括:
第三处理模块,用于所述第二控制器根据自身接收到的数据写入请求所对应的待写入数据块,确定所需对所述目标条带写入的目标校验块;
第四处理模块,用于所述第二控制器将所述待写入数据块和所述目标校验块,确定为所述所需对所述目标条带写入的所有数据。
由上述技术方案可以看出,通过在冗余的控制器(即第一控制器)所配置的非易失性存储设备中预先存储目标条带信息,使得第一控制器在第二控制器因无法正常启动而未正常完成数据写入操作的情况下,能够准确找到第二控制器进行数据写入的目标条带,并对该目标条带进行数据一致性修复,从而及时消除Write Hole问题;且选择对目标条带信息进行存储,能够减少第一控制器侧(即第一控制器及其所配置非易失性存储设备)所需获取和存储的数据,从而保证存储设备整体的IO处理效率。
需要说明的是,装置实施例与方法实施例相近,故描述的较为简单,相关之处参见方法实施例即可。
本申请实施例还提供了一种电子设备,参照图8,图8是本申请实施例提出的电子设备的示意图。如图8所示,电子设备100包括:存储器110和处理器120,存储器110与处理器120之间通过总线通信连接,存储器110中存储有计算机程序,该计算机程序可在处理器120上运行,进而实现本申请实施例公开的所述写漏洞处理方法中的步骤。
本申请实施例还提供了一种计算机可读存储介质,参见图9,图9是本申请实施例提出的计算机可读存储介质的示意图。如图9所示,计算机可读存储介质200上存储有计算机程序/指令210,该计算机程序/指令210被处理器执行时实现如本申请实施例公开的所述写漏洞处理方法中的步骤。
本申请实施例还提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如本申请实施例公开的所述写漏洞处理方法中的步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、系统、设备、存储介质及程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种写漏洞处理方法及电子设备和存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种写漏洞处理方法,其特征在于,应用于存储设备,所述存储设备包括第一控制器和第二控制器,所述第一控制器和所述第二控制器为一对互为冗余的控制器,所述第二控制器为正在基于自身所配置的非易失性存储设备所存储的数据,执行数据写入操作的控制器;所述方法包括:
所述第一控制器检测所述第二控制器是否正常完成数据写入操作;
在所述第二控制器未正常完成数据写入操作的情况下,所述第一控制器从所述第一控制器所配置的非易失性存储设备中获取磁盘冗余阵列的目标条带信息,所述目标条带信息是预先存储至所述非易失性存储设备中的,用于指示所述第二控制器在执行数据写入操作的过程中所需进行数据写入的目标条带;
所述第一控制器根据所述目标条带信息所指示的目标条带当前所存储的数据,对所述目标条带进行校验数据的重构和覆写。
2.根据权利要求1所述的方法,其特征在于,在所述第一控制器检测所述第二控制器是否正常完成数据写入操作之前,所述方法还包括:
所述第一控制器响应于接收到所述第二控制器发送的携带所述目标条带信息的第一请求,将所述目标条带信息存储至所述第一控制器所配置的非易失性存储设备中。
3.根据权利要求2所述的方法,其特征在于,在所述第一控制器响应于接收到所述第二控制器发送的携带所述目标条带信息的第一请求,将所述目标条带信息存储至所述第一控制器所配置的非易失性存储设备中之后,所述方法还包括:
所述第一控制器向所述第二控制器发送针对所述第一请求的第一回复;
所述第二控制器响应于接收到所述第一回复,开始执行数据写入操作。
4.根据权利要求2所述的方法,其特征在于,在所述第一控制器响应于接收到所述第二控制器发送的携带所述目标条带信息的第一请求,将所述目标条带信息存储至所述第一控制器所配置的非易失性存储设备中之前,所述方法还包括:
所述第二控制器根据接收到的数据写入请求中的起始逻辑区块地址,确定所述目标条带信息;
所述第二控制器向所述第一控制器发送携带所述目标条带信息的第一请求。
5.根据权利要求1所述的方法,其特征在于,在所述第一控制器检测所述第二控制器是否正常完成数据写入操作之后,所述方法还包括:
所述第二控制器在对所述目标条带完成数据写入的情况下,向所述第一控制器发送携带所述目标条带信息的第二请求;
所述第一控制器响应于接收到所述第二控制器发送的携带所述目标条带信息的第二请求,清除所述第一控制器所配置的非易失性存储设备中的目标条带信息,并停止检测所述第二控制器是否正常完成数据写入操作。
6.根据权利要求5所述的方法,其特征在于,所述第二控制器是基于自身所配置的非易失性存储设备中的所需对所述目标条带写入的所有数据,对所述目标条带进行写漏洞处理的;
在所述清除所述第一控制器所配置的非易失性存储设备中的目标条带信息之后,所述方法还包括:
所述第一控制器向所述第二控制器发送针对所述第二请求的第二回复;
所述第二控制器响应于接收到所述第二回复,清除自身所配置的非易失性存储设备中对所述目标条带已写入的所有数据。
7.根据权利要求1所述的方法,其特征在于,在所述第一控制器根据所述目标条带信息所指示的目标条带当前所存储的数据,对所述目标条带进行校验数据的重构和覆写之前,所述方法还包括:
在所述第二控制器未正常完成数据写入操作的情况下,所述第一控制器检测所述第一控制器所配置的非易失性存储设备中是否已预先存储所需对所述目标条带写入的所有数据;
在所述第一控制器所配置的非易失性存储设备中已预先存储所需对所述目标条带写入的所有数据的情况下,所述第一控制器根据所述非易失性存储设备中的所需对所述目标条带写入的所有数据,对所述目标条带进行数据重写;
所述第一控制器根据所述目标条带信息所指示的目标条带当前所存储的数据,对所述目标条带进行校验数据的重构和覆写,包括:
在所述第一控制器所配置的非易失性存储设备中未预先存储所需对所述目标条带写入的所有数据的情况下,所述第一控制器根据所述目标条带信息所指示的目标条带当前所存储的数据,对所述目标条带进行校验数据的重构和覆写。
8.根据权利要求6或7所述的方法,其特征在于,所述所需对所述目标条带写入的所有数据通过以下步骤确定:
所述第二控制器根据自身接收到的数据写入请求所对应的待写入数据块,确定所需对所述目标条带写入的目标校验块;
所述第二控制器将所述待写入数据块和所述目标校验块,确定为所述所需对所述目标条带写入的所有数据。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现如权利要求1至8中任一项所述的写漏洞处理方法。
10.一种计算机可读存储介质,其上存储有计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现如权利要求1至8中任一项所述的写漏洞处理方法。
CN202311616407.2A 2023-11-29 2023-11-29 一种写漏洞处理方法及电子设备和存储介质 Pending CN117744086A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311616407.2A CN117744086A (zh) 2023-11-29 2023-11-29 一种写漏洞处理方法及电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311616407.2A CN117744086A (zh) 2023-11-29 2023-11-29 一种写漏洞处理方法及电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN117744086A true CN117744086A (zh) 2024-03-22

Family

ID=90282210

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311616407.2A Pending CN117744086A (zh) 2023-11-29 2023-11-29 一种写漏洞处理方法及电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN117744086A (zh)

Similar Documents

Publication Publication Date Title
JP5768587B2 (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
US11003536B2 (en) Method, device and computer readable storage medium for writing to disk array
US7103811B2 (en) Mechanisms for detecting silent errors in streaming media devices
US7849356B2 (en) Parity data management system apparatus and method
US7681071B2 (en) Storage apparatus, control method therefor and program
CN111158599B (zh) 一种写数据的方法、装置、设备及存储介质
JP3458804B2 (ja) 情報記録装置およびその制御方法
US7356744B2 (en) Method and system for optimizing testing of memory stores
CN107479823B (zh) 随机读写文件测试中的数据校验方法和装置
TW201310457A (zh) 系統啟動引導處理方法及裝置
JP2006079418A (ja) 記憶制御装置、制御方法及びプログラム
WO2024113685A1 (zh) 一种raid阵列的数据恢复方法及相关装置
CN115793985B (zh) 一种安全存储方法、装置、设备及存储介质
CN103678517B (zh) 修复硬盘逻辑错误的方法及控制器
CN110597779A (zh) 一种分布式文件系统中的数据读写方法及相关装置
US7577804B2 (en) Detecting data integrity
CN104407806B (zh) 独立磁盘冗余阵列组硬盘信息的修改方法和装置
JP2001142650A (ja) アレイディスク制御方法及び装置
CN117744086A (zh) 一种写漏洞处理方法及电子设备和存储介质
CN113535095B (zh) 一种双存储池数据存储方法、装置、设备及存储介质
US20220374310A1 (en) Write request completion notification in response to partial hardening of write data
EP2176809A1 (en) Data storage method, apparatus and system for interrupted write recovery
WO2014094572A1 (zh) 一种Raid5阵列读IO失败的修复方法和装置
CN111124740A (zh) 一种数据读取方法、装置、存储设备及机器可读存储介质
CN111104256A (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