CN111124255B - 数据存储方法、电子设备和计算机程序产品 - Google Patents
数据存储方法、电子设备和计算机程序产品 Download PDFInfo
- Publication number
- CN111124255B CN111124255B CN201811286058.1A CN201811286058A CN111124255B CN 111124255 B CN111124255 B CN 111124255B CN 201811286058 A CN201811286058 A CN 201811286058A CN 111124255 B CN111124255 B CN 111124255B
- Authority
- CN
- China
- Prior art keywords
- data
- metadata
- processor
- cache
- page
- 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
-
- 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
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0871—Allocation or management of cache space
-
- 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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/0658—Controller construction 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of 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/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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
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)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例提供了数据存储方法、电子设备和计算机程序产品。该方法包括将元数据写入第一处理器的第一缓存,元数据指示存储资源向用户数据的分配。该方法还包括确定元数据在第一缓存中的地址范围。该方法进一步包括仅将第一缓存中在地址范围中存储的数据复制到第二处理器的第二缓存。利用本公开的实施例,减少了两个处理器之间的数据传输量,有利于提高存储系统的整体性能。
Description
技术领域
本公开的实施例涉及数据存储领域,并且更具体地,涉及数据存储方法、电子设备和计算机程序产品。
背景技术
在常见的存储设备中,通常会利用多个存储处理器(SP,又称为控制器)附接共享存储盘的系统架构来提高存储产品的计算能力和输入输出(IO)吞吐率。多个存储处理器通过内部通信接口而被连接,并且利用该内部通信接口进行数据同步或镜像。通常以数据块(例如,缓存页面)为粒度进行不同存储处理器之间的数据同步或镜像。
当接收到来自上层的用户数据时,存储处理器也需要更新其自身缓存的元数据,并且将所更新的元数据以例如缓存页面为粒度同步或镜像到另一存储处理器(即,对端存储处理器)。即使当缓存页面中仅有很少部分的数据被更新时,也需要将整个缓存页面的数据发送给对端存储处理器。这就浪费了存储处理器之间的通信资源,成为存储系统性能提升的瓶颈。
发明内容
本公开的实施例提供了一种数据存储方案。
在本公开的第一方面中,提供了一种数据存储方法。该方法包括将元数据写入第一处理器的第一缓存,元数据指示存储资源向用户数据的分配。该方法还包括确定元数据在第一缓存中的地址范围。该方法还包括仅将第一缓存中在地址范围中存储的数据复制到第二处理器的第二缓存。
在本公开的第二方面中,提供了一种数据存储方法。该方法包括从第一处理器接收在第一处理器的第一缓存中存储的数据,所接收的数据被存储在被写入第一缓存的元数据的地址范围内,元数据指示存储资源向用户数据的分配。该方法还包括基于元数据的地址范围,确定所接收的数据在第二处理器的第二缓存中的地址范围。该方法还包括将所接收的数据写入第二缓存。
在本公开的第三方面中,提供了一种电子设备。该电子设备包括处理器以及与处理器耦合的存储器,存储器具有存储于其中的指令,指令在被处理器执行时使设备执行动作。动作包括将元数据写入第一处理器的第一缓存,元数据指示存储资源向用户数据的分配。动作还包括确定元数据在第一缓存中的地址范围。动作还包括仅将第一缓存中在地址范围中存储的数据复制到第二处理器的第二缓存。
在本公开的第四方面中,提供了一种电子设备。该电子设备包括处理器以及与处理器耦合的存储器,存储器具有存储于其中的指令,指令在被处理器执行时使设备执行动作。动作包括从第一处理器接收在第一处理器的第一缓存中存储的数据,所接收的数据被存储在被写入第一缓存的元数据的地址范围内,元数据指示存储资源向用户数据的分配。动作还包括基于元数据的地址范围,确定所接收的数据在第二处理器的第二缓存中的地址范围。动作还包括将所接收的数据写入第二缓存。
在本公开的第五方面中,提供了一种计算机程序产品,计算机程序产品被有形地存储在计算机可读介质上并且包括机器可执行指令,机器可执行指令在被执行时使机器执行根据第一方面的方法。
在本公开的第六方面中,提供了一种计算机程序产品,计算机程序产品被有形地存储在计算机可读介质上并且包括机器可执行指令,机器可执行指令在被执行时使机器执行根据第二方面的方法。
提供发明内容部分是为了简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。在附图中:
图1示出了本公开的实施例可以在其中被实现的示例环境的示意图;
图2示出了根据本公开的一些实施例的镜像元数据的过程的流程图;
图3A示出了根据本公开的一些实施例的在第一缓存中连续写入的元数据的示意图;
图3B示出了根据本公开的另一些实施例的在第一缓存中不连续写入的元数据的示意图;
图4示出了根据本公开的一些实施例的事务(transactional)写入的示意图;
图5示出了根据本公开的一些实施例的页面信息列表的示意图;
图6示出了根据本公开的一些实施例的将元数据写入第一缓存的过程的示意图;
图7示出了根据本公开的一些实施例的复制数据的示意图;
图8示出了根据本公开的另一些实施例的复制数据的示意图;
图9示出了根据本公开的一些实施例的镜像元数据的过程的流程图;以及
图10示出了可以用来实施本公开的实施例的示例设备的框图。
具体实施方式
下面将参考附图中示出的若干示例实施例来描述本公开的原理。虽然附图中显示了本公开的优选实施例,但应当理解,描述这些实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
图1示出了本公开的实施例可以在其中被实现的示例环境100的示意图。如图1所示的双控制器存储系统101可以通过前端总线(未示出)与其上运行有应用软件的主机进行通信,以向主机(未示出)提供数据存储服务。主机可以通过前端总线来向存储系统101发出写请求102。
如图1所示,双控制器存储系统101包括为主机提供存储服务的两个存储处理器110和120,其又可以被称为控制器。在下文中,为了便于讨论,将两个存储控制器分别称为第一处理器110和第二处理器120。第一处理器110和第二处理器120通过内部通信接口130(例如,通信管理器接口CMI)而连接。通过内部通信接口130,第一处理器110和第二处理器120可以相互同步数据和内部状态。
在后端,存储盘151-153通过后端总线140而连接到这两个处理器110和120。存储盘151-153可以是任何目前已知或者将来开发的非易失性存储介质,例如磁盘、固态盘(SSD)或磁盘阵列等等。应当理解,尽管图1中示出了三个存储盘151-153,但这仅仅是示意性的而无意限制本公开的范围并且存储系统101可以包括任意适当数目的存储盘。
存储系统软件在处理器110和120中的每一个上运行。在处理器110和120中的每一个中存在几种不同的功能模块在存储系统中提供不同的存储服务。在图1中示出了第一处理器110中的第一存储管理模块111和第一缓存112。第一存储管理模块111可以用于提供和管理用户逻辑单元号(LUN)并且管理与用户数据相关的元数据。第一缓存112可以用于为存储系统101提供数据缓存服务。数据可以被临时存储在第一缓存112中并将在以后被冲刷到后端的存储盘151-153上。
第二处理器120中的第二管理模块121和第二缓存122分别与第一管理模块111和第一缓存112相似。第一缓存112和第二缓存122中缓存的数据可以通过内部通信接口130而在两个处理器110与120之间被镜像。在本公开的实施例中,第一缓存112和第二缓存122可以包括动态随机存取存储器缓存(DRAM cache)。应当指出的是,在本文中的第一缓存112和第二缓存122可以包括用于临时存储数据的存储器和用于管理存储器的功能模块两者。
除了图1中所示的存储管理模块和缓存之外,处理器110和120还可以包括其他模块,例如用于与主机接口的主机模块、用于提供独立冗余磁盘阵列(RAID)接口的RAID模块、以及用于驱动存储盘151-153的驱动模块等。在本文中,对于存储管理模块111和121以及缓存112和122而言,主机模块为上层模块,并且RAID模块和驱动模块为底层模块。处理器110和120中的这些模块可以通过内部通信接口130而与对端处理器(第一处理器110和第二处理器120互为对端处理器)上的相同模块通信。
如前文所提及的,当主机要将用户数据写入存储系统101时,可以向存储系统101发出写请求102。然后,在存储系统101上的主机模块接收到该写请求102之后,它将该写请求102转发给存储系统101中的底层模块,例如转发给第一存储管理模块111。
在第一存储管理模块111处理写请求期间,它可以更新其元数据,并且这样的操作将产生针对第一缓存112的内部写请求。因此,第一存储管理模块111将向第一缓存112发出元数据写请求和用户数据写请求。
传统上,缓存以数据块(例如,缓存页面)为粒度向上层的存储管理模块提供接口。在存储管理模块将数据写入缓存之后,缓存将包括内部元数据和用户数据的写入数据镜像到对端处理器的缓存。在将写入数据镜像到对端处理器之后,缓存将通知存储管理模块写入已完成。此时,写入的数据被存储在缓存模块中,并且根据冲刷策略,数据将在适当的时间冲刷到后端的存储盘。
然而,在这种传统实现中,即使当缓存页面中仅有少部分的数据(元数据)被修改时,也需要将整个缓存页面中存储的数据镜像到对端处理器。当通过内部通信接口来镜像所缓存的数据时,数据都通过直接存储器访问(DMA)操作而被传输到对端处理器的缓存。
这样的方式浪费了大量的内部通信资源。在诸多存储系统中,内部通信接口(诸如CMI)是性能瓶颈。如果可以通过元数据镜像的优化来减轻内部通信接口的工作负载,则内部通信接口将具有更多镜像用户数据的能力,从而改善系统性能。
根据本公开的实施例,提供了一种镜像元数据的方案。在该方案中,处理器在将元数据写入缓存时标记所写入的元数据在缓存中的地址范围,并且将在该地址范围内存储的数据复制到对端处理器,而不是将包括所写入的元数据的整个缓存页面复制到对端处理器。通过这样的方式,减少了在元数据镜像过程中所使用的内部通信资源,从而有助于改善存储系统的性能。
以下将参考附图来详细描述本公开的实施例。图2示出了根据本公开的一些实施例的镜像元数据的过程200的流程图。过程200可以由存储系统的存储处理器/控制器来实现,特别可以由存储处理器中的存储管理模块和缓存模块来实现。为便于讨论,结合图1来描述过程200。在这样的示例中,过程200可以被实现在第一处理器110处,并且过程200的一些步骤可以由第一存储管理模块111执行,而另一些步骤可以由第一缓存112执行。
如前文所提及的,当第一处理器110接收到用户数据时,其需要更新自身存储的对应元数据。第一缓存112将为要写入或更改的元数据分配或找出已经分配的缓存空间。例如,第一存储管理模块111将向第一缓存112发出写请求(例如,数据复制避免DCA写请求)。第一缓存112将从缓存池中找出对应的缓存空间(例如,缓存页面),并将关于该缓存空间的信息发送给第一存储管理模块111。
在框210,第一存储管理模块111将元数据写入第一处理器110的第一缓存112中。元数据可以用于指示存储资源(例如,存储盘151-153中的资源)对所接收的用户数据的分配。例如,元数据可以指示存储盘151-153的磁盘切片(slice)被分配给哪个用户逻辑单元号等。
第一存储管理模块111可以将元数据写入第一缓存112的缓存页面(在本文中又简称为页面)中。在一些实施例中,可以通过将两个物理页面用作一个事务页面来实现事务写入。下文将参考图4-图6来详细描述事务写入。
在缓存页面(或事务页面)为无效页面的情况下,缓存页面中没有旧的元数据,第一存储管理模块111将填满整个页面。在缓存页面(或事务页面)为脏页面或干净页面的情形下,缓存页面中存在旧的元数据,第一存储管理模块111仅需要更改缓存页面的一部分中存储的数据。
在框220,第一存储管理模块111确定所写入的元数据在第一缓存112中的地址范围。例如,可以使用元数据在缓存页面中相对于页面地址的偏移来指示元数据的地址范围。
元数据可以被连续或不连续地写入在第一缓存112中。图3A示出了根据本公开的一些实施例的在第一缓存112中连续写入的元数据的示意图301。如图3A所示,元数据被连续地写入在第一缓存112的页面310中。在这种情况下,元数据在第一缓存112中的地址范围313由元数据的起始地址311和结束地址312限定。起始地址311和结束地址312可以是第一缓存112中的物理地址,也可以是相对于页面310的地址的偏移。
图3B示出了根据本公开的另一些实施例的在第一缓存112中不连续写入的元数据的示意图302。如图3B所示,元数据被不连续地写入在第一缓存112的页面320中。在这种情况下,元数据在第一缓存112中的地址范围323由更靠近页面320的开始的起始地址321和更靠近页面320的末端的结束地址322限定。类似地,起始地址321和结束地址322可以是第一缓存112中的物理地址,也可以是相对于页面320的地址的偏移。
第一存储管理模块111可以标记(tag)第一缓存112中包括元数据的部分。例如,第一存储管理模块111可以标记地址范围313或323,并将地址范围313或323通知给第一缓存112。
在框230,第一处理器110仅将第一缓存112中在地址范围(例如,地址范围313或323)中存储的数据复制到第二处理器120的第二缓存122。框230处的动作可以由第一缓存112执行,例如,基于第一存储管理模块111所标记的地址范围313或323来执行。在一些实施例中,第一处理器110可以基于所要复制的数据的大小来镜像数据。下文将结合图7和图8来详细描述这样的实施例。
在如图3A所示的示例中,元数据被连续在存储在第一缓存112中,具体地,被存储在页面310中。在这种示例中,被复制到第二缓存122的数据仅包括在框210写入的元数据。在如图3B所示的示例中,元数据被不连续地存储在第一缓存112中,具体地被存储在页面320中。在这种示例中,被复制到第二缓存122的数据包括在框210写入的元数据和地址范围323中存储的不同于元数据的其他数据。
在本公开的实施例中,当处理内部缓存写请求(元数据的写入)时,仅将发出元数据改变的地址范围内的数据镜像到对端处理器,而不是将例如整个缓存页面镜像到对端处理器。以这样的方式,减少了两个处理器之间的数据传输量,从而减少了传输时间和写请求的响应时间并且提高了输入/输出(IO)性能。此外,数据传输量的减少也降低了双控制器存储系统中内部通信接口(诸如,CMI)的传输工作量。因此,可以使用相同的内部通信接口容量来镜像更多的用户数据,从而提高存储系统的整体性能。
如上文所提及的,在一些实施例中,可以支持事务写入以避免数据因不完整写入而损坏。事务写入意味着在将数据(例如,元数据)写入缓存页面时,要么所有数据均成功写入,要么所有数据均未被写入;数据的部分成功写入是不允许的。
图4示出了根据本公开的一些实施例的事务写入的示意图400。为了实现元数据的事务写入,在此引入事务页面的概念。如图4所示,对一个事务页面430而言存在两个物理页面410和420,其中一个是目标页面410(也可以被称为原始页面),另一个是辅助页面420(也可以被称为当前页面)。目标页面410包括与要写入的元数据相关联的历史元数据。例如,如果要写入的元数据指示某一磁盘切片的分配,则历史元数据指示的是该磁盘切片先前的分配。辅助页面420被分配与目标页面410相关联以用于修改目标页面410中存储的数据。
第一处理器110可以确定第一缓存112中的目标页面410和辅助页面420并且将元数据写入辅助页面420中。例如,目标页面410可以由第一缓存112基于从第一存储管理模块111接收的内部写请求而确定,而辅助页面420可以由第一缓存112动态地分配。第一缓存112可以将与目标页面410和辅助页面420有关的信息指示给第一存储管理模块111,以使得第一存储管理模块111可以将元数据写入第一缓存112中。
图5示出了根据本公开的一些实施例的页面信息列表510的示意图500。在上文提及的传统方案中,缓存向存储管理模块提供页面信息列表(又可以成为分散/聚集列表)仅包括两个元素,即,要写入的页面的地址和长度。与之相比,根据本公开的一些实施例的页面信息列表510被扩展。在列表510中,元素501-503可以分别指示目标页面410的状态、地址、长度,而元素504可以指示辅助页面420的地址。目标页面410的状态可以不同的预定义值来指示目标页面410是无效页面、脏页面或干净页面等(参见上文)。应当理解,辅助页面420与目标页面410具有相同的长度,因此无需指示辅助页面420的长度。列表510中的元素501-504可以由第一缓存112填充,并且发送给第一存储管理模块111。
继续参考图4。第一存储管理模块111在接收到列表510之后,可以确定目标页面410和辅助页面420,并且将改变的元数据写入辅助页面420。第一存储管理模块111或第一缓存112还可以将未改变的数据从目标页面410复制到辅助页面420中。
在成功写入并将改变的数据镜像到第二处理器120之后,两个物理页面交换,也就是说,物理页面420变为与事务页面430相关联的目标页面,而物理页面410变为与事务页面430相关联的辅助页面。应当理解,由于辅助页面时动态分配的,在交换之后,物理页面410也可以用作其他事务页面的辅助页面。当需要修改页面420中的数据时,可以为其分配其他物理页面作为辅助页面。
当元数据写入失败时,可以放弃辅助页面420中已经写入的数据以进行回滚(rollback)。如果在一次写入操作中写入多个缓存页面,则在将所有元数据写入所有的辅助页面后,实现辅助页面与目标页面的交换。
第一处理器110还可以基于所要写入的元数据指示的存储资源来将元数据写入第一缓存112中。图6示出了根据本公开的一些实施例的将元数据写入第一缓存112的过程600的示意图。为便于讨论,结合图1、图5来描述过程600。在这样的示例中,过程600可以被实现在第一处理器110处,并且过程600的一些步骤可以由第一存储管理模块111执行,而另一些步骤可以由第一缓存112执行。过程600可以视为图2中的框210的具体实现。
在框610,第一处理器110确定第一缓存112中的目标页面410和辅助页面420,如上文结合图4和图5所描述的那样。在框620,第一处理器110确定要写入的元数据所指示的存储资源是否被分配。例如,第一处理器110可以确定要写入的元数据所指示的磁盘切片是否已经被分配用于例如用户数据的存储。框620可以在第一存储管理模块处被执行。
如果在框620确定元数据所指示的存储资源尚未被分配,则第一处理器110可以确定采用直接写的方式来写入元数据,并且过程600进行到框630。在框630,第一处理器110(例如,第一存储管理模块111)将元数据写入辅助页面420。应当理解的是,所写入的元数据在辅助页面420中的位置与对应于该元数据的历史元数据在目标页面410中的位置相同。参考图5,元数据可以在辅助页面420中被写入地址范围520内。地址范围520可以包括连续写入的元数据,例如,如图3所示的地址范围313。地址范围520也可以包括不连续写入的元数据,例如,如图3所示的地址范围323。
在框640,第一处理器110将目标页面410中存储的除历史元数据(与所写入的元数据相对应)的其他数据复制到辅助页面420。如此,辅助页面420将包括改变的元数据和目标页面410中未改变的数据。在一些实现中,框630和640的动作可以均由第一存储管理模块111来实现。
在另一些实现中,框630的动作可以由第一存储管理模块111来实现,而框640的动作可以由第一缓存112来实现。在这样的实现中,第一存储管理模块111可以设置页面信息列表510中的元素505-507以向第一缓存112指示元数据的写入和历史元数据的复制。
第一存储管理模块111可以设置元素504和506来向第一缓存112指示所写入的元数据在辅助页面420中的地址范围520。第一存储管理模块111还可以将元素507设置为预定值以向第一缓存112指示目标页面410中的相关数据未被复制到辅助页面420中。以此方式,第一缓存112在接收到第一存储管理模块111传回的列表510时,可以基于元素507的值来确定是否向辅助页面420复制目标页面410中的原始数据。在原始数据未被复制的情况下,第一缓存112可以在框640将目标页面410中存储的除历史元数据的其他数据复制到辅助页面420。
如果在框620确定元数据所指示的存储资源已经被分配,则第一处理器110可以确定采用读改写(read-modify-write)的方式来写入元数据,并且过程600进行到框650。在框650,第一处理器110将目标页面410中存储的数据复制到辅助页面420。在框660,第一处理器110从辅助页面420中读取与所要写入的元数据相关联的历史元数据,以基于历史元数据来确定所要写入的元数据。例如,第一处理器110可以根据预定义规则来基于历史元数据计算新的元数据。在框670,第一处理器110将所确定的元数据写入辅助页面420中。应当理解的是,所写入的元数据在辅助页面420中的位置与对应于该元数据的历史元数据在目标页面410中的位置相同。
在具体实现中,框650-670可以均在第一存储管理模块111处被执行。相应地,第一存储管理模块111可以设置列表510中的元素507的值以向第一缓存112指示目标页面410中的相关数据已经被复制到辅助页面420中。这样,在接收到返回的列表510时,第一缓存112将不会复制目标页面410中的数据。
在一些实施例中,框650-670的动作可以由其他动作代替。如果在框620确定元数据所指示的存储资源已经被分配,则第一处理器110可以从目标页面410中读取与要写入的元数据相关联的历史元数据,以基于历史元数据来确定要写入的元数据。然后,第一处理器110可以将确定的元数据写入辅助页面420。如上文所提及的,所写入的元数据在辅助页面420中的位置与对应于该元数据的历史元数据在目标页面410中的位置相同。接下来,第一处理器110可以将目标页面410中存储的除历史元数据的其他数据复制到辅助页面420。
如上所述的动作可以均在第一存储管理模块111处被执行。相应地,第一存储管理模块111可以设置列表510中的元素507的值以向第一缓存112指示目标页面410中的相关数据已经被复制到辅助页面420中。
通过过程600,辅助页面420中已经包括变化的元数据和目标页面410中未变化的数据。在将地址范围520中存储的数据复制到第二处理器120之后,第一处理器110(例如,第一缓存112)可以交换目标页面410和辅助页面420。
在这样的实施例中,通过引入由两个物理页面组成的事务页面的概念,可以避免因不完整写入而引起的数据损坏。以这种方式,提高了数据写入的安全性。
如前文所提及的,在一些实施例中,第一处理器110可以基于要传输的数据(在地址范围313、323或520中的数据)的大小来向第二处理器120镜像数据。对于目标页面410的状态为无效(如列表510中的元素501所指示)或者目标页面410先前未被镜像的情况,第二处理器110中并没有对应的原始数据。因此,第一处理器110可以如传统方案中那样通过诸如DMA的方式将整个页面的数据均镜像到第二处理器120。当要传输的数据的量较小时,第一处理器110可以将这些数据传输给第二处理器的缓冲区;当要传输的数据的量较大时,第一处理器110可以将这些数据直接传输给第二处理器120的第二缓存122。下面将结合图7和图8来具体描述这样的实现。
图7示出了根据本公开的一些实施例的复制数据的示意图700,其中地址范围711中的数据将被镜像到第二处理120。图8示出了根据本公开的另一些实施例的复制数据的示意图800,其中地址范围811中的数据将被镜像到第二处理120。
第一处理器110(例如,第一缓存112)可以确定要传输的数据是否超过阈值大小。例如,第一处理器110可以确定地址范围711或811中存储的数据的大小是否超过阈值大小。如图7所示,地址范围711中的数据的大小在阈值大小以下。在这种情况下,第一处理器110可以向第二处理器120的缓冲区730(例如,接收环形缓冲区)传输数据,并且向第二处理器120发送指示数据被传输给缓冲区730的消息,以使得第二处理器120将数据从缓冲区730复制到第二缓存122,例如复制到页面720。此外,第一处理器110还可以将地址范围711发送给第二处理器120,以使得第二处理器120能够以镜像方式存储地址范围711中的数据。
这种方式的益处是可以节省DMA资源,以便在一个DMA操作中可以传输更多数据。此外,由于对于每个内部写请求,仅复制几个字节的增量数据,因此可以忽略增量数据的复制所增加的CPU工作负载。
当更改的范围较大时,使用缓冲区来传输数据是不合适的。由于大数据复制会占用大量CPU资源,同时(环形)缓冲区使用量过多也会降低内部通信接口130(诸如,CMI)的性能。如图8所示,地址范围811中的数据的大小超过阈值大小。在这种情况下,第一处理器110可以向第二缓存122传输数据(例如,通过DMA),并且向第二处理器120发送指示数据被直接传输给第二缓存122的消息。此外,第一处理器110还可以将地址范围811发送给第二处理器120,以使得第二处理器120能够以镜像方式存储地址范围811中的数据。
在如图7和图8所示的示例中,与目标页面410有关的信息也可以被发送给第二处理器120,以使得第二处理器120能够找出目标页面410在第二处理器120中的镜像页面,即镜像目标页面710。应当理解,尽管图7和图8中以事务写入为例示出了数据的镜像,但是这仅仅是示意性的,并且本公开中所描述的数据镜像方法也适用于非事务写入的情况。
阈值大小可以根据第一处理器110、第二处理器120以及内部通信接口130的性能而确定。因此,在这样的实施例中,基于要镜像的数据的大小而采用不同的数据传输路径可以更好地平衡不同资源(诸如,CPU、内部通信接口)的使用,有利于存储系统整体性能的提升。
以上描述了第一处理器110将变化的元数据而不是整个缓存页面镜像到第二处理器120的过程。下面将参考图7-9来描述第二处理器120接收要镜像的数据并写入其自身的第二缓存122的过程。
图9示出了根据本公开的一些实施例的镜像元数据的过程900的流程图。过程900可以由存储系统的存储处理器/控制器来实现,特别可以由存储处理器中的缓存模块来实现。为便于讨论,结合图1来描述过程900。在这样的示例中,过程900可以被实现在第二处理器120处。
在框910,第二处理器120从第一处理器110接收在第一处理器110的第一缓存112中存储的数据。所接收的数据被存储在被写入所述第一缓存112的元数据的地址范围内,例如地址范围313、323内。元数据指示存储资源向用户数据的分配,如上文所讨论的。
在一些实施例中,第二处理器120可以从第一处理器110接收指示数据被传输给第二处理器120的缓冲区(例如,缓冲区730)的消息,并且第二处理器120可以将来自第一处理器110的数据存储在缓存区中。
在一些实施例中,第二处理器120可以从第一处理器110接收指示数据被直接传输给第二缓存122的消息,并且第二处理器120可以直接从第一缓存112接收数据。例如,第二处理器120的第二缓存122可以通过DMA方式从第一缓存112接收要被镜像的数据。
在框920,第二处理器120基于元数据在第一缓存112中的地址范围,确定所接收的数据在第二处理器120的第二缓存122中的地址范围。如上文所描述的,第一处理器110可以元数据在第一缓存112中的地址范围发送给第二处理器120。由于第一缓存112和第二缓存122中的数据是互为镜像的,因此第二处理器120可以基于例如地址范围313、323、520等来确定所接收的数据在第二缓存122中的地址范围。
在框930,第二处理器120将所接收的数据写入第二缓存122。作为一个示例,如果元数据如图3A所示的那样被存储在页面310中,则第二处理器120可以确定页面310在第二缓存122中的镜像页面,并将所接收的数据写入该镜像页面中与地址范围313相对应的地址范围中。作为另一示例,如果元数据如图3B所示的那样被存储在页面320中,则第二处理器120可以确定页面320在第二缓存122中的镜像页面,并将所接收的数据写入该镜像页面中与地址范围323相对应的地址范围中。
在一些实施例中,为了避免数据的不完整写入带来的风险,在第二处理器120中也可以实现事务写入。下面继续参考图7和图8来描述这样的实施例。第二处理器120可以确定第二缓存122中的镜像目标页面710和镜像辅助页面720。与所接收的数据相关联的镜像数据被存储在镜像目标页面710中,即与地址范围811中所存储的数据相对应的镜像数据被存储在镜像目标页面710的对应地址范围中。换言之,镜像目标页面710是目标页面410在第二缓存122中的镜像页面。镜像辅助页面720被分配与镜像目标页面710相关联以用于修改镜像目标页面710中存储的数据。
第二处理器120可以将所接收的数据写入镜像辅助页面720。应当理解,所接收的数据在镜像辅助页面720中的地址范围721或821与在辅助页面420中的地址范围711或811相对应。附加地,第二处理器120可以将镜像目标页面710中存储的除镜像数据的其他数据复制到镜像辅助页面720。
在图7的示例中,包括在地址范围711中的数据的大小在阈值大小以下。在这种情况下,地址范围711中存储的数据可以被发送到第二处理器120的缓冲区730。第二处理器120可以将临时存储在缓冲区730中的数据写入镜像辅助页面720中的对应的地址范围721中。第二处理器120可以进一步将镜像目标页面710中存储的除与地址范围711中的数据相对应的镜像数据的其他数据复制到镜像辅助页面720中的对应地址。换言之,第二处理器120可以将镜像目标页面710中未改变的数据复制到镜像辅助页面720中。
在这样的示例中,当镜像少量改变的数据时,利用缓冲区来接收要镜像的数据可以提高系统的性能。由于采用这种方法,可以在一次DMA操作中传输更多数据,从而可以节约内部通信接口(CMI0的DMA资源。此外,由于只复制了少量数据,CPU使用量的增加可以忽略不计。
在图8的示例中,包括在地址范围811中的数据的大小超过阈值大小。在这种情况下,地址范围811中存储的数据可以通过DMA方式被直接发送到第二处理器120的第二缓存122。第二处理器120可以将接收到的数据写入镜像辅助页面720中的对应的地址范围821中。第二处理器120可以进一步将镜像目标页面710中存储的除与地址范围811中的数据相对应的镜像数据的其他数据复制到镜像辅助页面720中的对应地址。换言之,第二处理器120可以将镜像目标页面710中未改变的数据复制到镜像辅助页面720中。
在图7和图8的示例中,在完成未改变数据的复制之后,镜像辅助页面720成为辅助页面420的镜像页面。镜像辅助页面720也相应地与镜像目标页面710交换。
图10示出了可以用来实现本公开的实施例的示例设备1000的示意性框图。如图所示,设备1000包括中央处理单元(CPU)1001,其可以根据存储在只读存储器(ROM)1002中的计算机程序指令或者从存储单元1008加载到随机访问存储器(RAM)1003中的计算机程序指令,来执行各种适当的动作和处理。在RAM 1003中,还可存储设备1000操作所需的各种程序和数据。CPU 1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
设备1000中的多个部件连接至I/O接口1005,包括:输入单元1006,例如键盘、鼠标等;输出单元1007,例如各种类型的显示器、扬声器等;存储单元1008,例如磁盘、光盘等;以及通信单元1009,例如网卡、调制解调器、无线通信收发机等。通信单元1009允许设备1000通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元1001执行上文所描述的各个方法和处理,例如过程200、600和900。例如,在一些实施例中,过程200、600和900中的任一个可以被实现为计算机软件程序或计算机程序产品,其被有形地包含于机器可读介质,例如存储单元1008。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1002和/或通信单元1009而被载入和/或安装到设备1000上。当计算机程序加载到RAM 1003并由CPU 1001执行时,可以执行上文描述的过程200、600和900中的任一个的一个或多个步骤。备选地,在其他实施例中,CPU 1001可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行过程200、600和900中的任一个。
根据本公开的一些实施例,提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的方法。
本领域的技术人员应当理解,上述本公开的方法的各个步骤可以通过通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本公开不限制于任何特定的硬件和软件结合。
应当理解,尽管在上文的详细描述中提及了设备的若干装置或子装置,但是这种划分仅仅是示例性而非强制性的。实际上,根据本公开的实施例,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
以上所述仅为本公开的可选实施例,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开的保护范围之内。
Claims (27)
1.一种数据存储方法,包括:
将元数据写入第一处理器的第一缓存,所述元数据指示存储资源向接收的用户数据的分配,其中所述存储资源位于至少一个可通信地连接到所述第一处理器的存储盘中,并且其中被写入所述第一缓存的所述元数据指示所述存储盘的盘切片被分配到的用户逻辑单元号;
确定所述元数据在所述第一缓存中的地址范围;以及
仅将所述第一缓存中在所述地址范围中存储的数据复制到第二处理器的第二缓存,其中将在所述地址范围中存储的所述数据复制到第二缓存包括:
确定所述数据的大小是否超过阈值大小;以及
响应于所述数据的大小在所述阈值大小以下,
向所述第二处理器的环形缓冲区传输所述数据;以及向所述第二处理器发送指示所述数据被传输给所述环形缓冲区的消息,其中由所述第二处理器对所述消息的接收使所述第二处理器将所述数据从所述环形缓冲区复制到所述第二缓存。
2.根据权利要求1所述的方法,其中所述元数据被不连续地存储在所述第一缓存中,并且被复制到所述第二缓存的所述数据包括所述元数据和所述地址范围中存储的不同于所述元数据的其他数据。
3.根据权利要求1所述的方法,其中将所述元数据写入所述第一缓存包括:
确定所述第一缓存中的目标页面和辅助页面,所述目标页面包括与所述元数据相关联的历史元数据,所述辅助页面被分配与所述目标页面相关联以用于修改所述目标页面中存储的数据;以及
将所述元数据写入所述辅助页面。
4.根据权利要求3所述的方法,其中将所述元数据写入所述辅助页面包括:
确定所述元数据所指示的存储资源是否已经被分配;
响应于所述存储资源尚未被分配,将所述元数据写入所述辅助页面;以及
将所述目标页面中存储的除所述历史元数据的其他数据复制到所述辅助页面。
5.根据权利要求4所述的方法,还包括:
响应于所述存储资源已经被分配,将所述目标页面中存储的数据复制到所述辅助页面;
从所述辅助页面中读取所述历史元数据以基于所述历史元数据来确定所述元数据;以及
将确定的所述元数据写入所述辅助页面。
6.根据权利要求4所述的方法,还包括:
响应于所述存储资源已经被分配,从所述目标页面中读取所述历史元数据以基于所述历史元数据来确定所述元数据;
将确定的所述元数据写入所述辅助页面;以及
将所述目标页面中存储的除所述历史元数据的其他数据复制到所述辅助页面。
7.根据权利要求6所述的方法,还包括:
响应于所述数据的大小超过所述阈值大小,
向所述第二缓存传输所述数据;以及
向所述第二处理器发送指示所述数据被直接传输给所述第二缓存的消息。
8.根据权利要求1所述的方法,其中所述存储盘通过后端总线而被连接到所述第一处理器。
9.一种数据存储方法,包括:
从第一处理器接收在所述第一处理器的第一缓存中存储的数据,所接收的数据被存储在被写入所述第一缓存的元数据的地址范围内,所述元数据指示存储资源向接收的用户数据的分配,其中所述存储资源位于至少一个可通信地连接到所述第一处理器的存储盘中,其中被写入所述第一缓存的所述元数据指示所述存储盘的盘切片被分配到的用户逻辑单元号,并且其中接收来自所述第一处理器的所述数据包括:
将接收的所述数据存储到第二处理器中的环形缓冲区中,以及
从所述第一处理器接收指示所述数据被传输到所述第二处理器中的所述环形缓冲区的消息,其中所述消息的接收使所述第二处理器将所述数据从所述环形缓冲区复制到所述第二处理器的第二缓存;
基于所述元数据的地址范围,确定所接收的所述数据在所述第二处理器的所述第二缓存中的地址范围;以及
基于所述第二处理器的所述第二缓存中的所接收的所述数据的所述地址范围,将所接收的所述数据写入所述第二缓存。
10.根据权利要求9所述的方法,其中所述元数据被不连续地存储在所述第一缓存中,并且所接收的数据包括所述元数据和所述地址范围中存储的不同于所述元数据的其他数据。
11.根据权利要求9所述的方法,其中从所述第一处理器接收所述数据包括:
接收指示所述数据被直接传输给所述第二缓存的消息;以及
从所述第一缓存接收所述数据。
12.根据权利要求9所述的方法,其中将所接收的数据写入所述第二缓存包括:
确定所述第二缓存中的镜像目标页面和镜像辅助页面,与所接收的数据相关联的镜像数据被存储在所述镜像目标页面中,所述镜像辅助页面被分配与所述镜像目标页面相关联以用于修改所述镜像目标页面中存储的数据;以及
将所接收的数据写入所述镜像辅助页面。
13.根据权利要求12所述的方法,还包括:将所述镜像目标页面中存储的除所述镜像数据的其他数据复制到所述镜像辅助页面。
14.一种电子设备,包括:
处理器;以及
与所述处理器耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被处理器执行时使所述设备执行动作,所述动作包括:
将元数据写入第一处理器的第一缓存,所述元数据指示存储资源向接收的用户数据的分配,其中所述存储资源位于至少一个可通信地连接到所述第一处理器的存储盘中,并且其中被写入所述第一缓存的所述元数据指示所述存储盘的盘切片被分配到的用户逻辑单元号;
确定所述元数据在所述第一缓存中的地址范围;以及
仅将所述第一缓存中在所述地址范围中存储的数据复制到第二处理器的第二缓存,其中将在所述地址范围中存储的所述数据复制到第二缓存包括:
确定所述数据的大小是否超过阈值大小;以及
响应于所述数据的大小在所述阈值大小以下,
向所述第二处理器的环形缓冲区传输所述数据;以及
向所述第二处理器发送指示所述数据被传输给所述环形缓冲区的消息,其中由所述第二处理器对所述消息的接收使所述第二处理器将所述数据从所述环形缓冲区复制到所述第二缓存。
15.根据权利要求14所述的设备,其中所述元数据被不连续地存储在所述第一缓存中,并且被复制到所述第二缓存的所述数据包括所述元数据和所述地址范围中存储的不同于所述元数据的其他数据。
16.根据权利要求14所述的设备,其中将所述元数据写入所述第一缓存包括:
确定所述第一缓存中的目标页面和辅助页面,所述目标页面包括与所述元数据相关联的历史元数据,所述辅助页面被分配与所述目标页面相关联以用于修改所述目标页面中存储的数据;以及
将所述元数据写入所述辅助页面。
17.根据权利要求16所述的设备,其中将所述元数据写入所述辅助页面包括:
确定所述元数据所指示的存储资源是否已经被分配;
响应于所述存储资源尚未被分配,将所述元数据写入所述辅助页面;以及
将所述目标页面中存储的除所述历史元数据的其他数据复制到所述辅助页面。
18.根据权利要求17所述的设备,其中所述动作还包括:
响应于所述存储资源已经被分配,将所述目标页面中存储的数据复制到所述辅助页面;
从所述辅助页面中读取所述历史元数据以基于所述历史元数据来确定所述元数据;以及
将确定的所述元数据写入所述辅助页面。
19.根据权利要求17所述的设备,其中所述动作还包括:
响应于所述存储资源已经被分配,从所述目标页面中读取所述历史元数据以基于所述历史元数据来确定所述元数据;
将确定的所述元数据写入所述辅助页面;以及
将所述目标页面中存储的除所述历史元数据的其他数据复制到所述辅助页面。
20.根据权利要求14所述的设备,其中所述动作还包括:
响应于所述数据的大小超过所述阈值大小,
向所述第二缓存传输所述数据;以及
向所述第二处理器发送指示所述数据被直接传输给所述第二缓存的消息。
21.一种电子设备,包括:
处理器;以及
与所述处理器耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被处理器执行时使所述设备执行动作,所述动作包括:
从第一处理器接收在所述第一处理器的第一缓存中存储的数据,所接收的数据被存储在被写入所述第一缓存的元数据的地址范围内,所述元数据指示存储资源向接收的用户数据的分配,其中所述存储资源位于至少一个可通信地连接到所述第一处理器的存储盘中,其中被写入所述第一缓存的所述元数据指示所述存储盘的盘切片被分配到的用户逻辑单元号,并且其中接收来自所述第一处理器的所述数据包括:
将接收的所述数据存储到第二处理器中的环形缓冲区中,以及
从所述第一处理器接收指示所述数据被传输到所述第二处理器中的所述环形缓冲区的消息,其中所述消息的接收使所述第二处理器将所述数据从所述环形缓冲区复制到所述第二处理器的第二缓存;
基于所述元数据的地址范围,确定所接收的所述数据在所述第二处理器的所述第二缓存中的地址范围;以及
基于所述第二处理器的所述第二缓存中的所接收的所述数据的所述地址范围,将所接收的所述数据写入所述第二缓存。
22.根据权利要求21所述的设备,其中所述元数据被不连续地存储在所述第一缓存中,并且所接收的数据包括所述元数据和所述地址范围中存储的不同于所述元数据的其他数据。
23.根据权利要求21所述的设备,其中从所述第一处理器接收所述数据包括:
接收指示所述数据被直接传输给所述第二缓存的消息;以及
从所述第一缓存接收所述数据。
24.根据权利要求21所述的设备,其中将所接收的数据写入所述第二缓存包括:
确定所述第二缓存中的镜像目标页面和镜像辅助页面,与所接收的数据相关联的镜像数据被存储在所述镜像目标页面中,所述镜像辅助页面被分配与所述镜像目标页面相关联以用于修改所述镜像目标页面中存储的数据;以及
将所接收的数据写入所述镜像辅助页面。
25.根据权利要求24所述的设备,其中所述动作还包括:将所述镜像目标页面中存储的除所述镜像数据的其他数据复制到所述镜像辅助页面。
26.一种计算机可读介质,存储指令集以执行数据存储,所述指令集在由计算机化电路执行时,使所述计算机化电路执行方法:
将元数据写入第一处理器的第一缓存,所述元数据指示存储资源向接收的用户数据的分配,其中所述存储资源位于至少一个可通信地连接到所述第一处理器的存储盘中,并且其中被写入所述第一缓存的所述元数据指示所述存储盘的盘切片被分配到的用户逻辑单元号;
确定所述元数据在所述第一缓存中的地址范围;以及
仅将所述第一缓存中在所述地址范围中存储的数据复制到第二处理器的第二缓存,其中将在所述地址范围中存储的所述数据复制到第二缓存包括:
确定所述数据的大小是否超过阈值大小;以及
响应于所述数据的大小在所述阈值大小以下,
向所述第二处理器的环形缓冲区传输所述数据;以及向所述第二处理器发送指示所述数据被传输给所述环形缓冲区的消息,其中由所述第二处理器对所述消息的接收使所述第二处理器将所述数据从所述环形缓冲区复制到所述第二缓存。
27.一种计算机可读介质,存储指令集以执行数据存储,所述指令集在由计算机化电路执行时,使所述计算机化电路执行方法:
从第一处理器接收在所述第一处理器的第一缓存中存储的数据,所接收的数据被存储在被写入所述第一缓存的元数据的地址范围内,所述元数据指示存储资源向接收的用户数据的分配,其中所述存储资源位于至少一个可通信地连接到所述第一处理器的存储盘中,其中被写入所述第一缓存的所述元数据指示所述存储盘的盘切片被分配到的用户逻辑单元号,并且其中接收来自所述第一处理器的所述数据包括:
将接收的所述数据存储到第二处理器中的环形缓冲区中,以及
从所述第一处理器接收指示所述数据被传输到所述第二处理器中的所述环形缓冲区的消息,其中所述消息的接收使所述第二处理器将所述数据从所述环形缓冲区复制到所述第二处理器的第二缓存;
基于所述元数据的地址范围,确定所接收的所述数据在所述第二处理器的所述第二缓存中的地址范围;以及
基于所述第二处理器的所述第二缓存中的所接收的所述数据的所述地址范围,将所接收的所述数据写入所述第二缓存。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811286058.1A CN111124255B (zh) | 2018-10-31 | 2018-10-31 | 数据存储方法、电子设备和计算机程序产品 |
US16/575,479 US11294818B2 (en) | 2018-10-31 | 2019-09-19 | Method, electronic device and computer program product for data storage |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811286058.1A CN111124255B (zh) | 2018-10-31 | 2018-10-31 | 数据存储方法、电子设备和计算机程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111124255A CN111124255A (zh) | 2020-05-08 |
CN111124255B true CN111124255B (zh) | 2023-09-08 |
Family
ID=70327161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811286058.1A Active CN111124255B (zh) | 2018-10-31 | 2018-10-31 | 数据存储方法、电子设备和计算机程序产品 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11294818B2 (zh) |
CN (1) | CN111124255B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114063883A (zh) * | 2020-07-31 | 2022-02-18 | 伊姆西Ip控股有限责任公司 | 存储数据方法、电子设备和计算机程序产品 |
CN112685335B (zh) * | 2020-12-28 | 2022-07-15 | 湖南博匠信息科技有限公司 | 数据存储系统 |
WO2022266828A1 (en) * | 2021-06-22 | 2022-12-29 | Intel Corporation | Architectural extensions for memory mirroring at page granularity on demand |
CN113448649B (zh) * | 2021-07-06 | 2023-07-14 | 聚好看科技股份有限公司 | 一种基于Redis的首页数据加载的服务器及方法 |
CN113806107B (zh) * | 2021-08-25 | 2024-02-13 | 济南浪潮数据技术有限公司 | 一种对象拷贝方法、装置、设备及存储介质 |
CN113687964B (zh) * | 2021-09-09 | 2024-02-02 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102081584A (zh) * | 2009-11-30 | 2011-06-01 | 英业达股份有限公司 | 双控制器存储系统的缓存镜像系统及方法 |
US9053027B1 (en) * | 2011-12-21 | 2015-06-09 | Emc Corporation | Techniques for maintaining and restoring dirty caches across CPU resets |
CN108427539A (zh) * | 2018-03-15 | 2018-08-21 | 深信服科技股份有限公司 | 缓存设备数据的离线去重压缩方法、装置及可读存储介质 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6941396B1 (en) * | 2003-02-19 | 2005-09-06 | Istor Networks, Inc. | Storage controller redundancy using bi-directional reflective memory channel |
US7849350B2 (en) | 2006-09-28 | 2010-12-07 | Emc Corporation | Responding to a storage processor failure with continued write caching |
JP5209793B2 (ja) * | 2009-08-21 | 2013-06-12 | パナソニック株式会社 | 不揮発性記憶装置、アクセス装置、及び不揮発性記憶システム |
US8661169B2 (en) * | 2010-09-15 | 2014-02-25 | Lsi Corporation | Copying data to a cache using direct memory access |
EP2742428B1 (en) * | 2011-08-12 | 2016-01-06 | Sandisk Enterprise IP LLC | Cache management including solid state device virtualization |
US8904229B1 (en) | 2012-06-29 | 2014-12-02 | Emc Corporation | Online recovery of a file system experiencing failure of redundant logical storage storing a single point of failure |
US10372463B1 (en) | 2013-11-27 | 2019-08-06 | EMC IP Holding Company LLC | Provisioning a computerized device with an operating system |
US9785354B2 (en) * | 2015-06-29 | 2017-10-10 | International Business Machines Corporation | Selective write control |
CN106933493B (zh) | 2015-12-30 | 2020-04-24 | 伊姆西Ip控股有限责任公司 | 用于缓存盘阵列扩容的方法及设备 |
CN108228647B (zh) | 2016-12-21 | 2022-05-24 | 伊姆西Ip控股有限责任公司 | 用于数据拷贝的方法和设备 |
US10585594B1 (en) | 2017-08-03 | 2020-03-10 | EMC IP Holding Company LLC | Content-based caching using digests |
CN109725840B (zh) | 2017-10-30 | 2022-04-05 | 伊姆西Ip控股有限责任公司 | 利用异步冲刷对写入进行节流 |
US10824359B2 (en) | 2017-10-31 | 2020-11-03 | EMC IP Holding Company LLC | Optimizing inline deduplication during copies |
CN110413214B (zh) | 2018-04-28 | 2023-07-18 | 伊姆西Ip控股有限责任公司 | 用于存储管理的方法、设备和计算机程序产品 |
CN111124993B (zh) * | 2018-10-31 | 2023-09-01 | 伊姆西Ip控股有限责任公司 | 减小i/o处理时缓存数据镜像时延的方法、设备和程序产品 |
US10740187B1 (en) | 2019-01-31 | 2020-08-11 | EMC IP Holding Company LLC | Systems and methods of managing and creating snapshots in a cache-based storage system |
-
2018
- 2018-10-31 CN CN201811286058.1A patent/CN111124255B/zh active Active
-
2019
- 2019-09-19 US US16/575,479 patent/US11294818B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102081584A (zh) * | 2009-11-30 | 2011-06-01 | 英业达股份有限公司 | 双控制器存储系统的缓存镜像系统及方法 |
US9053027B1 (en) * | 2011-12-21 | 2015-06-09 | Emc Corporation | Techniques for maintaining and restoring dirty caches across CPU resets |
CN108427539A (zh) * | 2018-03-15 | 2018-08-21 | 深信服科技股份有限公司 | 缓存设备数据的离线去重压缩方法、装置及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US11294818B2 (en) | 2022-04-05 |
US20200133869A1 (en) | 2020-04-30 |
CN111124255A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111124255B (zh) | 数据存储方法、电子设备和计算机程序产品 | |
US6651145B1 (en) | Method and apparatus for scalable disambiguated coherence in shared storage hierarchies | |
US7849254B2 (en) | Create virtual track buffers in NVS using customer segments to maintain newly written data across a power loss | |
TWI431475B (zh) | 用於在本地代理者之記憶體鏡像及遷移之裝置、系統及方法 | |
EP2557494B1 (en) | Storage apparatus and data copy method between thin-provisioning virtual volumes | |
US7177987B2 (en) | System and method for responses between different cache coherency protocols | |
EP2634696B1 (en) | Information processing apparatus, control method, and control program | |
US20090240880A1 (en) | High availability and low capacity thin provisioning | |
CN109582223B (zh) | 一种内存数据迁移的方法及装置 | |
US8131945B2 (en) | Disowning cache entries on aging out of the entry | |
CN101097545A (zh) | 独占所有权探听过滤器 | |
US10635356B2 (en) | Data management method and storage controller using the same | |
US7149852B2 (en) | System and method for blocking data responses | |
US7650476B2 (en) | System, method and computer program product for generating a consistent point in time copy of data | |
CN113157216B (zh) | 用于存储管理的方法、设备和计算机可读存储介质 | |
US9910808B2 (en) | Reflective memory bridge for external computing nodes | |
US11119664B2 (en) | Method, apparatus and computer program product for managing storage system | |
KR101601877B1 (ko) | 분산 파일시스템에서 클라이언트가 데이터 저장에 참여하는 장치 및 방법 | |
US8725954B2 (en) | Information processing apparatus and memory control apparatus | |
US9323671B1 (en) | Managing enhanced write caching | |
CN110083548B (zh) | 数据处理方法及相关网元、设备、系统 | |
US20080104333A1 (en) | Tracking of higher-level cache contents in a lower-level cache | |
US10437471B2 (en) | Method and system for allocating and managing storage in a raid storage system | |
US20180136847A1 (en) | Control device and computer readable recording medium storing control program | |
JP2003202962A (ja) | 記憶制御装置 |
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 |