CN107526535A - 用于管理存储系统的方法和系统 - Google Patents
用于管理存储系统的方法和系统 Download PDFInfo
- Publication number
- CN107526535A CN107526535A CN201610459022.3A CN201610459022A CN107526535A CN 107526535 A CN107526535 A CN 107526535A CN 201610459022 A CN201610459022 A CN 201610459022A CN 107526535 A CN107526535 A CN 107526535A
- Authority
- CN
- China
- Prior art keywords
- address
- intermediary
- scope
- target data
- true
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- 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/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1456—Hardware arrangements for backup
-
- 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/2089—Redundant storage control functionality
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/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
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between 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/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
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
-
- 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/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
- G06F11/1662—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
-
- 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/1666—Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
-
- 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/1041—Resource optimization
-
- 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/263—Network storage, e.g. SAN or NAS
-
- 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
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/226—Validation
Abstract
本发明的实施方式涉及用于管理存储系统的方法和系统。具体地,在本发明的一个实施方式中,提供了一种用于管理存储系统的方法,包括:响应于接收到向存储系统写入目标数据的写入请求,将目标数据写入存储系统的中介存储区中的中介地址范围;基于存储系统的地址映射关系,解析与写入请求相关联的目标地址范围以获得真实地址范围;以及将目标数据从中介地址范围移动至真实地址范围。在本发明的一个实施方式中,提供了相应的装置和系统。
Description
技术领域
本发明的各实施方式涉及存储管理,更具体地,涉及用于管理存储系统(例如,独立磁盘冗余阵列(Redundant Array of Independent Disks,RAID)的方法和系统。
背景技术
随着数据存储技术的发展,各种数据存储设备已经能够向用户提供越来越高的数据存储能力,并且数据访问速度也有了很大程度的提高。目前,已经开发出了基于冗余磁盘阵列的多种数据存储系统来提高数据的可靠性。当存储系统中的一个或者多个磁盘出现故障时,可以从其他正常操作的磁盘上的数据来恢复出故障磁盘中的数据。
存储系统可以经由存储控制节点来被访问。在典型的激活-激活(Active-Active,也称为双激活)类型的存储系统中,两个存储控制控制节点一起工作以便处理针对存储系统执行数据访问操作,进而提供更高的可用性和更好的性能。每个存储控制节点具有自身的存储器(例如,高速缓存),并且两个存储控制器中的存储器以镜像方式操作。
在提高数据存储能力的同时,用户对于存储系统的响应时间也提出了越来越高的需求。此时如何在确保存储系统中的数据一致性的情况下提高数据响应效率,成为一个研究热点。
发明内容
因而,期望能够开发并实现用于管理存储系统、并且提高存储系统的响应效率和稳定性的技术方案。期望该技术方案能够与现有的存储系统相兼容,并且在无需针对现有存储系统增加额外硬件设备的情况下以更为安全可靠的方式管理存储系统。
在本发明的一个实施方式中,提供了一种用于管理存储系统的方法,包括:响应于接收到向存储系统写入目标数据的写入请求,将目标数据写入存储系统的中介存储区中的中介地址范围;基于存储系统的地址映射关系,解析与写入请求相关联的目标地址范围以获得真实地址范围;以及将目标数据从中介地址范围移动至真实地址范围。
在本发明的一个实施方式中,提供了一种用于管理存储系统,包括:一个或者多个处理器;耦合至一个或者多个处理器中的至少一个处理器的存储器;在存储器中存储的计算机程序指令,当由至少一个处理器执行计算机程序指令时,使得系统执行用于管理存储系统的方法,方法包括:响应于接收到向存储系统写入目标数据的写入请求,将目标数据写入存储系统的中介存储区中的中介地址范围;基于存储系统的地址映射关系,解析与写入请求相关联的目标地址范围以获得真实地址范围;以及将目标数据从中介地址范围移动至真实地址范围。
采用本发明的技术方案,可以以更为安全可靠的方式管理存储系统,进而提高存储系统的响应效率和稳定性。
附图说明
结合附图并参考以下详细说明,本发明各实施方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本发明的若干实施方式。在附图中:
图1示意性示出了适于实现本发明实施方式的示例性计算系统的框图;
图2A示意性示出了根据一个技术方案的独立磁盘冗余阵列的结构的示意图,图2B示意性示出了根据一个技术方案的独立磁盘冗余阵列的重建过程的示意图;
图3示意性示出了根据一个技术方案的用于管理存储系统的方法的示意图;
图4示意性示出了根据本发明一个实施方式的用于管理存储系统的技术方案的架构图;
图5示意性示出了根据本发明一个实施方式的用于管理存储系统的方法的流程图;
图6示意性示出了根据本发明一个实施方式的用于指示数据移动请求的数据结构的示意图,其中该数据移动请求将所述目标数据从所述中介地址范围移动至所述真实地址范围;
图7示意性示出了根据本发明一个实施方式的用于管理存储系统的技术方案的架构图;
图8示意性示出了根据本发明一个实施方式的用于管理存储系统的方法的流程图;
图9A示意性示出了根据本发明一个实施方式的在执行数据移动请求之前的源CLP的状态,图9B示意性示出了根据本发明一个实施方式的在执行数据移动请求之前的目的地CLP的状态;
图10A示意性示出了根据本发明一个实施方式的在执行数据移动请求之后的源CLP的状态,图10B示意性示出了根据本发明一个实施方式的在执行数据移动请求之后的目的地CLP的状态;以及
图11示意性示出了根据本发明一个实施方式的用于管理存储系统的装置的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图。如图1所示,计算机系统100可以包括:CPU(中央处理单元)101、RAM(随机存取存储器)102、ROM(只读存储器)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和触摸屏显示器114。在这些设备中,与系统总线104耦合的有CPU 101、RAM 102、ROM 103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及触摸屏显示器114与显示控制器109耦合。应当理解,图1所示的结构框图仅仅是为了示例的目的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施方式中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供者来通过因特网连接)。
下面将参照本发明实施方式的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其他可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其他可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其他可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
本领域技术人员应当理解,上文仅仅示意性示出了其中可以实现本发明的各个实施方式的应用环境的典型示例。在本发明的上下文中,还可以在过去已知或者将在未来开发的各种应用环境中执行本发明的各个实施方式。
在例如RAID的存储系统中,激活-激活(Active-Active,也称为双激活)是典型存储阵列模型的一个示例。在此模型中,两个存储控制器一起工作以便处理针对存储阵列执行的输入/输出操作,进而提供更高的可用性和更好的性能。每个存储控制器具有自身的存储器(例如,高速缓存),并且两个控制器中的一对高速缓存以镜像模式操作:当主机(host)对存储阵列进行写操作时,主机向一个控制器高速缓存发出写命令,该控制器继而经由连接两个控制器之间的连接通道(例如,PCIE通道)来将被写入的数据镜像到另一控制器的高速缓存中。主机向存储阵列的写入操作完成。在此示例中,控制器的高速缓存是持久性的,即,在不掉电的情况下,高速缓存中的数据在控制器死机(crash)和重启(reset)期间仍然被保留。
现有的存储系统可以支持映射LUN(mapped LUN)和池化LUN(pool LUN),其包括存储池中的某些传统LUN划分的范围或者片(slice)的集合。当映射LUN接收到写入命令时,其首先获取片和底层LUN之间的映射关系(该映射信息可以从存储中读出),如果写入操作跨越多个片,则需要将该写入操作划分为多个子写入(sub-write),并且根据映射关系将该子写入引导至相对应的底层LUN。在执行写入操作时,映射LUN的操作性能并不令人满意。
目前已经提供了提高存储阵列的写入效率的技术方案。在一个技术方案中,数据可以被写入预先分配的片中的临时存储区,继而向执行写入操作的主机返回“写入完成”的信息。在此技术方案中,需要在临时存储区与目标存储位置之间移动数据(即,从临时存储区读取数据,向目标存储位置写入数据,并且将临时存储区中的数据无效)。以此方式,一方面很难确保移动数据操作的原子性(atomic)(即,对写入的全部数据执行移动),进而可能会造成存储系统中的数据冲突;另一方面,“读取-写入-无效”的操作过程需要较长的时间,并且不利于提高存储系统的工作效率。因而,如何以安全和高效的方式将临时存储区中的数据移动至存储阵列中,成为目前的一个研究热点。
在本发明的应用环境中,为了确保存储系统中数据的完整性和一致性,数据移动(即,从临时存储区移动至存储阵列)的操作必须以原子方式执行。即,全部数据一起被移动,或者没有任何数据被移动。一旦数据被成功移动,则目的地LUN将具有与源LUN相同的数据并且源数据不再有效。
在存储系统例如独立磁盘冗余阵列(Redundant Array of Independent Disks,RAID)中,可以将多个存储设备组合起来,成为一个磁盘阵列。通过提供冗余的存储设备,可以使得整个磁盘组的可靠性大大超过单一的存储设备。RAID可以提供优于单一的存储设备的各种优势,例如,增强数据整合度,增强容错功能,增加吞吐量或容量,等等。RAID存在多个标准,例如RAID-1,RAID-2,RAID-3,RAID-4,RAID-5,RAID-6,RAID-10,RAID-50等等。
关于RAID级别的更多细节,本领域技术人员例如可以参见https://en.wikipedia.org/wiki/Standard_RAID_levels、以及https://en.wikipedia.org/wiki/Nested_RAID_levels等。操作系统可以把由多个存储设备构成的磁盘阵列视为单一的逻辑存储单元或磁盘。通过将磁盘阵列划分为多个条带(strip),可以将数据分布到多个存储设备,从而实现低延迟、高带宽,并且其中的部分磁盘毁坏后可以在一定程度上恢复数据。
图2A示意性示出了根据一个技术方案的独立磁盘冗余阵列的结构的示意图220A。在图2A中,以包括五个独立存储设备(210A、212A、214A、216A以及218A)的RAID-5阵列为示例,来说明RAID的工作原理。应当注意,尽管图2A中示意性示出了五个存储设备,在其他的实施方式中,根据RAID的版本不同,还可以包括更多或者更少的存储设备。尽管图2A中示出了条带220A、222A和224A,在其他的示例中,RAID系统还可以包括不同数量的条带。
在RAID中,条带跨越多个物理存储设备(例如,条带220A跨越了存储设备210A、212A、214A、216A以及218A)。可以简单地将条带理解为多个存储设备中的满足一定地址范围的存储区域。在条带220中存储的数据包括多个部分:存储在存储设备210A上的数据块D11、存储在存储设备212A上的数据块D12、存储在存储设备214A上的数据块D13、存储在存储设备216A上的数据块D14、以及存储在存储设备218A上的数据块P1。在此示例中,数据块D11、D12、D13、以及D14是被存储的数据,而数据块P1是被存储数据的校验值。
在其他条带中存储数据的方式也类似于条带220A,不同之处在于,有关其他数据块的校验值可以存储在不同于存储设备218A的存储设备上。以此方式,当多个存储设备210A、212A、214A、216A以及218A中的一个存储设备出现故障时,可以从其他的正常的存储设备中恢复出故障设备中的数据。
图2B示意性示出了根据一个技术方案的独立磁盘冗余阵列的重建过程的示意图220B。如图2B所示,当一个存储设备(例如,以阴影示出的存储设备218A)出现故障时,可以从其余的正常操作的多个存储设备210A、212A、214A、216A中恢复数据。此时,可以向RAID中加入新的后备存储设备218B来替代存储设备218A,以此方式,可以将恢复的数据写入218B并实现系统的重建。
图3示意性示出了根据一个技术方案的用于管理存储系统300中的存储器的方法的示意图。如图3所示,存储系统300可以通过一个或者多个存储控制节点来向外界提供数据访问服务。在此示例中,存储系统300可以包括存储控制节点310和320。在存储系统300的操作期间,两个存储控制节点310和320可以并行地向外界提供服务。如果其中一个节点出现故障,则另一个节点可以继续工作。
存储控制节点310可以包括控制器312和存储器314(例如,高速缓存)。当存储控制节点310接收到来自外界主机的访问请求(例如,读写请求)时,控制器312处理该请求。类似地,另一存储控制节点320包括控制器322和相对应的存储器324,并且以类似于存储控制器310的方式操作。两个存储控制器310、320可以并行地操作,用来处理针对存储设备340的不同的访问请求。在存储系统工作期间,为了确保存储系统中的数据的一致性,在存储系统中设置了内部通信通道330,用于在两个存储控制节点310和320之间传输消息。
基于现有数据存储系统的架构,在本发明的一个实施方式中,提供了一种用于管理存储系统的方法,包括:响应于接收到向所述存储系统写入目标数据的写入请求,将所述目标数据写入所述存储系统的中介存储区中的中介地址范围;基于所述存储系统的地址映射关系,解析与所述写入请求相关联的目标地址范围以获得真实地址范围;以及将所述目标数据从所述中介地址范围移动至所述真实地址范围。
图4示意性示出了根据本发明一个实施方式的用于管理存储系统的技术方案的架构图400。如图4所示,为了提高存储系统对于来自外界主机的写入请求的响应效率,在存储系统中部署了中介存储区410,当存储系统接收到向一目标地址写入目标数据的写入请求时,可以首先向中介存储区410(例如,在中介地址范围422)内写入目标数据。在已经将目标数据写入中介存储区之后,即可向发出写入请求的主机返回写入完成的消息。继而,在基于存储系统内部的地址映射关系,解析与所述写入请求相关联的目标地址范围以获得真实地址范围。并且在存储系统内部,将位于中介地址范围422处的目标数据420移动至存储设备340中的真实地址范围432处。
应当注意,在本发明的上下文中,存储系统可以是支持映射逻辑单元号(LogicUnit Number,LUN)的存储系统,并且此时该目标地址范围可以被映射到一个或者多个存储设备。另外,在此的存储设备也可以是逻辑存储设备或者物理存储设备。在向存储设备340写入目标数据时,本领域技术人员可以根据具体应用环境的差异来执行写入。
在下文中,将参见附图5来详细描述一个实施方式的具体操作步骤。具体地,图5示意性示出了根据本发明一个实施方式的用于管理存储系统的方法的流程图500。在步骤S510中,响应于接收到向所述存储系统写入目标数据的写入请求,将所述目标数据写入所述存储系统的中介存储区中的中介地址范围。在此步骤中,写入请求描述以下信息:(1)目标数据,即将被写入存储系统的数据;(2)目标地址,即将数据写入存储系统中的何处。在本发明的实施方式中,可以在完成将目标数据写入存储系统的中介存储区之后,向发出写入请求的主机返回写入成功的信号,并且在后续的步骤S520和S530中,在存储系统内部执行后台处理以便将目标数据写入目标地址。
在步骤S520中,基于所述存储系统的地址映射关系,解析与所述写入请求相关联的目标地址范围以获得真实地址范围。随着存储系统技术的发展,存储系统不再局限于位于同一位置的单一存储设备(例如,存储盘),而是存储系统可以跨越位于一个或者多个物理位置的多个逻辑/物理存储设备。因而,存储系统所接收到的“目标地址”并非能够直接寻址的物理地址,而是需要经过地址映射才能找到与目标地址范围相关联的真实地址范围。在此步骤中,可以基于存储系统的地址映射关系,来将目标地址范围映射至用于存储目标数据的真实地址范围。
在步骤S530中,将所述目标数据从所述中介地址范围移动至所述真实地址范围。在已经获得真实地址范围之后,可以在存储系统内部执行数据移动操作。
在本发明的一个实施方式中,进一步包括:响应于将所述目标数据写入所述存储系统的中介存储区中的中介地址范围,返回对所述写入请求的响应信号以指示所述写入请求完成。应当注意,由于此时已经向发出写入请求的主机返回了写入结束的信号,因而在步骤S520和S530中的操作对于外部主机而言是不可见的,仅仅是存储系统内部的后台操作。以此方式,对于外部主机而言,数据写入的效率可以得到提高。
在本发明的一个实施方式中,可以在存储系统中定义数据移动请求来描述上文步骤S530所示的操作。在此数据移动请求中需要包括中介地址范围与真实地址范围。存储上述两个地址的目的在于通知存储系统数据移动操作的具体内容:即,通知存储系统将所述目标数据从所述中介地址范围移动至所述真实地址范围。本领域技术人员可以定义不同的数据结构来描述上述两个地址范围。例如,可以基于二元组(起始地址,终止地址)来描述地址范围;备选地,还可以基于(启示地址,数据长度)来描述地址范围;备选地本领域技术人员还可以定义其他数据结构。
在本发明的一个实施方式中,存储所述中介地址范围与所述真实地址范围包括:存储所述中介地址的存储设备号、所述中介地址在所述存储设备中的开始地址、所述真实地址的存储设备号、所述真实地址在所述存储设备中的开始地址、以及所述目标数据的长度。在下文中,将参见图6详细描述。图6示意性示出了根据本发明一个实施方式的用于指示数据移动请求的数据结构的示意图,其中该数据移动请求将所述目标数据从所述中介地址范围移动至所述真实地址范围。
应当注意,在具体应用环境中,存储系统中可以包括一个或者多个存储设备,因而在描述地址时应当指明存储设备的ID以及在该存储设备中的开始地址。如图6所示,源设备ID 612可以指示中介存储区所在的存储设备的ID,当存储系统中以LUN ID来标识存储设备时,则在此源设备ID可以用源LUN ID标识。开始地址614可以指示目标数据在中介存储区中的开始地址,例如,可以以逻辑块地址(Logic Block Address,LBA)来描述。
目的地设备ID 616指示最终期望将目标数据写入何处,类似于源设备ID 612,在此可以使用LUN ID来标识目的地设备ID 616,并且以LBA来指示期望将目标数据存储在目的地设备中的开始地址为LBA的位置处。此外,数据长度620指示目标数据的长度,即,目标数据所占用的存储空间的大小。
应当注意,定义专用的数据移动请求一方面可以清晰地描述需要执行的数据移动操作的数据对象的信息,另一方面,可以存储数据移动请求,以便在数据移动操作被异常中断时,可以继续执行未完成的数据移动操作,进而保证存储系统中的数据的安全性。
在本发明的一个实施方式中,进一步包括:响应于所述目标数据跨越所述存储系统中的多个存储设备,将所述目标地址范围解析为多个真实地址范围;以及将所述目标数据从所述中介地址范围移动至所述真实地址范围包括:针对所述多个真实地址范围中的每个真实地址范围,将所述目标数据中的与所述每个真实地址范围相对应的部分移动至所述每个真实地址范围。
主机对于存储系统的写入请求可能会涉及多种情况,例如,待写入的目标数据的大小可能较小,则此时目标数据可能位于存储系统中的一个存储设备上。又例如,如果待写入的数据较大,则此时目标数据可能位于多个存储设备上。此时,如果将目标数据中的相应部分逐一写入到该多个存储设备,将会花费大量的时间进而造成存储系统的响应效率下降。在此实施方式中,通过将整个目标数据存储在中介存储器,并且在已经向主机发出写入成功之后,在存储系统内按照地址映射关系将目标数据划分为适当的数据块,并且将这些数据块移动至相应的存储设备。现在将参见图7详细描述具体实现步骤。
图7示意性示出了根据本发明一个实施方式的用于管理存储系统的技术方案的架构图700。如图7所示,目标数据420已经被写入至中介存储区410中,并且按照存储系统的地址映射关系,目标数据420实际上将被划分为多个数据块710、712、…,并且该多个数据块710、712、…将被保持至存储系统中的多个存储设备340、342、…中。具体地,通过地址映射关系可以知晓:数据块710将被保存至存储设备340中,数据块712将被保存至存储设备342中,等等。
在此实施方式中,可以采用上文所描述的数据移动请求,来将各个数据块移动至相对应的位置。例如,对于数据块710而言,假设数据块710在中介存储区410(源设备ID:LUN0)中的开始地址:0xAA…0000;通过地址映射关系可知希望将该数据块710写入至存储设备340(目的地设备ID:LUN 1)中的开始地址:0xBB…0000;并且数据块710的大小为1M。此时,按照上文所述的数据移动请求的格式,可以采用以下方式描述移动数据块710的操作:
数据移动请求1:(LUN 0,0xAA…0000,LUN 1,0xBB…0000,1M)。
又例如,对于数据块712而言,假设数据块712在中介存储区410(源设备ID:LUN 0)中的开始地址:0xCC…0000;通过地址映射关系可知希望将该数据块712写入至存储设备342(目的地设备ID:LUN 2)中的开始地址:0xDD…0000;并且数据块712的大小为1M。此时,按照上文所述的数据移动请求的格式,可以采用以下方式描述移动数据块712的操作:
数据移动请求2:(LUN 0,0xCC…0000,LUN 2,0xDD…0000,1M)。
应当注意,在上文中仅仅示意性示出了模板数据跨越两个存储设备而分布并且数据移动操作涉及两个数据移动请求(即数据移动请求1和2)的情况,在其他实施方式中,当目标数据跨越更多移动设备时,数据移动操作还可以涉及更多的数据移动请求。还应当注意,在本发明的各个实施方式中,并不限定存储设备340和342的具体配置。而是,在此的存储设备可以是物理设备的形式,也可以是逻辑存储设备的形式。当存储设备是逻辑存储设备时,还需要基于该逻辑存储设备的具体信息,来将数据库写入至与该逻辑存储设备相关联的物理存储设备的实际存储地址。本领域技术人员可以基于目前已知的或者将在未来开发的技术,定义具体的操作步骤,在此不再赘述。
在本发明的一个实施方式中,为了提高数据移动操作的效率,可以通过修改地址指针的方式,来将与真实地址相关联的地址指针修改至指向关联于目标数据的地址。具体地,在本发明的一个实施方式中,将所述目标数据从所述中介地址范围移动至所述真实地址范围包括:在所述存储系统的存储器中加载所述中介地址范围内的所述目标数据,以获取所述目标数据在所述存储器中的第一地址范围;以及将所述存储器中的与所述真实地址范围相关联的地址指针,指向所述第一地址范围。
在此实施方式中,可以将中介地址范围内的目标数据加载至存储器(例如,存储系统中的高速缓存)中。应当注意,由于在将目标数据写入至中介存储区期间,该目标数据已经被加载至高速缓存,在执行此步骤时如果该目标数据仍然位于高速缓存中(即,命中),则无需再次加载;并且仅在未命中时需要进行加载操作。
加载操作之后,可以获得所述目标数据在所述存储器中的第一地址范围。在此只需要通过地址的指针操作来完成数据移动,而并不需要真正的数据拷贝操作。换言之,将所述存储器中的与所述真实地址范围相关联的地址指针,指向所述第一地址范围,即可在第一地质范围与真实地址范围之间建立映射关系。在后续的步骤中,该第一地址范围内的数据将被刷新至真实地址范围,此时则完成真正的数据写入步骤。
应当注意,高速缓存具有特定的存储单元,并且针对高速缓存的操作都是以这些存储单元为单位进行操作的。具体地,在高速缓存被划分为固定大小的高速缓存页面(该页面是高速缓存中的最小管理单位,例如8k)。高速缓存逻辑页面(Cache Logical Page,CLP)包括多个高速缓存页面(例如,8个),用于存储较大块的连续LUN数据。存储系统中维护高速缓存页面和LUN上的数据之间的映射关系,例如,LUN ID、开始LBA和指向高速缓存页面的指针。另外,CLP维护高速缓存的页面的扇区的状态(脏(dirty)、有效(valid)或者无效(invalid))。
在本发明的一个实施方式中,所述存储系统包括第一控制器和第二控制器,所述写入请求被接收自所述第一控制器,以及所述方法进一步包括:锁定所述存储器中的所述源地址范围以及所述目的地地址范围。在此实施方式中,由于存储系统包括的两个控制器都可以响应于来自外界的数据访问请求,为了避免数据移动操作期间可能产生的冲突问题,需要锁定与数据移动操作相关联的地址范围。
在下文中,将参见具体的示例来描述本发明的实施方式的具体步骤。图8示意性示出了根据本发明一个实施方式的用于管理存储系统的方法的流程图800。应当注意,目标数据在被加载到高速缓存中后,将在一个或者多个CLP中存储,因而在下文中将以目标数据设计3个CLP的情况为具体示例描述操作过程。根据目标数据的大小不同,操作过程中还可以涉及更多或者更少的CLP。
首先,在步骤S810中,查找并锁定与目标数据相关联的全部源和目的地CLP。继而,操作流程前进至步骤S820,在此步骤中判断源CLP是否已经在高速缓存中(即,判断是否命中),如果未命中,则操作流程前进至步骤S860并在此步骤中加载源CLP。否则如果命中,则操作流程前进至步骤S830。在步骤S830中,保存数据移动请求,并且保存CLP列表的头。在此保存的目的在于,当数据移动请求出于异常等原因而被中断时,可以基于保存的信息来继续执行未完成的数据移动操作,以便保证存储系统中的数据一致性。
继而,在步骤S840中,将从源CLP向目的地CLP移动数据。在此步骤中,可以按照上文所述的原理通过修改地址指针的方式实现数据移动,而并不需要物理地执行数据拷贝操作。最后,在步骤S850中,当数据移动完成后,可以清除在步骤S830中保存的数据移动请求并且清除CLP列表的头,并且解锁。
在本发明的一个实施方式中,进一步包括:确定所述第一地址范围中的存储单元的状态;以及响应于所述存储单元的所述状态为“脏”,将所述存储单元镜像至与所述第二控制器相关联的第二存储器。
由于源CLP和目的地CLP表示被高速缓存的LUN数据,从源LUN向目的地LUN移动数据可以通过将高速缓存页面从源CLP向目的地CLP移动来完成。如上文所述,一个CLP通常包括多个高速缓存页面,并且维护关于高速缓存页面数据的扇区信息。为了方便描述,假设一个CLP仅对应于一个高速缓存页面,并且一个高速缓存页面的大小为8KB(16个扇区)。高速缓存页面中的扇区可以涉及脏(D)、有效(V)或者无效(I)状态。脏数据是指存在与高速缓存中的并且需要被冲刷至LUN中的数据。一旦被冲刷至LUN,则在高速缓存中的脏数据变为有效数据,并且由于该数据已经被冲刷至LUN因而在必要时可以被丢弃。在下文中将参见图9A、9B、10A和10B来描述数据移动过程的具体示例。
图9A示意性示出了根据本发明一个实施方式的在执行数据移动请求之前的源CLP的状态900A。
假设目标数据涉及24个扇区,并且期望在第一控制器处将这24个扇区从LUN1:LBA12移动至LUN2:LBA 12。数据移动操作将覆盖如下数据部分:CLP1的部分(LBA12-15)、CLP2的全部(LBA16-31)、以及CLP3的部分(LBA 32-35)。在附图中,“D”表示脏,“V”表示有效、并且“I”表示无效。
图9B示意性示出了根据本发明一个实施方式的在执行数据移动请求之前的目的地CLP的状态900B。其中CLP4为空,CLP5和CLP6包括数据并且状态如图9B所示。
在下文中将描述数据移动过程。高速缓存页面用于存储与LUN中的数据相关联的数据,因而可以以高速缓存页面为单位来执行数据移动。图10A示意性示出了根据本发明一个实施方式的在执行数据移动请求之后的源CLP的状态。
对于源CLP1,需要仅移动其中的一部分数据(LBA 12-15)。由于CLP1中的位于LBA0-11的其余数据为无效,并且相对应的CLP4为空,因而可以直接将页面1中的数据插入CLP4并且从CLP1中移除页面1。CLP1中的扇区状态将被更新至“IIII IIII IIII IIII”,以便指示没有页面。现在,页面1被连接至CLP4,CLP4中的扇区状态将被更新至“IIII IIII IIIIDDDD”,以便将最终的脏数据冲刷至LUN。
注意,如果CLP4具有高速缓存页面但是在LBA 0-11中不具有脏扇区,则在移动现有的页面到此CLP中之后移动页面1到CLP4中是安全的。否则,需要从页面1中拷贝扇区到CLP4的现有页面中以避免数据丢失。
数据移动涉及源CLP2中的全部的页面(LBS 16-31),因而需要删除CLP5中的当前页面5,并将页面2插入CLP5,继而从CLP2去除页面2。在CLP2中的扇区状态应当被更新至“IIII IIII IIII IIII”以指示不再存在页面。现在,页面2被连接至CLP5,并且CLP5中的扇区状态将被更新至“DDDD DDDD DDDD DDDD”。
数据移动涉及源CLP3中的部分页面(LBA 32-35)。目的地CLP6包括移动范围以外的脏扇区,因而必须将LBA 32-35的扇区拷贝至页面6的相应位置。CLP3中的扇区状态应当被更新至“IIII DDDD IIII IIII”,并且CLP6中的扇区的状态应当被更新至“DDDD DDDDDDDD IIII”
一旦已经在第一控制器处将数据从源CLP移动/拷贝至CLP,则可以向第二控制器发送消息以将数据移动应用至其相对应的CLP。在接收到消息之后,第二控制器将页面1从CLP1移动至CLP4、将页面2从CLP2移动至CLP5,并且将页面3中的前4个扇区拷贝至页面6,并且相应地更新各个CLP的扇区状态。图10B示意性示出了根据本发明一个实施方式的在执行数据移动请求之后的目的地CLP的状态。
本发明的一个实施方式中,进一步包括:将所述第一地址范围中的所述目标数据冲刷至所述真实地址范围。在上文已经参见图9A、9B、10A、10B详细描述了在存储系统的高速缓存中执行数据移动的具体情况。当已经在高速缓存中执行了数据移动之后,可以将高速缓存中的相关联部分的数据冲刷至存储系统中的存储设备。
在本发明的一个实施方式中,存储所述中介地址范围与所述真实地址范围;以及响应于将所述目标数据从所述中介地址范围移动至所述真实地址范围被中断,基于存储的所述中介地址范围与所述真实地址范围,将所述目标数据从所述中介地址范围移动至所述真实地址范围。
在此实施方式中,提供了用于在出现控制器故障时的解决方案。例如,当第一控制器重启时,如果第二控制器为激活并且具有正常的高速缓存映像,则第一控制器不必执行恢复检查,并且仅需与第二控制器同步并获取该高速缓存映像即可。如果第一控制器是唯一激活状态的控制器,则需要检查是否存在所存储的数据移动请求。如果存在,则应当解译该请求的源LUN ID、源开始LBA、目的地LUN ID、目的地开始LBA、以及数据长度。在此实施方式中,可以采用上文所述的执行数据移动请求的方式,重新执行数据移动。
由于在第一控制器重启之前可能已经移动了一部分数据,因而,需要检查各个CLP之间的数据一致性,并且按照如下原理执行恢复操作:
1.修复不一致数据,例如可以包括处理如下数据:扇区状态未被更新的源CLP或者目的地CLP;指向相同页面的源CLP和目的地CLP(此状态表示第一控制器在已经向目的地CLP插入了页面之后、并且在从源CLP移除该页面之前,出现故障);在源CLP中不存在的页面(例如,在第一控制器故障之前必须确认已经向目的地CLP插入了页面)。
2.继续执行被中断的数据移动操作:如果源CLP包括将被移动的全部页面,则将页面移动至目的地CLP并且更新两个CLP的扇区的状态;如果源CLP在其页面中包括的部分数据将被拷贝,则将数据拷贝到目的地CLP中并且更新两个CLP的扇区状态。
在本发明的一个实施方式中,进一步包括:响应于将所述第一地址范围中的所述目标数据冲刷至所述真实地址范围,解锁所述存储器中的所述源地址范围以及所述目的地地址范围。在执行完数据移动操作之后,可以将相关联的数据存储区解锁。
前面已经参考附图描述了实现本发明的方法的各个实施方式。本领域技术人员可以理解的是,上述方法既可以以软件方式实现,也可以以硬件方式实现,或者通过软件与硬件相结合的方式实现。并且,本领域技术人员可以理解,通过以软件、硬件或者软硬件相结合的方式实现上述方法中的各个步骤,可以提供一种基于相同发明构思的一种设备。即使该设备在硬件结构上与通用处理设备相同,由于其中所包含的软件的作用,使得该设备表现出区别于通用处理设备的特性,从而形成本发明的各个实施方式的设备。本发明中设备包括若干装置或模块,装置或模块被配置为执行相应步骤。本领域的所述技术人员通过阅读本说明书可以理解如何编写程序实现所述装置或模块执行的动作。由于所述设备与方法基于相同的发明构思,因此其中相同或相应的实现细节同样适用于与上述方法对应的装置或模块,由于其在上文中已经进行了详细和完整的描述,因此在下文中可能不再进行赘述。
图11示意性示出了根据本发明一个实施方式的用于管理存储系统的装置的框图1100。具体地,提供了一种用于管理存储装置,包括:写入模块,配置用于响应于接收到向存储系统写入目标数据的写入请求,将目标数据写入存储系统的中介存储区中的中介地址范围;解析模块,配置用于基于存储系统的地址映射关系,解析与写入请求相关联的目标地址范围以获得真实地址范围;以及移动模块,配置用于将目标数据从中介地址范围移动至真实地址范围。
在本发明的一个实施方式中,进一步包括:存储模块,配置用于存储中介地址范围与真实地址范围;以及恢复模块,配置用于响应于将目标数据从中介地址范围移动至真实地址范围被中断,基于存储的中介地址范围与真实地址范围,将目标数据从中介地址范围移动至真实地址范围。
在本发明的一个实施方式中,存储模块进一步配置用于存储中介地址的存储设备号、中介地址在存储设备中的开始地址、真实地址的存储设备号、真实地址在存储设备中的开始地址、以及目标数据的长度。
在本发明的一个实施方式中,移动模块进一步配置用于:在存储系统的存储器中加载中介地址范围内的目标数据,以获取目标数据在存储器中的第一地址范围;以及将存储器中的与真实地址范围相关联的地址指针,指向第一地址范围。
在本发明的一个实施方式中,存储系统包括第一控制器和第二控制器,写入请求被接收自第一控制器,以及该装置进一步包括:锁定模块,配置用于锁定存储器中的源地址范围以及目的地地址范围。
在本发明的一个实施方式中,该装置进一步包括:同步模块,配置用于确定第一地址范围中的存储单元的状态;以及响应于存储单元的状态为“脏”,将存储单元镜像至与第二控制器相关联的第二存储器。
在本发明的一个实施方式中,该装置进一步包括:将第一地址范围中的目标数据冲刷至真实地址范围。
在本发明的一个实施方式中,该装置进一步包括:冲刷模块,配置用于响应于将第一地址范围中的目标数据冲刷至真实地址范围,解锁存储器中的源地址范围以及目的地地址范围。
在本发明的一个实施方式中,解析模块进一步配置用于:响应于目标数据跨越存储系统中的多个存储设备,将目标地址范围解析为多个真实地址范围;以及移动模块进一步配置用于针对多个真实地址范围中的每个真实地址范围,将目标数据中的与每个真实地址范围相对应的部分移动至每个真实地址范围。
在本发明的一个实施方式中,该装置进一步包括:反馈模块,配置用于响应于将目标数据写入存储系统的中介存储区中的中介地址范围,返回对写入请求的响应信号以指示写入请求完成。
在本发明的一个实施方式中,提供了一种用于管理存储系统,包括:一个或者多个处理器;耦合至一个或者多个处理器中的至少一个处理器的存储器;在存储器中存储的计算机程序指令,当由至少一个处理器执行计算机程序指令时,使得系统执行用于管理存储系统的方法,方法包括:响应于接收到向存储系统写入目标数据的写入请求,将目标数据写入存储系统的中介存储区中的中介地址范围;基于存储系统的地址映射关系,解析与写入请求相关联的目标地址范围以获得真实地址范围;以及将目标数据从中介地址范围移动至真实地址范围。
在本发明的一个实施方式中,方法进一步包括:存储中介地址范围与真实地址范围;以及响应于将目标数据从中介地址范围移动至真实地址范围被中断,基于存储的中介地址范围与真实地址范围,将目标数据从中介地址范围移动至真实地址范围。
在本发明的一个实施方式中,存储中介地址范围与真实地址范围包括:存储中介地址的存储设备号、中介地址在存储设备中的开始地址、真实地址的存储设备号、真实地址在存储设备中的开始地址、以及目标数据的长度。
在本发明的一个实施方式中,将目标数据从中介地址范围移动至真实地址范围包括:在存储系统的存储器中加载中介地址范围内的目标数据,以获取目标数据在存储器中的第一地址范围;以及将存储器中的与真实地址范围相关联的地址指针,指向第一地址范围。
在本发明的一个实施方式中,存储系统包括第一控制器和第二控制器,写入请求被接收自第一控制器,以及方法进一步包括:锁定存储器中的源地址范围以及目的地地址范围。
在本发明的一个实施方式中,方法进一步包括:确定第一地址范围中的存储单元的状态;以及响应于存储单元的状态为“脏”,将存储单元镜像至与第二控制器相关联的第二存储器。
在本发明的一个实施方式中,方法进一步包括:将第一地址范围中的目标数据冲刷至真实地址范围。
在本发明的一个实施方式中,方法进一步包括:响应于将第一地址范围中的目标数据冲刷至真实地址范围,解锁存储器中的源地址范围以及目的地地址范围。
在本发明的一个实施方式中,方法进一步包括:响应于目标数据跨越存储系统中的多个存储设备,将目标地址范围解析为多个真实地址范围;以及将目标数据从中介地址范围移动至真实地址范围包括:针对多个真实地址范围中的每个真实地址范围,将目标数据中的与每个真实地址范围相对应的部分移动至每个真实地址范围。
在本发明的一个实施方式中,方法进一步包括:响应于将目标数据写入存储系统的中介存储区中的中介地址范围,返回对写入请求的响应信号以指示写入请求完成。
在本发明的一个实施方式中,提供了一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行根据上文所述的方法的步骤。
附图中的流程图和框图显示了根据本发明的多个实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施方式,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施方式。在不偏离所说明的各实施方式的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施方式的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实施方式。
Claims (21)
1.一种用于管理存储系统的方法,包括:
响应于接收到向所述存储系统写入目标数据的写入请求,将所述目标数据写入所述存储系统的中介存储区中的中介地址范围;
基于所述存储系统的地址映射关系,解析与所述写入请求相关联的目标地址范围以获得真实地址范围;以及
将所述目标数据从所述中介地址范围移动至所述真实地址范围。
2.根据权利要求1所述的方法,进一步包括:
存储所述中介地址范围与所述真实地址范围;以及
响应于将所述目标数据从所述中介地址范围移动至所述真实地址范围被中断,基于存储的所述中介地址范围与所述真实地址范围,将所述目标数据从所述中介地址范围移动至所述真实地址范围。
3.根据权利要求2所述的方法,其中存储所述中介地址范围与所述真实地址范围包括:
存储所述中介地址的存储设备号、所述中介地址在所述存储设备中的开始地址、所述真实地址的存储设备号、所述真实地址在所述存储设备中的开始地址、以及所述目标数据的长度。
4.根据权利要求1-3中的任一项所述的方法,其中将所述目标数据从所述中介地址范围移动至所述真实地址范围包括:
在所述存储系统的存储器中加载所述中介地址范围内的所述目标数据,以获取所述目标数据在所述存储器中的第一地址范围;以及
将所述存储器中的与所述真实地址范围相关联的地址指针,指向所述第一地址范围。
5.根据权利要求4所述的方法,其中所述存储系统包括第一控制器和第二控制器,所述写入请求被接收自所述第一控制器,以及所述方法进一步包括:锁定所述存储器中的所述源地址范围以及所述目的地地址范围。
6.根据权利要求5的方法,进一步包括:
确定所述第一地址范围中的存储单元的状态;以及
响应于所述存储单元的所述状态为“脏”,将所述存储单元镜像至与所述第二控制器相关联的第二存储器。
7.根据权利要求4所述的方法,进一步包括:将所述第一地址范围中的所述目标数据冲刷至所述真实地址范围。
8.根据权利要求7所述的方法,进一步包括:
响应于将所述第一地址范围中的所述目标数据冲刷至所述真实地址范围,解锁所述存储器中的所述源地址范围以及所述目的地地址范围。
9.根据权利要求1-3中的任一项所述的方法,进一步包括:响应于所述目标数据跨越所述存储系统中的多个存储设备,将所述目标地址范围解析为多个真实地址范围;以及
将所述目标数据从所述中介地址范围移动至所述真实地址范围包括:针对所述多个真实地址范围中的每个真实地址范围,将所述目标数据中的与所述每个真实地址范围相对应的部分移动至所述每个真实地址范围。
10.根据权利要求1-3中的任一项所述的方法,进一步包括:
响应于将所述目标数据写入所述存储系统的中介存储区中的中介地址范围,返回对所述写入请求的响应信号以指示所述写入请求完成。
11.一种用于管理存储系统,包括:
一个或者多个处理器;
耦合至所述一个或者多个处理器中的至少一个处理器的存储器;
在所述存储器中存储的计算机程序指令,当由所述至少一个处理器执行所述计算机程序指令时,使得所述系统执行用于管理存储系统的方法,所述方法包括:
响应于接收到向所述存储系统写入目标数据的写入请求,将所述目标数据写入所述存储系统的中介存储区中的中介地址范围;
基于所述存储系统的地址映射关系,解析与所述写入请求相关联的目标地址范围以获得真实地址范围;以及
将所述目标数据从所述中介地址范围移动至所述真实地址范围。
12.根据权利要求11所述的系统,其中所述方法进一步包括:
存储所述中介地址范围与所述真实地址范围;以及
响应于将所述目标数据从所述中介地址范围移动至所述真实地址范围被中断,基于存储的所述中介地址范围与所述真实地址范围,将所述目标数据从所述中介地址范围移动至所述真实地址范围。
13.根据权利要求12所述的系统,其中存储所述中介地址范围与所述真实地址范围包括:
存储所述中介地址的存储设备号、所述中介地址在所述存储设备中的开始地址、所述真实地址的存储设备号、所述真实地址在所述存储设备中的开始地址、以及所述目标数据的长度。
14.根据权利要求11-13中的任一项所述的系统,其中将所述目标数据从所述中介地址范围移动至所述真实地址范围包括:
在所述存储系统的存储器中加载所述中介地址范围内的所述目标数据,以获取所述目标数据在所述存储器中的第一地址范围;以及
将所述存储器中的与所述真实地址范围相关联的地址指针,指向所述第一地址范围。
15.根据权利要求14所述的系统,其中所述存储系统包括第一控制器和第二控制器,所述写入请求被接收自所述第一控制器,以及所述方法进一步包括:锁定所述存储器中的所述源地址范围以及所述目的地地址范围。
16.根据权利要求15的系统,其中所述方法进一步包括:
确定所述第一地址范围中的存储单元的状态;以及
响应于所述存储单元的所述状态为“脏”,将所述存储单元镜像至与所述第二控制器相关联的第二存储器。
17.根据权利要求14所述的系统,其中所述方法进一步包括:将所述第一地址范围中的所述目标数据冲刷至所述真实地址范围。
18.根据权利要求17所述的系统,其中所述方法进一步包括:
响应于将所述第一地址范围中的所述目标数据冲刷至所述真实地址范围,解锁所述存储器中的所述源地址范围以及所述目的地地址范围。
19.根据权利要求11-13中的任一项所述的系统,其中所述方法进一步包括:响应于所述目标数据跨越所述存储系统中的多个存储设备,将所述目标地址范围解析为多个真实地址范围;以及
将所述目标数据从所述中介地址范围移动至所述真实地址范围包括:针对所述多个真实地址范围中的每个真实地址范围,将所述目标数据中的与所述每个真实地址范围相对应的部分移动至所述每个真实地址范围。
20.根据权利要求11-13中的任一项所述的系统,其中所述方法进一步包括:
响应于将所述目标数据写入所述存储系统的中介存储区中的中介地址范围,返回对所述写入请求的响应信号以指示所述写入请求完成。
21.一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行根据权利要求1至10中的任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610459022.3A CN107526535B (zh) | 2016-06-22 | 2016-06-22 | 用于管理存储系统的方法和系统 |
US15/630,912 US10705768B2 (en) | 2016-06-22 | 2017-06-22 | Method and system for managing storage using an intermediate storage area |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610459022.3A CN107526535B (zh) | 2016-06-22 | 2016-06-22 | 用于管理存储系统的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107526535A true CN107526535A (zh) | 2017-12-29 |
CN107526535B CN107526535B (zh) | 2020-07-10 |
Family
ID=60677576
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610459022.3A Active CN107526535B (zh) | 2016-06-22 | 2016-06-22 | 用于管理存储系统的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10705768B2 (zh) |
CN (1) | CN107526535B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992526A (zh) * | 2019-04-10 | 2019-07-09 | 苏州浪潮智能科技有限公司 | 一种读写管理方法以及相关装置 |
CN110162376A (zh) * | 2018-02-12 | 2019-08-23 | 杭州宏杉科技股份有限公司 | 一种数据读写方法及装置 |
CN113672162A (zh) * | 2020-05-14 | 2021-11-19 | 杭州萤石软件有限公司 | 数据存储方法、装置及设备 |
WO2022116067A1 (zh) * | 2020-12-03 | 2022-06-09 | 华为技术有限公司 | 闪存的数据处理方法和数据处理装置 |
CN116107516A (zh) * | 2023-04-10 | 2023-05-12 | 苏州浪潮智能科技有限公司 | 数据写入方法、装置、固态硬盘、电子设备及存储介质 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108388524A (zh) * | 2016-12-21 | 2018-08-10 | 伊姆西Ip控股有限责任公司 | 用于缓存数据的方法和设备 |
CN108701004A (zh) * | 2017-01-25 | 2018-10-23 | 华为技术有限公司 | 一种数据处理的系统、方法及对应装置 |
JP6747753B2 (ja) * | 2017-10-25 | 2020-08-26 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | アクティブ/アクティブ記憶システムおよびアドレス割当方法 |
US10936451B2 (en) * | 2018-10-24 | 2021-03-02 | EMC IP Holding Company LLC | Concurrent remote IO processing for synchronous replication |
US11221925B2 (en) | 2019-11-08 | 2022-01-11 | International Business Machines Corporation | Continuous storage of data in a system with limited storage capacity |
US20230259294A1 (en) * | 2022-02-11 | 2023-08-17 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for copy destination atomicity in devices |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1764904A (zh) * | 2003-03-25 | 2006-04-26 | 伊姆西公司 | 虚拟排序的写 |
US20080065810A1 (en) * | 2006-09-08 | 2008-03-13 | Carol Spanel | Assisted trace facility to improve cpu cache performance |
US20100174853A1 (en) * | 2009-01-08 | 2010-07-08 | Samsung Electronics Co., Ltd. | User device including flash and random write cache and method writing data |
CN102667737A (zh) * | 2009-12-21 | 2012-09-12 | 索尼公司 | 缓冲存储器和缓冲存储器控制单元 |
CN103026346A (zh) * | 2010-07-27 | 2013-04-03 | 国际商业机器公司 | 包括固态存储器设备的存储系统中的逻辑到物理地址映射 |
US9047200B2 (en) * | 2012-01-31 | 2015-06-02 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Dynamic redundancy mapping of cache data in flash-based caching systems |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003122622A (ja) * | 2001-10-09 | 2003-04-25 | Honda Motor Co Ltd | データの受信および書き込みを制御する車両制御装置 |
KR100607992B1 (ko) * | 2004-07-09 | 2006-08-02 | 삼성전자주식회사 | 낸드 플래시 메모리의 동작 상태의 감시를 통해 시스템을부팅하기 위한 방법 및 시스템 |
US8327103B1 (en) | 2010-06-28 | 2012-12-04 | Emc Corporation | Scheduling data relocation activities using configurable fairness criteria |
US8327080B1 (en) | 2010-09-28 | 2012-12-04 | Emc Corporation | Write-back cache protection |
US8798262B1 (en) | 2010-12-23 | 2014-08-05 | Emc Corporation | Preserving LBA information between layers of a storage I/O stack for LBA-dependent encryption |
US10146454B1 (en) | 2016-06-30 | 2018-12-04 | EMC IP Holding Company LLC | Techniques for performing data storage copy operations in an integrated manner |
US10061540B1 (en) | 2016-06-30 | 2018-08-28 | EMC IP Holding Company LLC | Pairing of data storage requests |
-
2016
- 2016-06-22 CN CN201610459022.3A patent/CN107526535B/zh active Active
-
2017
- 2017-06-22 US US15/630,912 patent/US10705768B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1764904A (zh) * | 2003-03-25 | 2006-04-26 | 伊姆西公司 | 虚拟排序的写 |
US20080065810A1 (en) * | 2006-09-08 | 2008-03-13 | Carol Spanel | Assisted trace facility to improve cpu cache performance |
US20100174853A1 (en) * | 2009-01-08 | 2010-07-08 | Samsung Electronics Co., Ltd. | User device including flash and random write cache and method writing data |
CN102667737A (zh) * | 2009-12-21 | 2012-09-12 | 索尼公司 | 缓冲存储器和缓冲存储器控制单元 |
CN103026346A (zh) * | 2010-07-27 | 2013-04-03 | 国际商业机器公司 | 包括固态存储器设备的存储系统中的逻辑到物理地址映射 |
US9047200B2 (en) * | 2012-01-31 | 2015-06-02 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Dynamic redundancy mapping of cache data in flash-based caching systems |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110162376A (zh) * | 2018-02-12 | 2019-08-23 | 杭州宏杉科技股份有限公司 | 一种数据读写方法及装置 |
CN109992526A (zh) * | 2019-04-10 | 2019-07-09 | 苏州浪潮智能科技有限公司 | 一种读写管理方法以及相关装置 |
CN113672162A (zh) * | 2020-05-14 | 2021-11-19 | 杭州萤石软件有限公司 | 数据存储方法、装置及设备 |
WO2022116067A1 (zh) * | 2020-12-03 | 2022-06-09 | 华为技术有限公司 | 闪存的数据处理方法和数据处理装置 |
CN116107516A (zh) * | 2023-04-10 | 2023-05-12 | 苏州浪潮智能科技有限公司 | 数据写入方法、装置、固态硬盘、电子设备及存储介质 |
CN116107516B (zh) * | 2023-04-10 | 2023-07-11 | 苏州浪潮智能科技有限公司 | 数据写入方法、装置、固态硬盘、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US10705768B2 (en) | 2020-07-07 |
US20170371597A1 (en) | 2017-12-28 |
CN107526535B (zh) | 2020-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107526535A (zh) | 用于管理存储系统的方法和系统 | |
US10698818B2 (en) | Storage controller caching using symmetric storage class memory devices | |
CN107870730A (zh) | 用于管理存储系统的方法和系统 | |
JP5870213B2 (ja) | ストレージシステム及びストレージシステムにおけるデータ転送制御方法 | |
US11775799B2 (en) | Runtime extension for neural network training with heterogeneous memory | |
CN107515726A (zh) | 用于管理存储设备的方法和系统 | |
US10852966B1 (en) | System and method for creating mapped RAID group during expansion of extent pool | |
CN107526537A (zh) | 用于锁定存储系统中的存储区域的方法和系统 | |
CN109725831A (zh) | 管理存储系统的方法、系统和计算机程序产品 | |
TWI456389B (zh) | 儲存虛擬化系統中更新實體儲存裝置控制程式之方法及用此方法之儲存虛擬化控制器與系統 | |
US10481802B1 (en) | Balancing Mapped RAID background I/O with user I/O via dynamically changing background credits on Mapped RAID system and method | |
CN108228084A (zh) | 用于管理存储系统的方法和设备 | |
CN112912851B (zh) | 用于寻址的系统和方法、以及媒体控制器 | |
CN110196687B (zh) | 数据读写方法、装置、电子设备 | |
US20170277450A1 (en) | Lockless parity management in a distributed data storage system | |
US20160085445A1 (en) | Method operating raid system and data storage systems using write command log | |
TW201443774A (zh) | 冗餘之次要儲存快取之重建 | |
US10235082B1 (en) | System and method for improving extent pool I/O performance by introducing disk level credits on mapped RAID | |
KR20230004394A (ko) | 공유 메모리 액세스 제어 방법, 장치, 전자 기기 및 자율 주행 차량 | |
CN101770413A (zh) | 冗余磁盘阵列重建的方法及设备 | |
US11379326B2 (en) | Data access method, apparatus and computer program product | |
CN109213428A (zh) | 用于管理存储系统的方法和设备 | |
CN108228085A (zh) | 用于管理存储系统的方法和设备 | |
US9348525B2 (en) | Systems and methods for a storage array-managed initiator cache | |
WO2016139787A1 (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200420 Address after: Massachusetts, USA Applicant after: EMC IP Holding Company LLC Address before: Ma Sazhusaizhou Applicant before: EMC Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |