CN113535095B - 一种双存储池数据存储方法、装置、设备及存储介质 - Google Patents
一种双存储池数据存储方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113535095B CN113535095B CN202111071997.6A CN202111071997A CN113535095B CN 113535095 B CN113535095 B CN 113535095B CN 202111071997 A CN202111071997 A CN 202111071997A CN 113535095 B CN113535095 B CN 113535095B
- Authority
- CN
- China
- Prior art keywords
- pool
- write
- data
- splitting
- cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 80
- 238000013500 data storage Methods 0.000 title claims description 31
- 230000009977 dual effect Effects 0.000 claims description 30
- 238000012545 processing Methods 0.000 claims description 23
- 238000012937 correction Methods 0.000 claims description 19
- 238000012544 monitoring process Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0727—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
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)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种双存储池数据存储方法、装置、设备及存储介质,该方法包括:接收客户端下发的写业务IO,将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP;指示缓存池完成缓存池的操作事务OP的写操作,通过缓存池将数据池的操作事务OP转发给数据池,以指示数据池完成接收的操作事务OP的写操作;如果缓存池和/或数据池在完成相应写操作的过程中发生故障,则在修复缓存池和/或数据池的故障后,返回执行将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP的步骤,直至成功完成写业务IO拆分所得全部操作事务OP对应写操作,向客户端返回写业务IO完成的信息。能够保证跨存储池的客户端请求的完成状态一致。
Description
技术领域
本发明涉及数据存储技术领域,更具体地说,涉及一种双存储池数据存储方法、装置、设备及存储介质。
背景技术
为了提升存储系统的IO(Input/Output,输入/输出流,也可以称之为业务流)性能,目前大多在数据池之前添加一个由SSD创建的缓存池,见图1所示的分层存储结构。具体来说,在更快速的磁盘设备(通常是SSD)上创建缓存池,在慢速设备(通常是HDD)上创建数据池,缓存池放在数据池的前端,客户端的IO操作首先由缓存池完成,之后再将数据下刷到数据池,见图2所示的Cache tier(缓存分层)结构图。
大业务IO写的场景中,业务IO被拆分为缓存池中的OP(operation,操作,也可以称之为操作事务)和数据池中的OP,若缓存池的写完成,但数据池的写未完成,这两个OP对应的设备故障,故障恢复后系统检查写操作是否完成时,只会检查缓存池的写是否完成,进而基于缓存池的写是否完成向客户端返回相应的信息,这回导致数据池及缓存池的完成状态不一致的问题。
发明内容
本发明的目的是提供一种双存储池数据存储方法、装置、设备及存储介质,能够保证跨存储池的客户端请求的完成状态一致。
为了实现上述目的,本发明提供如下技术方案:
一种双存储池数据存储方法,包括:
接收客户端下发的写业务IO,并将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP;
指示所述缓存池完成所述缓存池的操作事务OP的写操作,通过所述缓存池将所述数据池的操作事务OP转发给所述数据池,以指示所述数据池完成接收的操作事务OP的写操作;
对写操作的过程进行监测,如果所述缓存池和/或所述数据池在完成相应写操作的过程中发生故障,则在修复所述缓存池和/或所述数据池的故障后,返回执行将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP的步骤,直至成功完成所述写业务IO拆分所得全部操作事务OP对应写操作,向所述客户端返回写业务IO完成的信息。
优选的,返回执行且执行完成将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP的步骤之后,还包括:
获取所述缓存池和/或所述数据池在发生故障之前的OP处理状态,如果所述OP处理状态表示所述写业务IO拆分所得全部操作事务OP对应写操作均未成功完成,则执行指示所述缓存池完成所述缓存池的操作事务OP的写操作的步骤,如果所述OP处理状态表示所述写业务IO拆分所得部分操作事务OP对应写操作未成功完成,则指示所述缓存池和/或所述数据池完成对应写操作未成功完成的操作事务OP的写操作,并执行对写操作的过程进行监测的步骤。
优选的,还包括:
在修复所述缓存池和/或所述数据池的故障后,判断所述写业务IO拆分所得的全部操作事务OP对应写操作是否均成功完成,如果是,则向所述客户端返回所述写业务IO完成的信息,否则,向所述客户端返回错误信息,并返回执行将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP的步骤。
优选的,判断所述写业务IO拆分所得的全部操作事务OP对应写操作是否均成功完成,包括:
判断所述缓存池中是否同时存在第一成功标记及第二成功标记,如果是,则确定所述写业务IO拆分所得的全部操作事务OP对应写操作均成功完成,如果否,则确定所述写业务IO拆分所得的全部操作事务OP对应写操作不是均成功完成;其中,所述第一成功标记为所述缓存池成功完成所述缓存池的操作事务OP的写操作后记录的,所述第二成功标记为所述数据池成功完成所述数据池的操作事务OP的写操作并反馈给所述缓存池后由所述缓存池记录的。
优选的,接收客户端下发的写业务IO之后,还包括:
如果所述写业务IO不大于单个块或者小于单个纠删条带,则将所述写业务IO拆分为缓存池的操作事务OP,并指示所述缓存池完成所述缓存池的操作事务OP的写操作,如果所述写业务IO等于单个纠删条带的整数倍,则将所述写业务IO拆分为数据池的操作事务OP,并通过所述缓存池将所述数据池的操作事务OP转发给所述数据池,以指示所述数据池完成接收的操作事务OP的写操作,如果所述写业务IO大于单个纠删条带且非单个纠删条带的整数倍,则执行将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP的步骤。
优选的,将所述写业务IO拆分为缓存池的操作事务OP之后,还包括:
对写操作的过程进行监测,如果所述缓存池在完成相应写操作的过程中发生故障,则在修复所述缓存池的故障后,判断所述写业务IO拆分所得缓存池的操作事务OP对应写操作是否成功完成,如果是,则向所述客户端返回所述写业务IO完成的信息,如果否,向所述客户端返回错误信息,并返回执行将所述写业务IO拆分为缓存池的操作事务OP的步骤。
优选的,将所述写业务IO拆分为数据池的操作事务OP之后,还包括:
对写操作的过程进行监测,如果所述缓存池和/或所述数据池在完成相应写操作的过程中发生故障,则在修复所述缓存池和/或所述数据池的故障后,判断所述写业务IO拆分所得数据池的操作事务OP对应写操作是否成功完成,如果是,则向所述客户端返回所述写业务IO完成的信息,如果否,向所述客户端返回错误信息,并返回执行将所述写业务IO拆分为数据池的操作事务OP的步骤。
一种双存储池数据存储装置,包括:
拆分模块,用于:接收客户端下发的写业务IO,并将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP;
写模块,用于:指示所述缓存池完成所述缓存池的操作事务OP的写操作,通过所述缓存池将所述数据池的操作事务OP转发给所述数据池,以指示所述数据池完成接收的操作事务OP的写操作;
返回模块,用于:对写操作的过程进行监测,如果所述缓存池和/或所述数据池在完成相应写操作的过程中发生故障,则在修复所述缓存池和/或所述数据池的故障后,返回执行将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP的步骤,直至成功完成所述写业务IO拆分所得全部操作事务OP对应写操作,向所述客户端返回写业务IO完成的信息。
一种双存储池数据存储设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上任一项所述双存储池数据存储方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述双存储池数据存储方法的步骤。
本发明提供了一种双存储池数据存储方法、装置、设备及存储介质,该方法包括:接收客户端下发的写业务IO,并将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP;指示所述缓存池完成所述缓存池的操作事务OP的写操作,通过所述缓存池将所述数据池的操作事务OP转发给所述数据池,以指示所述数据池完成接收的操作事务OP的写操作;对写操作的过程进行监测,如果所述缓存池和/或所述数据池在完成相应写操作的过程中发生故障,则在修复所述缓存池和/或所述数据池的故障后,返回执行将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP的步骤,直至成功完成所述写业务IO拆分所得全部操作事务OP对应写操作,向所述客户端返回写业务IO完成的信息。本申请在分层存储特性下,由数据池及缓存池分别完成对客户端发送的写IO拆分所得对应OP的写操作过程中,如果数据池和/或缓存池发生故障,则在故障恢复后返回执行写IO拆分的步骤,直至数据池及缓存池均成功完成相应写操作,才向客户端返回写操作成功的信息,从而保证跨存储池的客户端请求的完成状态一致。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为分层存储结构示意图;
图2为Cache tier结构图;
图3为本发明实施例提供的一种双存储池数据存储方法的流程图;
图4为本发明实施例提供的一种双存储池数据存储方法的具体实现图;
图5为本发明实施例提供的一种双存储池数据存储装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图3,其示出了本发明实施例提供的一种双存储池数据存储方法的流程图,具体可以包括:
S11:接收客户端下发的写业务IO,将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP。
其中,IO为输入输出流或者业务流,相应的写IO可以为写业务,本申请的写业务IO中业务为对IO的解释,因此写业务IO即为写IO;OP为操作或者操作事务,本申请的操作事务OP中操作事务为对OP的解释,因此操作事务OP即为OP。本申请实施例以写IO及OP分别表示写业务IO及操作事务OP进行具体说明。
本申请实施例中缓存池及数据池为基于缓存分层特性实现的,具体来说,缓存分层特性是在更快速的磁盘设备(通常是SSD)上创建缓存池,在慢速设备(通常是HDD)上创建数据池,缓存池放在数据池的前端,客户端的IO操作首先由缓存池完成,之后再将数据下刷到数据池。相应的,在接收到客户端下发的IO(包括写IO及读IO)后均会将IO进行拆分,进而按照拆分后的结果到缓存池和/或数据池中实现相应的IO操作,本申请实施例针对写IO实现数据存储。
本申请实施例在接收到客户端下发的写IO后,可以将写IO拆分为缓存池的OP及数据池的OP。具体来说,在缓存分层中不同层(包括缓存池及数据池)中块大小是相同的,且缓存分层中的数据是以纠删条带的方式实现存在的,以提高其中数据存储的可靠性;基于此,本申请实施例中写IO中等于纠删条带大小的整数倍的部分拆分为数据池的OP,将不大于块大小或者小于单个纠删条带大小的部分拆分为缓存池的OP,进而对数据池的OP及缓存池的OP分别进行相应的写操作。其中,OP与现有技术中对应概念的含义相同,可以理解为需要实现的操作,而写IO拆分所得的OP也即为实现写IO的写操作。
S12:指示缓存池完成缓存池的操作事务OP的写操作,通过缓存池将数据池的操作事务OP转发给数据池,以指示数据池完成接收的操作事务OP的写操作。
将缓存池的OP提交写事务,缓存池完成缓存池的OP对应写操作;将数据池的OP提交代理写,也即由缓存池将数据池的OP转发给数据池,并设置数据池的OP的pool为数据池的pool(即:数据池的OP由数据池完成相应写操作),进而提交代理写的请求,以由数据池完成数据池的OP对应写操作。
S13:对写操作的过程进行监测,如果缓存池和/或数据池在完成相应写操作的过程中发生故障,则在修复缓存池和/或数据池的故障后,返回执行将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP的步骤,直至成功完成写业务IO拆分所得全部操作事务OP对应写操作,向客户端返回写业务IO完成的信息。
如果在完成写操作的过程中缓存池和/或数据池所在的设备(设备即为OSD或者节点)发生故障,则说明写操作很可能并未成功完成,因此修复发生故障的设备,并在设备发生的故障修复完成后返回执行拆分写IO的步骤,直至缓存池及数据池均成功完成相应写操作为止,此时则可以向客户端返回写IO完成的信息,以使得客户端获知其下发的写IO对应写操作完成的信息。
本申请在分层存储特性下,由数据池及缓存池分别完成对客户端发送的写IO拆分所得对应OP的写操作过程中,如果数据池和/或缓存池发生故障,则在故障恢复后返回执行写IO拆分的步骤,直至数据池及缓存池均成功完成相应写操作,才向客户端返回写操作成功的信息,从而保证跨存储池的客户端请求的完成状态一致。
本发明实施例提供的一种双存储池数据存储方法,返回执行且执行完成将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP的步骤之后,还可以包括:
获取缓存池和/或数据池在发生故障之前的OP处理状态,如果OP处理状态表示写业务IO拆分所得全部操作事务OP对应写操作均未成功完成,则执行指示缓存池完成缓存池的操作事务OP的写操作的步骤,如果OP处理状态表示写业务IO拆分所得部分操作事务OP对应写操作未成功完成,则指示缓存池和/或数据池完成对应写操作未成功完成的操作事务OP的写操作,并执行对写操作的过程进行监测的步骤。
需要说明的是,本申请在监测写操作的过程中可以记录写操作完成的情况,也即OP处理状态,如缓存池的OP对应写操作已经完成、数据池的OP对应写操作已经完成等;基于此,在每次返回执行且执行完成客户端下发的写IO至数据池的OP及缓存池的OP的拆分后,可以获取设备发生故障之前的OP处理状态,通过OP处理状态可以获知OP对应写操作是否已经成功完成,进而为了避免数据的重新写入,对于已经成功完成对应写操作的OP(如缓存池的全部OP或者数据池的全部OP),则无需实现相应的写操作,对于未成功完成对应写操作的OP,则需要继续实现相应的写操作。当然无论何时实现OP对应写操作,对于缓存池的OP均是指示缓存池完成缓存池的OP的写操作,对于数据池的OP均是通过缓存池将数据池的OP转发给数据池,以指示数据池完成接收的OP的写操作。
本发明实施例提供的一种双存储池数据存储方法,还可以包括:
在修复缓存池和/或数据池的故障后,判断写业务IO拆分所得的全部操作事务OP对应写操作是否均成功完成,如果是,则向客户端返回写业务IO完成的信息,否则,向客户端返回错误信息,并返回执行将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP的步骤。
需要说明的是,为了减少无用步骤的浪费,进而提高数据存储效率,本申请实施例中在修复缓存池和/或数据池的故障后,可以先判断缓存池及数据池需完成的写操作是否均成功完成,如果是的话,则向客户端返回写IO完成的信息,否则向客户端返回相应的错误信息,并返回执行将写IO拆分为缓存池的OP及数据池的OP的步骤。
本发明实施例提供的一种双存储池数据存储方法,判断写业务IO拆分所得的全部操作事务OP对应写操作是否均成功完成,可以包括:
判断缓存池中是否同时存在第一成功标记及第二成功标记,如果是,则确定写业务IO拆分所得的全部操作事务OP对应写操作均成功完成,如果否,则确定写业务IO拆分所得的全部操作事务OP对应写操作不是均成功完成;其中,第一成功标记为缓存池成功完成缓存池的操作事务OP的写操作后记录的,第二成功标记为数据池成功完成数据池的操作事务OP的写操作并反馈给缓存池后由缓存池记录的。
本申请实施例中缓存池完成缓存池的OP对应写操作时,如果成功实现写操作,则可以记录第一成功标记,以供查询缓存池的OP对应写操作是否成功完成;数据池完成数据池的OP对应写操作时,如果成功实现写操作,则可以向缓存池返回数据池成功实现数据池的OP对应写操作的信息,缓存池在接收到该信息后记录第二成功标记,以供查询数据池的OP对应写操作是否成功完成;在此基础上,判断缓存池及数据池是否均成功完成相应写操作时,则可以通过判断缓存池中是否同时存在第一成功标记及第二成功标记实现,简便且有效。需要说明的是,在查询缓存池中是否存在第一成功标记及第二成功标记时,可以是使用缓存池中的PGLog检查故障前缓存池的OP处理状态(也即是否存在第一成功标记及第二成功标记),仅OP处理出错时,给客户端返回错误。另外,上述实施例中所说的OP处理状态则是可以通过第一成功标记及第二成功标记是否存在的判断获取的。
本发明实施例提供的一种双存储池数据存储方法,接收客户端下发的写业务IO之后,还可以包括:
如果写业务IO不大于单个块或者小于单个纠删条带,则将写业务IO拆分为缓存池的操作事务OP,并指示缓存池完成缓存池的操作事务OP的写操作,如果写业务IO等于单个纠删条带的整数倍,则将写业务IO拆分为数据池的操作事务OP,并通过缓存池将数据池的操作事务OP转发给数据池,以指示数据池完成接收的操作事务OP的写操作,如果写业务IO大于单个纠删条带且非单个纠删条带的整数倍,则执行将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP的步骤。
将写业务IO拆分为缓存池的操作事务OP之后,还可以包括:
对写操作的过程进行监测,如果缓存池在完成相应写操作的过程中发生故障,则在修复缓存池的故障后,判断写业务IO拆分所得缓存池的操作事务OP对应写操作是否成功完成,如果是,则向客户端返回写业务IO完成的信息,如果否,向客户端返回错误信息,并返回执行将写业务IO拆分为缓存池的操作事务OP的步骤。
将写业务IO拆分为数据池的操作事务OP之后,还可以包括:
对写操作的过程进行监测,如果缓存池和/或数据池在完成相应写操作的过程中发生故障,则在修复缓存池和/或数据池的故障后,判断写业务IO拆分所得数据池的操作事务OP对应写操作是否成功完成,如果是,则向客户端返回写业务IO完成的信息,如果否,向客户端返回错误信息,并返回执行将写业务IO拆分为数据池的操作事务OP的步骤。
本申请实施例在接收到客户端下发的写IO后,可以根据写IO的大小实现相应的OP拆分。具体来说,如果写IO对应需要写的数据不大于块大小或者小于纠删条带大小,则将写IO拆分为缓存池的OP,然后直接在缓存池中实现相应OP的写操作,如果写操作成功完成则返回客户端完成相应写操作的信息,否则返回相应的错误信息,并返回执行将写IO拆分为缓存池的OP的步骤,直至在缓存池中成功实现写IO对应写操作后返回客户端完成相应写操作的信息;如果写IO对应需要写的数据等于纠删条带大小的整数倍,则将写IO拆分为数据池的OP,由缓存池将数据池的OP转发给数据池,然后在数据池中实现相应OP的写操作,如果写操作成功完成则返回客户端完成相应写操作的信息,否则返回相应的错误信息,并返回执行将写IO拆分为数据池的OP的步骤,直至在数据池中成功实现写IO对应写操作后返回客户端完成相应写操作的信息;如果写IO对应需要写的数据大于纠删条带大小但非纠删条带大小的整数倍,则将其拆分为数据池的OP及缓存池的OP。从而通过上述方式实现写IO在不同情况下OP拆分及相应写操作的实现,进而保证写IO的有效实现。
另外,本申请实施例在设备故障后需要重启故障的设备,进而实现后续的操作,以有效简便的实现设备的重新使用。
在一种具体实现方式中,如图4所示,本发明实施例提供的一种双存储池数据存储方法具体可以包括:
S41.接收客户端下发的写IO;
S42.根据写IO的大小将其同时拆分为缓存池的OP及数据池的OP,或者仅拆分为缓存池的OP,或者仅拆分为数据池的OP。
S43.对于拆分为缓存池的OP及数据池的OP的情况,将步骤S42中缓存池的OP提交写事务以使得缓存池实现缓存池的OP对应写操作,如果能够在缓存池完成相应写操作则在缓存池中标记第一成功标记;将步骤S42中数据池的OP提交代理写,设置OP的pool为数据池的pool,并提交代理写的请求以使得缓存池将数据池的OP转发给数据池,指示数据池完成数据池的OP对应写操作,如果能够在数据池中完成相应写操作则在缓存池中标记第二成功标记。
S44、如果代理写未完成且数据池和/或缓存池对应的设备出现故障,则启动故障的设备,并在启动完成后由缓存池中的PGLog检查故障前的OP处理状态,若OP处理状态表示写IO拆分所得OP对应写操作并未全部完成,则给客户端返回错误,并重新对写IO进行拆分。
另外,在分发拆分的OP时,再次用缓存池中的PGLog检查故障前OP处理状态,对于OP处理状态中对应写操作已经成功完成的OP则无需再进行相应写操作。可见,本申请在cache tier分层存储特性下设备故障恢复时,非直接在缓存层给客户端返回写完成,而是由缓存池的PGlog检查OP处理状态,进而基于此实现后续操作,直到确定缓存池的OP及数据池的OP对应写操作均成功完成后再返回写完成,以此保证拆分后跨存储池的客户端请求的完成状态一致。
本发明实施例还提供了一种双存储池数据存储装置,如图5所示,具体可以包括:
拆分模块11,用于:接收客户端下发的写业务IO,并将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP;
写模块12,用于:指示缓存池完成缓存池的操作事务OP的写操作,通过缓存池将数据池的操作事务OP转发给数据池,以指示数据池完成接收的操作事务OP的写操作;
返回模块13,用于:对写操作的过程进行监测,如果缓存池和/或数据池在完成相应写操作的过程中发生故障,则在修复缓存池和/或数据池的故障后,返回执行将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP的步骤,直至成功完成写业务IO拆分所得全部操作事务OP对应写操作,向客户端返回写业务IO完成的信息。
本发明实施例还提供了一种双存储池数据存储设备,可以包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现如上任一项双存储池数据存储方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上任一项双存储池数据存储方法的步骤。
需要说明的是,本发明实施例提供的一种双存储池数据存储装置、设备及存储介质中相关部分的说明请参见本发明实施例提供的一种双存储池数据存储方法中对应部分的详细说明,在此不再赘述。另外,本发明实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (8)
1.一种双存储池数据存储方法,其特征在于,包括:
接收客户端下发的写业务IO,并将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP;
指示所述缓存池完成所述缓存池的操作事务OP的写操作,通过所述缓存池将所述数据池的操作事务OP转发给所述数据池,以指示所述数据池完成接收的操作事务OP的写操作;
对写操作的过程进行监测,如果所述缓存池和/或所述数据池在完成相应写操作的过程中发生故障,则在修复所述缓存池和/或所述数据池的故障后,返回执行将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP的步骤,直至成功完成所述写业务IO拆分所得全部操作事务OP对应写操作,向所述客户端返回写业务IO完成的信息;
返回执行且执行完成将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP的步骤之后,还包括:
获取所述缓存池和/或所述数据池在发生故障之前的OP处理状态,如果所述OP处理状态表示所述写业务IO拆分所得全部操作事务OP对应写操作均未成功完成,则执行指示所述缓存池完成所述缓存池的操作事务OP的写操作的步骤,如果所述OP处理状态表示所述写业务IO拆分所得部分操作事务OP对应写操作未成功完成,则指示所述缓存池和/或所述数据池完成对应写操作未成功完成的操作事务OP的写操作,并执行对写操作的过程进行监测的步骤;
双存储池数据存储方法还包括:
在修复所述缓存池和/或所述数据池的故障后,判断所述写业务IO拆分所得的全部操作事务OP对应写操作是否均成功完成;
判断所述写业务IO拆分所得的全部操作事务OP对应写操作是否均成功完成,包括:
判断所述缓存池中是否同时存在第一成功标记及第二成功标记,如果是,则确定所述写业务IO拆分所得的全部操作事务OP对应写操作均成功完成,如果否,则确定所述写业务IO拆分所得的全部操作事务OP对应写操作不是均成功完成;其中,所述第一成功标记为所述缓存池成功完成所述缓存池的操作事务OP的写操作后记录的,所述第二成功标记为所述数据池成功完成所述数据池的操作事务OP的写操作并反馈给所述缓存池后由所述缓存池记录的。
2.根据权利要求1所述的方法,其特征在于,还包括:
如果判断出所述写业务IO拆分所得的全部操作事务OP对应写操作均成功完成,则向所述客户端返回所述写业务IO完成的信息,否则,向所述客户端返回错误信息,并返回执行将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP的步骤。
3.根据权利要求2所述的方法,其特征在于,接收客户端下发的写业务IO之后,还包括:
如果所述写业务IO不大于单个块或者小于单个纠删条带,则将所述写业务IO拆分为缓存池的操作事务OP,并指示所述缓存池完成所述缓存池的操作事务OP的写操作,如果所述写业务IO等于单个纠删条带的整数倍,则将所述写业务IO拆分为数据池的操作事务OP,并通过所述缓存池将所述数据池的操作事务OP转发给所述数据池,以指示所述数据池完成接收的操作事务OP的写操作,如果所述写业务IO大于单个纠删条带且非单个纠删条带的整数倍,则执行将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP的步骤。
4.根据权利要求3所述的方法,其特征在于,将所述写业务IO拆分为缓存池的操作事务OP之后,还包括:
对写操作的过程进行监测,如果所述缓存池在完成相应写操作的过程中发生故障,则在修复所述缓存池的故障后,判断所述写业务IO拆分所得缓存池的操作事务OP对应写操作是否成功完成,如果是,则向所述客户端返回所述写业务IO完成的信息,如果否,向所述客户端返回错误信息,并返回执行将所述写业务IO拆分为缓存池的操作事务OP的步骤。
5.根据权利要求4所述的方法,其特征在于,将所述写业务IO拆分为数据池的操作事务OP之后,还包括:
对写操作的过程进行监测,如果所述缓存池和/或所述数据池在完成相应写操作的过程中发生故障,则在修复所述缓存池和/或所述数据池的故障后,判断所述写业务IO拆分所得数据池的操作事务OP对应写操作是否成功完成,如果是,则向所述客户端返回所述写业务IO完成的信息,如果否,向所述客户端返回错误信息,并返回执行将所述写业务IO拆分为数据池的操作事务OP的步骤。
6.一种双存储池数据存储装置,其特征在于,包括:
拆分模块,用于:接收客户端下发的写业务IO,并将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP;
写模块,用于:指示所述缓存池完成所述缓存池的操作事务OP的写操作,通过所述缓存池将所述数据池的操作事务OP转发给所述数据池,以指示所述数据池完成接收的操作事务OP的写操作;
返回模块,用于:对写操作的过程进行监测,如果所述缓存池和/或所述数据池在完成相应写操作的过程中发生故障,则在修复所述缓存池和/或所述数据池的故障后,返回执行将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP的步骤,直至成功完成所述写业务IO拆分所得全部操作事务OP对应写操作,向所述客户端返回写业务IO完成的信息;
双存储池数据存储装置还用于:所述返回模块返回执行且执行完成将写业务IO拆分为缓存池的操作事务OP及数据池的操作事务OP的步骤之后,获取所述缓存池和/或所述数据池在发生故障之前的OP处理状态,如果所述OP处理状态表示所述写业务IO拆分所得全部操作事务OP对应写操作均未成功完成,则执行指示所述缓存池完成所述缓存池的操作事务OP的写操作的步骤,如果所述OP处理状态表示所述写业务IO拆分所得部分操作事务OP对应写操作未成功完成,则指示所述缓存池和/或所述数据池完成对应写操作未成功完成的操作事务OP的写操作,并执行对写操作的过程进行监测的步骤;
双存储池数据存储装置还用于:在修复所述缓存池和/或所述数据池的故障后,判断所述写业务IO拆分所得的全部操作事务OP对应写操作是否均成功完成;
双存储池数据存储装置判断所述写业务IO拆分所得的全部操作事务OP对应写操作是否均成功完成具体包括:判断所述缓存池中是否同时存在第一成功标记及第二成功标记,如果是,则确定所述写业务IO拆分所得的全部操作事务OP对应写操作均成功完成,如果否,则确定所述写业务IO拆分所得的全部操作事务OP对应写操作不是均成功完成;其中,所述第一成功标记为所述缓存池成功完成所述缓存池的操作事务OP的写操作后记录的,所述第二成功标记为所述数据池成功完成所述数据池的操作事务OP的写操作并反馈给所述缓存池后由所述缓存池记录的。
7.一种双存储池数据存储设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至5任一项所述双存储池数据存储方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述双存储池数据存储方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111071997.6A CN113535095B (zh) | 2021-09-14 | 2021-09-14 | 一种双存储池数据存储方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111071997.6A CN113535095B (zh) | 2021-09-14 | 2021-09-14 | 一种双存储池数据存储方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113535095A CN113535095A (zh) | 2021-10-22 |
CN113535095B true CN113535095B (zh) | 2022-02-18 |
Family
ID=78092496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111071997.6A Active CN113535095B (zh) | 2021-09-14 | 2021-09-14 | 一种双存储池数据存储方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535095B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114449196B (zh) * | 2021-12-21 | 2023-08-04 | 天翼云科技有限公司 | 一种云视频监控数据存储方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109901946A (zh) * | 2019-02-27 | 2019-06-18 | 深信服科技股份有限公司 | 一种纠删码操作方法、装置、设备及存储介质 |
CN111708488A (zh) * | 2020-05-26 | 2020-09-25 | 苏州浪潮智能科技有限公司 | 一种基于分布式内存盘的Ceph性能优化的方法和设备 |
CN111736767A (zh) * | 2020-05-29 | 2020-10-02 | 苏州浪潮智能科技有限公司 | 一种分布式对象存储系统写缓存的方法和设备 |
CN112965660A (zh) * | 2021-02-09 | 2021-06-15 | 山东英信计算机技术有限公司 | 一种双存储池信息反馈的方法、系统、设备及介质 |
-
2021
- 2021-09-14 CN CN202111071997.6A patent/CN113535095B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109901946A (zh) * | 2019-02-27 | 2019-06-18 | 深信服科技股份有限公司 | 一种纠删码操作方法、装置、设备及存储介质 |
CN111708488A (zh) * | 2020-05-26 | 2020-09-25 | 苏州浪潮智能科技有限公司 | 一种基于分布式内存盘的Ceph性能优化的方法和设备 |
CN111736767A (zh) * | 2020-05-29 | 2020-10-02 | 苏州浪潮智能科技有限公司 | 一种分布式对象存储系统写缓存的方法和设备 |
CN112965660A (zh) * | 2021-02-09 | 2021-06-15 | 山东英信计算机技术有限公司 | 一种双存储池信息反馈的方法、系统、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113535095A (zh) | 2021-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11003536B2 (en) | Method, device and computer readable storage medium for writing to disk array | |
US8285679B2 (en) | Creating a buffer point-in-time copy relationship for a point-in-time copy function executed to create a point-in-time copy relationship | |
US10303560B2 (en) | Systems and methods for eliminating write-hole problems on parity-based storage resources during an unexpected power loss | |
US20050240813A1 (en) | Restore method for backup | |
WO2018098972A1 (zh) | 一种日志恢复方法、存储装置和存储节点 | |
US7975171B2 (en) | Automated file recovery based on subsystem error detection results | |
US10049024B2 (en) | Data processing method, device, and system for storage unit | |
CN113377569B (zh) | 用于恢复数据的方法、设备和计算机程序产品 | |
WO2024113685A1 (zh) | 一种raid阵列的数据恢复方法及相关装置 | |
CN111984365B (zh) | 一种虚拟机虚拟磁盘双活实现方法及系统 | |
KR20170054767A (ko) | 데이터베이스 관리 시스템 및 그의 데이터 변경 및 복구 방법 | |
CN113535095B (zh) | 一种双存储池数据存储方法、装置、设备及存储介质 | |
WO2024119774A1 (zh) | Raid卡的写方法、raid卡的写系统及相关装置 | |
JP5352027B2 (ja) | 計算機システムの管理方法及び管理装置 | |
US8621267B2 (en) | Extended page patching | |
JP2001075741A (ja) | ディスク制御システムおよびデータ保全方法 | |
CN112346913B (zh) | 数据恢复方法、装置、设备及存储介质 | |
US20130110789A1 (en) | Method of, and apparatus for, recovering data on a storage system | |
CN113641298A (zh) | 数据存储方法、设备和计算机程序产品 | |
US20100058141A1 (en) | Storage device and control device | |
US11907102B2 (en) | Dynamic debug log enabler for any protection failure jobs | |
US12013753B2 (en) | Proactive loss notification and handling in data storage devices | |
WO2023246240A1 (zh) | 一种数据重构方法及装置 | |
CN102722454B (zh) | 一种磁盘保护方法及装置 | |
CN118708130A (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 |