CN104956311A - 存储系统以及存储控制方法 - Google Patents
存储系统以及存储控制方法 Download PDFInfo
- Publication number
- CN104956311A CN104956311A CN201380071895.1A CN201380071895A CN104956311A CN 104956311 A CN104956311 A CN 104956311A CN 201380071895 A CN201380071895 A CN 201380071895A CN 104956311 A CN104956311 A CN 104956311A
- Authority
- CN
- China
- Prior art keywords
- data
- buffer memory
- write
- controller
- interruption status
- 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
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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
-
- 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
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/2094—Redundant storage or storage space
-
- 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/2097—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 maintaining the standby controller/processing unit updated
-
- 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
-
- 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/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- 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/313—In storage device
Abstract
存储系统具有:第一控制器,其具有第一缓冲区域和第一缓存区域;以及第二控制器,其具有第二缓冲区域和第二缓存区域。第一控制器将遵从于来自主机计算机的写入请求的写入数据不经由第一缓冲区域而保存到第一缓存区域,将保存到第一缓存区域的写入数据不经由第二缓冲区域而传送到第二缓存区域。第一控制器根据第一写入数据向第一缓存区域的保存是否成功或写入数据从第一缓存区域向第二控制器的传送是否成功,来决定将第一缓存区域和第二缓存区域中的哪一个设为复制源而将哪一个设为复制目的地,通过从复制源向复制目的地复制数据,来恢复与传送失败有关的区域内的数据。
Description
技术领域
本发明涉及将来自主机的写入数据写入到存储系统的缓存区域中的技术。
背景技术
已知一种存储系统,在从主机计算机接收写入请求并将该写入请求所附带的写入数据保存到缓存存储区域(以下,称为缓存区域)时,对主机计算机报告写入结束。另外,还已知一种存储系统,其通过对保存到缓存区域的写入数据进行多重化(通常,双重化)来提高写入数据相对于电源丧失等故障的保护。
在专利文献1中,在对来自主机计算机的写入数据进行双重化时,通过消除具有缓存区域的多个控制器之间的排他控制,来不会使性能降低地实现数据保护。
在专利文献2中,在附加奇偶校验位(parity)等冗余数据来保存用户数据的存储系统中,将来自主机计算机的更新数据(写入数据)保存到与更新前的数据(旧数据)不同的缓存区域,由此减少在生成冗余数据时向存储装置的访问,从而改善了存储系统的处理效率。
在先技术文献
专利文献
专利文献1:日本特开平9-146842号公报
专利文献2:日本特开平7-328072号公报
发明内容
作为将来自主机计算机的写入数据保存到存储系统的缓存区域的数据传送方式,存在以下方式(A)和(B)。
(A)在存储系统的FE-I/F(前端(front end)的通信接口设备)所具有的缓冲区域中暂时保存来自主机计算机的写入数据,在保存的写入数据成为一定数据量的情况下,将写入数据集中地传送至缓存区域。
(B)不经由FE-I/F所具有的缓冲区域地,在存储系统的缓存区域中保存来自主机计算机的写入数据。
通常,中型等级(midrange class)的一部分和高端等级(high endclass)的存储系统中,通过集中传送写入数据来减少存储系统内部的数据传送路径的传送效率下降,因此多使用方式(A)。在中型等级的存储系统中,以获得高功能、开发容易化为目的,从高端等级的存储系统中挪用微型程序,另一方面,以低成本化为目的而硬件的简单化、与服务器等之间的共通化不断发展。作为其一个环节,以往将物理地分离的保存用户数据的缓存区域以及使用于数据传送的缓冲区域汇集到与处理器直接进行连接的存储器。
在具有这种存储器的硬件结构中,在通过经由缓冲区域的方式(A)来执行主机计算机与存储系统之间的数据传送的情况下,汇集后的存储器中的数据输入输出量增加,从而有时产生性能下降。因此,考虑期望通过不经由缓冲区域的方式(B)来执行主机计算机与存储系统之间的数据传送。
另一方面,在从主机计算机接收写入数据的过程中,有时由于主机计算机与存储系统之间的故障等,来自主机计算机的写入数据的传送中断。在该情况下,存储系统对来自主机计算机的写入请求响应错误,期待基于主机计算机进行的写入请求的重试,但是在主机计算机与存储系统之间的故障原因为路径的断线等的情况下,难以进行来自主机计算机的写入请求的重试。
此时,在经由缓冲区域的方式(A)的情况下,即使写入数据的传送中断,丢弃该缓冲区域的数据即可。但是,在不经由缓冲区域的方式(B)的情况下,在存储系统的缓存区域中有可能混合存在传送中断的写入数据的一部分和写入数据被写入之前的数据。
因此,在方式(B)中,以下成为课题:在接受来自主机计算机的写入数据的过程中,即使在由于难以进行来自主机计算机的写入请求的重试这样的故障导致写入数据的传送中断的情况下,也正确地维持在存储系统的缓存区域内保存的用户数据。
存储系统具有:存储设备组,其由一个以上的存储设备构成;第一控制器,其与存储设备组和主机计算机连接,具有第一缓冲区域和第一缓存区域;以及第二控制器,其与存储设备组和主机计算机连接,具有第二缓冲区域和第二缓存区域。第一控制器从主机计算机接收写入请求,将遵从于写入请求的写入数据不经由第一缓冲区域地保存到第一缓存区域,为了将保存到第一缓存区域的写入数据不经由第二缓冲区域地保存到第二缓存区域而将其传送到第二控制器,将第一缓存区域内的写入数据写入到存储设备组。第一控制器管理第一缓存子区域的状态是否为第一写入数据向第一缓存子区域的保存成功的情况下被清除的第一中断状态,第一控制器或第二控制器管理第二缓存子区域的状态是否为写入数据从第一缓存子区域向第二缓存子区域的传送成功的情况下被清除的第二中断状态。第一控制器进行中断状态恢复处理。中断恢复处理包括判断第一缓存子区域是否为第一中断状态且第二缓存子区域是否为第二中断状态。另外,中断恢复处理还包括以下内容:在第一缓存子区域为第一中断状态且第二缓存子区域为第二中断状态的情况下,将第一缓存子区域设定为复制目的地,将第二缓存子区域设定为复制源,从复制源向复制目的地复制数据,并且对分别与第一缓存子区域和第二缓存子区域对应的第一中断状态和第二中断状态进行清除。另外,中断恢复处理还包括以下内容:在第一缓存子区域并非为第一中断状态且第二缓存子区域为第二中断状态的情况下,将第二缓存子区域设定为复制目的地,将第一缓存子区域设定为复制源,从复制源向复制目的地复制数据,并对与第二缓存子区域对应的第二中断状态进行清除。
发明效果
在将来自主机计算机的写入数据不经由缓冲区域地传送至缓存区域的方式中,即使在从主机计算机接收写入数据的过程中该写入数据的传送中断的情况下,也能够正确地维持在缓存区域内保存的用户数据。
附图说明
图1表示实施例的概要。
图2表示实施例的计算机系统的一例。
图3表示实施例的缓冲区域管理表的一例。
图4表示实施例的VOL管理表的一例。
图5表示实施例的缓存目录表(cache directory table)的一例。
图6表示实施例的CS区域管理表的一例。
图7表示实施例的缓存分配管理表的一例。
图8表示实施例的队列头(queue header)的一例。
图9表示实施例的缓冲区域的管理的一例。
图10表示实施例的缓存区域的管理的一例。
图11表示实施例的读取直接传送的一例。
图12表示实施例的读取两级传送的一例。
图13表示实施例的写入两级传送的一例。
图14表示实施例的写入直接传送的一例。
图15表示实施例的写入传送方式的特征比较的一例。
图16表示实施例的读取处理的流程的一例的一部分。
图17表示实施例的读取处理的流程的一例的其余部分。
图18表示实施例的写入处理的流程的一例的一部分。
图19表示实施例的写入处理的流程的一例的另一部分。
图20表示实施例的写入处理的流程的一例的其余部分。
图21表示实施例的中断状态恢复处理的一例。
具体实施方式
以下,说明实施例。
在以下说明中,有时以“×××表”的形式来说明信息,但是信息也可以通过任一种数据结构来表现。即,为了表示信息不依赖于数据结构这一情况,能够将“×××表”称为“×××信息”。
另外,在以下说明中,有时将“程序”作为主语来对处理进行说明,但是程序是通过由控制设备所具有的处理器(例如CPU(CentralProcessing Unit:中央处理器))执行,而适当地使用存储资源(例如存储器)和/或通信接口设备(例如通信端口)来进行所确定的处理,因此也可以将处理的主语设为处理器、具有该处理器的控制器或装置(例如存储系统)。也可以通过控制器所具有的硬件电路来进行处理器所进行的处理的一部分或全部。也可以将计算机程序从程序源安装到控制设备。程序源例如也可以是程序分发服务器或存储介质。
另外,在以下说明中,在区别说明同类要素的情况下,有时代替该要素的附图标记,而使用分配给该要素的标识符(例如编号)。例如,在不特别区分控制器地说明的情况下,记载为控制器22,在区别说明各控制器的情况下,有时记载为控制器#0和#1。
另外,在以下说明中,作为各种对象(例如,VOL)的识别信息,使用编号或名称等,但是这些也能够相互取代或也可以使用其他种类的识别信息。
另外,以下说明中的术语的含义如下。
(*)“VOL”为逻辑卷的简称,是逻辑存储设备。VOL可以是实体的VOL(RVOL),也可以是虚拟的VOL(VVOL)。另外,VOL也可以是向与提供该VOL的存储系统连接的外部装置(例如主机计算机)提供的在线VOL以及不向外部装置提供的(无法从外部装置识别)离线VOL。
(*)“RVOL”为基于具有该RVOL的存储系统所具有的物理性存储资源(例如,由多个PDEV构成的RAID(Redundant Array ofIndependent(or IneXpensive)Disks:独立(或廉价)磁盘冗余阵列)组)的VOL。
(*)“RG”为RAID组的简称。
(*)作为“VVOL”,例如可以是基于与具有该VVOL的存储系统连接的外部存储系统的存储资源(例如VOL)且遵从于存储虚拟化技术的VOL即外部连接VOL(EVOL)、由多个虚拟页(虚拟存储区域)构成且遵从于容量虚拟化技术(典型地为Thin Provisioning:自动精简配置)的VOL(TPVOL)以及作为原VOL的快照(snapshot)而提供的快照VOL。TPVOL典型地为在线VOL。快照VOL也可以是RVOL。
(*)“PDEV”为非易失性的物理存储设备的简称。也可以由多个PDEV构成多个RAID组。RAID组也可以称为奇偶校验组(paritygroup)。
(*)“池”为逻辑存储区域(例如多个池VOL的集合),也可以分别按用途来准备。例如,作为池可以是TP池和快照池。TP池为由多个实页(实体存储区域)构成的存储区域。也可以从TP池对TPVOL的虚拟页分配实页。快照池也可以是保存从原VOL转移来的数据的存储区域。池(典型地为TP池)也可以具有性能(例如I/O性能)不同的多个层级。各层级也可以由I/O性能为相同程度的一个或多个池VOL构成。
(*)“池VOL”是成为池的构成要素的VOL。池VOL可以是RVOL也可以是EVOL。池VOL典型地为离线VOL。
(*)缓冲区域由多个缓冲子区域构成。从缓冲区域以缓冲子区域单位来确保区域。以下,将缓冲子区域记载为“BS区域”。
(*)缓存区域(缓存存储区域)由多个缓存子区域构成。从缓存区域以缓存子区域单位来确保区域。以下,将缓存子区域记载为“CS区域”。
然后,首先,说明实施例的概要。
图1示出实施例的概要。
主机计算机1(#0、#1)经由通信网络11与存储系统2连接。为了确保数据的冗余性,在存储系统2中存在冗余化后的控制器22(双重化的控制器#0和#1)。控制器#0、#1彼此相互连接。
各控制器22(#0、#1)具有FE-I/F210(#0、#1)、CPU230(#0、#1)以及存储器240(#0、#1)。在存储器240中存在缓冲区域242(#0、#1)和缓存区域244(#0、#1)。缓冲区域242为暂时保存对缓存区域244进行输入输出的数据的存储区域。从缓冲区域242读出的数据被从缓冲区域242删除。另一方面,缓存区域244为暂时保存对PDEV(RG)进行输入输出的数据的存储区域。虽说是从缓存区域244读出了数据,然而也与缓冲区域242不同地,读出的数据不一定必须从缓存区域244删除。缓冲区域242和缓存区域244可以分散至不同的存储器,但是在本实施例中,在存储器240中汇集了缓冲区域242和缓存区域244。在缓存区域244中,有时作为写入从PDEV(RG)读出的数据的区域而确保读取面41(41a),或者作为写入用于写入PDEV(RG)的数据的区域而确保写入面42(42a、42b)。在本实施例的说明中,在没有特别说明的情况下,读取面或写入面均为存在于缓存区域244的区域(典型地为CS区域)。
另外,在以下说明中,设为存在以下那样的前提条件。
(1)在控制器#0的缓存区域#0内保存的数据(后述的数据A)被复制到控制器#1的缓存区域#1。
(2)在FE-I/F 210中,不存在能够在写入时和读取时积极地利用的缓冲区域。因此,从主机计算机1发送的写入数据经由FE-I/F 210被发送至存储器244的缓存区域244。此时,在该存储器244中的缓冲区域242中不保存写入数据。
在以下说明中,将不经由缓冲区域而将写入数据传送至缓存区域244这一情况称为“写入直接传送”。以下,说明在执行写入直接传送时存储系统2从主机计算机1接收到读取请求或写入请求的情况下进行的处理。
在控制器#0从主机计算机#0接收到写入请求的情况下,CPU#0从缓存区域#0中确保写入数据的保存区域(写入面42a),另外,经由控制器#1,从缓存区域#1中确保保存到写入面42a的数据的复制目的地即保存区域(写入面42b)。
之后,控制器#0的CPU#0经由FE-I/F#0在写入面42a上保存写入数据。
存在如下情况:在接收到写入请求的情况下,在写入面42a上已经存在基于其他写入请求(例如,基于指定了同一区域(例如VOL中的区域)的过去的写入请求)的写入数据(以下称为数据A),且数据A为(未生成奇偶校验位的)脏数据(dirty data)。脏数据是指未转储(destage)到存储设备的数据(不存在于存储设备的数据)。
如果在控制器#0正在从主机计算机#0接收新的写入数据(数据B)的过程中,网络11等路径发生故障,则FE-I/F#0会破坏写入面42a中的脏数据(数据A)(1-1)。也就是说,由数据B覆盖的数据A成为仅使数据A的一部分通过数据B的一部分覆盖而得到的其他数据(以下,称为数据C)。由于未生成与数据A有关的奇偶校验位,因此无法恢复数据A。
当在脏数据A被数据B破坏的状态下,控制器#1从主机计算机#1接收到将数据A的写入目的地区域设为读取源区域的读取请求时,控制器#1的CPU#1从写入面42b将脏数据A读取到缓冲区域#1,并将其与读取面41a的净数据A统合而从缓冲区域#1将数据A传送至主机计算机#1(1-2)。此外,在读取请求的地址范围的全部数据存在于写入面42b的情况下,进行从写入面42b直接向主机#1传送的读取直接传送。
在网络11等路径的故障恢复之后,当在脏数据(数据A)被破坏的状态下,控制器#0从主机计算机#0接收到写入请求时,CPU#0在执行写入请求之前,使用在控制器#1的写入面42b中保存的数据A(未被破坏的脏数据A),将写入面42a的数据C恢复为数据A(即,用写入面42b的数据A来覆盖写入面42a的数据C)(1-3)。
此时,在CPU#0利用在CPU#1中保存于写入面42b中的数据A而覆盖数据C之后,CPU#0对在缓存区域#0保存的数据A执行该写入请求。
通过以上处理,在执行写入直接传送时,也将来自主机计算机1的读取/写入请求,根据在缓存区域244内保存的数据的状态,在控制器22之间交换数据,由此能够维持对来自主机计算机1的数据的访问。
以上为本实施例的概要。以下,详细说明本实施例。
图2示出实施例的计算机系统的一例。
计算机系统具有主机计算机1、管理终端12、维护终端23以及存储系统2。
主机计算机1、管理终端12以及维护终端23经由网络11(例如SAN(Storage Area Network:存储区域网络))与存储系统2的FE-I/F210连接。
存储系统2具有存储控制装置21和存储设备单元20。存储控制装置21具有控制器22。控制器22具有通信接口、存储设备以及与这些通信接口和存储设备连接的处理器。作为通信接口,例如具有FE-I/F(Front End Inter/Face:前端接口)210和BE-I/F(Back EndInter/Face:后端接口)220。作为存储设备,例如具有存储器240。作为处理器,例如具有CPU(Central Processing Unit:中央处理器)230。此外,在图示出的示例中,设为各控制器22具备一个存储器240的结构,但是也可以设为各控制器22具备多个存储器240的结构。
以确保冗余性的目的,存储控制装置21具备两台控制器22(控制器#0、#1)。控制器#0和#1相互连接。为了提高存储系统2的可用性,也可以按每个控制器22而准备专用电源,使用该专用电源对各控制器22进行供电。
FE-I/F210为用于与存在于主机计算机1等的前端处的外部设备进行通信的接口设备。BE-I/F220为用于使控制器22与存储设备单元20进行通信的接口设备。
存储器240由程序区域241、缓冲区域242、管理表区域243以及缓存区域244构成。此外,两个控制器22所具有的存储器240可以是非易失性存储器也可以是易失性存储器,但是保存脏数据的缓存区域最好通过备用电源等而非易失化。
在程序区域241中保存读取程序50、写入程序51以及数据传送中断状态恢复程序52等各种控制程序。
缓冲区域242是在不进行后述的读取直接传送和写入直接传送的情况下在控制器22之间进行数据传送时使用的区域。
在管理表区域243中保存各种管理表。作为管理表,存在缓冲区域管理表30、VOL管理表31、缓存目录表32、CS区域管理表33、缓存分配管理表34以及队列头35。在后文中详细说明这些管理表。此外,在本实施例中,缓存区域244由多个CS区域构成。
缓存区域244为对从存储设备单元20向主机计算机1发送的读取数据、从主机计算机1向存储设备单元20发送的写入数据进行缓存的区域。
CPU230通过执行在存储器240中保存的程序来实现各种功能。在缓存区域244中暂时保存向存储设备单元20写入的数据以及从存储设备单元20读取的数据。
存储设备单元20具有多个PDEV200。PDEV可以为HDD(HardDisk Drive:硬盘驱动器),但是也可以是其他种类的存储设备(非易失性存储设备)、例如SSD(Solid State Device:固态元件)那样的FM(Flash Memory:闪存)设备。存储设备单元20也可以具有不同种类的PDEV。另外,也可以由RG构成多个同种的PDEV。在RG中,按照规定的RAID水平来保存数据。以下,设为在线VOL中所保存的数据最终被保存到RG。
当控制器22从主机计算机1接收写入数据时,对由FE-I/F210接收到的写入数据附加保证码。将附加了保证码的数据保存到RG。在传送读取数据时,通过CPU230检查附加到读取数据的保证码。保证码可以由表示数据的保存位置的信息(VOL编号、VOL内的地址等)、确认数据的一贯性的信息(CRC(Cyclic Redundancy Check:循环冗余校验)等)构成。
图3示出实施例的缓冲区域管理表的一例。
缓冲区域管理表30为用于管理BS区域的分配的表。缓冲区域管理表30具有分配大小301、CPU分配信息302、分配位图303以及BS区域地址304。BS区域地址304在每个BS区域中均存在。
分配大小301表示BS区域的大小。
CPU分配信息302表示由哪一个CPU230来使用缓冲区域242的哪一范围(哪一个BS区域)。CPU分配信息302也可以是缓冲区域242内的区域范围(一个以上的BS区域地址)与CPU230的对应关系。也就是说,也可以预先按每个BS区域来决定所使用的CPU230。通过预先决定这种对应关系,能够期望减少伴随向CPU230分配BS区域或BS区域的释放而产生的负荷(向缓冲区域242的竞争的负载)。另外,在本实施例中,从缓冲区域242分配BS区域这一处理通常通过具有该缓冲区域242的控制器22内的CPU230来进行,但是关于为了保存从其他控制器22传送过来的数据而从缓冲区域242分配BS区域这一处理,通过该其他控制器22内的CPU来进行。也就是说,在本实施例中,可知在CPU分配信息302中,在其他控制器22内的CPU230与BS区域建立有对应的情况下,该BS区域为使用于在控制器22之间传送数据的BS区域。此外,本发明并不限定于此,例如,从缓冲区域242分配BS区域这一处理也可以通过不具有该缓冲区域242的其他控制器内22的CPU230来进行,关于为了保存从其他控制器22传送过来的数据而从缓冲区域242分配BS区域这一处理,也可以通过具有该缓冲区域242的控制器22内的CPU230来进行。
分配位图303由与多个BS区域分别对应的多个位构成。各位表示与该位对应的BS区域为使用过程中(例如“1”)还是未使用状态(例如“0”)。
BS区域地址304表示BS区域在缓冲区域242中的地址。
图4示出实施例的VOL管理表的一例。
在每个VOL中均存在VOL管理表31。VOL管理表31具有VOL编号311、容量312、状态313、主机路径定义信息列表314、VOL属性315以及存储区域信息316。
VOL编号311为VOL的识别编号。容量312表示VOL的容量。状态313表示VOL的状态。在VOL的状态中,例如存在正常、关闭以及未使用。
主机路径定义信息列表314表示用于确定读取/写入请求源的主机计算机1的信息(主机计算机1的名称以及端口特定信息等)以及用于确定读取/写入请求目的地的该VOL的信息(该存储系统2的端口特定信息、LUN(Logical Unit Number:逻辑单元号)等)。
VOL属性315表示VOL的属性。VOL的属性例如具有在线VOL、RVOL、TPVOL、EVOL以及池VOL等。
存储区域信息316表示与VOL属性315对应的信息。例如,如果VOL属性315为RVOL,则存储区域信息316可以是与成为该RVOL的基础的RG有关的信息(RAID水平、PDEV数等)。另外,如果是VOL属性315为TPVOL,则存储区域信息316可以是与分配于TPVOL的池有关的信息、及/或虚拟页与实页的对应关系。
图5至图8示出用于管理缓存区域244的表组。管理缓存区域244的表组包括缓存目录表32、CS区域管理表33、缓存分配管理表34以及队列头35。
图5示出实施例的缓存目录表32的一例。
缓存目录表32使用于CPU230检索写入到VOL或从VOL读取的数据在缓存区域244中的保存状态。也就是说,缓存目录表32为对CS区域管理表33的索引。
缓存目录表32被分割为多个子目录项(subdirectory entry)。另外,缓存区域244由多个CS区域构成,一个子目录项与一个或多个CS区域相关联。
散列信息321为表示I/O目的地信息的散列值与散列头(hashheader)的对应关系的信息。I/O目的地信息为来自主机计算机1的I/O请求内包含的信息,是表示I/O目的地的区域的信息,典型地,包括VOL编号和VOL内的地址。作为散列头的实体,存在表示CS区域管理表33的地址的头指针322和尾指针323。
也就是说,缓存目录表32管理I/O目的地信息与CS区域的对应关系,相当于检索对于I/O目的地是否已经确保了CS区域这一处理所使用的索引。在探索到与缓存目录表32的I/O目的地信息的散列值对应的头指针322之处未找到与I/O目的地对应的CS区域管理表33的情况下,意味着未确保CS区域这一情况。另一方面,在探索到与缓存目录表32的I/O目的地信息的散列值对应的头指针322之处找到了与I/O目的地对应的CS区域管理表33的情况下,意味着对于I/O目的地已经确保了CS区域并且将I/O对象的数据保存到该已经确保的CS区域即可这一情况。
此外,为了减少与同一散列头连接的CS区域管理表33的最大数并抑制检索时间的延长,也可以根据存储系统2所支持的容量来决定缓存目录表32的大小。
图6示出实施例的CS区域管理表33的一例。
CS区域管理表33在每个CS区域中均存在,是管理该CS区域的保存状态的信息。CS区域管理表33具有数据状态331、错误状态332、目录前方指针333、目录后方指针334、队列前方指针335、队列后方指针336、分配地址337、读取面/写入面标志338以及传送控制信息339。
数据状态331表示CS区域内的数据状态。作为数据的状态,例如存在自由数据、净数据、奇偶校验位未生成脏数据以及奇偶校验位已生成脏数据。“自由数据”是指CS区域为可用区域。“净数据”是指CS区域内保存的数据保存在存储设备单元20中的状态。“奇偶校验位未生成脏数据”是指未生成与在CS区域内保存的数据有关的奇偶校验位且该数据并未保存在存储设备单元20中的状态。“奇偶校验位已生成脏数据”是指生成了与在CS区域内保存的数据有关的奇偶校验位且该数据并未保存在存储设备单元20中的状态。
错误状态332表示是否为接收写入数据时的数据传送中断状态。关于与某个I/O目的地对应的CS区域,在各控制器中的CS区域管理表33中,在错误状态332表示数据传送中断状态的情况下,该状态为第一数据传送中断状态和第二数据传送中断状态中的一个。也就是说,在一个控制器中的CS区域管理表33中,第一数据传送中断状态与第二数据传送中断状态双方不会同时成立。但是,存在以下情况:关于与某个I/O目的地对应的CS区域,在一个控制器中的CS区域管理表33中,错误状态332为第一数据传送中断状态,在另一控制器中的CS区域管理表33中,数据传送状态332为第二数据传送中断状态。“第一数据传送中断状态”表示从主机计算机1对存储系统2的数据传送没有完全进行的状态。“第二数据传送中断状态”是指从一个控制器向另一控制器的数据传送没有完全进行的状态。以下,将数据传送中断状态简称为“中断状态”。
目录前方指针333和目录后方指针334表示所对应的子目录项或散列值相同的CS区域管理表33。具体地说,前方指针333与所对应的子目录项中的头指针322或散列值相同的CS区域管理表33对应,后方指针334与所对应的子目录项中的尾指针323或散列值相同的CS区域管理表33对应(参照图10)。
队列前方指针335和队列后方指针336为用于与队列头35(净数据、奇偶校验位生成前脏数据、奇偶校验位生成后脏数据以及自由数据中的任一个)连接的信息。在后文中说明队列前方指针335和队列后方指针336。
分配地址337是表示具有该地址337的CS区域管理表33的连接对象的缓存分配管理表34的地址的指针。分配地址337具有第一分配地址和第二分配地址。第一分配地址和第二分配地址中的一个与写入面对应且另一个与读取面对应。
读取面/写入面标志338是表示第一分配地址和第二分配地址中的哪一个为读取面(保存净数据和奇偶校验位已生成脏数据的CS区域)而哪一个为写入面(保存奇偶校验位未生成脏数据的CS区域)的信息。具体地说,如果标志338竖起,则读取面与第一分配地址对应,如果标志338倒下,则写入面与第一分配地址对应。
为了根据当前奇偶校验位和当前数据来生成针对作为新数据的写入数据的新奇偶校验位的情况,将相当于当前数据的净数据(已经写入到存储设备单元的数据)、相当于当前数据的奇偶校验位生成后脏数据(未写入到存储设备单元且生成了奇偶校验位的(脏数据状态的)写入数据)保持在读取面上。这样,以CS区域内保存的数据的状态(净数据或脏数据),将CS区域作为写入面或读取面处理,由此能够有效利用CS区域。
传送控制信息339表示写入了数据的写入范围(缓存区域244中的地址范围)以及控制器22对主机计算机1的数据传送请求的重试次数。
图7示出实施例的缓存分配管理表34的一例。
在每个CS区域中均存在缓存分配管理表34。缓存分配管理表34为用于管理缓存区域244(CS区域)的分配的信息。
缓存分配管理表34具有CS区域地址341、连接指针342、暂存块映射(staging block map)343以及脏数据块映射(dirty block map)344。CS区域地址341表示CS区域的地址。连接指针342为指向CS区域管理表33的指针、或者在向CS区域管理表33分配多个缓存分配管理表34的情况下指向缓存分配管理表34的指针。暂存块映射343具有与构成CS区域的多个子区域分别对应的多个位,与保存了净数据的区域对应的位为ON(1)。脏数据块映射344具有与构成CS区域的多个子区域分别对应的多个位,与保存了脏数据的区域对应的位为ON(1)。也可以使用连接指针将不同的缓存分配管理表34与一个CS区域管理表33的读取面或写入面各自进行连接。
图8示出实施例的队列头35的一例。
队列头35在每个数据状态331中均存在,是与该数据状态对应的管理表(例如,CS区域管理表33或缓存分配管理表34)的队列的开头。队列头35具有队列属性351、项数计数器352、头指针353以及尾指针354。队列属性351表示所对应的数据状态。项数计数器352表示所连接的管理表的数量。头指针353表示队列开头的管理表的地址。尾指针354表示队列末端的管理表的地址。
图9示出实施例的缓冲区域的管理的一例。
通过缓冲区域管理表30来管理缓冲区域242中的各BS区域的状态。例如,CPU230能够根据BS区域地址304来确定BS区域,或者根据分配位图303来确定未使用状态的BS区域,或者如果分配了未使用状态的BS区域则将与该BS区域对应的位的值变更为ON(1),或者如果从正在使用的BS区域中读出了数据则将与该BS区域对应的位的值变更为OFF(0)(释放BS区域)。
图10示出实施例的缓存区域244的管理的一例。此外,在图10中,“脏数据(前)”表示奇偶校验位生成前脏数据,“脏数据(后)”表示奇偶校验位生成后脏数据。
CS区域管理表33与缓存目录表32中的子目录项相连接。如上所述,一个子目录项与I/O目的地信息的散列值对应。
另外,队列头35在CS区域管理表33和缓存分配管理表34各自中存在。另外,特别是,关于CS区域管理表33,存在与多个数据状态分别对应的多个队列头35。以下,有时将与对应于数据状态“AA”(例如自由数据)的队列头连接的管理表的队列称为“AA队列”(例如自由数据队列)。CS区域管理表33与对应于该管理表33所示的数据状态的队列头35直接或间接地连接。间接连接例如是隔着一个以上的其他CS区域管理表33的连接。如上所述,队列指针存在队列前方指针335以及队列后方指针336这两个队列指针。像这样具备两个指针的理由在于,实现保存在CS区域管理表33中的数据的LRU(Least Recently Used:最近最少使用)控制、即将从访问起经过了时间后的数据优先从缓存上丢弃的控制。具体地说,例如,在将与某个队列头35对应的CS区域管理表33(对象CS区域管理表33)移动至开头位置的情况下,需要从中途抽出该对象CS区域管理表33。而且,在进行从中途抽出对象CS区域管理表33的动作时,为了维持队列的连接状态,需要将对象CS区域管理表33的前方指针所指向的CS区域管理表与后方指针所指向的CS区域管理表进行连接。
CS区域管理表33经由第一分配地址和第二分配地址中的至少一个与缓存分配管理表34连接。此外,有时对CS区域管理表33中的第一分配地址和第二分配地址各自分别分配缓存分配管理表34。例如,存在以下情况:对与CS区域管理表33对应且保存有净数据状态的数据的读取面产生写入,关于该读取面确保写入面。在该情况下,除了读取面以外还需要将写入面分配至一个CS区域管理表33,在这种情况下,使用一个CS区域管理表33中的第一分配管理表地址和第二分配管理表地址双方。
净数据仅被保存于一个控制器22,但是奇偶校验位未生成脏数据以及奇偶校验位已生成脏数据在一个控制器的缓存区域和另一控制器的缓存区域中被二重化。此外,缓存区域244具有易失性区域和非易失性区域,可以将净数据保存于易失性区域,将脏数据保存于非易失性区域。
CPU230判断在接收来自主机计算机1的读取或写入请求时,判断在探索到与该请求所具有的I/O目的地信息的散列值对应的缓存目录表32的头指针322之处是否存在与I/O目的地对应的CS区域管理表33。在其判断结果为假的情况下,这意味着对于该I/O目的地未确保CS区域这一情况。如果未确保CS区域,则CPU230确保CS区域。具体地说,CPU230从自由数据队列(CS区域管理表组)中获取一个CS区域管理表33,将获取到的管理表33与子目录项进行连接,并且,从自由数据队列(缓存分配管理表组)获取一个或多个缓存分配管理表34,将该管理表34与上述获取到的CS区域管理表33进行连接。
在接收到的请求为读取请求的情况下,CPU230将CS区域确保为读取面,将数据从成为按照I/O目的地信息的读取源的RG暂存于该读取面上,将数据状态331从自由数据变更为净数据,将所对应的CS区域管理表33与净数据队列进行连接(例如,与净数据的队列头35直接连接)。
在接收到的请求为写入请求的情况下,CPU230将CS区域确保为写入面,在写入面上保存写入数据,将数据状态331从自由数据变更为奇偶校验位未生成脏数据,将所对应的CS区域管理表33与奇偶校验位未生成脏数据的队列头35进行连接。
在与来自主机计算机1的请求非同步地在存储系统2内执行奇偶校验位生成的情况下,CPU230在读取面上统合写入面的脏数据,丢弃写入面的数据,将数据状态331变更为奇偶校验位已生成脏数据,将所对应的CS区域管理表33与奇偶校验位已生成脏数据队列进行连接。
对应于与奇偶校验位已生成脏数据队列连接的CS区域管理表33的CS区域内的数据,与来自主机计算机1的请求非同步地,被转储至写入目的地的RG。此外,也可以是,以来自主机计算机1的访问为起因,在同一属性的队列内,与该访问对应的CS区域管理表33向开头转变。这是由于,该管理表33为与最近被访问的CS区域对应的管理表33。
图11至图14示出FE-I/F210的数据传送方式的概要。作为主机计算机1与缓存区域244之间的数据传送方式,存在两级传送和直接传送。两级传送为经由缓冲区域242(BS区域)而传送数据的传送方式。直接传送为不经由缓冲区域242(BS区域)而传送数据的传送方式。作为两级传送,存在写入两级传送和读取两级传送。写入两级传送为将来自主机计算机1的写入数据经由缓冲区域242(BS区域)而传送至缓存区域244(CS区域)的两级传送。读取两级传送为将缓存存储器244内的读取数据经由缓冲区域242(BS区域)而传送至主机计算机1的两级传送。另一方面,作为直接传送,存在写入直接传送和读取直接传送。写入直接传送为将来自主机计算机1的写入数据不经由缓冲区域242(BS区域)而传送至缓存区域244(CS区域)的直接传送。读取直接传送为将缓存区域244(CS区域)内的读取数据不经由缓冲区域242(BS区域)而传送至主机计算机1的直接传送。
图11示出读取直接传送的一例。图12示出读取两级传送的一例。
如图11所示,能够从接收到读取请求的FE-I/F#0进行读取直接传送的情况是FE-I/F#0、读取数据存在于缓存区域#0的情况。在读取直接传送中,控制器#0的FE-I/F#0将保存在缓存区域#0中的读取数据向主机计算机1传送。详细地说,FE-I/F#0检查读取数据所附带的保证码,如果在读取数据中没有发生位错误,则CPU#0将读取数据经由FE-I/F#0(例如,在检查读取数据所附带的保证码的同时)向主机计算机1传送(11-1)。之后,CPU#0将读取请求完成报告经由FE-I/F#0发送至主机计算机1(11-2)。此外,也可以代替FE-I/F#0而由CPU#0进行保证码的检查。
另一方面,如图12所示,在接收到读取请求的FE-I/F#0所接收到的读取数据被保存在缓存区域#1中的情况下,进行读取两级传送。在读取两级传送中,CPU#0从缓冲区域#0中确保BS区域。以下,将从缓冲区域#1中确保的BS区域称为“BS区域#1”,将从缓冲区域#0中确保的BS区域称为“BS区域#0”。将缓存区域#1内的读取面41b的读取数据传送至所确保的BS区域#0。该传送基于CPU#1进行的从读取面41b向BS区域#0的写入,但是也可以基于CPU#0进行的从读取面41b向BS区域#0的读取。CPU#0在将读取数据保存到BS区域#0之后(12-1),FE-I/F#0检查所保存的读取数据所附带的保证码,CPU#0经由FE-I/F#0(例如,在检查读取数据所附带的保证码的同时),将读取数据从BS区域#0向主机计算机1传送(12-2)。之后,CPU#0将读取请求完成报告发送至主机计算机1(11-3)。
虽未图示,但是在存在写入面的数据的情况下(也就是说,在主机计算机1发送写入请求之后发送了读取请求的情况下),读取数据成为在写入面的数据中补充有读取面的数据补充而成的数据。在从存在于各个控制器22中的读取面和写入面传送读取数据的情况下,成为两级传送。
图13示出写入两级传送的一例,图14示出写入直接传送的一例。
为了避免由写入数据传送中断引起的写入面的奇偶校验位未生成脏数据破坏,通常,写入始终由两级传送执行,另外,并未图示,但是在通过存储系统2的内部功能(本地复制、远程复制等)来复制写入数据的情况下等,也可以通过两级传送来执行。
如图13所示,在写入两级传送中,FE-I/F#0对来自主机计算机1的写入数据附加保证码,将附加了保证码的写入数据保存到BS区域#0(为了进行写入两级传送而从缓冲区域#0确保的BS区域)(13-1)。在缓存区域#0的写入面42a上保存有奇偶校验位未生成的脏数据的情况下,CPU#0确认保证码(13-2)。此外,在接收写入请求时重新分配写入面42a和写入面42b等没有保存奇偶校验位未生成的脏数据的情况下,省略(13-2)的保证码的确认。
如果没有发生位错误,则CPU#0从BS区域#0对缓存区域#0的写入面42a复制写入数据(13-3),并且,对缓存区域#1的写入面42b复制写入数据(13-4)。CPU#1确认保存在写入面42b上的写入数据的保证码(13-5)。如果没有发生位错误,则CPU#1经由CPU#0和FE-I/F#0对主机计算机1报告写入请求完成(13-6)。
另一方面,如图14所示,在写入直接传送中,FE-I/F#0对来自主机计算机1的写入数据附加保证码,将附加了保证码的写入数据保存到缓存区域#0的写入面42a(14-1)。在写入面42a上保存有奇偶校验位未生成的脏数据的情况下,CPU#0确认保证码(14-2)。此外,与写入两级传送同样地,在接收写入请求时重新分配写入面42a、写入面42b等没有保存奇偶校验位未生成的脏数据的情况下,省略(14-2)的保证码的确认。
如果没有发生位错误,则CPU#0从缓存区域#0的写入面42a向缓存区域#1的写入面42b复制写入数据(14-3)。CPU#1确认保存在写入面42b上的写入数据的保证码(14-4)。如果没有发生位错误,则CPU#1经由FE-I/F#1对主机计算机1报告写入请求完成(14-5)。
图15示出实施例的写入传送方式的特征比较的一例。
数据状态如下。即,接收写入请求时的缓存区域244的状态为无缓存数据或(有缓存数据且(数据状态为净数据或奇偶校验位已生成脏数据))的事例为事例X。另外,有缓存数据且数据状态为奇偶校验位未生成脏数据的事例为事例Y。
传送方式大致分为两级传送(有/无保证码确认)和直接传送(有/无保证码确认)。
关于写入过程中发生故障时的数据恢复方法,在事例X中,在任意方式中均丢弃写入数据,在事例Y中,在两级传送中进行写入数据的传送重试,在直接传送中,进行写入数据的传送重试、或基于其他控制器的脏数据的恢复。此外,写入过程中发生故障时的数据恢复方法所记载的带括号的((1-1)~(1-6))分别与图13的(13-1)~(13-6)对应,另外,带括号的((1-1)~(1-5))分别与图14的(14-1)~(14-5)对应。
与“写入时仅两级传送”相比,“写入时仅直接传送”能够削减写入时的存储器访问次数。另外,还考虑仅在在写入面上存在奇偶校验位未生成脏数据的情况下进行“写入两级传送”的方式。虽然存储器访问次数削减效果降低,但是写入数据传送中断时的数据恢复的安装变得容易。
在以下说明中,主要说明在“写入时仅直接传送”中还能够执行一部分写入两级传送的方式。
图16和图17示出实施例的读取处理的流程的一例。通过由CPU230执行读取程序50来实现读取处理。
首先,如图16所示,CPU230检测来自FE-I/F210的读取请求(步骤1000)。
接着,CPU230根据读取请求所具有的读取源信息(表示读取源的I/O目的地信息),经由缓存目录表32,参照CS区域管理表33和缓存分配管理表34。这对自控制器和其他控制器双方的缓存区域管理表33执行。CPU230参照读取请求范围的缓存区域管理表33,确认对读取请求数据向缓存区域244的保存状态(步骤1001)。
接着,为了决定应读取的写入面,CPU230判断是否存在中断状态(步骤1002)。在读取请求范围内存在写入面的数据的情况下,读取对象数据成为将读取面的数据补充到写入面的数据而得到的数据。此外,如上所述,作为中断状态存在第一中断状态和第二中断状态。第一中断状态是指没有向从主机计算机1接收到写入请求的控制器22完全传送遵从于写入请求的写入数据的情况下的、接收到写入请求的控制器所具有的CS区域的状态。第二中断状态是指没有从接收到写入数据的控制器向其他控制器完全传送写入数据的情况下的、其他控制器所具有的CS区域的状态。
在第一数据传送中断状态和第二数据传送中断状态均不存在的情况下(步骤1002:“否”),CPU230如通常那样将净数据所存在的读取面设定为读取对象(步骤1003)。之后,进入到步骤1010。
在存在第一中断状态和第二中断状态中的任一状态的情况下(步骤1002:“是”),CPU230确认在产生了第二中断状态的控制器22的写入面上是否存在奇偶校验位未生成脏数据(步骤1004)。
在不存在奇偶校验位未生成脏数据的情况下(步骤1004:“是”),CPU230要在新分配的写入面上保存写入数据,在写入数据的传送失败的情况下,丢弃该写入数据,因此不将写入面设为读取对象,将读取面的数据(以及在步骤1011中暂存的数据)设为读取对象(步骤1005)。之后,进入到步骤1009。
在存在奇偶校验位未生成脏数据的情况下(步骤1004:“否”),CPU230判断在考虑与自控制器和其他控制器的读取源对应的CS区域管理表33双方的情况下是否存在第一中断状态和第二中断状态双方(步骤1006)。
在第一中断状态和第二中断状态双方均存在的情况下(步骤1006:“是”),由于存在在从主机计算机1向接收到写入请求的控制器22的缓存区域244传送写入数据的过程中发生的故障状态,因此CPU230将设定有第二中断状态的控制器22(保存有奇偶校验位未生成脏数据的控制器22)的写入面设为读取对象(步骤1007)。之后,进入到步骤1009。
在仅存在第一中断状态和第二中断状态中的某一个的情况下(即,在第二中断状态处于一侧的控制器侧的情况下)(步骤1006:“否”),由于存在在从接收到写入请求的控制器22的写入面向其他控制器22的写入面复制写入数据的过程中发生的故障状态,因此CPU230将没有设定第二中断状态的控制器22(接收到写入请求的控制器22)侧的写入面设为读取对象(步骤1008)。
接着,CPU230对读取请求范围启动中断状态恢复处理(步骤1009)。中断状态恢复处理仅启动而不等待结束。
接着,CPU230判断读取请求范围的全部数据是否存在于缓存区域244(步骤1010)。
在读取请求范围的全部数据存在于缓存区域244的情况下(步骤1010:“是”),进入到图17的步骤1013。
在读取请求范围的数据未全部存在于缓存区域244的情况下(步骤1010:“否”),CPU230将没有保存于缓存区域244的数据从RG暂存于读取面上(步骤1011)。CPU230为了表示在读取面上保存有有效的净数据这一情况,将暂存块映射中的与暂存范围对应的位设定为ON(步骤1012)。之后,进入到图17的步骤1013。
如图17所示,CPU230判断读取请求范围的全部数据是否存在于自控制器侧(步骤1013)。保存有读取请求范围的数据的写入面与读取面双方需要存在于自控制器侧。
在读取请求范围的一部分数据不存在于自控制器侧的情况下(步骤1013:“否”),CPU230执行读取两级传送,因此确保自控制器的BS区域(步骤1014)。CPU230从读取面和(由步骤1002至步骤1008决定的)写入面向所确保的BS区域中(通过DMA等)复制读取数据(步骤1015)。CPU230从所确保的BS区域经由FE-I/F210向主机计算机1传送读取数据(步骤1016)。之后,进入到步骤1018。
在读取请求范围的全部数据存在于自控制器侧的情况下(步骤1013:“是”),CPU230执行读取直接传送,因此从自控制器22的读取面经由FE-I/F210向主机计算机1传送读取数据(步骤1017)。
接着,CPU230向主机计算机1报告读取请求的正常结束(步骤1018)。
接着,CPU230判断有无未释放的BS区域(步骤1019)。在执行读取两级传送的情况下,由于在自控制器中具有保持未释放的状态的在步骤1014中确保的BS区域,因此CPU230释放所确保的BS区域(步骤1020)。
最后,CPU230执行与数据状态相应的队列转变(步骤1021)。CPU230执行以下处理等:在自由数据队列中重新确保CS区域管理表33的情况下,与净数据队列开头连接,另外,在读取请求时存在CS区域管理表33的情况下,在相同数据状态的队列内重新与队列的开头进行连接。
如上所述,结束读取处理的说明。
图18、图19以及图20示出实施例的写入处理的流程的一例。通过由CPU230执行写入程序51来实现写入处理。
如图18所示,首先,CPU230检测来自FE-I/F210的写入请求(步骤1100)。
接着,CPU230根据写入请求所具有的写入目的地信息(VOL编号和VOL内的地址),经由缓存目录表32,参照CS区域管理表33和缓存分配管理表34。这是相对于自控制器和其他控制器双方的CS区域管理表33来执行。CPU230参照写入请求范围的缓存区域管理表33,确认写入范围的数据向缓存区域244的保存状态(步骤1101)。此外,关于写入目的地信息还有可能尚未确保CS区域管理表33。
接着,CPU230判断是否已经确保了写入面(步骤1102)。这是相对于自控制器和其他控制器双方的CS区域管理表33来执行。通常为在双方中已确保或者双方没有确保的任意一种情况。
在尚未确保写入面的情况下(步骤1102:“否”),CPU230重新确保写入面(步骤1103)。这是相对于自控制器和其他控制器双方的CS区域管理表33来执行。
在已经确保了写入面的情况下(步骤1102:“是”),CPU230判断在写入请求范围内是否存在中断状态(步骤1104)。
在写入请求范围内没有中断状态的情况下(步骤1104:“否”),进入到步骤1107。
在写入请求范围内存在中断状态的情况下(步骤1104:“是”),CPU230关于写入请求范围而根据写入同步的启动原因来启动中断状态恢复处理(步骤1105)。之后,CPU230等待中断状态恢复处理的结束(步骤1106)。
接着,CPU230追加确保为保存写入请求范围的写入数据而不足的写入面(步骤1107)。CPU230在能够通过已确保的写入面保存写入请求范围的写入数据的情况下不进行任何动作。
接着,CPU230判断是否能够执行缓存存储器直接传送(步骤1108)。通常,能够执行写入直接传送(步骤1108:“是”),但是在对该卷应用存储系统2的上述内部功能的情况下等,有时需要写入两级传送(步骤1108:“否”)。在该情况下,进入到图20的步骤1200。
接着,CPU230将接收到写入请求的自控制器22的错误状态设定为第一中断状态,将其他控制器的错误状态设定为第二中断状态(步骤1109)。
接着,FE-I/F210将写入数据一边附加保证码一边从主机计算机1保存到自控制器的缓存区域244的写入面(步骤1110)。
接着,CPU230判断在自控制器的写入面上是否存在将与写入数据的写入目的地区域(VOL中的区域)相同的区域设为写入目的地的脏数据(例如奇偶校验位未生成脏数据)(步骤1111)。
在不存在奇偶校验位未生成脏数据的情况下(步骤1111:“否”),CPU230处于要在新分配的写入面上保存写入数据的状态,在写入数据的传送失败的情况下,丢弃该写入数据,因此使接收到写入请求的控制器22侧的数据保证码的确认跳过。之后,进入到步骤1114。
在自控制器的写入面上存在奇偶校验位未生成脏数据的情况下(步骤1111:“是”),CPU230确认写入数据的保证码(步骤1112)。
接着,CPU230判断写入数据向自控制器的缓存区域的保存是否正常结束(步骤1113)。这是通过FE-I/F210的数据传送执行结果、数据保证码确认结果等来判断。
在保存没有正常结束的情况下(步骤1113:“否”),进入到图19的步骤1129。
在保存已正常结束的情况下(步骤1113:“是”),CPU230为了表示在写入面上保存了有效的脏数据这一情况,而将与写入请求范围的自控制器的写入面对应的脏数据块映射中的、与保存了脏数据的区域对应的位设定为ON(步骤1114)。
接着,CPU230对接收到写入请求的自控制器22的错误状态的第一中断状态进行清除(取消)(步骤1115)。之后,进入到图19的步骤1116。
如图19所示,CPU230将写入数据从自控制器的写入面(通过DMA等)复制到其他控制器的写入面(步骤1116)。
接着,CPU230确认写入数据的保证码(步骤1117)。
接着,CPU230判断写入数据向其他控制器的缓存区域244的保存是否已正常结束(步骤1118)。这通过步骤1116的复制执行结果、数据保证码确认结果等来判断。
在保存已正常结束的情况下(步骤1118:“是”),进入到步骤1125。
在保存没有正常结束的情况下(步骤1118:“否”),能够假设到基于硬件等暂时发生故障等引起的数据传送失败等,因此CPU230重试写入数据在控制器之间的复制。首先,CPU230使重试次数初始化(步骤1119),重试相当于步骤1116的、将写入数据从自控制器的写入面(通过DMA等)复制到其他控制器的写入面(步骤1120)。之后,CPU230进行相当于步骤1117的、通过CPU230来确认写入数据的保证码(步骤1121)。接着,CPU230判断重试是否已正常结束(步骤1122)。这是通过重试的复制执行结果、数据保证码确认结果等来判断。在重试已正常结束的情况下(步骤1122:“是”),进入到步骤1125。在重试没有正常结束的情况下(步骤1122:“否”),CPU230对重试次数进行加算(步骤1123),并判断重试次数是否超过阈值(步骤1124)。在重试次数超过阈值的情况下(步骤1124:“是”),进入到步骤1129。在重试次数没有超过阈值的情况下(步骤1124:“否”),CPU230为了再次重试复制,进入到步骤1120。
在重试已正常结束的情况下(步骤1122:“是”)或在S1118:“是”之后,为了表示在写入面上保存了有效的脏数据这一情况,CPU230将其他控制器的写入面的写入请求范围的脏数据块映射设定为ON(步骤1125)。
接着,CPU230对接收到写入请求的其他控制器22的错误状态的第二中断状态进行清除(取消)(步骤1126)。
接着,CPU230向主机计算机1报告写入请求的正常结束(步骤1127)。
接着,CPU230执行与数据状态相应的队列转变(步骤1128)。在CS区域管理表33的数据状态为净数据的情况下,CPU230执行以下处理等:变更为奇偶校验位未生成脏数据,在与脏数据(生成前)队列开头进行连接,另外,即使已经与脏数据(生成前)队列连接,也重新与队列的开头进行连接。
另一方面,CPU230在步骤1113:“否”(写入数据向自控制器的缓存区域的保存没有正常结束的情况)、步骤1124:“是”(写入数据从自控制器的写入面向其他控制器的写入面(通过DMA等)的复制重试超过阈值的情况)、步骤1204:“否”(后述的写入两级传送中的、写入数据向自控制器的缓冲区域的保存没有正常结束的情况)或步骤1212:“是”(后述的写入两级传送中的、写入数据从自控制器的所分配的BS区域向自控制器的写入面(通过DMA等)的复制重试超过阈值的情况)的情况下,CPU230向主机计算机1报告写入请求的错误结束(步骤1129),关于写入请求范围启动数据传送中断恢复处理(步骤1130)。
最后,CPU230判断有无未释放的BS区域(步骤1131)。在执行了后述的写入两级传送的情况下,在步骤1200中确保的BS区域保持未释放的状态而存在于自控制器,因此CPU230释放未释放的BS区域(步骤1132)。
在图18的步骤1108:“否”的情况下,如图20所示,CPU230确保自控制器的BS区域(步骤1200),FE-I/F210将写入数据附加保证码并保存到自控制器的所分配的BS区域(步骤1201)。
接着,CPU230判断在自控制器的写入面上是否存在奇偶校验位未生成脏数据(步骤1202)。
在不存在奇偶校验位未生成脏数据的情况下(步骤1202:“否”),处于要在重新分配的写入面上保存写入数据的状态,在写入数据的传送失败的情况下,丢弃该写入数据,因此,CPU230使接收到写入请求的控制器22侧的数据保证码的确认跳过。之后,进入到步骤1205。
在存在奇偶校验位未生成脏数据的情况下(步骤1202:“是”),通过CPU230来确认保存在所确保的BS区域中的写入数据的保证码(步骤1203)。
接着,CPU230判断写入数据向自控制器的BS区域的保存是否已正常结束(步骤1204)。通过FE-I/F210的数据传送执行结果、数据保证码确认结果等来判断。
在保存没有正常结束的情况下(步骤1204:“否”),进入到图19的步骤1129。
在保存已正常结束的情况下(步骤1204:“是”),CPU230将接收到写入请求的自控制器22的错误状态设定为第一中断状态,将其他控制器的错误状态设定为第二中断状态(步骤1205)。
接着,将写入数据从自控制器的BS区域(通过DMA等)复制到写入面(步骤1206)。
接着,CPU230判断写入数据向自控制器的CS区域的保存是否已正常结束(步骤1207)。通过步骤1205的复制执行结果等来判断。
在保存已正常结束的情况下(步骤1207:“是”),进入到步骤1213。
在保存没有正常结束的情况下(步骤1207:“否”),假设由硬件等暂时发生故障等引起的数据传送失败等,因此CPU130重试写入数据从自控制器的BS区域向CS区域的复制。首先,CPU230使重试次数初始化(步骤1208),重试相当于步骤1206的、将写入数据从自控制器的BS区域(通过DMA等)复制到写入面(步骤1209)。接着,CPU230判断重试是否已正常结束(步骤1210)。通过重试的复制执行结果等来判断。在重试已正常结束的情况下(步骤1210:“是”),进入到步骤1213。在重试没有正常结束的情况下(步骤1210:“否”),CPU230对重试次数进行加算(步骤1211),判断重试次数是否超过阈值(步骤1212)。在重试次数超过阈值的情况下(步骤1212:“是”),进入到图19的步骤1129。在重试次数没有超过阈值的情况下(步骤1212:“否”),CPU230为了再次重试复制,而进入到步骤1209。
接着,为了表示在写入面上保存了有效的脏数据这一情况,CPU230将与自控制器的写入面对应的脏数据块映射中的、与保存有脏数据的区域对应的位设定为ON(步骤1213)。
接着,CPU230对接收到写入请求的自控制器的错误状态的第一中断状态进行清除(取消)(步骤1214)。之后,CPU230进入到图19的步骤1116。
如上所述,结束写入处理的说明。
图21示出实施例的中断状态恢复处理的流程的一例。
通过由CPU 230执行中断状态恢复程序52来实现中断状态恢复处理。作为中断状态恢复处理的启动原因,存在读取处理同步(从读取处理起的启动)和写入处理同步(从写入处理起的启动)中的任一个,但是,除此以外,也可以是与主机计算机1的I/O请求(读取/写入请求)非同步的处理即非同步处理(例如,从奇偶校验位生成处理起的启动或从周期性的故障监视处理起的启动)。另外,中断状态恢复处理根据缓存区域244的中断状态的不同而不同(详细情况参照图15)。
首先,CPU230参照中断状态恢复处理的启动原因以及与属于所指定的范围的CS区域对应的CS区域管理表(步骤1300)。这是相对于自控制器和其他控制器双方的CS区域管理表来执行。另外,在图21的说明中,“所指定的范围”例如可以是在启动原因为写入处理同步或读取处理同步的情况下由从主机计算机1接收到的I/O请求所指定的地址范围(例如,LUN、LBA(Logical Block Address:逻辑块地址)和数据长度),也可以是在启动原因并非是写入处理同步和读取处理同步中的任一个的情况下由CPU230(中断状态恢复程序52)任意指定的范围。以下,为了使说明易于理解,在图21的说明中,将属于所指定的范围的CS区域称为“指定CS区域”,设为指定CS区域在每个控制器中为一个。
接着,CPU230判断是否在至少一个控制器中的与指定CS区域对应的CS区域管理表中存在中断状态(错误状态332是否为第一中断状态或第二中断状态)(步骤1301)。
在不存在中断状态的情况下(步骤1301:“否”),CPU230结束中断状态恢复处理。该事例可以认为是以下事例:该中断状态恢复处理在不存在中断状态的状态下启动,或者以上述启动原因以外的其他起因而启动的中断状态恢复处理已经恢复了中断状态等。
在存在中断状态的情况下(步骤1301:“是”),CPU230判断在与第二中断状态对应的指定CS区域(设定有第二中断状态的控制器侧的缓存区域的写入面)中是否存在与写入请求对应的奇偶校验位未生成脏数据(步骤1302)。此外,“存在中断状态”是指在第一中断状态和第二中断状态中至少存在第二中断状态这一情况。这是由于,在写入处理(图18~图20)中,暂时设定第一中断状态和第二中断状态双方(S1109或S1205),之后,第一中断状态和第二中断状态中首先被清除的必然是第一中断状态(S1115或S1214)。
在与第二中断状态对应的指定CS区域中不存在奇偶校验位未生成脏数据的情况下(步骤1302:“是”),CPU230处于要在新分配的写入面上保存写入数据的状态,丢弃与错误结束的写入请求对应的写入数据(步骤1304)。但是,在启动原因为写入处理同步的情况下(1303:“是”),CPU230在中断状态恢复处理之后抑制写入处理,因此以再次利用已确保的写入面的目的,(假设仅设定了第二中断状态的情况)将数据传送源的脏数据块映射设定为OFF(步骤1305)。之后,进入到步骤1315。
接着,CPU230判断在将与自控制器和其他控制器各自的指定CS区域对应的CS区域管理表33双方作为整体来看的情况下,是否存在第一中断状态和第二中断状态双方(步骤1306)。
在存在第一中断状态和第二中断状态双方的情况下(步骤1306:“是”),接收到写入请求的控制器侧的写入面的奇偶校验位未生成脏数据有可能被破坏,因此CPU230将具有与第一中断状态对应的指定CS区域的控制器(即自控制器)内的任一个CS区域设定为数据复制目的地,将与第二中断状态对应的指定CS区域(即其他控制器的指定CS区域)设定为数据复制源(步骤1307)。之后,进入到步骤1309。此外,数据复制目的地也可以是与第一中断状态对应的指定CS区域本身、即存储有有可能被破坏的奇偶校验位未生成脏数据的写入面。
在存在第一中断状态和第二中断状态中的一个的情况下(步骤1306:“否”),也就是说,在仅存在第二中断状态的情况下,考虑为写入数据从自控制器的指定CS区域(写入面)向其他控制器的指定CS区域(写入面)的复制失败,因此CPU230将具有与第二中断状态对应的指定CS区域的控制器(即其他控制器)内的任一个CS区域设定为数据复制目的地,将没有与第二中断状态对应的指定CS区域(即自控制器中的指定CS区域)设定为数据复制源(步骤1308)。此外,数据复制目的地也可以是与第二中断状态对应的指定CS区域本身。
接着,CPU230判断是否满足不需要数据复制条件(步骤1309)。在没有满足不需要数据复制条件的情况下,CPU230从复制源向复制目的地进行数据复制(步骤1310~步骤1314),但是在满足不需要数据复制条件的情况下,CPU230不进行这种数据复制而进行步骤1315。此外,即使不实施该判断(一律判断为不满足不需要数据复制条件(步骤1309:“否”))而执行中断状态恢复处理,数据恢复也能够顺利实现。具体的判断条件为以下情况:启动原因为写入处理同步,并且接收到当前写入请求的控制器具有数据复制目的地的指定CS区域,并且数据传送中断时的写入请求范围(由写入请求指定的地址范围)包含在当前写入请求范围内。这是因为,在该情况下,通过所抑制的当前写入请求的写入处理来覆盖通过步骤1310~步骤1314的数据复制处理而恢复的写入面的奇偶校验位未生成脏数据的状态。
接着,通过步骤1310~步骤1314的数据复制处理,利用其他控制器的正常写入面的奇偶校验位未生成脏数据来覆盖数据传送有可能中断的写入面,从而恢复错误状态。
CPU230将数据复制位置设定为作为初始位置而被指定的读取/写入范围的开头(步骤1310),判断是否结束了所指定的全部范围的数据复制(步骤1311)。
在数据复制未结束的情况下(步骤1311:“否”),将脏数据(通过DMA等)以固定量从数据传送源的写入面复制到数据传送目的地的写入面(步骤1312)。此时,仅对复制源的脏数据块映射被设定为ON的范围内的数据进行复制即可。接着,为了表示在写入面上保存了有效的脏数据这一情况,CPU230将复制目的地控制器的写入面的写入请求范围的脏数据块映射(配合复制源的脏数据块映射ON设定)设定为ON(步骤1313)。接着,CPU230使数据复制位置仅前进所复制的量即固定量(步骤1314)。之后,进入到步骤1311。
在结束了数据复制的情况下(步骤1311:“是”),CPU230对与指定CS区域对应的中断状态进行清除(步骤1315),结束中断状态恢复处理。
以上,说明了一个实施例,但是本发明并不限定于上述实施例。
例如,并未图示,但是也可以是,在步骤1312的复制失败的情况下,在准备了多个(安装有多个DMA引擎等)复制方法的情况下,重试基于其他方法的复制,另外,CPU230一度释放复制目的地的写入面并将再次从自由数据队列中确保的同一控制器的缓存区域的其他区域作为写入面而重试复制。在即使这样也无法恢复中断状态的情况下,也可以生成复制源的写入面的奇偶校验位未生成脏数据的奇偶校验位,在RG中转储复制源的奇偶校验位已生成脏数据和新奇偶校验位,丢弃复制源和复制目的地的写入面内的数据。
附图标记说明
1:主机计算机,2:存储系统,21:存储控制装置,22:控制器,210:FE-I/F,230:CPU,240:存储器,242:缓冲区域,243:管理表区域,244:缓存区域。
Claims (12)
1.一种存储系统,其特征在于,具有:
存储设备组,其由一个以上的存储设备构成;
第一控制器,其与所述存储设备组和主机计算机连接,具有第一缓冲区域和第一缓存区域;以及
第二控制器,其与所述存储设备组和所述主机计算机连接,具有第二缓冲区域和第二缓存区域,
所述第一控制器从所述主机计算机接收第一写入请求,将遵从于所述第一写入请求的第一写入数据不经由所述第一缓冲区域地保存到所述第一缓存区域中的任一个缓存子区域即第一缓存子区域,为了将保存到所述第一缓存子区域的所述第一写入数据不经由所述第二缓冲区域地保存到所述第二缓存区域的任一个缓存子区域即第二缓存子区域而将其传送到所述第二控制器,根据指定范围,将所述第一缓存子区域内的所述第一写入数据写入到所述存储设备组,其中,所述指定范围遵从于由所述写入请求指定的写入目的地,
所述第一控制器管理所述第一缓存子区域的状态是否为第一中断状态,该第一中断状态为在所述第一写入数据向所述第一缓存子区域的保存成功的情况下被清除的状态,所述第一控制器或第二控制器管理所述第二缓存子区域的状态是否为第二中断状态,该第二中断状态为在所述写入数据从所述第一缓存子区域向所述第二缓存子区域的传送成功的情况下被清除的状态,
所述第一控制器进行中断状态恢复处理,
所述中断恢复处理包括如下内容:
判断所述第一缓存子区域是否为所述第一中断状态且所述第二缓存子区域是否为所述第二中断状态;
在所述第一缓存子区域为所述第一中断状态且所述第二缓存子区域为所述第二中断状态的情况下,将所述第一缓存子区域设定为复制目的地,将所述第二缓存子区域设定为复制源,从复制源向复制目的地复制数据,并且对分别与所述第一缓存子区域和第二缓存子区域对应的所述第一中断状态和第二中断状态进行清除;以及
在所述第一缓存子区域并非为所述第一中断状态且所述第二缓存子区域为所述第二中断状态的情况下,将所述第二缓存子区域设定为复制目的地,将所述第一缓存子区域设定为复制源,从复制源向复制目的地复制数据,并对与所述第二缓存子区域对应的所述第二中断状态进行清除。
2.根据权利要求1所述的存储系统,其特征在于,
所述中断状态恢复处理还包括判断是否满足不需要复制条件,
在满足所述不需要复制条件的情况下,所述第一控制器从复制源向复制目的地复制数据,在满足所述不需要复制条件的情况下,所述第一控制器不从复制源向复制目的地复制数据,对与所述第一缓存子区域和第二缓存子区域对应的所述第一中断状态和第二中断状态进行清除,或者对与所述第二缓存子区域对应的所述第二中断状态进行清除。
3.根据权利要求2所述的存储系统,其特征在于,
满足所述不需要复制条件的情况为以下情况:所述中断状态恢复处理为从遵从于所述写入请求的写入处理开始的启动,所述第一控制器具有复制目的地的缓存子区域,并且遵从于由过去的写入请求指定的写入目的地的指定范围包含在遵从于由所述第一写入请求指定的写入目的地的指定范围中,其中,所述过去的写入请求与成为所述第二中断状态的原因的传送相对应。
4.根据权利要求1所述的存储系统,其特征在于,
所述第一控制器在从所述主机计算机接收到第一读取请求的情况下,即使遵从于所述第一读取请求的第一读取数据存在于所述第一缓存子区域,如果所述第一缓存子区域为所述第一中断状态,则也不从所述第一缓存子区域向所述主机计算机传送所述第一读取数据。
5.根据权利要求4所述的存储系统,其特征在于,
如果所述第一读取数据为没有写入到所述存储设备组的数据即第一脏数据,则所述第一控制器将以下数据传送至所述主机计算机:该数据为并非所述第一中断状态的缓存子区域内的数据,且与所述第一脏数据对应。
6.根据权利要求5所述的存储系统,其特征在于,
所述第一控制器接收第二写入请求或第二读取请求,
在接收到所述第二写入请求的情况下,如果遵从于所述第二写入请求的第二写入数据的保存目的地为所述第一中断状态的所述第一缓存子区域,则所述第一控制器在所述第二写入请求的处理之前,关于所述第一缓存子区域进行所述中断状态恢复处理,
在接收到所述第二读取请求的情况下,即使遵从于所述第二读取请求的第二读取数据为所述第一中断状态的所述第一缓存子区域内的数据,所述第一控制器也与所述第二读取请求的处理非同步地执行关于所述第一缓存子区域的所述中断状态恢复处理。
7.根据权利要求1所述的存储系统,其特征在于,
所述第一控制器不确认向所述第二控制器传送的所述第一写入数据所附带的保证码地将所述第一写入数据向所述第二控制器传送,
所述第二控制器接收所述第一写入数据,并确认所述第一写入数据所附带的所述保证码。
8.根据权利要求1所述的存储系统,其特征在于,
所述第一控制器在执行在逻辑卷之间复制数据的内部功能的情况下,将所述第一写入数据保存到所述第一缓冲区域,并将其从所述第一缓冲区域保存到所述第一缓存子区域。
9.根据权利要求1所述的存储系统,其特征在于,
如果在所述第一写入数据的保存目的地的所述第一缓存子区域内保存的数据为对所述存储设备组写入完毕的数据即净数据,则所述第一控制器在所述中断状态恢复处理中释放所述第一缓存子区域。
10.根据权利要求1所述的存储系统,其特征在于,
所述第一控制器为了恢复所述第一中断状态的所述第一缓存子区域内的数据而在某一缓存子区域与所述第一缓存子区域之间进行数据复制,
在复制目的地的缓存子区域为所述第一缓存子区域且确定第一中断状态时的写入范围包含在所述第一写入请求的所述指定范围内的情况下,所述第一控制器跳过所述数据复制。
11.根据权利要求1所述的存储系统,其特征在于,
所述第一控制器具有第一存储器,所述第二控制器具有第二存储器,
所述第一缓冲区域和所述第一缓存区域汇集于所述第一存储器,所述第二缓冲区域和所述第二缓存区域汇集于所述第二存储器。
12.一种存储控制方法,其为存储系统的存储控制方法,该存储系统具有:第一控制器,其与由一个以上的存储设备构成的存储设备和主机计算机连接,具有第一缓冲区域和第一缓存区域;以及第二控制器,其与所述存储设备组和所述主机计算机连接,具有第二缓冲区域和第二缓存区域,所述第一控制器从所述主机计算机接收写入请求,将遵从于所述写入请求的写入数据不经由所述第一缓冲区域地保存到所述第一缓存区域中的任一个缓存子区域即第一缓存子区域,为了将保存到所述第一缓存子区域的写入数据不经由所述第二缓冲区域地保存到所述第二缓存区域中的任一个缓存子区域即第二缓存子区域而将其传送到所述第二控制器,将所述第一缓存子区域内的写入数据写入到所述存储设备组,所述存储控制方法的特征在于,
所述第一控制器管理所述第一缓存子区域的状态是否为第一中断状态,该第一中断状态为在所述第一写入数据向所述第一缓存子区域的保存成功的情况下被清除的状态,所述第一控制器或第二控制器管理所述第二缓存子区域的状态是否为第二中断状态,该第二中断状态为在所述写入数据从所述第一缓存子区域向所述第二缓存子区域的传送成功的情况下被清除的状态,
所述第一控制器进行中断状态恢复处理,
所述中断恢复处理包括如下内容:
判断所述第一缓存子区域是否为所述第一中断状态且所述第二缓存子区域是否为所述第二中断状态;
在所述第一缓存子区域为所述第一中断状态且所述第二缓存子区域为所述第二中断状态的情况下,将所述第一缓存子区域设定为复制目的地,将所述第二缓存子区域设定为复制源,从复制源向复制目的地复制数据,并且对分别与所述第一缓存子区域和第二缓存子区域对应的所述第一中断状态和第二中断状态进行清除;以及
在所述第一缓存子区域并非为所述第一中断状态且所述第二缓存子区域为所述第二中断状态的情况下,将所述第二缓存子区域设定为复制目的地,将所述第一缓存子区域设定为复制源,从复制源向复制目的地复制数据,并对与所述第二缓存子区域对应的所述第二中断状态进行清除。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2013/077483 WO2015052798A1 (ja) | 2013-10-09 | 2013-10-09 | ストレージシステム及び記憶制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104956311A true CN104956311A (zh) | 2015-09-30 |
CN104956311B CN104956311B (zh) | 2017-10-17 |
Family
ID=52812645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380071895.1A Active CN104956311B (zh) | 2013-10-09 | 2013-10-09 | 存储系统以及存储控制方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9946655B2 (zh) |
JP (1) | JP6009095B2 (zh) |
CN (1) | CN104956311B (zh) |
DE (1) | DE112013005903T5 (zh) |
GB (1) | GB2534956A (zh) |
WO (1) | WO2015052798A1 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107102955A (zh) * | 2016-02-19 | 2017-08-29 | 希捷科技有限公司 | 用于存储子系统的关联和原子回写高速缓冲存储系统和方法 |
CN107463670A (zh) * | 2017-08-03 | 2017-12-12 | 北京奇艺世纪科技有限公司 | 数据存储、读取方法及装置 |
CN108073357A (zh) * | 2016-11-07 | 2018-05-25 | 三星电子株式会社 | 以raid方式存储数据的存储装置 |
CN109511203A (zh) * | 2018-11-13 | 2019-03-22 | 广州鹏林照明灯具有限公司 | 一种舞台灯具双缓存校准dmx512数据的系统和方法 |
CN109783034A (zh) * | 2019-02-12 | 2019-05-21 | 记忆科技(深圳)有限公司 | 一种提升磁盘阵列处理效率的方法及其系统 |
CN110457281A (zh) * | 2019-08-14 | 2019-11-15 | 北京博睿宏远数据科技股份有限公司 | 数据处理方法、装置、设备及介质 |
CN111221474A (zh) * | 2020-01-02 | 2020-06-02 | 广州虎牙科技有限公司 | 一种数据的存储方法、装置、设备和存储介质 |
CN113253911A (zh) * | 2020-02-07 | 2021-08-13 | 株式会社日立制作所 | 存储系统和输入输出控制方法 |
CN115129267A (zh) * | 2022-09-01 | 2022-09-30 | 苏州浪潮智能科技有限公司 | 一种域地址变更方法、装置、设备及可读存储介质 |
TWI808010B (zh) * | 2022-09-26 | 2023-07-01 | 慧榮科技股份有限公司 | 資料處理方法及對應之資料儲存裝置 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326030B (zh) * | 2015-06-26 | 2020-03-20 | 伊姆西Ip控股有限责任公司 | 用于存储系统中的软切换的方法和装置 |
JP6507261B2 (ja) * | 2015-11-13 | 2019-04-24 | 株式会社日立製作所 | ストレージ装置、記録媒体、および記憶制御方法 |
US20170177276A1 (en) * | 2015-12-21 | 2017-06-22 | Ocz Storage Solutions, Inc. | Dual buffer solid state drive |
US9910619B2 (en) | 2015-12-21 | 2018-03-06 | Toshiba Memory Corporation | Dual buffer solid state drive |
JP2018022404A (ja) * | 2016-08-05 | 2018-02-08 | 富士通株式会社 | ストレージシステム、ストレージ制御装置およびストレージ制御プログラム |
US10235310B2 (en) | 2016-11-29 | 2019-03-19 | International Business Machines Corporation | Deallocation of memory buffer in multiprocessor systems |
US10223301B2 (en) * | 2016-11-29 | 2019-03-05 | International Business Machines Corporation | Pre-allocating memory buffers by physical processor and using a bitmap metadata in a control program |
WO2018198336A1 (ja) * | 2017-04-28 | 2018-11-01 | 株式会社日立製作所 | ストレージシステム及びストレージ制御装置 |
US10521148B2 (en) * | 2018-03-07 | 2019-12-31 | Western Digital Technologies, Inc. | Data storage device backup |
JP7201775B2 (ja) * | 2018-11-08 | 2023-01-10 | 株式会社日立製作所 | ストレージシステム、データ管理方法、及びデータ管理プログラム |
JP6976237B2 (ja) * | 2018-11-08 | 2021-12-08 | 株式会社日立製作所 | ストレージシステム、データ管理方法、及びデータ管理プログラム |
JP7316242B2 (ja) * | 2020-03-18 | 2023-07-27 | 株式会社日立製作所 | ストレージシステムおよびデータ転送方法 |
US11789617B2 (en) * | 2021-06-29 | 2023-10-17 | Acronis International Gmbh | Integration of hashgraph and erasure coding for data integrity |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060085610A1 (en) * | 2004-10-14 | 2006-04-20 | Hitachi, Ltd. | Computer system |
US20080104344A1 (en) * | 2006-10-25 | 2008-05-01 | Norio Shimozono | Storage system comprising volatile cache memory and nonvolatile memory |
CN101436152A (zh) * | 2008-12-02 | 2009-05-20 | 成都市华为赛门铁克科技有限公司 | 一种数据备份的方法和装置 |
CN101630232A (zh) * | 2008-07-15 | 2010-01-20 | 中兴通讯股份有限公司 | 双存储控制器的管理方法和装置 |
US20120011326A1 (en) * | 2010-03-19 | 2012-01-12 | Hitachi, Ltd. | Storage system and method for changing configuration of cache memory for storage system |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06131123A (ja) * | 1992-10-22 | 1994-05-13 | Fujitsu Ltd | 計算機の外部記憶装置 |
JP3236166B2 (ja) | 1994-06-08 | 2001-12-10 | 株式会社日立製作所 | キャッシュ制御方法および情報処理装置 |
JP3772369B2 (ja) | 1995-11-20 | 2006-05-10 | 株式会社日立製作所 | 記憶サブシステム |
JPH09319655A (ja) * | 1996-05-29 | 1997-12-12 | Hitachi Ltd | キャッシュ管理方法および記憶装置システム |
JP3610574B2 (ja) * | 2001-08-15 | 2005-01-12 | 日本電気株式会社 | ディスクアレイ装置 |
US7313724B1 (en) * | 2004-07-01 | 2007-12-25 | Symantec Operating Corporation | Method and apparatus for synchronizing redundant data with a volume |
JP4491330B2 (ja) * | 2004-11-08 | 2010-06-30 | 富士通株式会社 | ディスクアレイ装置とそのデータのリカバリ方法およびデータリカバリプログラム |
DE102005016051B4 (de) * | 2005-04-07 | 2019-06-13 | Infineon Technologies Ag | Speicherüberprüfungsvorrichtung und Verfahren zum Überprüfen eines Speichers |
JP2006114064A (ja) * | 2005-12-28 | 2006-04-27 | Hitachi Ltd | 記憶サブシステム |
US7849350B2 (en) * | 2006-09-28 | 2010-12-07 | Emc Corporation | Responding to a storage processor failure with continued write caching |
JP5057366B2 (ja) * | 2006-10-30 | 2012-10-24 | 株式会社日立製作所 | 情報システム及び情報システムのデータ転送方法 |
US9104599B2 (en) * | 2007-12-06 | 2015-08-11 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for destaging cached data |
US8751467B2 (en) * | 2007-01-18 | 2014-06-10 | Dot Hill Systems Corporation | Method and apparatus for quickly accessing backing store metadata |
US7856419B2 (en) * | 2008-04-04 | 2010-12-21 | Vmware, Inc | Method and system for storage replication |
US20100174676A1 (en) * | 2009-01-06 | 2010-07-08 | International Business Machines Corporation | Determining modified data in cache for use during a recovery operation |
US20120260034A1 (en) * | 2011-04-06 | 2012-10-11 | Hitachi, Ltd. | Disk array apparatus and control method thereof |
US9304901B2 (en) * | 2013-03-14 | 2016-04-05 | Datadirect Networks Inc. | System and method for handling I/O write requests |
-
2013
- 2013-10-09 DE DE112013005903.7T patent/DE112013005903T5/de not_active Withdrawn
- 2013-10-09 GB GB1513247.5A patent/GB2534956A/en not_active Withdrawn
- 2013-10-09 US US14/765,442 patent/US9946655B2/en active Active
- 2013-10-09 CN CN201380071895.1A patent/CN104956311B/zh active Active
- 2013-10-09 WO PCT/JP2013/077483 patent/WO2015052798A1/ja active Application Filing
- 2013-10-09 JP JP2015541367A patent/JP6009095B2/ja not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060085610A1 (en) * | 2004-10-14 | 2006-04-20 | Hitachi, Ltd. | Computer system |
US20080104344A1 (en) * | 2006-10-25 | 2008-05-01 | Norio Shimozono | Storage system comprising volatile cache memory and nonvolatile memory |
CN101630232A (zh) * | 2008-07-15 | 2010-01-20 | 中兴通讯股份有限公司 | 双存储控制器的管理方法和装置 |
CN101436152A (zh) * | 2008-12-02 | 2009-05-20 | 成都市华为赛门铁克科技有限公司 | 一种数据备份的方法和装置 |
US20120011326A1 (en) * | 2010-03-19 | 2012-01-12 | Hitachi, Ltd. | Storage system and method for changing configuration of cache memory for storage system |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107102955B (zh) * | 2016-02-19 | 2020-03-13 | 希捷科技有限公司 | 用于存储子系统的关联和原子回写高速缓冲存储系统和方法 |
CN107102955A (zh) * | 2016-02-19 | 2017-08-29 | 希捷科技有限公司 | 用于存储子系统的关联和原子回写高速缓冲存储系统和方法 |
CN108073357A (zh) * | 2016-11-07 | 2018-05-25 | 三星电子株式会社 | 以raid方式存储数据的存储装置 |
CN107463670A (zh) * | 2017-08-03 | 2017-12-12 | 北京奇艺世纪科技有限公司 | 数据存储、读取方法及装置 |
CN107463670B (zh) * | 2017-08-03 | 2020-06-05 | 北京奇艺世纪科技有限公司 | 数据存储、读取方法及装置 |
CN109511203A (zh) * | 2018-11-13 | 2019-03-22 | 广州鹏林照明灯具有限公司 | 一种舞台灯具双缓存校准dmx512数据的系统和方法 |
CN109783034A (zh) * | 2019-02-12 | 2019-05-21 | 记忆科技(深圳)有限公司 | 一种提升磁盘阵列处理效率的方法及其系统 |
CN109783034B (zh) * | 2019-02-12 | 2022-03-25 | 记忆科技(深圳)有限公司 | 一种提升磁盘阵列处理效率的方法及其系统 |
CN110457281A (zh) * | 2019-08-14 | 2019-11-15 | 北京博睿宏远数据科技股份有限公司 | 数据处理方法、装置、设备及介质 |
CN111221474A (zh) * | 2020-01-02 | 2020-06-02 | 广州虎牙科技有限公司 | 一种数据的存储方法、装置、设备和存储介质 |
CN113253911A (zh) * | 2020-02-07 | 2021-08-13 | 株式会社日立制作所 | 存储系统和输入输出控制方法 |
CN115129267A (zh) * | 2022-09-01 | 2022-09-30 | 苏州浪潮智能科技有限公司 | 一种域地址变更方法、装置、设备及可读存储介质 |
TWI808010B (zh) * | 2022-09-26 | 2023-07-01 | 慧榮科技股份有限公司 | 資料處理方法及對應之資料儲存裝置 |
Also Published As
Publication number | Publication date |
---|---|
GB2534956A (en) | 2016-08-10 |
JP6009095B2 (ja) | 2016-10-19 |
WO2015052798A1 (ja) | 2015-04-16 |
CN104956311B (zh) | 2017-10-17 |
US9946655B2 (en) | 2018-04-17 |
JPWO2015052798A1 (ja) | 2017-03-09 |
US20150370713A1 (en) | 2015-12-24 |
DE112013005903T5 (de) | 2015-09-10 |
GB201513247D0 (en) | 2015-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104956311A (zh) | 存储系统以及存储控制方法 | |
CN101174197B (zh) | 信息系统及信息系统的数据转发方法 | |
US9563377B2 (en) | Computer system and method of controlling computer system | |
US8443160B2 (en) | Computer system and data migration method | |
EP2254036B1 (en) | Storage apparatus and data copy method | |
US8255624B2 (en) | Storage apparatus and its control method | |
US8396835B2 (en) | Computer system and its data control method | |
US20190235777A1 (en) | Redundant storage system | |
US7984260B2 (en) | Storage system provided with a plurality of controller modules | |
CN110383251B (zh) | 存储系统、计算机可读记录介质、系统的控制方法 | |
JP2008065525A (ja) | 計算機システム、データ管理方法及び管理計算機 | |
JP2005326935A (ja) | 仮想化ストレージを備える計算機システムの管理サーバおよび障害回避復旧方法 | |
US7478267B2 (en) | Access control device and interface installed in same | |
KR20200041815A (ko) | FPGA+SSD 내부의 임베디드 PCIe 스위치로 이레이저 코드 데이터 보호 기능을 지원하는 시스템 | |
US20210303178A1 (en) | Distributed storage system and storage control method | |
WO2021088586A1 (zh) | 一种存储系统中的元数据的管理方法及装置 | |
JP2024504171A (ja) | オペレーティングシステムベースのストレージ方法およびシステム | |
JP2013101665A (ja) | ストレージシステム | |
CN102132245B (zh) | 具有执行格式化或粉碎功能的存储系统 | |
US11640337B2 (en) | Data recovery of distributed data using redundant codes | |
US8930485B2 (en) | Information processing apparatus and non-transitory computer-readable recording medium having program stored thereon | |
US20230205650A1 (en) | Storage system and storage system control method | |
US20230236932A1 (en) | Storage system | |
US20220342552A1 (en) | Distributed storage system and volume migration method | |
US20140208023A1 (en) | Storage system and control method for storage system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |