CN111124993B - 减小i/o处理时缓存数据镜像时延的方法、设备和程序产品 - Google Patents
减小i/o处理时缓存数据镜像时延的方法、设备和程序产品 Download PDFInfo
- Publication number
- CN111124993B CN111124993B CN201811290049.XA CN201811290049A CN111124993B CN 111124993 B CN111124993 B CN 111124993B CN 201811290049 A CN201811290049 A CN 201811290049A CN 111124993 B CN111124993 B CN 111124993B
- Authority
- CN
- China
- Prior art keywords
- cache
- metadata
- processor
- user data
- storage system
- 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
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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2066—Optimisation of the communication load
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2082—Data synchronisation
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2084—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring on the same storage unit
-
- 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/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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/061—Improving I/O performance
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- 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
- G06F3/0656—Data buffering arrangements
-
- 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
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- 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/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a plurality of storage devices
- G06F2212/262—Storage comprising a plurality of storage devices configured as RAID
-
- 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/28—Using a specific disk cache architecture
- G06F2212/285—Redundant cache memory
- G06F2212/286—Mirrored cache memory
-
- 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/461—Sector or disk block
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
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)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例提供了一种存储管理的方法、电子设备和程序产品。该方法包括:响应于在存储系统的第一处理器处从主机接收到向存储系统写入用户数据的写请求,将用户数据缓存在第一处理器的第一缓存中,并且在第一缓存中生成缓存元数据,缓存元数据包括与将用户数据写入到存储系统相关联的信息;将用户数据和缓存元数据发送到存储系统的第二处理器的第二缓存,用于第二处理器在第二缓存中执行与缓存镜像相关的数据处理;向主机发送写请求被完成的指示而不等待第二处理器完成数据处理。本公开的实施例可以减小I/O处理路径上由于缓存数据镜像导致的时延,特别是可以缩短写请求的I/O处理的路径长度,降低写请求的I/O处理的时延,从而改善存储系统的性能。
Description
技术领域
本公开的实施例一般地涉及计算机系统或存储系统,并且更特别地,涉及一种用于减小I/O处理时缓存数据镜像时延的方法、电子设备和计算机程序产品。
背景技术
通常,存储系统的用户可以使用主机来访问存储系统。主机上可以运行应用软件,而存储系统向主机提供数据存储服务。在主机和存储系统之间,可以使用前端总线来进行数据传送。顾名思义,在双处理器存储系统中,存在两个处理器向主机提供存储服务,它们可以称为存储处理器(SP)。这两个处理器可以通过内部通信信道连接,这样的通信信道例如可以称为通信管理器接口(CMI)。通过该通信信道,两个处理器彼此可以同步数据和内部状态,等等。在存储系统的后端,存储盘可以通过后端总线连接到两个处理器。
然而,在传统的双处理器存储系统中,两个处理器之间的数据镜像操作还存在许多问题,例如,针对主机发出的I/O请求的响应流程繁琐、时延过长、性能不高,等等。这使得传统的双处理器存储系统在很多场合无法满足用户的需求,导致了不良的用户体验。
发明内容
本公开的实施例涉及一种用于减小I/O处理时缓存数据镜像时延的方法、电子设备、以及计算机程序产品。
在本公开的第一方面,提供了一种存储管理的方法。该方法包括:响应于在存储系统的第一处理器处从主机接收到向存储系统写入用户数据的写请求,将用户数据缓存在第一处理器的第一缓存中,在第一缓存中生成缓存元数据,缓存元数据包括与将用户数据写入到存储系统相关联的信息;将用户数据和缓存元数据发送到存储系统的第二处理器的第二缓存,用于第二处理器在第二缓存中执行与缓存镜像相关的数据处理;以及向主机发送写请求被完成的指示而不等待第二处理器完成数据处理。
在本公开的第二方面,提供了一种存储管理的方法。该方法包括:在存储系统的第二处理器处从存储系统的第一处理器的第一缓存接收用户数据和缓存元数据,缓存元数据包括与将用户数据写入存储系统相关联的信息;对缓存元数据进行预处理,使得用户数据通过第二处理器对主机是可访问的;以及在第二处理器的第二缓存中,基于用户数据和缓存元数据来执行与缓存镜像相关的数据处理。
在本公开的第三方面,提供了一种电子设备。电子设备包括至少两个处理器以及存储有计算机程序指令的至少一个存储器。至少一个存储器和计算机程序指令被配置为,与至少两个处理器一起,使得电子设备:响应于在第一处理器处从主机接收到向存储系统写入用户数据的写请求,将用户数据缓存在第一处理器的第一缓存中,在第一缓存中生成缓存元数据,缓存元数据包括与将用户数据写入到存储系统相关联的信息;将用户数据和缓存元数据发送到第二处理器的第二缓存,用于第二处理器在第二缓存中执行与缓存镜像相关的数据处理;以及向主机发送写请求被完成的指示而不等待第二处理器完成数据处理。
在本公开的第四方面,提供了一种电子设备。电子设备包括至少两个处理器以及存储有计算机程序指令的至少一个存储器。至少一个存储器和计算机程序指令被配置为,与至少两个处理器一起,使得电子设备:在第二处理器处从第一处理器的第一缓存接收用户数据和缓存元数据,缓存元数据包括与将用户数据写入存储系统相关联的信息;对缓存元数据进行预处理,使得用户数据通过第二处理器对主机是可访问的;以及在第二处理器的第二缓存中,基于用户数据和缓存元数据来执行与缓存镜像相关的数据处理。
在本公开的第五方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非易失性计算机可读介质上并且包括机器可执行指令。机器可执行指令在被执行时使机器执行根据第一方面的方法的步骤。
在本公开的第六方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非易失性计算机可读介质上并且包括机器可执行指令。机器可执行指令在被执行时使机器执行根据第二方面的方法的步骤。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其他特征通过以下的描述将变得容易理解。
附图说明
通过参考附图阅读下文的详细描述,本公开的实施例的上述以及其他目的、特征和优点将变得容易理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施例,其中:
图1示出了本公开的实施例可以在其中被实现的示例环境的示意性框图。
图2示出了传统的双处理器存储系统处理写请求的时序图。
图3示出了传统的双处理器存储系统处理写请求的时延组成的示意图。
图4示出了根据本公开的实施例的存储管理方法的流程图。
图5示出了根据本公开的实施例的发送处理器发送缓存数据的示意图。
图6示出了根据本公开的实施例的示例性缓存元数据消息的示图。
图7示出了根据本公开的另一实施例的存储管理方法的流程图。
图8示出了根据本公开的实施例的接收处理器处理缓存数据的示意图。
图9示出了根据本公开的实施例的接收处理器对缓存元数据进行预处理的示例过程的流程图。
图10示出了根据本公开的实施例的接收处理器对缓存元数据进行数据处理的示例过程的流程图。
图11示出了根据本公开的实施例的接收处理器执行I/O处理的示例过程的流程图。
图12示出了根据本公开的实施例的恢复缓存元数据消息的示例过程的流程图。
图13示出了根据本公开的实施例的存储系统处理写请求的示例过程的时序图。
图14示出了根据本公开的实施例的存储系统处理写请求的时延组成的示意图。
图15示出了一种可以被用来实施本公开的实施例的设备的示意性框图。
贯穿所有附图,相同或者相似的参考标号被用来表示相同或者相似的组件。
具体实施方式
下面将参考附图中所示出的若干示例性实施例来描述本公开的原理和精神。应当理解,描述这些具体的实施例仅是为了使本领域的技术人员能够更好地理解并实现本公开,而并非以任何方式限制本公开的范围。
图1示出了本公开的实施例可以在其中被实现的示例环境100的示意性框图。如图1所示,示例环境100中包括存储系统110和主机140。主机140可以通过前端总线160来访问或管理存储系统110。在一些实施例中,存储系统110是双处理器存储系统,其包括第一处理器120和第二处理器130。每个处理器可以包括不同的功能模块,以用于在存储系统110中提供不同的存储服务。在其他实施例中,存储系统110也可以包括多于两个处理器。
在图1示出的示例中,第一处理器120包括主机侧模块121、用户逻辑单元(LUN)模块123、缓存(例如,DRAM缓存)125、独立磁盘冗余阵列(RAID)模块127、以及驱动器129。主机侧模块121例如用于与主机140进行交互,用户LUN模块123例如用于提供与用户LUN相关联的服务,缓存125例如用于提供数据缓存服务,RAID模块127例如用于提供与RAID相关联的服务,并且驱动器129例如用于通过后端总线170实现对物理存储盘150-1至150-N的访问。在下文中,存储盘150-1至150-N也可以统称为存储盘150。
相对应地,第二处理器130包括主机侧模块131、用户LUN模块133、缓存135、RAID模块137、以及驱动器139。第二处理器130的这些功能模块与第一处理器120的对应功能模块具有相同或类似的功能,此处不再赘述。在第一处理器120和第二处理器130的对应功能模块之间,可以通过通信信道180(例如,通信管理器接口CMI)进行通信。
例如,用户从主机140通过第一处理器120写入到存储系统110的用户数据192可以由第一处理器120暂时缓存在缓存125中,并且将稍后冲刷到后端的存储盘150。为此,第一处理器120可以在缓存125中生成缓存元数据194,其包括与将用户数据192写入到存储系统110相关联的信息。在本公开的上下文中,用户数据192和缓存元数据194可以统称为缓存数据190。为了实现缓存125与缓存135之间的数据同步,第一处理器120可以将缓存125中的缓存数据190(例如,通过通信信道180)镜像到第二处理器130的缓存135。
将理解,尽管图1以示例性的方式示出了存储系统110中的各种组件和功能模块、以及这些组件和功能模块之间的连接关系和交互关系,但是这些组件和功能模块以及它们之间的各种关系仅是示例性的,无意以任何方式限制本公开的范围。在其他实施例中,存储系统110可以包括适合于实现本公开的实施例的更多或更少的组件和功能模块,组件和功能模块之间也可以具有适合于实现本公开的实施例的不同的连接关系和交互关系。
如上文提到的,在传统的双处理器存储系统中,两个处理器之间的数据镜像操作还存在许多问题,例如,针对主机发出的I/O请求(尤其是写请求)的响应流程繁琐、时延过长、性能不高,等等。这使得传统的双处理器存储系统在很多场合无法满足用户的需求,导致了不良的用户体验。
具体而言,根据传统的方案,在主机向存储系统写入用户数据时,可能包括以下的各种操作。例如,主机向存储系统发出写请求和用户数据。在存储系统侧,主机侧模块在接收到该写请求之后,将该请求转发给下层的模块,即用户LUN模块。然后,在用户LUN模块处理写请求期间,用户LUN模块将用户数据写入到缓存。
在用户数据写入到缓存之后,缓存将用户数据镜像到对端处理器,然后向对端处理器发送缓存元数据。在接收到用户数据和缓存元数据后,对端处理器处理缓存元数据并且将用户数据添加到对端缓存。在完成数据处理后,对端处理器向本端处理器返回确认。
在用户数据被写入到本端缓存和对端缓存之后,本端处理器的缓存和用户LUN模块向上层返回写入完成的指示。当主机侧模块从下层接收到完成指示后,主机侧模块向主机发送写请求完成的响应。此外,已经写入到缓存的用户数据(脏数据)将在冲刷策略确定的恰当时间被冲刷到后端的存储盘。下面结合图2和图3来更详细地分析传统的双处理器存储系统处理写请求的时延构成。
图2示出了传统的双处理器存储系统处理写请求的时序图200。如图2所示,主机140’向本端缓存125’发出202’写请求。本端缓存125’将写请求的用户数据写入204’到本端物理页面。本端缓存125’向本端CMI 205’提供206’用于镜像的缓存数据。本端CMI 205’启动208’对缓存数据的镜像。本端CMI 205’发送210’用户数据到对端CMI 215’。本端CMI205’发送212’缓存元数据到对端CMI 215’。对端CMI 215’向对端缓存135’通知214’接收到缓存数据。
响应于此,对端缓存135’处理216’缓存数据。对端缓存135’向对端CMI 215’通知218’缓存数据已经处理完成。然后,对端CMI 215’向本端CMI 205’返回220’确认消息。本端CMI 205’接着向本端缓存125’通知222’缓存数据的镜像完成。响应于此,本端缓存125’处理224’缓存数据。然后,本端缓存125’向主机140’发送226’写请求完成的响应。根据示例过程200的处理时序,可以得出传统的双处理器存储系统处理写请求的时延组成,下文结合图3来详细描述。
图3示出了传统的双处理器存储系统处理写请求的时延组成300的示意图。如所示出的,时延组成300包括六个部分,分别是主机数据传送310、本端处理器处理320、缓存数据镜像330、对端处理器处理340、消息确认350、以及向主机发送响应360。在这些部分中,本端处理器处理320和对端处理器处理340属于处理器进行处理的时间,主机数据传送310和向主机发送响应360是前端总线和后端总线的数据传送时间,而缓存数据镜像330和消息确认350是两个处理器之间的内部通信信道的数据传送时间。
发明人发现,在一般的存储系统中,在两个处理器之间的内部通信信道上的数据传送通常成为性能的瓶颈。一个原因是内部通信信道与CPU的处理速度相比而言具有较大的传送延迟。由于内部信道的这种较大的传送延迟,为了达到较高的传送带宽和较高的CPU利用率,可能需要更深的I/O队列深度。因此,如果能够减小两个处理器之间的通信信道的数据传送延迟,则存储系统的性能将得到提高。此外,在发送方处理器将缓存数据发送给接收方处理器之后,用户数据和缓存元数据已经保存在接收方处理器的缓存中,因此存在减小I/O请求处理延迟的可能性。
鉴于传统方案存在的上述问题以及潜在的其他问题,并且通过发明人的上述分析,本公开的实施例提出了一种用于减小I/O处理时缓存数据镜像时延的方法、电子设备、以及计算机程序产品。本公开的实施例的基本思想是,当存储系统的两个处理器之间进行缓存数据镜像时,缓存数据的发送方处理器在将缓存数据发送给接收方处理器后,即确定缓存数据的镜像完成,而不等待从接收方处理器接收到对缓存数据处理完成的确认。本公开的实施例可以减小I/O处理路径上由于缓存数据镜像导致的时延,特别是可以缩短写请求的I/O处理的路径长度,降低写请求的I/O处理的时延,从而改善存储系统的性能。
在本公开的一些实施例中,在处理器处理I/O请求之前,先对已经到达的缓存元数据进行预处理。以此方式,确保了I/O请求按照它们到达的先后顺序被依次处理,从而保护了存储系统的数据一致性。另外,在存储系统从故障(软件或电源失效)中恢复的情况下,存储系统将恢复已经到达接收方处理器的所有缓存元数据。以此方式,确保了所有已经被写入到存储系统的任一处理器的缓存中的数据可以被恢复,从而避免了在存储系统崩溃后的数据丢失。下面结合图4至图14来详细地描述本公开的实施例。
图4示出了根据本公开的实施例的存储管理方法400的流程图。在一些实施例中,方法400可以由示例环境100中的存储系统110来实现,例如可以由存储系统110的处理器(诸如第一处理器120)或处理单元来实现,或者由存储系统110的各种功能模块来实现。在下文中,为了便于讨论,将结合图1以存储系统110的第一处理器120实现方法400为例来讨论方法400。但是将理解,在其他实施例中,方法400也可以由存储系统110的第二处理器130来实现,或者由独立于示例环境100的其他电子设备或计算设备来实现。
在410处,存储系统110的第一处理器120响应于从主机140接收到向存储系统110写入用户数据192的写请求,第一处理器120将用户数据192缓存在缓存125中。此外,第一处理器120在缓存125中生成缓存元数据194。缓存元数据194包括与将用户数据192写入到存储系统110相关联的信息。例如,缓存元数据194可以包括用于将用户数据192写入到存储系统110的缓存页面信息、物理页面信息、地址信息,等等。在其他实施例中,缓存元数据194可以包括用于将用户数据192写入到存储系统110的任何信息。
在420处,第一处理器120将用户数据192和缓存元数据194发送到存储系统110的第二处理器130的缓存135,用于第二处理器130在缓存135中执行与缓存镜像相关的数据处理。在一些实施例中,第二处理器130执行的数据处理可以包括确定缓存元数据194所指示的缓存页面,将用户数据192所存放的物理页面添加到所确定的缓存页面中,等等。在其他实施例中,第二处理器130执行的数据处理也可以包括与缓存数据镜像相关联的任何处理。
将理解,第一处理器120可以采取任何适当的方式将用户数据192和缓存元数据194发送给第二处理器130。例如,第一处理器120可以将用户数据192和缓存元数据194两者例如在一个消息中一起发送给第二处理器130。替换地,第一处理器120也可以将用户数据192和缓存元数据194分别发送给第二处理器130,由此可以根据用户数据192和缓存元数据194的不同性质采用不同的发送方式。下面结合图5更详细地描述这样的实施例。
图5示出了根据本公开的实施例的发送处理器120发送缓存数据190的示意图。如图5所示,第一处理器120可以将用户数据192缓存在缓存125的物理页面510中,并且生成与用户数据192有关的缓存元数据194。在这种情况下,在将缓存数据190发送给对端缓存135时,第一处理器120可以将用户数据192从缓存125的物理页面510传送525到缓存135的物理页面520。例如,用户数据192的该传送525可以通过直接存储器访问DMA方式来进行。另一方面,第一处理器120将缓存元数据194传送515到缓存135的接收缓冲区530。在一些实施例中,接收缓冲区530可以通过环形缓冲器来实现。以此方式,用户数据192和缓存元数据194以不同的方式从第一处理器120发送到第二处理器130,提高了数据传输的效率。
在一些实施例中,第一处理器120可以通过生成缓存元数据消息来将缓存元数据194发送给对端缓存135,并且可以使得缓存元数据消息是可恢复的。为此,第一处理器120可以将缓存元数据194和恢复信息封装在缓存元数据消息中,该恢复信息能够用于在存储系统110进行故障恢复时恢复缓存元数据消息,以便增强存储系统110的稳健性和可靠性。然后,第一处理器120可以将生成的缓存元数据消息发送到对端缓存135的接收缓冲区530。下面结合图6来描述根据本公开的实施例的缓存元数据消息的示例。
图6示出了根据本公开的实施例的示例性缓存元数据消息600的示图。如图6所示,缓存元数据消息600可以包括多个字段,例如处理状态610、发送序列号620、校验和630、缓存页面640、物理页面650、以及其他字段660。在这些字段中,处理状态610、发送序列号620、校验和630属于上文提到的恢复信息,可以用于恢复缓存元数据消息600。在其他实施例中,恢复信息也可以包括更多或更少的字段,或者包括与此处列出的字段不同的可以用于恢复缓存元数据消息600的字段。此外,其他字段660可以包括传统的缓存元数据消息中的一个或多个字段。
为了标识缓存元数据消息600的恢复信息字段,在将缓存元数据消息600发送给第二处理器130之前,第一处理器120可以将缓存元数据消息600的处理状态610设置为“有效”,以指示缓存元数据消息600尚未由第二处理器130处理。此外,第一处理器120还可以设置缓存元数据消息600的发送序列号620。例如,每当发送一个缓存元数据消息时,发送序列号可以递增预定值,诸如增加1。在一些实施例中,在执行多个缓存元数据消息的恢复时,可以从具有较小发送序列号的缓存元数据消息开始依次恢复。
进一步地,第一处理器120还可以设置缓存元数据消息600的校验和630。校验和630用于保护缓存元数据消息600的完整性,因此在执行缓存元数据消息600的恢复时将被验证。例如,存储系统110可能在缓存元数据消息600正被传送时发生崩溃。在这种情况下,缓存元数据消息600可能仅被传送了一部分,此时校验和630将是不匹配的。以上简单地介绍了缓存元数据消息600的示例性组成,以及作为发送方的第一处理器120对相关字段的设置。在后文中,将结合图12更详细地介绍处理状态610在接收方处理器130处如何设置,以及缓存元数据消息600的示例性恢复过程。
返回参考图4,在430处,第一处理器120向主机140发送写请求被完成的指示,而不等待第二处理器130完成对缓存数据190的数据处理。以此方式,第一处理器120对主机140发送的写请求的响应时延中将不包括第二处理器130对缓存数据190进行镜像处理的时间,也不包括第二处理器130用于向第一处理器120发送确认消息的传输时间,从而缩短写请求的I/O处理的路径长度,降低写请求的I/O处理的时延,改善存储系统的性能。上面从发送方处理器的视角描述了本公开的一些实施例,下面结合图7至图11从接收方处理器的视角进一步描述本公开的实施例。
图7示出了根据本公开的另一实施例的存储管理方法700的流程图。在一些实施例中,方法700可以由示例环境100中的存储系统110来实现,例如可以由存储系统110的处理器(诸如第二处理器130)或处理单元来实现,或者由存储系统110的各种功能模块来实现。在下文中,为了便于讨论,将结合图1以存储系统110的第二处理器130实现方法700为例来讨论方法700。但是将理解,在其他实施例中,方法700也可以由存储系统110的第一处理器120来实现,或者由独立于示例环境100的其他电子设备或计算设备来实现。
在710处,存储系统110的第二处理器130从第一处理器120的缓存125接收用户数据192和缓存元数据194。如上文指出的,缓存元数据194包括与将用户数据192写入存储系统110相关联的信息。例如,缓存元数据194可以包括用于将用户数据192写入到存储系统110的缓存页面信息、物理页面信息、地址信息,等等。在其他实施例中,缓存元数据194可以包括用于将用户数据192写入到存储系统110的任何信息。
将理解,第二处理器130可以采取任何适当的方式来接收用户数据192和缓存元数据194。例如,第二处理器130可以例如在一个消息中一起接收用户数据192和缓存元数据194。替换地,第一处理器120也可以分别接收用户数据192和缓存元数据194。例如,在图5描述的示例中,在接收用户数据192和缓存元数据194期间,用户数据192可以从缓存125的物理页面510传送到第二处理器130的缓存135的物理页面520。此外,第二处理器130可以将接收到的缓存元数据194缓冲到缓存135的接收缓冲区530。
在720处,第二处理器130对缓存元数据194进行预处理,使得用户数据192通过第二处理器130对主机140是可访问的。通过这样的方式,第二处理器130可以更加快速地使得主机140可以通过第二处理器130来访问用户数据192。例如,在缓存元数据194被缓冲在缓存135的缓冲区530中时,主机140可能无法通过第二处理器130来访问用户数据192。此外,由于第二处理器130需要按照缓存元数据的到达先后顺序来依次处理缓存元数据,因此缓存元数据194可能在缓冲区530中缓冲较长的时间,从而导致主机140较长时间无法通过第二处理器130访问用户数据192,而此时主机140可能已经从第一处理器120接收到写请求成功的响应。
为了解决该问题,第二处理器130可以对缓存元数据194进行简单的预处理,使得用户数据192在第二处理器130处对主机140变为可访问。将理解,第二处理器130可以采用任何适当的方式来执行这样的预处理,只要该预处理使得主机140在第二处理器130处可以访问到用户数据192。例如,第二处理器130可以将缓存元数据194从接收缓冲区530移动到主机140可访问的缓存元数据队列中。
换句话说,为了缩短用户数据194在被发送给第二处理器130直到变为可访问的时延,本公开的实施例将第二处理器130对缓存元数据194的整个处理过程划分成两个部分(或阶段),第一部分即为预处理阶段,使得用户数据192变为可访问。第二部分包括对缓存数据190进行数据镜像的实际处理,在本文的上下文中可以称为数据处理阶段。下面将结合图8来对此进行进一步描述。
图8示出了根据本公开的实施例的接收处理器130处理缓存数据190的示意图。如图8所示,第二处理器130对缓存数据190的处理可以分为两个阶段。第一阶段805可以称为预处理阶段,其可以由前台线程来实施。在预处理阶段805中,第二处理器130可以尝试针对接收缓冲区530中待处理的缓存元数据534来锁定相关联的缓存页面,并且将待处理的缓存元数据534从接收缓冲区530取出并且排列到待处理缓存元数据队列810中,例如队列810的头部。在一些实施例中,接收缓冲区530可以是环形缓冲器,缓存元数据532可以是环形缓冲器的头部,而缓存元数据534可以是环形缓冲器的尾部。
第二阶段815可以称为数据处理阶段,其可以由后台线程来实施。因此,在一些实施例中,第二处理器130可以通过唤醒后台线程来执行对缓存数据190的数据处理。以此方式,可以使前台线程免于对缓存元数据执行复杂的数据处理,从而加快了前台线程处理缓存元数据的速度,而减小了对主机I/O请求的响应延迟。同时,对缓存元数据的复杂数据处理可以被转移到后台线程处理,因此不再影响对I/O请求的响应延迟。
在数据处理阶段815中,第二处理器130可以处理位于例如队列810的尾部的缓存元数据194,并且将与缓存元数据194相关联的物理页面520添加到缓存元数据194所指示的缓存页面820,从而在缓存135中实现用户数据192与缓存元数据194之间的关联。在其他实施例中,数据处理阶段815还可以包括与缓存镜像相关联的其他可能的处理。下面分别结合图9和图10更详细地描述预处理阶段805和数据处理阶段815。
图9示出了根据本公开的实施例的接收处理器130对缓存元数据194进行预处理的示例过程900流程图。在下文中,为了便于讨论,将结合图1以存储系统110的第二处理器130实现过程900为例来讨论过程900。但是将理解,在其他实施例中,过程900也可以由存储系统110的第一处理器120来实现,或者由独立于示例环境100的其他电子设备或计算设备来实现。
在910处,第二处理器130从接收缓冲区取回缓存元数据。例如,第二处理器130可以从环形接收缓冲器的尾部取回缓存元数据。在920处,第二处理器130尝试锁定缓存元数据指示的缓存页面。在930处,第二处理器130确定是否成功锁定缓存页面。如果成功锁定缓存页面,则过程900前进到940。另一方面,如果未成功锁定缓存页面,则过程900前进到950。在940处,第二处理器130将缓存元数据添加到待处理元数据队列中,以等待由第二处理器130进行处理。在950处,第二处理器130将缓存元数据添加到等待元数据队列中,以等待第二处理器130针对缓存元数据194锁定缓存页面820。在960处,第二处理器130结束预处理。
从过程900可知,如果存在来自主机140的其他I/O请求用于请求对相同的缓存页面进行读操作或写操作,则较早的I/O请求将成功地锁定该缓存页面,而较晚的I/O请求将无法锁定该缓存页面。未成功锁定缓存页面的I/O请求将被添加到该缓存页面的等待队列中。以此方式,I/O请求将以它们的到达顺序依次地被处理。
此外,一旦缓存元数据被添加到待处理队列中,则该缓存元数据应成功锁定了缓存页面,并且将在后台被唤醒和处理。如果缓存元数据未能成功锁定缓存页面,则将被添加到该缓存页面的等待队列中,并且将仅在缓存页面被先前的I/O请求释放之后才被唤醒。
返回参考图7,在730处,第二处理器130在缓存135中,基于用户数据192和缓存元数据194来执行与缓存镜像相关的数据处理。在一些实施例中,该数据处理可以对应于如上文结合图8描述的数据处理阶段815。例如,在执行该数据处理时,第二处理器130可以将保存用户数据192的物理页面520添加到由缓存元数据194指示的缓存页面820中。在其他实施例中,第二处理器130执行的数据处理也可以包括与缓存数据镜像相关联的任何处理,例如确定缓存元数据194所指示的缓存页面,等等。下面结合图10来描述第二处理器130执行与缓存镜像相关的数据处理的示例过程。
图10示出了根据本公开的实施例的接收处理器130对缓存元数据194进行数据处理的示例过程1000的流程图。在下文中,为了便于讨论,将结合图1以存储系统110的第二处理器130实现过程1000为例来讨论过程1000。但是将理解,在其他实施例中,过程1000也可以由存储系统110的第一处理器120来实现,或者由独立于示例环境100的其他电子设备或计算设备来实现。
在1010处,第二处理器130唤醒后台线程来处理缓存元数据。例如,第二处理器130唤醒后台线程来处理待处理缓存元数据队列中的缓存元数据、或等待缓存元数据队列中的缓存元数据。在1020处,第二处理器130处理缓存元数据。在1030处,第二处理器130对缓存元数据进行标记。例如,将已经处理的缓存元数据的处理状态改变为“无效”。此外,第二处理器130还可以准备通过内部通信信道来向第一处理器120发送缓存数据镜像完成的响应消息。例如,第二处理器130可以执行对CMI接口的调用。在1040处,第二处理器130向缓存数据的发送方处理器120发送确认。例如,由第二处理器130调用的CMI接口可以执行向第一处理器120发送该确认消息。
如上文描述的,一旦发送方处理器120发出缓存数据190,第一处理器120就可以向主机140指示写请求被完成。这也意味着,一旦缓存元数据194到达接收方处理器130,用户数据192已经写入到缓存135中。为了保证I/O请求按照到达的先后顺序被依次处理,在第二处理器130处理来自主机140的其他I/O请求之前,第二处理器130先处理已经到达的缓存元数据194。因此,在一些实施例中,第二处理器130响应于从主机140接收到I/O请求,对缓存135中所有尚未预处理的缓存元数据进行预处理。然后,第二处理器130再处理从主机140接收到的该I/O请求。下面结合图11来具体地描述这样的实施例。
图11示出了根据本公开的实施例的接收处理器130执行I/O处理的示例过程1100的流程图。在下文中,为了便于讨论,将结合图1以存储系统110的第二处理器130实现过程1100为例来讨论过程1100。但是将理解,在其他实施例中,过程1100也可以由存储系统110的第一处理器120来实现,或者由独立于示例环境100的其他电子设备或计算设备来实现。
在1110处,第二处理器130从主机140接收到I/O请求。在一些实施例中,该I/O请求可以是写请求,也可以是读请求,或者任何其他类型的I/O请求。在1120处,第二处理器130确定接收缓冲区是否存在未预处理的缓存元数据。如果存在未预处理的缓存元数据,则过程1100前进到1130。反之,如果不存在未预处理的缓存元数据,则过程1100前进到1140。
在1130处,第二处理器130对未预处理的缓存元数据进行预处理。例如,该预处理可以包括上文关于图9描述的处理。在1140处,在所有未预处理的缓存元数据被预处理之后,第二处理器130处理接收到的I/O请求。如果该I/O请求是写请求,则第二处理器130可以根据本公开的实施例的写请求流程来处理该I/O请求。如果该I/O请求是读请求,则第二处理器130可以按照通常的读请求处理流程来处理该I/O请求。
此外,将注意到,在1130处对缓存元数据进行预处理期间,该缓存元数据指示的缓存页面将被锁定。因此,在1140处,如果上述I/O请求是访问相同的缓存页面,则该I/O请求将无法成功地锁定该缓存页面。该I/O请求必须等待,直到成功锁定缓存页面,即等待此前的缓存元数据的后台处理完成。
从示例过程1100可知,第二处理器130在处理I/O请求之前首先对缓存元数据进行预处理,这将是有利的。例如,如上文指出的,传统的双处理器存储系统的I/O请求处理的整个消息处理流程可能需要很长的时间,而通过本公开的实施例,消息处理流程被划分为两个阶段。第一阶段仅需要获取对缓存页面的锁定,这样的处理不需要长时间。更加复杂的数据处理被推送到后台线程。此外,缓存页面在第一阶段的预处理中被锁定,这样的处理确保了对相同缓存页面的I/O请求可以按照I/O请求的到达顺序来进行。
在本公开的一些实施例中,为了保护存储系统的数据完整性,在传统的双处理器存储系统中可以使用持久性存储器来创建接收缓冲区。此外,在处理缓存元数据期间,缓存元数据可以在将物理页面添加到缓存页面之前被保持。在从软件或电源失效恢复期间,仅被保持的缓存元数据需要被恢复,而发送到接收缓冲区的其他缓存元数据不被恢复。在传统的方案中,不恢复接收缓冲区中的缓存元数据是合理的,因为I/O请求响应是在相关的缓存元数据被处理之后才被返回给主机的。
相对照地,在本公开的实施例中,对主机140的写请求响应是在缓存元数据到达接收方处理器的缓存(例如,缓冲区)之后被返回给主机140的。在这种情况下,从接收缓冲区恢复缓存元数据是有必要的。例如,接收缓冲区还是从持久性存储器来创建,并且需要恢复接收缓冲区中所有未经预处理的缓存元数据。因此,缓存元数据的处理状态需要被标记。为了进行缓存元数据的这种恢复,在一些实施例中,第二处理器130可以从第一处理器120接收包括缓存元数据194和恢复信息的缓存元数据消息600,该恢复信息能够用于在故障恢复时恢复缓存元数据消息600。
在标记缓存元数据的处理状态时,响应于对缓存元数据消息600的预处理完成,第二处理器130可以将缓存元数据消息600的处理状态610从初始值“有效”改变为“已预处理”。响应于缓存元数据消息600的数据处理正在执行,第二处理器130可以将处理状态610设置为“处理中”。响应于缓存元数据消息600的数据处理完成,第二处理器130可以将处理状态610设置为“无效”。
在存储系统110从故障中恢复时,第二处理器130可以基于缓存元数据消息600中的恢复信息来恢复缓存元数据消息600。例如,第二处理器130可以基于缓存元数据消息600的处理状态610来确定缓存元数据消息600需要被恢复。又例如,第二处理器130可以基于缓存元数据消息600的发送序列号620来确定缓存元数据消息600与被恢复的另外的缓存元数据消息的先后顺序。再例如,第二处理器130可以基于缓存元数据消息600的校验和630来校验缓存元数据消息600的完整性。下面结合图12来描述恢复缓存元数据消息600的示例过程。
图12示出了根据本公开的实施例的恢复缓存元数据消息600的示例过程1200的流程图。在一些实施例中,过程1200可以由示例环境100中的存储系统110来实现,例如可以由存储系统110的处理器(诸如第二处理器130)或处理单元来实现,或者由存储系统110的各种功能模块来实现。在下文中,为了便于讨论,将结合图1以存储系统110的第二处理器130实现过程1200为例来讨论过程1200。但是将理解,在其他实施例中,过程1200也可以由存储系统110的第一处理器120来实现,或者由独立于示例环境100的其他电子设备或计算设备来实现。
在1210处,第二处理器130遍历接收缓冲区530(例如,环形缓冲器),根据多个缓存元数据消息各自的处理状态和序列号来找出环形缓冲器的头部和尾部。在一些实施例中,如上文指出的,仅需要恢复处理状态不是“无效”的缓存元数据消息。在这些缓存元数据消息中,位于环形缓冲器530尾部的缓存元数据消息具有最小的序列号,而位于环形缓冲器530头部的缓存元数据消息具有最大的序列号。
在1220处,第二处理器130从环形缓冲器530尾部开始到头部对需要恢复的缓存元数据消息执行预处理。例如,尝试锁定缓存元数据消息指示的缓存页面,将缓存元数据消息添加到缓存元数据消息队列中,等等。在一些实施例中,在恢复缓存元数据消息之前,可以先验证缓存元数据消息的校验和。如果校验和不匹配,则表示缓存元数据消息为不完整传送的消息,并且因此可以丢弃。
在1230处,第二处理器130对缓存元数据消息队列中的缓存元数据消息进行数据处理。例如,该数据处理可以包括上文关于图10的框1020-1040描述的处理。
图13示出了根据本公开的实施例的存储系统110处理写请求的示例过程1300的时序图。在下文中,为了便于讨论,将结合图1以存储系统110的第一处理器120为本端处理器且第二处理器130为对端处理器为例来讨论过程1300。但是将理解,在其他实施例中,本端处理器也可以是第一处理器120或存储系统110的任何其他处理器,而对端处理器也可以是第二处理器130或存储系统110的任何其他处理器。
如图13所示,主机140向第一处理器120发出1302写请求。然后,第一处理器120确定本端缓存125中是否存在未预处理的缓存元数据。如果存在,则本端缓存125预处理1304这些缓存元数据。然后,本端缓存125将写请求的用户数据写入1306到本端物理页面。接着,本端缓存125向本端CMI 1305提供1308用户数据和缓存元数据。然后,本端CMI 1305启动1310缓存数据的镜像。接着,本端CMI 1305发送1312(例如,通过直接存储器访问DMA)用户数据到对端CMI 1315。此外,本端CMI 1305发送1314缓存元数据到对端CMI 1315。此后,本端CMI 1305接着向本端缓存125通知1316缓存数据的镜像完成。响应于此,本端缓存125将用户数据所在的物理页面添加1318到缓存元数据指示的缓存页面中。接着,本端缓存125向主机140发送1320写请求响应。
另一方面,对端CMI 1315向对端缓存135通知1322接收到缓存数据。响应于此,对端缓存135对缓存元数据执行1324数据处理,而将镜像的用户数据添加到缓存页面中。此后,对端缓存135向对端CMI 1315通知1326缓存数据已经处理完成。然后,对端CMI 1315向本端CMI 1305返回确认消息。根据示例过程1300的处理时序,可以得出根据本公开的实施例的示例方案处理写请求的时延组成。下文结合图14来详细描述。
图14示出了根据本公开的实施例的存储系统110处理写请求的时延组成1400的示意图。如图14所示,不同于图3示出的传统存储系统处理写请求的时延组成300,时延组成1400仅包括四个部分,即主机数据传送310、本端处理器处理320、缓存数据镜像330、以及向主机发送响应360。换言之,时延组成1400不再包括对端处理器处理340和消息确认350。因此,相比于传统的写请求处理流程,本公开的实施例减小了I/O处理路径上由于缓存数据的镜像导致的时延,缩短了主机I/O处理路径,并且降低了I/O响应延迟。
此外,根据公式IOPS(每秒的输入输出操作次数)=队列深度/响应时间,在相同的队列深度的情况下,较少的响应时间带来了较高的IOPS。这意味着,较少的响应时间给存储系统带来了较高的性能。在恒定IOPS的情况下,较少的响应时间导致较浅的队列深度。这意味着达到相同的性能仅需要较少的资源。另外,对于存储系统内部的写请求而言,消除了前端数据传送。因此,本公开的实施例还显著改善了内部写请求性能。
图15示意性地示出了一种可以被用来实施本公开的实施例的设备1500的框图。如图15中所示出的,设备1500包括中央处理单元(CPU)1501,其可以根据存储在只读存储设备(ROM)1502中的计算机程序指令或者从存储单元1508加载到随机访问存储设备(RAM)1503中的计算机程序指令,来执行各种适当的动作和处理。在RAM 1503中,还可存储设备1500操作所需的各种程序和数据。CPU 1501、ROM 1502以及RAM 1503通过总线1504彼此相连。输入/输出(I/O)接口1505也连接至总线1504。
设备1500中的多个部件连接至I/O接口1505,包括:输入单元1506,例如键盘、鼠标等;输出单元1507,例如各种类型的显示器、扬声器等;存储单元1508,例如磁盘、光盘等;以及通信单元1509,例如网卡、调制解调器、无线通信收发机等。通信单元1509允许设备1500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法400或700可由处理单元1501来执行。例如,在一些实施例中,方法400或700可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1508。在一些实施例中,计算机程序的部分或者全部可以经由ROM1502和/或通信单元1509而被载入和/或安装到设备1500上。当计算机程序被加载到RAM1503并由CPU 1501执行时,可以执行上文描述的方法400或方法700的一个或多个步骤。
如本文所使用的,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。本文还可能包括其他明确的和隐含的定义。
如本文所使用的,术语“确定”涵盖各种各样的动作。例如,“确定”可以包括运算、计算、处理、导出、调查、查找(例如,在表格、数据库或另一数据结构中查找)、查明等。此外,“确定”可以包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)等。此外,“确定”可以包括解析、选择、选取、建立等。
应当注意,本公开的实施例可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。
此外,尽管在附图中以特定顺序描述了本公开的方法的操作,但是这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤组合为一个步骤执行,和/或将一个步骤分解为多个步骤执行。还应当注意,根据本公开的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
虽然已经参考若干具体实施例描述了本公开,但是应当理解,本公开不限于所公开的具体实施例。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等效布置。
Claims (22)
1.一种存储管理的方法,包括:
响应于在存储系统的第一处理器处从主机接收到向所述存储系统写入用户数据的写请求,
将所述用户数据缓存在所述第一处理器的第一缓存中,
在所述第一缓存中生成缓存元数据,所述缓存元数据包括与将所述用户数据写入到所述存储系统相关联的信息;
将所述用户数据和所述缓存元数据发送到所述存储系统的第二处理器的第二缓存,用于所述第二处理器在所述第二缓存中执行与缓存镜像相关的数据处理;以及
向所述主机发送所述写请求被完成的指示而不等待所述第二处理器完成所述数据处理,
其中所述数据处理包括将所述缓存元数据从所述第二缓存的接收缓冲区移动到所述主机可访问的缓存元数据队列中。
2.根据权利要求1所述的方法,其中将所述用户数据和所述缓存元数据发送到所述第二缓存包括:
将所述用户数据从所述第一缓存的第一物理页面传送到所述第二缓存的第二物理页面;以及
将所述缓存元数据传送到所述第二缓存的接收缓冲区。
3.根据权利要求2所述的方法,其中将所述缓存元数据传送到所述接收缓冲区包括:
将所述缓存元数据和恢复信息封装在缓存元数据消息中,所述恢复信息能够用于在故障恢复时恢复所述缓存元数据消息;以及
将所述缓存元数据消息发送到所述接收缓冲区。
4.根据权利要求3所述的方法,其中所述恢复信息包括以下至少一项:所述缓存元数据消息的处理状态、发送序列号和校验和。
5.根据权利要求4所述的方法,进一步包括:
将所述处理状态设置为“有效”,以指示所述缓存元数据消息尚未由所述第二处理器处理。
6.一种存储管理的方法,包括:
在存储系统的第二处理器处从所述存储系统的第一处理器的第一缓存接收用户数据和缓存元数据,所述缓存元数据包括与将所述用户数据写入所述存储系统相关联的信息;
对所述缓存元数据进行预处理,使得所述用户数据通过所述第二处理器对主机是可访问的;以及
在所述第二处理器的第二缓存中,基于所述用户数据和所述缓存元数据来执行与缓存镜像相关的数据处理,
其中所述对所述缓存元数据进行预处理包括:
将所述缓存元数据从所述第二缓存的接收缓冲区移动到所述主机可访问的缓存元数据队列中。
7.根据权利要求6所述的方法,其中接收所述用户数据和所述缓存元数据包括:
将所述用户数据从所述第一缓存的第一物理页面传送到所述第二缓存的第二物理页面;以及
将所述缓存元数据缓冲到所述接收缓冲区。
8.根据权利要求6所述的方法,其中将所述缓存元数据移动到所述缓存元数据队列中包括:
响应于成功锁定由所述缓存元数据指示的缓存页面,将所述缓存元数据移动到待处理缓存元数据队列中,以等待由所述第二处理器进行处理;以及
响应于未能锁定所述缓存页面,将所述缓存元数据移动到等待缓存元数据队列中,以等待所述第二处理器针对所述缓存元数据锁定所述缓存页面。
9.根据权利要求6所述的方法,其中执行所述数据处理包括:
将保存所述用户数据的物理页面添加到由所述缓存元数据指示的缓存页面中。
10.根据权利要求6所述的方法,其中执行所述数据处理包括:
唤醒后台线程来执行所述数据处理。
11.根据权利要求6所述的方法,进一步包括:
响应于从所述主机接收到I/O请求,对所述第二缓存中所有尚未预处理的缓存元数据进行所述预处理;以及
处理所述I/O请求。
12.根据权利要求6所述的方法,其中接收缓存元数据包括:
接收包括所述缓存元数据和恢复信息的缓存元数据消息,所述恢复信息能够用于在故障恢复时恢复所述缓存元数据消息。
13.根据权利要求12所述的方法,其中所述恢复信息包括以下至少一项:所述缓存元数据消息的处理状态、发送序列号和校验和。
14.根据权利要求13所述的方法,进一步包括以下至少一项:
响应于所述预处理完成,将所述处理状态从初始值“有效”改变为“已预处理”;
响应于所述数据处理正在执行,将所述处理状态设置为“处理中”;以及
响应于所述数据处理完成,将所述处理状态设置为“无效”。
15.根据权利要求12所述的方法,进一步包括:
响应于所述存储系统从故障中恢复,基于所述恢复信息来恢复所述缓存元数据消息。
16.根据权利要求15所述的方法,其中恢复所述缓存元数据消息包括以下至少一项:
基于处理状态来确定所述缓存元数据消息需要被恢复;
基于发送序列号,确定所述缓存元数据消息与被恢复的另外的缓存元数据消息的先后顺序;以及
基于校验和来校验所述缓存元数据消息的完整性。
17.一种电子设备,包括:
至少两个处理器;以及
存储有计算机程序指令的至少一个存储器,所述至少一个存储器和所述计算机程序指令被配置为,与所述至少两个处理器一起,使得所述电子设备:
响应于在第一处理器处从主机接收到向存储系统写入用户数据的写请求,
将所述用户数据缓存在所述第一处理器的第一缓存中,
在所述第一缓存中生成缓存元数据,所述缓存元数据包括与将所述用户数据写入到所述存储系统相关联的信息;
将所述用户数据和所述缓存元数据发送到第二处理器的第二缓存,用于所述第二处理器在所述第二缓存中执行与缓存镜像相关的数据处理;以及
向所述主机发送所述写请求被完成的指示而不等待所述第二处理器完成所述数据处理,
其中所述数据处理包括将所述缓存元数据从所述第二缓存的接收缓冲区移动到所述主机可访问的缓存元数据队列中。
18.根据权利要求17所述的电子设备,其中所述至少一个存储器和所述计算机程序指令进一步被配置为,与所述至少两个处理器一起,使得所述电子设备执行根据权利要求2-5中任一项所述的方法。
19.一种电子设备,包括:
至少两个处理器;以及
存储有计算机程序指令的至少一个存储器,所述至少一个存储器和所述计算机程序指令被配置为,与所述至少两个处理器一起,使得所述电子设备:
在第二处理器处从第一处理器的第一缓存接收用户数据和缓存元数据,所述缓存元数据包括与将所述用户数据写入存储系统相关联的信息;
对所述缓存元数据进行预处理,使得所述用户数据通过所述第二处理器对主机是可访问的;以及
在所述第二处理器的第二缓存中,基于所述用户数据和所述缓存元数据来执行与缓存镜像相关的数据处理,
其中使得所述电子设备对所述缓存元数据进行预处理的所述计算机程序指令包括使得所述电子设备执行以下的指令:
将所述缓存元数据从所述第二缓存的接收缓冲区移动到所述主机可访问的缓存元数据队列中。
20.根据权利要求19所述的电子设备,其中所述至少一个存储器和所述计算机程序指令进一步被配置为,与所述至少两个处理器一起,使得所述电子设备执行根据权利要求7-16中任一项所述的方法。
21.一种存储机器可执行指令的非易失性计算机可读介质,所述机器可执行指令在被执行时使机器执行根据权利要求1-5中任一项所述的方法的步骤。
22.一种存储机器可执行指令的非易失性计算机可读介质,所述机器可执行指令在被执行时使机器执行根据权利要求6-16中任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811290049.XA CN111124993B (zh) | 2018-10-31 | 2018-10-31 | 减小i/o处理时缓存数据镜像时延的方法、设备和程序产品 |
US16/575,466 US11385796B2 (en) | 2018-10-31 | 2019-09-19 | Method, device, and program product for reducing delay in I/O processing due to mirroring of cache data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811290049.XA CN111124993B (zh) | 2018-10-31 | 2018-10-31 | 减小i/o处理时缓存数据镜像时延的方法、设备和程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111124993A CN111124993A (zh) | 2020-05-08 |
CN111124993B true CN111124993B (zh) | 2023-09-01 |
Family
ID=70327103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811290049.XA Active CN111124993B (zh) | 2018-10-31 | 2018-10-31 | 减小i/o处理时缓存数据镜像时延的方法、设备和程序产品 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11385796B2 (zh) |
CN (1) | CN111124993B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124255B (zh) * | 2018-10-31 | 2023-09-08 | 伊姆西Ip控股有限责任公司 | 数据存储方法、电子设备和计算机程序产品 |
CN114626541A (zh) * | 2020-12-11 | 2022-06-14 | 上海阵量智能科技有限公司 | 命令下发方法、装置、处理设备、计算机设备及存储介质 |
CN112988680B (zh) * | 2021-03-30 | 2022-09-27 | 联想凌拓科技有限公司 | 数据加速方法、缓存单元、电子设备及存储介质 |
US11650920B1 (en) * | 2021-10-27 | 2023-05-16 | Dell Products L.P. | Write cache management |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107800689A (zh) * | 2017-09-28 | 2018-03-13 | 北京奇安信科技有限公司 | 一种网站可用性保障处理方法及装置 |
CN108388524A (zh) * | 2016-12-21 | 2018-08-10 | 伊姆西Ip控股有限责任公司 | 用于缓存数据的方法和设备 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7447834B2 (en) | 2005-06-29 | 2008-11-04 | Emc Corproation | Managing serial attached small computer systems interface communications |
US7447833B2 (en) | 2005-06-29 | 2008-11-04 | Emc Corporation | Techniques for providing communications in a data storage system using a single IC for both storage device communications and peer-to-peer communications |
US7523260B2 (en) * | 2005-12-22 | 2009-04-21 | International Business Machines Corporation | Propagating data using mirrored lock caches |
US8194547B1 (en) | 2006-08-07 | 2012-06-05 | Emc Corporation | Configuring flow control settings |
JP2008225558A (ja) * | 2007-03-08 | 2008-09-25 | Fujitsu Ltd | データ中継集積回路、データ中継装置およびデータ中継方法 |
US9817607B1 (en) | 2014-06-20 | 2017-11-14 | EMC IP Holding Company LLC | Optimizations to avoid intersocket links |
US9785575B2 (en) * | 2014-12-30 | 2017-10-10 | International Business Machines Corporation | Optimizing thin provisioning in a data storage system through selective use of multiple grain sizes |
US9836404B2 (en) * | 2015-08-14 | 2017-12-05 | Netapp, Inc. | Write mirroring to storage class memory devices |
US9910753B1 (en) | 2015-12-18 | 2018-03-06 | EMC IP Holding Company LLC | Switchless fabric based atomics via partial-proxy |
US10146696B1 (en) | 2016-09-30 | 2018-12-04 | EMC IP Holding Company LLC | Data storage system with cluster virtual memory on non-cache-coherent cluster interconnect |
US10372345B1 (en) | 2017-04-27 | 2019-08-06 | EMC IP Holding Company LLC | High performance logical device |
CN109213702B (zh) | 2017-06-30 | 2022-08-30 | 伊姆西Ip控股有限责任公司 | 虚拟机环境中的虚拟双控制模块之间的通信 |
US10810123B1 (en) | 2017-10-25 | 2020-10-20 | EMC IP Holding Company, LLC | Flush strategy for using DRAM as cache media system and method |
US10521137B1 (en) | 2017-10-31 | 2019-12-31 | EMC IP Holding Company LLC | Storage device array integration of dual-port NVMe device with DRAM cache and hostside portion of software stack system and method |
US11074113B1 (en) | 2020-05-21 | 2021-07-27 | EMC IP Holding Company LLC | Method and apparatus for performing atomic operations on local cache slots of a shared global memory |
-
2018
- 2018-10-31 CN CN201811290049.XA patent/CN111124993B/zh active Active
-
2019
- 2019-09-19 US US16/575,466 patent/US11385796B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108388524A (zh) * | 2016-12-21 | 2018-08-10 | 伊姆西Ip控股有限责任公司 | 用于缓存数据的方法和设备 |
CN107800689A (zh) * | 2017-09-28 | 2018-03-13 | 北京奇安信科技有限公司 | 一种网站可用性保障处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US11385796B2 (en) | 2022-07-12 |
US20200133507A1 (en) | 2020-04-30 |
CN111124993A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111124993B (zh) | 减小i/o处理时缓存数据镜像时延的方法、设备和程序产品 | |
US10778767B2 (en) | Persistent memory replication in RDMA-capable networks | |
US8868492B2 (en) | Method for maximizing throughput and minimizing transactions response times on the primary system in the presence of a zero data loss standby replica | |
CN107122379B (zh) | 收集与本地存储的数据文件相关联的事务数据 | |
US20070162639A1 (en) | TCP-offload-engine based zero-copy sockets | |
CN112597251B (zh) | 数据库集群日志同步方法、装置、服务器及存储介质 | |
US10831741B2 (en) | Log-shipping data replication with early log record fetching | |
CN108989432B (zh) | 用户态的文件发送方法、文件接收方法和文件收发装置 | |
US20090037422A1 (en) | Combining capture and apply in a distributed information sharing system | |
CN1288544A (zh) | 信源同步及公共时钟协议中的数据传输 | |
KR20140106588A (ko) | 공유 볼륨의 어플리케이션 일관된 스냅샷 기법 | |
WO2015191048A1 (en) | Replicating data using remote direct memory access (rdma) | |
EP3159803A1 (en) | Data storage method and network interface card | |
US20060168306A1 (en) | RECOVERY FROM iSCSI CORRUPTION WITH RDMA ATP MECHANISM | |
CN111124255A (zh) | 数据存储方法、电子设备和计算机程序产品 | |
US20050114562A1 (en) | Method, system, and program for throttling data transfer | |
US10229084B2 (en) | Synchronous input / output hardware acknowledgement of write completions | |
US10068000B2 (en) | Synchronous input/output replication of data in a persistent storage control unit | |
US10387274B2 (en) | Tail of logs in persistent main memory | |
WO2017147794A1 (zh) | 差异数据备份的方法和设备 | |
US9965538B2 (en) | Early thread return with secondary event writes | |
CN110121874B (zh) | 一种存储器数据替换方法、服务器节点和数据存储系统 | |
WO2013062330A1 (en) | Secure error detection and synchronous data tagging for high-speed data transfer | |
CN111427815A (zh) | 一种基于spi接口的核间通讯方法、终端及存储介质 | |
US10083067B1 (en) | Thread management in a storage system |
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 |