CN101556529B - 具有多个存储系统模块的存储系统 - Google Patents
具有多个存储系统模块的存储系统 Download PDFInfo
- Publication number
- CN101556529B CN101556529B CN2009100041918A CN200910004191A CN101556529B CN 101556529 B CN101556529 B CN 101556529B CN 2009100041918 A CN2009100041918 A CN 2009100041918A CN 200910004191 A CN200910004191 A CN 200910004191A CN 101556529 B CN101556529 B CN 101556529B
- Authority
- CN
- China
- Prior art keywords
- module
- virtual region
- actual area
- page
- data
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种具有多个存储系统模块的存储系统。使得在模块结构的存储系统中尽量不发生模块间通信。多个模块(1)和(2)具有与同一卷识别号码关联的多个虚拟卷(302)。从上位装置(100)接收到写请求的模块(2),若未对遵从该写请求的作为写对象的虚拟区域分配实际区域,则不从其它模块(1)内的多个实际区域、而从本模块(2)内的多个实际区域中寻找未分配的实际区域。模块(2)对作为写对象的虚拟区域分配在本模块内寻找出的实际区域,在该实际区域中写入遵从写请求的数据。
Description
技术领域
本发明涉及具有多个物理存储装置的存储系统。
背景技术
作为具有多个物理存储装置的存储系统之一,已知具有动态容量分配功能的存储系统(例如参照专利文献1以及专利文献2)。在该存储系统中具备虚拟逻辑卷(以下称为“虚拟卷”)和存储区域池(以下称为“池”)。虚拟卷由多个虚拟存储区域(以下称为“虚拟区域”)构成。池由多个实体的存储区域(以下称为“实际区域”)构成。实际区域是以多个物理存储装置为基础的存储区域。
通过动态容量分配功能,以发生针对虚拟卷内的虚拟区域的数据写入为契机,对该虚拟区域分配池内的实际区域,将数据写入该分配的实际区域中。
【专利文献1】特开2005-011316号公报
【专利文献2】特开2006-302258号公报
另外,考虑通过多个存储系统模块(以下简称为“模块”)构成存储系统。以下,将通过多个模块构成的存储系统称为“模块结构的存储系统”。各个模块具备多个物理存储装置和控制针对多个物理存储装置的访问的控制器。可以像一台存储系统那样运用或者管理多个模块。另外,通过根据需要来增减模块,可以变更存储系统的存储容量和处理能力。
在使模块结构的存储系统应用上述动态容量分配功能时,考虑例如图30所示的结构。
即,模块结构的存储系统由具有端口(A)以及池(A)的模块(A)、和具有端口(B)以及池(B)的模块(B)构成。模块(A)以及(B)像一个存储系统那样被管理。因此,主机(H)识别为端口(A)以及(B)好像存在于一个存储系统中。
仅在模块(A)中具备虚拟卷(VVOL)。为了使主机(H)经由端口(A)和端口(B)的任何一个都能够访问虚拟卷(VVOL),除了将端口(A)和虚拟卷(VVOL)相连的第一路径(P1)以外,还设置了将端口(B)和虚拟卷(VVOL)相连的第二路径(P2)。
当考察从主机(H)发送针对虚拟卷(VVOL)内的虚拟区域(V)的数据的写请求(W)的情况时,考虑下述4种情况。
情况W1:模块(A)经由第一路径(P1)接收写请求(W),并对虚拟区域(V)分配池(A)内的实际区域。
情况W2:模块(A)经由第一路径(P1)接收写请求(W),并对虚拟区域(V)分配池(B)内的实际区域。
情况W3:模块(A)经由第二路径(P2)接收写请求(W),并对虚拟区域(V)分配池(A)内的实际区域。
情况W4:模块(A)经由第二路径(P2)接收写请求(W),并对虚拟区域(V)分配池(B)内的实际区域。
在图30中未表示以上情况,但即使考察从主机(H)发送来自虚拟区域(V)的数据的读请求(R)的情况时,也考虑下述4种情况、即与上述同种的情况。
情况R1:模块(A)经由第一路径(P1)接收读请求(R),从池(A)内的实际区域读出数据,并发送至主机(H)。
情况R2:模块(A)经由第一路径(P1)接收读请求(R),从池(B)内的实际区域读出数据,并发送至主机(H)。
情况R3:模块(A)经由第二路径(P2)接收读请求(R),从池(A)内的实际区域读出数据,并发送至主机(H)。
情况R4:模块(A)经由第二路径(P2)接收读请求(R),从池(B)内的实际区域读出数据,并发送至主机(H)。
在上述情况W1~W4或R2~R4中,在模块(A)和模块(B)之间发生通信(以下称为“模块间通信”)。例如,在情况W2中,发生用于对虚拟区域(V)分配池(B)内的实际区域的模块间通信。在情况W3中,发生用于将经过了端口(B)的写请求(W)转发至模块(A)的模块间通信。在情况W4中,发生用于将经过了端口(B)的写请求(W)转发至模块(A)的模块间通信、和用于对虚拟区域(V)分配池(B)内的实际区域的模块间通信。
通过上述考察,即使写请求/读请求(I/O请求)经过同一端口(A)或(B),由于模块间通信的发生,有时I/O性能会下降(具体而言,模块结构的存储系统从主机(H)接收I/O请求开始直到向主机(H)返回响应为止的时间长度增长)。另外,当I/O请求(写请求/读请求)经过的端口不同时,有时模块间通信的发生次数不同,因此有时I/O性能不同。
发明内容
因此,本发明的目的在于,使得在模块结构的存储系统中尽量不发生模块间通信。
本发明的另一目的在于,不管I/O请求经过模块结构的存储系统所具有的哪个端口,I/O性能都尽量统一。
本发明的其它目的根据后面的说明变得明了。
多个模块具有与同一卷识别号码关联的多个虚拟卷。从上位装置接收到写请求的模块(本模块),若未对遵从该写请求的作为写对象的虚拟区域分配实际区域,则不是从其它模块内的多个实际区域、而是从本模块内的多个实际区域寻找未分配的实际区域。本模块对作为写对象的虚拟区域分配在本模块内寻找到的实际区域,在该实际区域中写入遵从写请求的数据。多个模块例如由一个以上的第一模块和一个以上的第二模块构成。第一和第二模块具有的功能相同。
附图说明
图1表示本发明的实施例1的计算机系统的整体结构的一例。
图2是表示存储器封装的详细内容的一例的图。
图3是表示路径信息表的一例的图。
图4是表示模块结构的存储系统中的I/O处理的流程的一例的图。
图5是表示虚拟卷技术的一例的图。
图6是表示池表的一例的图。
图7是表示页表的一例的图。
图8是表示虚拟卷表的一例的图。
图9是实施例1的一个特征的概要的说明图。
图10是表示生成虚拟卷的处理的一例的图。
图11是表示实施例1中的路径定义处理的一例的图。
图12是表示已分配了本模块内的页的虚拟区域为作为写对象的虚拟区域的情况下的写处理的一例的图。
图13是表示未对作为读对象的虚拟区域分配本模块内的页的情况下的读处理的一例的图。
图14是表示未对作为写对象的虚拟区域分配本模块内的页的情况下的写处理的一例的图。
图15是表示对虚拟卷分配页的处理的一例。
图16是实施例2的一个特征的概要的说明图。
图17是表示实施例2中的虚拟卷表的一例的图。
图18是表示路径定义时的页复制处理的一例的图。
图19是表示写处理时的页复制处理的一例的图。
图20是表示读处理时的页复制处理的一例的图。
图21是表示实施例2中的路径信息表的一例的图。
图22是表示实施例2中的路径定义处理的一例的图。
图23是表示读·写处理时的页复制处理的另一例的图。
图24是表示写处理时的副本页删除处理的一例的图。
图25是表示写处理时的副本页更新处理的一例的图。
图26是表示新分配页时的副本页删除处理的一例的图。
图27是表示路径定义时的副本页删除处理的一例的图。
图28是表示基于时间经过的副本页删除处理的一例的图。
图29是表示模块间的耦合的变形例的图。
图30是课题的说明图。
符号说明
100主机;110网络;120网络;200存储系统模块;210处理器封装;211处理器;212本地存储器;213维护端口;220存储器封装;221控制信息部;222程序部;223高速缓冲存储部;230后端封装;231端口;240HDD;250卷;260前端封装;261端口
具体实施方式
以下,参照附图来说明本发明的若干实施例。另外,以下以计算机程序为主语时,实际上是通过执行该计算机程序的处理器(CPU)进行处理。
【实施例1】
图1表示实施例1的计算机系统的整体结构的一例。
具备:主机100、模块结构的存储系统(以下简称为“存储系统”)和维护终端270。存储系统例如由2台存储系统模块(以下称为“模块”)200构成。模块200是具备控制器和物理存储装置的、存储系统的一个要素(子系统)。另外,主机100和各模块200经由第一通信网络110相连。另外,模块200彼此经由第二通信网络282相连。第二通信网络282是与第一通信网络110独立的网络。也可以代替第一或第二通信网络110、282而分别采用第一或第二专用线路等其它种类的通信媒体。
2台模块200像1台存储系统那样被主机100识别。以下,当区别说明2台模块200时,称为“模块(1)”、“模块(2)”。此外,在实施例1中模块200为2台,但也可以为3台以上。
主机100是向模块结构的存储系统发送I/O请求的计算机。
维护终端270是用于维护存储系统的终端(计算机),其经由第三通信网络281与各模块200相连。维护终端270具备维护端口275、CPU271、存储器272以及输入输出部274。维护端口275与处理器封装(processor package)210的维护端口213连接。经由维护端口275从处理器封装210取得运转信息,或者向处理器封装210发送维护操作。存储器272中存储有维护用程序273。CPU271从存储器272中读出维护用程序273并执行,由此实现维护。此外,存储器272也可以存储从处理器封装210取得的信息。输入输出部274是用于接受来自用户的操作、或者向用户显示存储系统的运转信息的用户接口(例如键盘、鼠标、监视器等)。此外,使维护终端270具有电源(未图示)。
模块200具备控制器、HDD(Hard Disk Drive)240和交换器290。控制器由前端封装260(以下称为“FE封装”)、处理器封装210、存储器封装220和后端封装230(以下简称为“BE封装”)构成。构成控制器的各要素和交换机290经由内部网络(例如纵横式交换机(Crossbar Switch))280相互连接。此外,FE封装260、处理器封装210、存储器封装220以及BE封装230中的至少一种可以存在多个。
FE封装260具有一个以上的端口261。端口261经由第一通信网络110与从主机100输出I/O请求的端口(未图示)连接,从主机100接收I/O请求(写请求/读请求)。
处理器封装210具有处理器(例如微处理器)211、本地存储器212以及维护端口213。它们通过封装内网络(例如CPU总线)214相互连接。在一个处理器封装210中,处理器211、本地存储器212以及维护端口213中的至少一种可以存在多个。
处理器211通过执行在处理器封装220的程序部222中存储的计算机程序,执行来自主机100的I/O请求的处理等。
本地存储器212除了临时存储处理器211执行的计算机程序所临时使用的数据之外,还对存储在HDD240或存储器封装220中的数据(控制信息、业务数据、程序等)进行存储。与从处理器211到存储器封装220或到HDD240的物理距离相比,从处理器211到本地存储器212的物理距离更近。因此,与将处理器211执行的处理中所使用的数据存储在存储器封装220或HDD20中相比,存储在本地存储器212中可以高速地进行处理。
维护端口213经由第三通信网络281与维护终端270中的维护端口275相连。经由维护端口213向维护终端270发送处理器封装210的运转信息,或者接收来自维护终端270的维护操作。
存储器封装220由一个或多个存储器构成,具有控制信息部221、程序部222以及高速缓冲存储部223。在程序部222中存储有用于实现由存储系统200执行的处理的程序。在控制信息部221中存储有这些程序所利用的控制信息。由处理器封装210的处理器211读出在存储器封装220中存储的程序以及控制信息。在高速缓冲存储部223中临时存储相对于HDD240输入输出的数据。若高速缓冲存储部223中存在目标数据,则处理器211能够不访问HDD240而从高速缓冲存储部223取得目标数据。若HDD240中存储的使用频率高的数据等被存储在高速缓冲存储部223中,则可以期待来自主机100的I/O请求的处理速度的提高。此外,为了避免故障发生时的数据消失等,存储器封装220可以被二重化。
BE封装230具有一个以上的端口231。端口231经由后端的通信网络(例如光纤通道网络)283与HDD240相连。经由端口231,将在高速缓冲存储部223中临时存储的、作为写对象的数据写入HDD240,或者将从HDD240读出的作为读对象的数据临时存储在高速缓冲存储部223中。
交换机290与前端封装260、后端封装230、处理器封装210以及存储器封装220相连,是控制这些要素间的通信的电路板。一个模块200内的交换机290与另一个模块200内的交换机290相连。经由各交换机290进行模块间通信。此外,以下有时将交换机290彼此的耦合称为“松耦合”,将经由内部网络280的要素间的耦合称为“紧耦合”。原因是,在一个模块200内的封装间可以直接参照以及更新在该模块200的高速缓冲存储部223中存储的控制信息,另一方面,不允许从一个模块200直接参照以及更新在另一模块200的高速缓冲存储部223中存储的控制信息,一个模块200内的处理器211通过向另一模块200内的处理器211进行请求,可以间接地进行参照以及更新。即,所谓紧耦合,是指可以直接地参照以及更新控制信息的耦合,所谓松耦合,是指间接地参照以及更新控制信息的耦合。
HDD240存储由主机100执行的软件(例如数据库管理系统)所利用的数据、即作为来自主机100的I/O请求的对象的数据。另外,一个以上的HDD240可以以校验组(或者RAID组)这样的单位被分组。即,可以通过RAID(Redundant Arrays of Inexpensive Disks)等方法实现高可靠化。可以将构成校验组的存储空间的各存储区域设为作为逻辑存储设备的卷250。此外,在实施例1中,作为物理存储装置而使用了HDD240,但也可以采用闪速存储器或DVD等其它种类的物理的非易失性存储装置。另外,多个种类的物理存储装置可以共存于一个模块200或者一个存储系统中。
图2表示存储器封装220的详细内容。
作为存储在控制信息部211中的控制信息,存在例如记录与路径相关的信息的路径信息表2211、记录与虚拟卷相关的信息的虚拟卷表2212、记录与池相关的信息的池表2213、以及记录与后述的页相关的信息的页表2214。作为在程序部222中存储的计算机程序,存在例如控制读处理的读程序2221、控制写处理的写程序2222、用于定义路径的路径定义程序2223、用于删除已定义的路径的路径删除程序2224、用于将页分配给虚拟区域的页分配程序2225、用于在模块间以页为单位复制数据的副本生成程序2226、用于删除副本页的副本删除程序2227、用于更新控制信息的控制信息更新程序2228、以及用于生成虚拟卷的虚拟卷生成程序2229。关于这些表或程序,在后面进行详细描述。此外,通过处理器执行这些计算机程序2221~2229来进行的全部或一部分处理,也可以通过硬件电路等其它种类的处理部来实现。
如前所述,模块(1)以及(2)相对于主机100被识别为一台存储系统。因此,当管理者定义与模块(2)的卷250相连的路径(I/O用的路径)时,有可能指定模块(1)的端口261。在进行了这样的指定时,需要如下所述来实现I/O处理。即,模块(1)从主机100接收I/O请求,并向模块(2)请求I/O处理。模块(2)对该请求进行应答,执行针对模块(2)内的卷250的I/O。以下,有时将这种I/O称为“跨越模块200的I/O”。下面,对跨越模块200的I/O的处理方式进行说明。
首先,说明用于实现跨越模块200的I/O的控制信息。
图3表示路径信息表2211的详细内容。
在路径信息表2211中针对每条路径记录端口号码、卷号码以及模块号码。当对一条路径(以下,在该段落中称为“对象路径”)进行说明时,“端口号码”是作为对象路径的一个构成要素的、端口261的识别号码。“卷号码”是与对象路径相连的逻辑卷(例如卷250或后述的虚拟卷)的识别号码。在实施例1中,路径的信息由端口号码和卷号码构成。“模块号码”是具有与对象路径相连的逻辑卷的模块200的识别号码。根据图3的例子,卷0、卷1以及卷2在模块(1)中,卷3在模块(2)中。
使用图4,说明写处理的一例来作为跨越模块200的I/O。
通过在模块(1)以及模块(2)各自中执行写程序2222来实现写处理。在图4的说明中,将通过模块(1)的处理器211执行的写程序2222称为“写程序(1)”,将通过模块(2)的处理器211执行的写程序2222称为“写程序(2)”。此外,以下当区别模块(1)以及(2)中的同种要素时,与写程序2222同样地,有时代替参照符号而使用(1)或(2)这样的符号。
主机100利用具有模块(1)的端口261的路径来发行写请求(S100),并等待来自存储系统的写完成报告(S101)。
当主机100利用上述路径发行写请求时,模块(1)接收写请求(S102)。写程序(1)参照路径信息表(1),检查写数据(作为写对象的数据)的写入目的地卷250的位置(S103)。写程序(1)判定具有写入目的地卷250的模块200是模块(1)和模块(2)的哪一个(S104)。在S104中判定为模块(1)时(S104:否),写程序(1)在写入目的地卷250中写入写数据(S105),向主机100报告写完成(S106)。另一方面,在S104中判定为模块(2)时(S104:是),写程序(1)将写数据存储在高速缓冲存储部(1)中。然后,写程序(1)向模块(2)请求写处理(S108),并等待来自模块(2)的应答(S109)。此时,写程序(1)向模块(2)通知写数据的高速缓冲存储地址。所谓高速缓冲存储地址,是存储了对象数据的存储区域的地址,是高速缓冲存储部223内的存储区域(以下,称为高速缓冲存储区域)的地址。
写程序(2)从模块(1)接收写处理的请求(S110),将写数据从与该请求一起接收到的高速缓冲存储地址所表示的高速缓冲存储区域向模块(2)转发(从高速缓冲存储区域读出写数据)(S111),将该写数据写入写入目的地卷250(S112)。写入完成后,写程序(2)向模块(1)报告写完成(S113)。
写程序(1)若从写程序(2)接收到写完成的报告,则向主机100报告写完成(S116)。
主机100,当从模块(1)接收写完成报告时(S117),结束处理(S118)。
作为跨越模块200的I/O,以写为例进行了说明,但在读的情况下进行例如以下处理。即,省略了S107,在S108中,读程序(1)向模块(2)发行读请求。读程序(2)接收该读请求,从读源卷250读出读数据(作为读对象的数据),将读出的读数据写入高速缓冲存储部(2),将读数据的高速缓冲存储地址(高速缓冲存储部(2)内的高速缓冲存储区域的地址)通知给模块(1)。读程序(1)与步骤S111同样地从模块(2)向模块(1)转发读数据(即,从所通知的高速缓冲存储地址所表示的高速缓冲存储区域读出读数据)。最后,读程序(1)将读数据与读完成报告一起转发至主机100。
通过如上所述,可以实现跨越模块200的写或读。但是,在跨越模块200的I/O的情况下,由于进行模块间通信,因此I/O性能降低。而且,在模块(1)内的卷250和主机100之间设置了具有FE的端口(1)的第一路径和具有FE的端口(2)的第二路径时,根据使用第一和第二路径的哪一个(即,根据FE的端口(1)和(2)中的哪一个接收I/O请求),I/O性能不同。
在实施例1中,在模块(1)以及(2)的双方中具有虚拟卷技术(动态容量分配功能),实施了用于避免I/O性能降低的工作。以下说明该工作,但在此之前,使用图5至图8说明虚拟卷。
图5表示虚拟卷技术的概要。
模块(1)以及(2)具备虚拟卷302和池300。
虚拟卷302与由卷250那样的实际区域构成的逻辑卷不同,是不具有实际区域的虚拟的逻辑卷。虚拟卷302由多个虚拟的存储区域(虚拟区域)构成。
池300是例如由卷250构成的存储空间,由多个页301构成。在此,所谓“页”,是卷250的构要要素,是基于HDD240的实体的存储区域(实际区域)。当将页301分配给虚拟区域时,以该虚拟区域作为写入目的地的写数据304被写入所分配的页301。一个虚拟区域的存储容量可以是规定个数(例如一个)的页301的存储容量,一个页301的存储容量可以是规定个数(例如一个)的虚拟区域的存储容量。
此外,池300不需要针对每个虚拟卷302而存在。例如,可以从一个池300对多个虚拟卷302分配页301,也可以从多个池300对一个虚拟卷302分配页301。对于虚拟卷302,也可以从不具有该虚拟卷302的其它模块200中的池300分配页301。
图6是池表2213的一例。
池表2213是针对每个池300而存在的表。在池表2213中记录:与对应于该表2213的池300相关的池号码、池大小以及页表。“池号码”是上述对应的池300的识别号码。“池大小”是上述对应的池300的存储容量。“页表”是用于管理上述对应的池300具有的各页301的信息,具体而言,是图7所示的信息。即,在页表2214中,针对构成上述对应的池300的每个页301而记录页号码、开始地址、结束地址、状态以及分配目的地。当对一个页301(以下,在该段落中称为“对象页301”)进行说明时,“页号码”是对象页301的识别号码。“开始地址”是对象页301在池300中的开始地址,“结束地址”是对象页301在池300中的最终地址。“状态”是对象页301的状态,例如是否已分配给虚拟区域。“分配目的地”是具有作为对象页301的分配目的地的虚拟区域的虚拟卷302的卷号码。当“状态”的值为“未分配”时,作为“分配目的地”的值,采用例如无意义的值(例如“-”)。此外,在实施例1中为了简化说明,一个页301为固定大小,但通过在页表2214内管理页大小,可以设为可变大小。
图8表示虚拟卷表2212的一例。
在虚拟卷表2212中,针对每个虚拟区域而记录虚拟卷号码、地址、页分配状态、分配模块、池号码以及页号码。以下,对一个虚拟区域(以下,在图8(以及图17)的说明中称为“对象虚拟区域”)进行说明。“虚拟卷号码”是具有对象虚拟区域的虚拟卷的识别号码。“虚拟卷号码”的值可以作为“卷号码”还记录在路径信息表2211(参照图3)中。“地址”是虚拟卷内的对象虚拟区域的地址,例如通过对象虚拟区域的先头地址和末尾地址的组合来表示。“页分配状态”表示是否已将页301分配给对象虚拟区域。“分配模块”是具有已分配给对象虚拟区域的页(以下,在图8的说明中称为“对象页”)301的模块200的识别号码。“池号码”是具有对象页301的池的识别号码。“页号码”是对象页301的识别号码。
图9是实施例1的一个特征的概要的说明图。在以下的说明中,有时将接收到I/O请求的模块称为“本模块”,将此外的模块称为“其它模块”。
在实施例1中实施了例如下述的(工作1)和(工作2)。
(工作1)在模块(1)和模块(2)的双方中具备被分配了同一卷号码的虚拟卷302。
(工作2)模块(1)和模块(2),在接收到写请求时,若未对根据该写请求确定的写入目的地虚拟区域分配页301,则将本模块中的池300内的页301分配给写入目的地虚拟区域。
此外,在(工作1)中,卷号码可以是例如2重的号码。即,可以具有由主机100识别的、在模块(1)和(2)中相同的第一种的卷号码(全局的号码);以及通过主机100无法识别的、通过各个模块200识别的第二种的卷号码(本地号码)。
以下,说明具体例。
在模块(1)和(2)中具备被分配了同一卷号码“1”的虚拟卷(1)和(2)。由于虚拟卷(1)和(2)的卷号码相同,因此主机100不分别识别虚拟卷(1)和(2),而识别为将虚拟卷(1)和(2)合并而得的一个逻辑卷(以下,在参照图9的说明中称为“卷(T)”)。
当模块(1)接收到以第一虚拟区域作为写对象虚拟区域的写请求时,如箭号612所示,对虚拟卷(1)的第一虚拟区域611分配池(1)内的页711,在该页711中写入写数据。同样地,当模块2接收到以第二虚拟区域作为写对象虚拟区域的写请求时,如箭号622所示,对虚拟卷(2)的第二虚拟区域623分配池(2)内的页723,在该页723中写入写数据。
在上述情况下,在主机100中识别出在卷(T)中的第一存储区域(地址“0~99”)和第二存储区域(地址“100~199”)中已经存储了写数据。另外,虚拟卷表(1)和(2)分别成为图9所示那样。即,未对虚拟卷(1)中的第二虚拟区域613(地址“100~199”)分配池(1)内的页301,但对虚拟卷(2)中的第二虚拟区域623已分配了池(2)内的页301,因此在虚拟卷表(1)中,作为“页分配状态”的值而记录“已”,作为“分配模块”的值而记录“模块(2)”。同样地,未对虚拟卷(2)中的第一虚拟区域621(地址“0~99”)分配池(2)内的页301,但对虚拟卷(1)中的第一虚拟区域611分配了池(1)内的页(301),因此在虚拟卷表(2)中作为“页分配状态”的值而记录“已”,作为“分配模块”的值而记录“模块(1)”。
当模块(2)如箭号640所示接收到从第二虚拟区域623读出读数据的请求时,参照虚拟卷表(2),检查第二虚拟区域623的“页分配状况”。检查的结果,得知在模块(2)内的页301(与池号码“1”以及页号码“1”对应的页301)中存储有读数据。因此,模块(2)从本模块内的该页301读出读数据,向主机100转发读出的读数据。
另外,在向已分配了页301的虚拟区域623写入数据的情况下,也与读的情况同样地实现。即,不需要模块间的通信。
通过应用上述(工作1)以及(工作2),在从同一模块的端口反复执行写和读的情况下可以削减模块间通信次数。
另一方面,当模块(2)如箭号630所示接收到从第一虚拟区域621读出读数据的读请求时,参照虚拟卷表(2),检查第一虚拟区域621的“页分配状况”。检查的结果,得知使用了模块(1)内的页。因此,模块(2)如箭号625所示,向模块(1)请求读处理。模块(1)对该请求进行应答,从分配给虚拟卷(1)的第一虚拟区域611的、模块(1)内的页301(与池号码“3”以及页“2”对应的页301)中读出读数据。将读出的读数据从模块(1)转发给模块(2),从模块(2)将该读数据转发给主机100。
作为虚拟卷302的生成契机以及生成方法,考虑以下的(TM1)以及(TM2)。
(TM1)以用户生成虚拟卷302为契机,在全部模块200中生成虚拟卷302。
(TM2)以用户生成虚拟卷302为契机,仅在用户指定的模块200中生成虚拟卷302。并且,以定义了从其它模块200的端口261到该虚拟卷302的路径为契机,在其它模块200中生成该虚拟卷302。
使用图10说明与上述(TM1)相关的处理的一例。
当用户从维护终端270指示生成虚拟卷时,通过执行维护终端270的维护程序273和各模块200的虚拟卷生成程序2229进行虚拟卷生成。假定用户对维护终端270指定生成的虚拟卷302的卷号码。
维护程序273判定是否存在尚未指示虚拟卷生成的模块200(S1600)。在对全部模块200指示了虚拟卷生成时,进行S1607(即处理结束)。另一方面,当存在尚未指示虚拟卷生成的模块200时,执行S1601到S1606。
维护程序273向模块200指示虚拟卷的生成(S1601),等待来自指示目的地模块200的完成报告(S1602)。此外,与虚拟卷生成的指示一起,维护程序273向模块200通知生成的虚拟卷302的卷号码(例如从用户指定的号码)。
虚拟卷生成程序2229从维护程序273接收虚拟卷生成的指示(S1603),在虚拟卷表2212中登录虚拟卷信息(S1604)。具体而言,例如作为虚拟卷信息,“虚拟卷号码”的值是从维护程序273通知的号码,“页分配状态”的值全部是“未”,“分配模块”以及“页号码”的值是表示未分配的值(例如“-”)。
虚拟卷生成程序2229在登录了虚拟卷信息后,向维护程序273发送完成报告(S1605)。维护程序273接收完成报告(S1606)。
下面,说明与上述(TM2)相关的处理。
通过上述(TM2),仅对用户指定的模块200指示虚拟卷生成。即,若以图10来说,则不需要S1600。并且,此后以定义了从其它模块200的端口261到该虚拟卷302的路径为契机,在其它模块200中生成该虚拟卷302。以下,使用图11说明与其相关的处理。
当用户从维护终端270指示路径定义时,执行维护终端270的维护程序273和各模块200的路径定义程序2223。用户对维护终端270指定例如使用的端口261的端口号码、和成为对象的虚拟卷302的卷号码。
维护程序273对具有所指定的端口261的模块200指示路径定义(S200),等待来自作为指示目的地的模块200的完成报告(S201)。与路径定义的指示一起,维护程序273向模块200通知使用的端口261的端口号码、以及成为对象的虚拟卷302的卷号码。
路径定义程序2223,当从维护程序273接收到路径定义的指示时(S202),在虚拟卷表2212中检查是否已登录了成为对象的虚拟卷(以下,在图11的说明中称为“对象虚拟卷”)302的虚拟卷信息(S203)。与参照图10说明的相同,在用户指定的模块200内的虚拟卷表2212中登录了对象虚拟卷的虚拟卷信息。若已登录了对象虚拟卷的虚拟卷信息(S203:是),则跳过S204。若未登录对象虚拟卷的虚拟卷信息(S203:否),则路径定义程序2223在虚拟卷表2212中登录该虚拟卷信息(S204)。在此登录的虚拟卷信息的内容与图10的S1604中登录的内容实质上相同。
然后,路径定义程序2223在路径信息表2211中登录所指定的端口261的端口号码、所指定的卷号码、和执行该程序2223的模块(在图11的说明中,为方便起见简称为“本模块”)200的模块号码(S205)。然后,路径定义程序2223向维护程序273报告完成(S206)。
维护程序273从路径定义程序2223接收完成报告(S207),结束处理(S208)。
此外,在路径定义时生成虚拟卷302的情况下,有可能已经通过其它模块200对该虚拟卷302进行了I/O处理。因此,有可能通过其它模块200对该虚拟卷302分配了页301。从而,在该时刻,本模块200可以向其它模块200查询对虚拟卷302分配页的状况,并将查询结果登录在本模块200的虚拟卷表2212中。在经由新定义的路径接收到I/O请求的时刻,本模块200可以向其它模块200查询关于作为遵从I/O请求的I/O对象的虚拟区域的页分配状况。
通过如上所述,可以在各模块200中生成虚拟卷302。
下面,使用图12至图15说明相对于虚拟卷302的I/O处理的一例。另外,图12表示对作为I/O对象的虚拟区域分配了接收到I/O请求的模块(本模块)200内的页301时的I/O处理的一例。图13表示未对作为读对象的虚拟区域分配本模块200内的页301时的读处理的一例。图14表示未对作为写对象的虚拟区域分配本模块200内的页301时的写处理的一例。图15表示对虚拟卷302分配页301的处理的一例。
使用图12说明分配了本模块200内的页的虚拟区域是作为I/O对象的虚拟区域时的I/O处理。通过执行读程序2221或写程序2222来实现该I/O处理。以下采用写处理为例来说明I/O处理。
主机100对模块200发行写请求(S500),并等待来自模块200的写完成报告(S501)。
写程序2222,当接收写请求(S502)时,检查本模块200内的虚拟卷表3312(S504),判定是否已对作为写对象的虚拟区域分配了本模块200内的页301(S504)。图12的例子,是将本模块200内的页301分配给作为写对象的虚拟区域时的写处理的例子。因此,使S504的判定为“是”。使用图13以及图14说明S504的判定为“否”时的处理。
然后,写程序2222参照页表2214,决定写入写数据的池300的地址(即,确定已分配给作为写对象的虚拟区域的页301)(S505)。写程序2222在决定的地址(页301)中写入写数据(S506),然后向主机100报告完成(S507)。
主机100,当接收来自写程序2222的完成报告时(S508),结束处理(S509)。
在上述说明中,以写处理为例进行了说明,但在读处理的情况下成为例如以下这样。即,在S502中接收读请求,在S506中从已分配的页301中读出读数据,并向主机100转发该读数据。
下面,使用图13说明未对遵从读请求的作为读对象的虚拟区域分配本模块(接收到读请求的模块)200内的页301的情况下的读处理。在这种情况下,其它模块200内的页301有可能被分配给该其它模块200内的虚拟卷302中的读对象虚拟区域。以下,以本模块200作为模块(1),以其它模块200作为模块(2),说明此情况下的读处理。此外,通过在模块(1)以及模块(2)各自中执行读程序2221来实现读处理。
当步骤S504的判定为“否”时,读程序(1)参照虚拟卷表(1),判定与读对象虚拟区域对应的分配模块是否不明(S301)。关于读对象虚拟区域,若“页分配状态”的值为“已”、“分配模块”的值为其它模块的模块号码,则是已判明了分配模块。另一方面,关于读对象虚拟区域,若“页分配状态”的值为“未”、“分配模块”的值是表示未分配的值“-”,则为分配模块不明。
在判明了分配模块时(S302:否),读程序(1)向作为分配模块的模块(2)请求读对象虚拟区域的读(例如,通知读对象虚拟区域的地址)(S302)。接收到数据的转发请求的读程序(2)通过参照虚拟卷表(2)来确定分配给读对象虚拟区域的页301,从所确定的页301中读出读数据,并存储在高速缓冲存储部223中(S303)。读程序(2)向模块(1)指示数据转发(S304)。此时,读程序(2)向模块(1)通知读数据的高速缓冲存储地址。读程序(1)接收到数据转发指示时,从模块(2)转发数据(从所通知的高速缓冲存储地址表示的高速缓冲存储区域读出读数据)(S305)。接着,读程序(1)向主机100转发读出的读数据(S306)。
另一方面,当分配模块不明时(S301:是),读程序(1)判定是否存在未被查询页分配状况的模块200(S307)。当存在未被查询的模块200时,读程序(1)向该模块200查询页301的分配状况(S308)。
接受了页301的分配状况的查询的模块(2)的读程序(2),参照虚拟卷表(2),检查页分配状况(S309),判定是否已对读对象虚拟区域分配了模块(2)内的页301(S310)。当未分配页301时(S310:否),读程序(2)向模块(1)通知未分配(S311)。另一方面,当已分配页301时(S310:是),读程序(2)将读数据存储在高速缓冲存储部223中(S312),然后向模块(1)指示该读数据的转发(S313)。
读程序(1),当接收到来自模块(2)的应答时,判定是否在模块(2)中已分配了页(S314)。当模块(2)内的页301未分配给读对象虚拟区域时(S314:否),读程序(1)针对别的模块200执行S307。另一方面,当模块(2)内的页301已分配给读对象虚拟区域时,读程序(1)从模块(2)向模块(1)转发读数据(S315),更新模块(1)的虚拟卷表2212(S316)。具体而言,读程序(1),关于读对象虚拟区域,将“页分配状况”的值变更为“已”,作为“分配模块”的值而登录“模块(2)”。
然后,读程序(1)将从模块(2)转发的读数据向主机100转发(S317),结束处理。
当已分配页的模块200未判明,且不存在未实施查询的模块200时(S307:否),即读对象虚拟区域是未分配任何模块200内的页301的虚拟区域的情况下,进行以下处理。
在这种情况下,读程序(1)向主机100转发表示在读对象虚拟区域中不存在数据的数据、例如由“0”构成的数据(S318),结束处理。此外,在S318中,可以代替由“0”构成的数据而转发错误。
然后,使用图14以及图15说明未对遵从写请求的作为写对象的虚拟区域分配本模块(接收到写请求的模块)200内的页301的情况下的写处理。以下,将本模块200作为模块(1),将其它模块200作为模块(2)来进行说明。
通过在模块(1)以及模块(2)中执行写程序2222以及页分配程序2225来实现写处理。
当步骤S504的判定为“否”时,写程序(1)参照虚拟卷表(1),针对写对象虚拟区域判定分配模块是否不明(S1001)。此外,不明的定义,与参照图13说明的读处理的情况相同。
在判明了分配模块的情况下(S1001:是),写数据被转发至其它模块(2)并存储(S1002)。即,在S1002中进行图4的S107至S 115。
当分配模块不明的情况下(S1001:否),写程序(1)针对写对象虚拟区域,判定是否存在未被查询页分配状况的模块200(S1003)。当存在未被查询的模块200时,写程序(1)向未被查询的其它模块200查询页分配状况(S1004)。
接受了页分配状况的查询的模块(2)的写程序(2),参照虚拟卷表(2)来检查页分配状况(S1005),判定是否已对写对象虚拟区域分配了模块(2)内的页301(S1006)。当未分配页301时(S1006:否),写程序(2)向模块(1)通知未分配(S1007)。另一方面,当已分配页301时(S1006:是),写程序(2)向模块(1)通知已分配(1008)。
写程序(1),当接收到来自模块(2)的应答时,判定在模块(2)中是否已分配了页(S1009)。当在模块(2)中未分配页时(S1009:否),写程序(1)针对别的模块200执行S1003。另一方面,在模块(2)中已分配了页时(S1009:是),写程序(1)更新虚拟卷表(1)(S1010)。此后,将写数据转发至其它模块(2)并存储(S1011)。即,执行图4的步骤S104至S115。此外,与步骤S1002不同,也执行步骤S104至S106的理由是考虑到在步骤S1012中新分配了页301的情况。具体而言,是因为在步骤S1012中分配了模块(1)内的页301时,写程序(1)需要向本模块(1)内的页301写入写数据。另外,步骤S1010中的虚拟卷表2212的更新,与读处理的情况一样,针对写对象虚拟区域,将虚拟卷表2212的“页分配状况”的值更新为“已”,作为“分配模块”的值而登录“模块(2)”。
当已分配页的模块200未判明,且不存在未实施查询的模块200时(S1003:否),写程序(1)启动页分配程序(1),实施页分配处理(步骤S012)。然后,写程序(1)判定页分配是否完成(S1013)。当判定的结果是新分配了页301时(S1013:是),写程序(1)在所分配的页301中存储写数据(S1010)。另一方面,当由于模块(1)内的池300的空闲容量不足(未分配的页301不足)等原因而未分配页301时(S1013:否),写程序(1)向主机100报告异常结束(S1014),并结束处理。
使用图15,详细说明步骤S1012(页分配处理)。
页分配程序(1)参照池表(1)以及页表(1),寻找未分配页(S400)。然后,页分配程序(1)判定在模块(1)内的池300内是否存在未分配页(S401)。
当模块(1)内存在未分配页时(S401:是),页分配程序(1)更新页表(1)以及虚拟卷表(1)(S402以及S403),并结束处理(S404)。具体而言,页分配程序(1)针对分配的页301,将页表(1)的“状态”的值变更为“已分配”,将“分配目的地”的值变更为对象虚拟卷的虚拟卷号码。另外,页分配程序(1)针对写对象虚拟区域,将虚拟卷表2212的“页分配状态”的值变更为“已”,作为“分配模块”的值而登录“模块(1)”,作为“池号码”的值而登录所分配的页301所属的池300的池号码,作为“页号码”的值而登录所分配的页301的页号码。
另一方面,当在模块(1)内不存在未分配页时(S401:否),页分配程序(1)判定是否存在未被查询有无未分配页的模块200(S405)。当存在未被查询的模块200时,页分配程序(1)向该模块200查询有无未分配页(S407)。
接受查询的其它模块(2)的页分配程序(2),接收有无未分配页的查询(S408),并参照池表(2)以及页表(2)寻找未分配页,判定在模块(2)内的池300中是否存在未分配页(S409)。
当存在未分配页时(S409:是),页分配程序(2)更新页表(2)(具体而言,针对分配的页,将页表(2)的“状态”的值变更为“已分配”)(S410)。
然后,页分配程序(2)判定在模块(2)中是否生成了作为页分配目的地的虚拟卷302(S411)。当与作为页分配目的地的虚拟卷302相关的虚拟卷信息存在于虚拟卷表(2)中时,该判定的结果是已生成的判定结果,当该信息不存在时,该判定的结果是未生成的判定结果。在以用户生成卷302为契机在全部模块200中生成虚拟卷302的情况(所述(TM1)的情况)下,在模块(2)中生成了虚拟卷302。而且,以路径定义为契机生成虚拟卷302的情况(所述(TM2)的情况)下,若在模块(2)中定义了到该虚拟卷302的路径,则已生成了虚拟卷302。
在已生成虚拟卷302的情况下(S411:是),页分配程序(2)更新虚拟卷表(2)(S412)。具体而言,针对写对象虚拟区域,将虚拟卷表(2)的“页分配状态”的值更新为“已分配”,作为“分配模块”的值而登录“模块(2)”,作为“池号码”的值而登录分配给写对象虚拟区域的页301所属的池300的池号码,作为“页号码”的值而登录该页301的页号码。另一方面,当未生成虚拟卷302时(S411:否),跳过S412。页分配程序(2)向模块(1)报告存在未分配页(S413)。
通过如上所述更新了虚拟卷表(2),当模块(2)从主机100接收到以其页301的分配目的地虚拟区域作为I/O对象的I/O请求时,可以不与模块(1)进行通信地判断关于该虚拟区域的页分配状况。
在S409中,当不存在未分配页时(S409:否),页分配程序(2)向模块(1)报告不存在未分配页(S414)。
接收到来自模块(2)的报告的模块(1)的页分配程序(1),判定在模块(2)中是否存在未分配页(S415)。
在模块(2)中存在未分配页时(S415:是),页分配程序(1)更新虚拟卷表(1)(S416),并结束处理(S417)。具体而言,针对写对象区域,将虚拟卷表(1)的“页分配状态”的值变更为“已分配”,作为“分配模块”的值而登录“模块(2)”。反之,当模块(2)中不存在未分配页时(S415:否),页分配程序(1)针对别的模块200执行S405。
当具有未分配页的模块200未判明,且不存在未实施查询的模块200时(S405:否),页分配程序(1)向调用页分配程序(1)的写程序(1)报告不可分配(S406)。
通过如上所述,可以实现针对未分配本模块200内的页301的虚拟区域的写和读的处理。
通过以上的说明,在模块(2)中具备虚拟卷(2),分配给该虚拟卷(2)的卷号码与分配给模块(1)具有的虚拟卷(1)的卷号码相同。当模块(2)从主机100接收到以未分配页的虚拟区域作为写对象虚拟区域的写请求时,将模块(2)内的页分配给写对象虚拟区域,在该页中写入写数据。另外,当模块(2)从主机100接收到以该虚拟区域作为读对象虚拟区域的读请求时,模块(2)从模块(2)内的页中读出读数据并转发至主机100。因此,在这种情况下不发生模块间通信。
【实施例2】
以下,说明本发明的实施例2。此时,主要说明与实施例1的不同点,关于与实施例1的相同点,省略或简略说明。
在实施例1中,例如在对遵从本模块(2)接收到的读请求的读对象虚拟区域分配了其它模块(1)内的页301时,发生模块间通信。
因此,在实施例2中,通过在模块间复制在页301中存储的数据,可以减少发生模块间通信的情况。具体而言,例如作为在模块(1)内的页301中存储的数据的、在模块(2)内的页301中未存储的数据,被从模块(1)内的页复制到模块(2)内的页中。在这种情况下,模块(1)内的页是作为复制源的页,模块(2)的页是作为复制目的地的页。
更具体而言,例如图16所示,在分配给虚拟卷(1)的第一虚拟区域611的页711中存储的数据不存在于模块(2)内。在该实施例2中,该页711中存储的数据如箭号720所示被复制到模块(2)内的未分配页721中。页721被分配给虚拟卷(2)的第一虚拟区域621。由此,模块(2)当如箭号630所示接收到以第一虚拟区域621作为读对象区域的读请求时,可以从模块(2)内的页721读出读数据,并转发至主机100。即,不发生模块间通信。以下,将在模块间复制在页中所存储的数据称为“页复制”。另外,将所复制的数据称为”副本数据”,将存储了副本数据的页称为“副本页”。
图17说明实施例2中的虚拟卷表的一例。
根据虚拟卷表22121,除了虚拟卷号码、地址、页分配状态、分配模块、池号码以及页号码以外,针对每个虚拟区域登录了复制有无位、副本模块以及读频率。“复制有无位”表示在分配给对象虚拟区域的页(根据与对象虚拟区域对应的“池号码”的值以及“页号码”而确定的页)301中存储的数据是否被复制到其它模块200中。“副本模块”是具有在该页301中存储的数据的副本的模块200的模块号码。“读频率”表示来自主机100的、对该页301的读请求的频率(每单位时间的读请求的接收次数)。
设图17所示的表是模块(1)内的虚拟卷表时,从图17所示的表可知以下内容。例如可知最初对与地址“0~99”对应的虚拟区域分配模块(2)内的页,然后从模块(2)对模块(1)进行页复制。而且可知与对应于地址“0~99”的虚拟区域对应的读频率是每秒1000次。此外,图17所示的表中的“读频率”的值,例如通过读程序(1)被更新。读程序(1)可以针对每个第一虚拟区域,对每单位时间的读请求的接收次数进行计数,并适时地更新与各第一虚拟区域对应的“读频率”的值。
说明追加读频率的优点。例如,如图16所示,假定对虚拟卷(1)中的第一虚拟区域611分配了模块(1)内的页711,对虚拟卷(2)中的第一虚拟区域621分配了存储了在页711中存储的数据的副本的、模块(2)内的页721。在此,尽管页711中存储的数据被更新,但是如果不更新在页721中存储的数据时,则页721中存储的数据仍是旧内容的数据。因此,当模块(2)接收到以第一虚拟区域作为读对象虚拟区域的读请求时,将旧数据转发至主机100。为了防止这一点,需要始终使与第一虚拟区域611以及621对应的数据同步。但是,这样一来,在更新属于虚拟区域的数据时,需要更新虚拟区域611以及621双方等的处理,从而会发生模块间通信。因此如图17所示,若针对每个虚拟区域登录了读频率,则可以仅针对分配给读频率高的虚拟区域的页进行页复制。
此外,所谓读频率高,是读频率与基准值相比较高。在此,所谓“基准值”,可以是预定的值,也可以是基于写频率的值。所谓针对各虚拟区域的写频率,是以该虚拟区域为对象的写请求在每单位时间的接收次数。例如,针对一个虚拟区域,当读频率比写频率高时、或者读频率比在写频率上乘以规定系数而得到的值高时,可以认为“读频率高”。写频率,例如也可以与读频率同样地登录在虚拟卷表22121中。
以下,说明执行页复制的契机以及条件、删除副本页的契机以及条件、和写处理。详细描述写处理以不参照旧数据的方式进行控制的方法。
首先,作为执行页复制的契机而考虑(a)路径定义的契机、(b)I/O处理的契机等。在以I/O处理为契机时,考虑以下的(b1)以及(b2)的情况:
(b1)对于其它模块200内的页301发生I/O时,从其它模块200向本模块200进行页复制的情况、
(b2)对于本模块200内的页301发生I/O时,从本模块200向其它模块200进行页复制的情况。
另外,还考虑以维护操作为契机执行页复制的情况、或存储系统定期地进行页复制的情况等。
使用图18,说明在路径定义时将在模块(2)中已分配的页301中存储的数据复制到实施路径定义的模块(1)中的页复制处理的一例。
该处理如下这样来实现。例如,在模块(1)内执行路径定义程序2223。在模块(2)内执行副本生成程序2226。另外,在具有与图18中的复制源页对应的副本页的全部模块内执行控制信息更新程序2228。
例如,在图11所示的S205后,路径定义程序2223立刻判定是否存在未被查询是否具有可以成为复制源的页301的模块200(S600)。当对全部模块200进行了查询时(S600:否),结束处理(S615)。
当存在未被查询的模块200时(S600:是),路径定义程序2223向该模块200(模块(2))查询是否有作为分配给路径定义对象的卷的页301的、而且是分配给读频率高的虚拟区域的页(高读频率页)301(S601)。此外,路径定义程序2223,与该查询一起,向模块(2)通知作为路径定义对象的虚拟卷302的卷号码。
副本生成程序2226接受查询并检查虚拟卷表(2),由此寻找高读频率页(S602)。然后,副本生成程序2226决定复制源页301(例如将S602中寻找到的页决定为复制源页301),将该复制源页301中存储的数据存储在高速缓冲存储部(2)中(S603)。然后,副本生成程序2226向模块(1)通知该数据的高速缓冲存储地址、与分配了复制源页301的虚拟区域对应的“分配模块”的值、“地址”的值、“副本模块”的值以及“读频率”的值(S604),然后结束处理(S605)。此外,当不存在复制源页301时,副本生成程序2226例如在步骤S604中向模块(1)通知复制源页301不存在。
接收到模块(2)的报告的模块(1)的路径定义程序2223,判定在模块(1)内是否存在未分配页301(S606)。当模块(1)内不存在未分配页301时(S606:否),路径定义程序2223结束处理(S615)。
当模块(1)内存在未分配页301时(S606:是),路径定义程序2223判定来自模块(2)内的复制源页301的数据转发(即页复制)是否全部完成(S607)。然后,将存储在全部复制源页301中的数据转发到模块(1)时(S607:是),路径定义程序2223针对别的模块200进行S600。
另一方面,当仅从模块(2)内的复制源页301的一部分页301向模块(1)转发数据时(S607:否),路径定义程序2223从模块(2)内的复制源页301中的一个页301向模块(1)转发数据(读出数据)(S608)。接着,路径定义程序2223通过更新页表(1)以及虚拟卷表(1)(S609以及S610),对作为对象的虚拟区域(与从模块(2)通知的“地址”的值对应的虚拟区域)分配未分配的页(复制目的地页)301。具体而言,针对复制目的地页,将页表(1)中的“状态”变更为“已分配”,将“分配目的地”的值变更为对象虚拟卷的虚拟卷号码。而且,针对作为对象的虚拟区域,将虚拟卷表(1)中的“页分配状态”的值变更为“已”,将“分配模块”的值变更为“模块(2)”,将“池号码”的值设定为上述选择的页301所属的池的池号码,使复制有无位为“ON”,使“副本模块”的值为“模块(1)”,将“读频率”的值变更为从模块(2)通知的读频率的值。
然后,路径定义程序2223在所分配的复制目的地页301中存储从模块(2)转发的、在复制源页301中存储的数据的副本(副本数据)(S611)。然后,路径定义程序2223向具有与图18中的复制源页对应的副本页的全部模块(除模块(1)以外)进行以下通知:针对作为复制目的地页301的分配目的地的虚拟区域,追加了模块(1)作为“副本模块”(例如作为对象的虚拟区域的地址、和模块(1)的号码)(S612)。
路径定义程序2223通过反复执行S607至S612,针对其它复制源页301也进行页复制。
接收到步骤S612的通知的模块200内的控制信息更新程序2228,更新该模块200内的虚拟卷表22121(S613),并结束处理(S614)。具体而言,针对根据所通知的地址而确定的虚拟区域,追加“模块(1)”作为“副本模块”的值。因此,例如存在3个以上模块200时,作为与一个虚拟区域对应的“副本模块”的值可以登录多个值(模块号码)。
如上所述,以在模块(1)中定义了路径为契机,可以在模块(1)中生成已经在模块(2)中对作为路径定义对象的虚拟卷302分配的页301中存储的数据的副本。而且,关于作为对象的虚拟区域,向已经具有副本数据的全部模块200通知作为“副本模块”而新增加了模块(1)。由此,具有副本数据的各模块200可以掌握在哪里生成了副本数据。例如在写处理时使各模块200的页301同步的处理中利用该信息(使用图24以及图25在后面描述)。
然后,使用图19以及图20,说明在其它模块的页301中发生I/O时,从其它模块向本模块进行页复制的处理的一例。该处理,在进行了跨越模块的I/O时,将写入分配给I/O对象虚拟区域的页的数据,从其它模块内的所述页复制到本模块内的页。
图19是写处理时的页复制处理的一例,图20是读处理时的页复制处理的一例。
图19所示的处理例如以下这样来实现。在模块(1)内执行写程序2222。在模块(2)内执行副本生成程序2226。在具有与图19中的复制源页对应的副本页的全部模块内执行控制信息更新程序2228。
例如在图14的S1011中,当模块(1)在模块(2)内的页301中存储了写数据后,模块(1)的写程序2222判定在模块(1)内是否存在未分配页301(S700)。当模块(1)内不存在未分配页301时,由于不存在存储副本数据的页301,因此结束处理(S715)。
当模块(1)内存在未分配页301时,写程序2222向模块(2)请求对分配给写对象虚拟区域的页中的数据进行复制(S701)。
接收到复制请求的模块(2)的副本生成程序2226参照虚拟卷表(2),检查写对象虚拟区域的读频率(S702),判定读频率是否高(S703)。当读频率低时,副本生成程序2226向模块(1)通知读频率低(S704),结束处理。然后,模块(1)的写程序2222接收到读频率低的通知(S707:否),然后结束处理(S715)。
另一方面,当写对象虚拟区域的读频率高(以下,在图19中称为“高读频率虚拟区域”)时(S703:是),副本生成程序2226将分配给高读频率虚拟区域的页内的数据存储在高速缓冲存储部(2)中(S705)。然后,副本生成程序2226向模块(1)通知该数据的高速缓冲存储地址、关于分配了复制源页301的虚拟区域的“分配模块”的值、“地址”的值、“副本模块”的值以及“读频率”的值(S706),然后结束处理。
接收到模块(2)的报告的模块(1)的写程序2222,将在分配给高读频率虚拟区域的复制源页中存储的数据从模块(2)转发至模块(1)(S708)。然后,写程序2222分配模块(1)内的未使用页301,将所转发的数据存储在该分配的页301中(S709至S711)。然后,写程序2222向具有与图19中的复制源页对应的副本页的全部模块(除了模块(1)以外)进行以下通知:关于作为复制目的地页301的分配目的地的虚拟区域,追加了模块(1)作为“副本模块”(例如,作为对象的虚拟区域的地址和模块(1)的号码)(S712),并结束处理(S715)。接收到该通知的各模块200更新本模块内的虚拟卷表22121(S713),并结束处理(S714)。该S708到S714的处理内容与图18的S608到S614相同。
此外,在图19所示的写处理时的页复制处理中,模块(2)根据存储在虚拟卷表(2)中的、对象虚拟区域的读频率的值,决定是否将分配给对象虚拟区域的页301作为复制源。但是,请求页301的复制的模块(1),也可以根据在虚拟卷表(1)中存储的、对象虚拟区域的读频率的值,决定是否将模块(2)内的、分配给对象虚拟区域的页301作为复制源。而且,模块(1),关于对象虚拟区域,也可以根据模块(1)以及(2)的双方中的读频率的值,决定是否将模块(2)内的、分配给对象虚拟区域的页301作为复制源。
对跨越模块200的读处理时的页复制处理进行说明。该页复制处理,可以通过与写处理时的页复制处理相同的处理步骤来实现。例如,可以通过在图13所示的跨越模块200的读处理的S316和S317之间追加图19所示的用于生成副本的处理(步骤S700至S715)来实现。
使用图20说明读处理时的别的页复制处理。读处理与写处理不同,为了向主机100转发数据,需要从其它模块(2)向本模块(1)转发读数据。通过利用该转发,可以改善读处理时的页复制处理。具体而言,例如当读数据被存储在高读频率页301中时,不是从其它模块(2)向本模块(1)仅转发读数据,而是本模块(1)在模块(1)内的空闲页301中存储来自模块(2)的读数据。由此,可以削减页复制处理中需要的模块间通信的发生次数。
图20所示的处理,例如以下这样来实现。在模块(1)以及(2)内执行读程序2221。在模块(2)内执行控制信息更新程序2228。
而且,该处理可以通过图13所示的跨越模块200的读处理的变更来实现。此外,当S504的结果成为“是”的情况下,在模块(1)中已分配了页,因此不需要复制。因此,省略说明(在图13中已说明)。步骤301的结果成为“是”的情况下,可以应用以下说明的页复制处理,但与S301的结果成为“否”的情况下的处理相同,因此省略。
读程序(1)通过执行S504以及S301识别出模块(2)具有读数据。接着,读程序(1)对模块(2)发行读请求(S302)。
从模块(1)接收到读请求的模块(2)的读程序(2),检查作为存储读数据的页301的分配目的地的虚拟区域的读频率,判定读频率是否高(S716)。当读频率低时,模块(2)执行使用图13说明的处理(S303以及S304)。
另一方面,当读频率高时,读程序(2)读出分配给读频率高的虚拟区域的页内的全部数据,并存储在高速缓冲存储部(2)中(S717)。
然后,读程序(2)向模块(1)指示页复制(S718),然后结束处理。此时,从读程序(2)向模块(1)通知复制源页301内的转发数据的高速缓冲存储地址、与作为复制源页301的分配目的地的虚拟区域对应的“分配模块”的值、“地址”的值、“副本模块”的值、“读频率”的值。
从模块(2)接收到上述通知的模块(1)的读程序(1),从模块(2)向模块(1)转发所通知的高速缓冲存储地址表示的高速缓冲存储区域中的数据(S719)。然后,读程序(1)判定来自模块(2)的通知是否是页复制指示(S720)。当不是页复制指示时(S720:否),读程序(1)向主机100转发从模块(2)转发的读数据,然后结束处理(S724)。
另一方面,当通知是页复制指示时(S720:是),读程序(1)判定在模块(1)内是否存在未分配页301(S721)。当模块(1)内不存在未分配页301时(S721:否)进行S724。当模块(1)内存在未分配页301时(S721:是),读程序(1)分配模块(1)内的未使用页301,在所分配的页301中存储所转发的数据(S722)。然后,读程序(1)向具有与图20中的复制源页对应的副本页的全部模块(除了模块(1)以外)通知在“副本模块”中追加了模块(1)。接收到该通知的各模块200,更新本模块200内的虚拟卷表22121(作为“副本模块”的值,追加“模块(1)”),并结束处理(S723)。S722的处理与图19的S708到S711相同。而且,S723的处理,与图19的S712到S714相同。读程序(1)在执行S723后向主机100转发读数据,然后结束处理(S724)。
此外,当步骤S301的结果成为“是”时,通过将步骤S312以及S313变更为步骤S716至S718,将步骤S315以及S316变更为步骤S719至S724,可以进行页复制处理。
然后,使用图21至图23,说明在本模块内的页301中发生I/O时,从本模块向具有到作为I/O对象的虚拟卷302的路径的其它模块进行页复制的处理的一例。
为了实现该处理,本模块200需要能够识别出哪个模块200具有到作为I/O对象的虚拟卷302的路径。这例如可以通过图21所示的路径信息表22111来实现这一点。即,在实施例1中的路径信息表2211中针对每条路径追加路径已定义模块号码。“路径已定义模块号码”,是具有到根据卷号码而识别的虚拟卷302的路径的、模块200的模块号码。当多个模块200具有到根据卷号码而识别的虚拟卷302的路径时,作为“路径已定义模块号码”的值,存储多个模块200的模块号码。
使用图22说明路径定义时的各模块200中的路径信息表22111的路径已定义模块号码的更新处理。以下,将具有在路径定义中使用的端口261的模块200作为模块(1)、将已经具有到对象虚拟卷302的路径的模块200作为模块(2)来说明该更新处理。
通过由维护终端270的CPU271执行维护程序273,并在模块(1)以及(2)内执行路径定义程序2223来实现该处理。而且,该处理可以设为图11所示的路径定义处理的变形例。
维护程序273对模块(1)发行路径定义指示(S800)。此时,维护程序273除了向模块(1)通知由用户指定的端口261的端口号码、所指定的虚拟卷302的卷号码以外,还通知已定义了到该卷号码的虚拟卷302的路径的模块200的模块号码。
接收到路径定义指示的模块(1)的路径定义程序2223,通过与图11的处理相同地执行步骤S202至204,根据需要来更新虚拟卷表22121。
然后,路径定义程序2223在路径信息表22111中登录所指定的端口261的端口号码、所指定的虚拟卷302的卷号码、模块(1)的模块号码、以及路径已定义模块200的模块号码(S801)。此外,在路径已定义模块200的模块号码中登录从维护程序273通知得到的值。
在路径信息表22111的更新后,路径定义程序2223向维护终端270的维护程序273报告完成(S206)。
维护程序273向已经具有到路径定义的对象虚拟卷302的路径的模块(2)通知模块(1)新实施了路径定义(S802),然后等待来自模块(2)的完成报告(S803)。此外,此时,维护程序273向模块(2)传送模块(1)的模块号码、以及对象虚拟卷302的卷号码。
为了执行步骤S802,例如维护程序273需要能够识别到模块(2)具有到对象虚拟卷302的路径。例如可以如下这样实现这一点。即,维护程序273以前向模块(2)指示了到对象虚拟卷302的路径定义。通过将该以前的指示内容存储在维护终端270的存储器272中,维护程序273可以识别出模块(2)具有到对象虚拟卷302的路径。
接收到来自维护程序273的通知的模块(2)的路径定义程序2223更新路径信息表22111(S804)。具体而言,路径定义程序2223,追加所通知的模块(1)的模块号码作为与所通知的卷号码对应的行的“路径已定义模块号码”的值。在路径信息表22111的更新后,路径定义程序2223向维护终端270报告完成(S805)。
维护程序273从模块(2)的路径定义程序2223接收到完成报告(S806),并结束处理(S807)。
此外,在图22的例子中,对已经具有到对象虚拟卷302的路径的模块200,仅为模块(2)的情况进行了说明,但当存在3个以上的模块200时,维护程序273对于模块(2)以外的各模块200也执行步骤S802到S807。
通过以上这样,具有到对象虚拟卷302的路径的全部模块200可以识别为具有到该虚拟卷302的路径的模块200。
使用图23,说明在I/O处理时向具有到I/O对象虚拟卷302的路径的其它模块进行页复制的处理的一例。此时,以从主机100接收I/O请求的本模块200作为模块(1),以新成为复制目的地的模块200作为模块(2)。以下,假定作为I/O请求而接收到写请求。
在执行图12的步骤S506后,写程序(1)参照虚拟卷表(1),检查写对象虚拟区域的读频率,判定读频率是否高(S900)。当读频率低时(S900:否),写程序(1)结束处理(S904)。
另一方面,当读频率高时(S900:是),写程序(1)针对高读频率虚拟区域,判定是否存在具有到写对象卷的路径、并且不具有副本的模块200(S901)。具体而言,写程序(1)检查路径信息表(1)的“路径已定义模块号码”以及虚拟卷表(1)中的高读频率虚拟区域所对应的“副本模块”。当不存在相应的模块200时(S901:否),写程序(1)结束处理(S904)。在此,所谓“相应的模块”,是指不包含在虚拟卷表(1)的“副本模块”的值中的、而且包含在路径信息表(1)的“路径已定义模块号码”的值中的模块。
当存在相应的模块200(在此例中为模块(2))时(S901:是),写程序(1)将存储在分配给高读频率虚拟区域的复制源页301中的数据存储在高速缓冲存储部(1)中(S902),并向相应的模块200(模块(2))请求复制(S903)。此时,写程序(1)向模块(2)通知该数据的高速缓冲存储地址、关于该高读频率虚拟区域的“分配模块”的值、“地址”的值、“副本模块”的值、以及“读频率”的值。
写程序(1)为了进一步向别的模块200进行页复制,反复执行S901至S903。
对模块(2)的处理进行说明。从模块(1)接收到复制指示的模块(2)的副本生成程序2226判定在模块(2)中是否存在未分配页301(S905)。当不存在未分配页301时(S905:否),结束处理(S908)。反之,当存在未分配页301时(S905:是),副本生成程序2226将对象数据从模块(1)(所通知的高速缓冲存储地址)向模块(2)转发,并存储在模块(2)内的未分配页301中(S906)。该处理与图18的步骤S608至S611相同。
然后,副本生成程序2226向具有分配给对象虚拟区域的页301的全部模块200(除了模块(2)、包含模块(1))通知作为“副本模块”而新追加了模块(2)。接收到该通知的各模块200,追加“模块(2)”作为该模块200内的虚拟卷表22121的“副本模块”的值(S907)。该处理与图18的步骤S612至S614相同。
如上所述,在写处理时可以将写数据等对象数据向其它模块200复制。此外,在说明中以写处理为例来说明,但在读处理的情况下也同样可以实现。
另外,关于有的虚拟区域,当仅在接收到写请求的模块200中更新数据时,在该模块200中有更新后的数据,其它模块200中的副本数据为更新前的数据。即数据的内容变得不同。在这种情况下,当其他模块200从主机100接收以上述有的虚拟区域作为读对象区域的读请求时,有可能将更新前的数据转发至主机100。
以下,说明避免这样的不一致状态的写处理。具体而言,说明在写时删除副本页的方法、和在写时更新全体副本数据的方法。此时,以接收到写请求的本模块200内所存在的数据作为原始数据,以与该数据相同内容的、存在于其它模块200内的数据作为副本数据。
使用图24,说明在写处理时删除本模块200以外的模块200具有的副本页的处理的一例。此时,以本模块200作为模块(1),以具有副本页的其它模块200作为模块(2)来进行说明。
图24所示的处理如下这样来实现。例如,在模块(1)内执行写程序2222。在模块(2)内执行副本删除程序2227。
而且,该处理是图12以及图14所示的写处理的变形例。具体而言,在图12的情况下,可以在步骤S504和S505之间追加图24所示的用于删除副本的处理(步骤S1100到S1107)。另外,在图14的情况下,可以在步骤1011(与从步骤S104到S115相同)内的S111和S112之间追加图24所示的用于删除副本的处理(步骤S 1100到S1107)。此外,图24中表示了在图12的处理中追加了用于删除副本的处理(步骤S1100到S1107)后的所有步骤。
写程序2222识别出写数据在模块(1)中(S500到S504)。
然后,写程序2222通过参照虚拟卷表(1),检查是否存在具有与写数据对应的副本数据的模块200(S1100)。具体而言,写程序(1)参照与写对象虚拟区域对应的“副本模块”。当不存在相应的模块200时(S1100:否),写程序(1)执行写处理(S505到S509)。
当存在相应的模块200(模块(2))时(S1100:是),写程序(1)向模块(2)请求副本页的删除(S1101)。此时,写程序(1)例如向模块(2)通知作为写对象的虚拟卷的卷号码、以及写对象虚拟区域的地址。
接收到副本页301的删除请求的模块(2)的副本删除程序2227确定模块(2)内的副本页301(S1102)。具体而言,副本删除程序2227使用从模块(1)通知的虚拟卷号码以及地址来参照虚拟卷表(2)。
然后,副本删除程序2227通过更新页表(2)以及虚拟卷表(2),解除S1102中所确定的页301的、对于虚拟区域的分配(释放该页301)(S1103、S1104)。具体而言,关于在S1102中确定的页301,将页表(2)中的“状态”的值变更为“未分配”,将“分配目的地”的值变更为“-”。而且,关于作为该页301的分配目的地的虚拟区域,将虚拟卷表(2)中的“分配模块”的值变更为“模块(1)”,而且将“副本模块”的值变更为“-”。如此来删除副本数据。即,在实施例2中,所谓“副本页的删除”,是指解除副本页的分配(即,该页的“状态”从“已分配”变为“未分配”)。
在副本页的删除后,副本删除程序2227向模块(1)报告完成(S1105)。
写程序(1)当从模块(2)接收完成报告时(S1106),更新虚拟卷表(1)(S1107)。具体而言,将虚拟卷表(1)的“分配模块”的值变更为“模块(1)”,而且将“副本模块”的值变更为“-”。
接着,写程序(1)为了进一步删除别的模块200具有的副本页,反复执行S1100到S1107。
通过以上这样,可以删除其它模块200具有的副本页。
接着,使用图25说明在写处理时更新全体副本页的处理的一例。此时,以本模块200作为模块(1)、以具有副本数据的其它模块200作为模块(2)来进行说明。
通过在模块(1)以及(2)内执行写程序2222来实现图25所示的处理。
而且,该处理是图12以及图14所示的写处理的变形例。具体而言,在图12的情况下,在步骤S504和S505之间追加图25所示的用于更新其它模块200的副本的处理(从步骤S1200到S1204)。另外,在图14的情况下,在步骤1011(与从步骤S104到S115相同)内的S111和S112之间追加图25所示的用于更新其它模块200的副本的处理(从步骤S1200到S1204)。此外,在图25中表示出追加了用于更新其它模块200的副本的处理(从步骤S1200到S1204)后的全体步骤。
写程序(1)识别出写数据在模块(1)中(从S500到S504)。
然后,写程序(1)通过参照虚拟卷表(1),检查是否存在具有写数据的副本数据的模块200(S1200)。具体而言,写程序(1)参照与写对象虚拟区域对应的“副本模块”。当不存在相应的模块200时(S1200:否),写程序(1)执行写处理(从S505到S509)。
当存在相应的模块200(模块(2))时(S1200:是),写程序(1)将写数据存储在高速缓冲存储部223中(S1201),并向模块(2)请求写数据的写入(S1202)。
接收到写数据的写入请求的模块(2)的写程序(2),在模块(2)内的副本页301中存储写数据,然后结束处理(S1203)。该处理与图4的步骤S110到S113相同。
写程序(1),当从模块(2)接收到完成报告时(S1204),为了进一步更新别的模块200具有的副本页301,反复执行S1200到S1204。
如上所述,可以伴随写数据的更新来更新其它模块200具有的副本页内的数据。此外,作为副本页的更新,可以采用例如第一和第二更新方法的任意一种。第一更新方法是在已分配给虚拟区域的副本页中存储的数据上覆盖更新后的副本数据的方法。第二更新方法是对于作为副本页的分配目的地的虚拟区域,代替该副本页而分配存储了更新后的副本数据的新的副本页的方法。
以下,使用图26至图28说明(1)页301的分配时的副本页删除、(2)路径删除时的副本页删除、以及(3)基于时间的副本页删除。
首先,使用图26说明页301的分配时的副本页删除的处理的一例。未对作为写对象的虚拟区域分配页时,可能不存在能够分配给该虚拟区域的页301。此时,通过删除副本页301可以确保用于存储写数据的页。在以下的说明中,将从主机100接收写请求的模块200作为模块(1),将具有作为删除对象的副本页的模块200作为模块(2)。
图26所示的处理例如以下这样来实现。即,在模块(1)内执行页分配程序2225,在模块(2)内执行控制信息更新程序2228。
而且,该处理可以通过图15所示的页分配处理的变更来实现。具体而言,在即将进行图15的步骤S405之前,追加用于释放本模块200内的副本页301的处理(从S1300到S1309)。
当新分配了页301时,模块(1)的页分配程序2225判断在模块(1)内是否存在未使用页301(S400、S401)。
当在模块(1)内不存在未使用页301时(S401:否),页分配程序2225判定在模块(1)内是否存在副本页301(S1300)。具体而言,从虚拟卷表22121中检索“复制有无位”的值为“ON”的行。此外,写对象卷以外的卷也是检索的对象。即,也可以删除分配给写对象卷以外的虚拟卷302的副本页。当检索的结果是不存在副本页301时(S1300:否),执行图15的S405到S416,然后结束处理(S1301)。
另一方面,当存在副本页301时(S1300:是),页分配程序2225参照副本页301的“读频率”,决定“读频率”的值最低的页301(S1302)。
页分配程序2225通过更新页表(1)以及虚拟卷表(1)(S1303、S1304)来释放副本页301。具体而言,在页表(1)中,将副本页301的“状态”的值变更为“未分配”,将“分配目的地”变更为“-”。而且,在虚拟卷表(1)中,从与作为副本页301的分配目的地的虚拟区域对应的“分配模块”以及“副本模块”的值中删除“模块(1)”。
然后,页分配程序2225判定是否存在具有与所释放的副本页301对应的副本页的其它模块200(模块(2))(S1305)。当存在时(S1305:是),页分配程序2225向相应的其它模块200通知释放了副本页301(S1306)。相应的其它模块例如是与分配了所释放的副本页的虚拟区域对应的“副本模块”的值所对应的模块。页分配程序2225在S1306时向模块(2)通知分配了所释放的副本页的虚拟区域所对应的“地址”的值、和“虚拟卷号码”的值。
从模块(1)接收到通知的模块(2)内的控制信息更新程序2228,对于虚拟卷表(2)中的、与上述通知的“地址”以及“虚拟卷号码”对应的“分配模块”以及“副本模块”的值,删除“模块(1)”(S1307)。此后,控制信息更新程序2228向模块(1)报告完成(S1308)。
模块(1)的页分配程序2225接收来自模块(2)的完成报告(S1309)。然后,页分配程序2225反复执行S1305到S1309。
完成向具有与所释放的副本页301对应的副本页的全部模块200的通知时,页分配程序2225返回S401,执行与写请求对应的页分配处理(从S402到S404)。由于释放了副本页301,因此S401的判定成为“是”。
通过如上所述这样释放副本页301,可以避免由于页不足而导致的不可写的状况。
接着,使用图27说明在路径删除时删除副本页的处理的一例。
当删除到虚拟卷的路径时,具有删除对象路径所使用的端口261的模块200不再从主机100接收I/O请求。因此,此时执行副本页删除是有效率的。
以具有删除对象路径所使用的端口261的模块200作为模块(1),以具有到成为删除对象路径的目的地的卷的别的路径的模块200作为模块(2)来进行说明。
图27所示的处理,例如以下这样来执行。在模块(1)内执行路径删除程序2224。在模块(2)内执行副本生成程序2226、路径删除程序2224、以及控制信息更新程序2228。此外,以来自模块(1)的通知为契机来执行这些模块(2)的程序。
首先,路径删除程序(1)接收路径删除的指示(S1400)。此外,虽未图示,但该指示是来自维护终端270的维护程序273的指示。
然后,路径删除程序(1)判定是否存在具有到对象路径的目的地卷的路径、并且未通知模块(1)的路径删除的其它模块200(S1401)。当存在相应的模块200时,路径删除程序2224向相应的模块200通知路径信息表22111的更新(S1402)。此时,路径删除程序2224通知目的地卷的卷号码。
从路径删除程序(1)接收到路径信息表22111的更新通知的模块(2)的路径删除程序(2),更新可以根据路径信息表22111的目的地卷的卷号码来确定的路径信息(S1403)。具体而言,对于“路径已定义模块”的值,删除“模块(1)”。
在删除后,路径删除程序(2)向模块(1)报告完成(S1404)。
模块(1)的路径删除程序(1)接收来自模块(2)的完成报告(S1405)。然后,路径删除程序(1)为了向具有到目的地卷的路径的其它模块200通知路径信息表2211的更新,反复执行S1401到S1405。
当向具有到目的地卷的路径的全部模块200通知路径信息表22111的更新后,路径删除程序(1)进入S1406。S1406以后的步骤是:将仅模块(1)具有的页301向其它模块200复制的处理;以及在模块(1)中删除已向模块(1)以外的模块200复制过的页301的处理。当路径被删除时,模块(1)不从主机100接收I/O。因此,如上所述向其它模块200副本页301的方式,跨越模块200的I/O的发生频率变低。
路径删除程序(1)判定在对删除对象路径的目的地卷分配的页301中,是否存在仅模块(1)具有的页301(S1406)。通过在虚拟卷表(1)中寻找“复制有无位”的值为“OFF”、并且“分配模块”的值为“模块(1)”的行可以实现该处理。当存在仅模块(1)具有的页301时,路径删除程序(1)判定是否存在具有到删除对象路径的目的地卷的路径的其它模块200(S1407)。当存在具有到目的地卷的路径的其它模块200(模块(2))时,路径删除程序(1)向模块(2)复制仅模块(1)具有的页301内的数据(S1408)。该处理与使用图23说明的S902到S908相同。接着,路径删除程序(1)从模块(1)中删除分配给目的地卷的页301中的、在模块(1)以外的模块中存在副本页的页301(S1409)。该处理与使用图26说明的S1303到S1309相同。另外,当步骤S1406以及S1407的判定结果为“否”时,跳过S1408,进行S1409。
接着,路径删除程序(1)判定在分配给删除对象路径的目的地卷的页301中,是否存在仅模块(1)具有的页301(S1410)。在该判定中,“是(存在)”,是指从S1407进入S1409的情况、以及在S1408中无法将仅模块(1)具有的全部页301向模块(2)复制的情况。在这种情况下,由于有可能经由其它模块200具有的端口261读写模块(1)内的数据,因此无法从虚拟卷表(1)中删除对象卷的信息。因此,路径删除程序(1)跳过S1411,进入S1412。
另一方面,在S1410的判定中成为“否(不存在)”的情况下,路径删除程序(1)从虚拟卷表(1)中删除目的地卷的信息,进入S1412。
路径删除程序(1)从路径信息表(1)中删除作为删除对象的路径信息,然后报告完成(S1413)。此外,完成的报告目的地是维护终端270的维护程序273。
使用图28,说明将从写入副本数据起经过一定时间之后的副本页301删除的处理的一例。此外,该处理也可以与所述的写时的副本页删除、新分配页时的副本页删除、路径定义时的副本页删除并用。
此外,虽未图示,但为了实现该处理,在虚拟卷表22121中记录了分配页301的时刻(以后,称为页分配时刻)。另外,以下,将不删除副本页301而保留的时间长度称为“副本时间长”。以下,采用模块(1)中的处理为例进行说明,但该处理在各模块中通过副本删除程序2227来进行。
副本删除程序(1)以卷号码为“0”的虚拟卷的先头虚拟区域(在本实施例中,地址“0”到“99”)作为处理对象(S1500)。
然后,副本删除程序(1)判定处理对象虚拟区域是否已分配了页(S1501)。当已分配页时,副本删除程序(1)判定在模块(1)中分配的页301是否是在其它模块200中分配的页301的副本(S1502)。这一点可以参照虚拟卷表(1),根据作为“副本模块”的值而是否存在“模块(1)”来进行判断。
当S1501或S1502的结果为“否”时,副本删除程序(1)判定当前的处理对象虚拟区域是否是处理对象卷的末尾(S1506)。在当前的处理对象区域是卷的末尾时,副本删除程序(1)以下一卷(下一卷号码的卷)的先头虚拟区域作为下一个处理对象(S1507),然后返回S1501。另一方面,在当前的处理对象虚拟区域不是卷的末尾时,副本删除程序(1)以同一卷内的下一虚拟区域作为处理对象(S1508),然后返回S1501。
另一方面,当S1501以及S1502都为“是”时,副本删除程序(1)从虚拟卷表(1)得到与处理对象虚拟区域对应的“页分配时刻”的值(S1503)。然后,副本删除程序(1)判定(副本时间长+页分配时刻)是否大于当前时刻(S1504)。当(副本时间长+页分配时刻)在当前时刻以上时,由于超过了副本时间长,因此副本删除程序2227删除分配给处理对象区域的副本页301(S1505)。该删除处理与使用图26说明的S1303到S1309相同。另一方面,当(副本时间长+页分配时刻)比当前时刻小时,关于分配给处理对象虚拟区域的副本页301,由于未超过副本时间长、不需要删除,因此副本删除程序2227进入S1506。
如上所述,可以根据时间删除副本页。此外,可以根据副本页301的读频率来自动地变更副本时间长。例如,关于分配给读频率高的虚拟区域的副本页,副本时间长可以进一步增长。具体而言,例如在图28的S1504中,可以参照与分配给处理对象虚拟区域的副本页301对应的“读频率”的值,根据该值变更副本时间长。
以上说明了本发明的几个适当的实施例,但它们只是用于说明本发明的例子,并不意味着将本发明的范围仅限定于这些实施例。本发明也可以通过其它各种方式来实施。例如,可以代替识别号码而采用其它种类的识别符。例如,可以如图29所示,在一个模块间进行紧耦合,在其它模块间进行松耦合。
Claims (20)
1.一种从上位装置接收I/O请求并进行处理的存储系统,其特征在于,
具有从所述上位装置接收I/O请求的第一以及第二模块,
所述第一模块具备:
第一端口,其与所述上位装置连接;
第一虚拟卷,其由多个第一虚拟区域构成,与所述第一端口关联;
第一存储器区域,其存储与各第一虚拟区域相关的信息、即第一虚拟区域管理信息;
第一物理存储装置;
第一池,其由基于所述第一物理存储装置的多个第一实际区域构成;
第一I/O处理器部,其处理从所述上位装置经由所述第一端口接收到的I/O请求;以及
第一模块接口装置,其与所述第二模块连接,
所述第一虚拟区域管理信息,针对每个所述第一虚拟区域,包含具有已分配的实际区域的模块、即分配模块的识别符,
所述第二模块具备:
第二端口,其与所述上位装置连接;
第二虚拟卷,其由多个第二虚拟区域构成,与所述第二端口关联,并且关联了与所述第一虚拟卷所关联的卷识别符相同的卷识别符;
第二存储器区域,其存储与各第二虚拟区域相关的信息、即第二虚拟区域管理信息;
第二物理存储装置;
第二池,其由基于所述第二物理存储装置的多个第二实际区域构成;
第二I/O处理部,其处理从所述上位装置经由所述第二端口接收到的I/O请求;以及
第二模块接口装置,其与所述第一模块连接,
所述第二虚拟区域管理信息,针对每个所述第二虚拟区域,包含具有已分配的实际区域的模块、即分配模块的识别符,
(A)当所述第二模块从所述上位装置接收到写请求(W1)时,若未对根据所述写请求(W1)确定的作为写对象的第二虚拟区域(V21)分配第二实际区域,则所述第二I/O处理部从所述多个第二实际区域中寻找未分配的第二实际区域(R21)来分配给所述第二虚拟区域(V21),在所述第二实际区域(R21)中写入遵从所述写请求(W1)的数据,在所述第二虚拟区域管理信息中,作为与所述第二虚拟区域(V21)对应的所述分配模块识别符,写入所述第二模块的识别符,
(B)当所述第一模块从所述上位装置接收到写请求(W2)时,若未对根据所述写请求(W2)确定的作为写对象的第一虚拟区域(V11)分配第一实际区域,则所述第一I/O处理部从所述多个第一实际区域中寻找未分配的第一实际区域(R11)来分配给所述第一虚拟区域(V11),在所述第一实际区域(R11)中写入遵从所述写请求(W2)的数据,在所述第一虚拟区域管理信息中,作为与所述第一虚拟区域(V11)对应的所述分配模块识别符,写入所述第一模块的识别符。
2.根据权利要求1所述的存储系统,其特征在于,
所述第一虚拟区域管理信息,针对每个所述第一虚拟区域,包含副本模块的识别符,所述副本模块是具有存储了副本数据的实际区域的模块,所述副本数据是复制在与所述第一虚拟区域对应的所述分配模块内的实际区域中存储的数据而得的数据,
所述第二虚拟区域管理信息,针对每个所述第二虚拟区域,包含副本模块的识别符,
所述第一模块还具有第一数据复制部,
(C)所述第一数据复制部,将所述第二实际区域(R21)中存储的数据的副本数据,写入作为所述多个第一实际区域中的未分配的实际区域的、分配给与所述第二虚拟区域(V21)相同地址的第一虚拟区域(V12)的实际区域(R12),在所述第一虚拟区域管理信息中,作为与所述第一虚拟区域(V12)对应的所述副本模块识别符,写入所述第一模块的识别符,
(D)所述第一模块,当从所述上位装置接收到以所述第一虚拟区域(V12)作为读对象的读请求时,通过参照所述第一虚拟区域管理信息,即使与所述第一虚拟区域(V12)对应的所述分配模块不是所述第一模块,只要确定了与所述第一虚拟区域(V12)对应的所述副本模块是所述第一模块,就从所述实际区域(R12)读出数据,将所述读出的数据转发到所述上位装置。
3.根据权利要求2所述的存储系统,其特征在于,
所述第二模块还具备第二数据复制部,
(E)所述第二数据复制部,通过参照所述第二虚拟区域管理信息,确定在分配给所述第二虚拟区域(V21)的所述第二实际区域(R21)中存储的数据没有被复制,
所述第一数据复制部,针对与所述确定的所述第二虚拟区域(V21)对应的所述第一虚拟区域(V12),执行所述(C)的处理。
4.根据权利要求2或3所述的存储系统,其特征在于,
所述第一虚拟区域管理信息,针对每个所述第一虚拟区域,包含每单位时间内将第一虚拟区域作为读对象的次数、即读频率,所述第一I/O处理部根据读请求的接收,更新与遵从该读请求的作为读对象的第一虚拟区域对应的所述读频率,
所述第二虚拟区域管理信息,针对每个所述第二虚拟区域,包含每单位时间内将第二虚拟区域作为读对象的次数、即读频率,所述第二I/O处理部根据读请求的接收,更新与遵从该读请求的作为读对象的第二虚拟区域对应的所述读频率,
当与所述第一虚拟区域(V12)以及所述第二虚拟区域(V21)中至少一方对应的所述读频率高于基准值时,向所述实际区域(R12)进行数据复制。
5.根据权利要求4所述的存储系统,其特征在于,
所述第一虚拟区域管理信息,针对每个所述第一虚拟区域,包含每单位时间内将第一虚拟区域作为写对象的次数、即写频率,所述第一I/O处理部根据写请求的接收,更新与遵从该写请求的作为写对象的第一虚拟区域对应的所述写频率,
所述第二虚拟区域管理信息,针对每个所述第二虚拟区域,包含每单位时间内将第二虚拟区域作为写对象的次数、即写频率,所述第二I/O处理部根据写请求的接收,更新与遵从该写请求的作为写对象的第二虚拟区域对应的所述写频率,
与所述第一虚拟区域(V12)以及所述第二虚拟区域(V21)中至少一方所对应的所述读频率进行比较的所述基准值,是基于与所述第一虚拟区域(V12)以及所述第二虚拟区域(V21)中至少一方所对应的写频率的值。
6.根据权利要求2所述的存储系统,其特征在于,
在所述第一模块中定义所述第一虚拟卷之前,对在所述第二模块中定义的所述第二虚拟卷的所述第二虚拟区域(V21)分配所述实际区域(R21),
以在所述第一模块中定义了与所述第一端口关联的所述第一虚拟卷为契机,所述第一模块从所述第二模块取得在所述第二实际区域(R21)中存储的数据的所述副本数据。
7.根据权利要求2所述的存储系统,其特征在于,
在所述(A)中,以在所述第二实际区域(R21)中写入遵从所述写请求(W1)的数据为契机,所述第一模块从所述第二模块取得在所述第二实际区域(R21)中存储的数据的所述副本数据。
8.根据权利要求2所述的存储系统,其特征在于,
(F)所述第二I/O处理部向所述第一模块通知对所述第二虚拟区域(V21)分配了第二实际区域,所述第一I/O处理部在所述第一虚拟区域管理信息中,作为与所述第二虚拟区域(V21)相同地址的第一虚拟区域(V12)所对应的模块识别符,写入所述第二模块的识别符,
(G)所述第一模块,当从所述上位装置接收到以与所述第二虚拟区域(V21)相同地址的第一虚拟区域(V12)作为读对象的读请求时,通过参照所述第一虚拟区域管理信息,确定对所述第一虚拟区域(V12)分配的实际区域位于所述第二模块中,从所述第二模块取得在分配给所述第二虚拟区域(V21)的所述第二实际区域(R21)中存储的数据,将所述取得的数据转发到所述上位装置,
在所述(G)中,以取得在所述第二实际区域(R21)中存储的数据为契机,进行所述(C)。
9.根据权利要求2所述的存储系统,其特征在于,
(H)所述第二模块,当从所述上位装置接收到以分配了所述第二实际区域(R21)的所述第二虚拟区域(V21)作为写对象的写请求(W3)时,将在以所述第二虚拟区域(V21)作为分配目的地的第二实际区域中存储的数据,作为遵从所述写请求(W3)的数据,
以所述(H)为契机,所述第一模块从所述第二模块取得在分配给所述第二虚拟区域(V21)的第二实际区域中存储的、遵从所述写请求(W3)的数据,将在以所述第一虚拟区域(V12)作为分配目的地的第一实际区域中存储的数据,作为遵从所述写请求(W3)的数据的副本数据。
10.根据权利要求2所述的存储系统,其特征在于,
所述第一模块还具有第一副本删除部,
所述第一副本删除部,解除所述分配模块是所述第二模块所述副本模块是所述第一模块的、对于作为删除对象的所述第一虚拟区域的所述第一实际区域的分配。
11.根据权利要求10所述的存储系统,其特征在于,
所述第一副本删除部,以解除了所述第一端口针对所述第一虚拟卷的关联为契机,解除对于所述作为删除对象的第一虚拟区域的所述第一实际区域的分配。
12.根据权利要求10所述的存储系统,其特征在于,
所述第一副本删除部,以未分配的所述第一实际区域的数量变为预定数以下为契机,解除对于所述作为删除对象的第一虚拟区域的所述第一实际区域的分配。
13.根据权利要求12所述的存储系统,其特征在于,
所述第一副本删除部,优先将对应的读频率比基准值低的第一虚拟区域设为所述作为删除对象的第一虚拟区域。
14.根据权利要求10所述的存储系统,其特征在于,
所述第一模块从所述上位装置接收写请求(W4),
所述第一副本删除部,当未对根据所述写请求(W4)确定的作为写对象的第一虚拟区域(V4)分配第二实际区域、而且所述第一模块不具有未分配的所述第一实际区域时,解除对于所述第一虚拟区域(V12)的所述第一实际区域(R12)的分配。
15.根据权利要求10至14中任意一项所述的存储系统,其特征在于,
所述第一副本删除部解除在写入所述副本数据后经过了一定时间的第一实际区域的分配。
16.根据权利要求1所述的存储系统,其特征在于,
当所述第一模块从所述上位装置接收到读请求时,若已对根据所述读请求确定的作为读对象的虚拟区域分配了第一实际区域,则所述第一I/O处理部从所述第一实际区域读出遵从所述读请求的数据,并将所述读出的数据向主机转发。
17.一种在具有多个模块的存储系统中实现的存储控制方法,所述多个模块中的每个模块从上位装置接收I/O请求并进行处理,所述模块具有与所述上位装置连接的端口、物理存储装置、由基于所述物理存储装置的多个实际区域构成的池、以及与其它模块连接的模块接口装置,该存储控制方法的特征在于,
所述多个模块具有,由关联了同一卷识别符的多个虚拟区域构成的虚拟卷,
作为从所述上位装置接收到写请求的所述模块的第一模块,若未对根据所述写请求确定的作为写对象的虚拟区域分配实际区域,则从所述第一模块内的所述多个实际区域中寻找未分配的实际区域来分配给所述作为写对象的虚拟区域,在所述已分配的实际区域中写入遵从所述写请求的数据,
其中,所述第一模块向所述多个模块中的所述第一模块以外的第二模块通知对所述作为写对象的虚拟区域分配了所述第一模块内的实际区域,
其中,某个所述第二模块,将在所述分配的实际区域中存储的数据的副本数据,写入作为所述某个第二模块内的多个实际区域中的未分配的实际区域的、分配给与所述作为写对象的虚拟区域相同地址的虚拟区域的实际区域中,
其中,某个所述第二模块,当从所述上位装置接收到以与所述作为写对象的虚拟区域相同地址的虚拟区域作为读对象虚拟区域的读请求时,从对该虚拟区域分配的、所述某个第二模块内的实际区域中读出数据,转发到所述上位装置。
18.一种从上位装置接收I/O请求的存储系统的模块,其特征在于,
具备:与所述上位装置连接的端口;
由多个虚拟区域构成的虚拟卷;
存储与各虚拟区域相关的信息、即虚拟区域管理信息的存储介质;
物理存储装置;
由基于所述物理存储装置的多个实际区域构成的池;
处理从所述上位装置经由所述端口接收到的I/O请求的I/O处理部;以及
与其它模块连接的模块接口装置,
在所述虚拟卷上,关联了与其它模块具有的虚拟卷所关联的卷识别符相同的卷识别符,
所述虚拟区域管理信息,针对每个虚拟区域,包含具有已分配的实际区域的模块、即分配模块的识别符,
当从所述上位装置接收到写请求时,若未对根据所述写请求确定的作为写对象的虚拟区域分配实际区域,则所述I/O处理部从该模块内的所述多个实际区域中寻找未分配的实际区域来分配给所述作为写对象的虚拟区域,在所述分配的实际区域中写入遵从所述写请求的数据。
19.根据权利要求18所述的存储系统模块,其特征在于,
还具有第一副本处理部,其将在所述已分配的实际区域中存储的数据的副本数据转发到该模块以外的其它模块。
20.根据权利要求18或19所述的存储系统模块,其特征在于,
还具有第二副本处理部,其从该模块以外的其它模块取得在所述其它模块内的实际区域中存储的数据的副本数据,在所述其它模块中,在分配给与其实际区域的分配目的地虚拟区域相同地址的、该模块内的虚拟卷中的虚拟区域的实际区域中,写入所述取得的副本数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008099797A JP5072692B2 (ja) | 2008-04-07 | 2008-04-07 | 複数のストレージシステムモジュールを備えたストレージシステム |
JP2008099797 | 2008-04-07 | ||
JP2008-099797 | 2008-04-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101556529A CN101556529A (zh) | 2009-10-14 |
CN101556529B true CN101556529B (zh) | 2012-07-18 |
Family
ID=40823584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100041918A Expired - Fee Related CN101556529B (zh) | 2008-04-07 | 2009-02-20 | 具有多个存储系统模块的存储系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8645658B2 (zh) |
EP (1) | EP2109033A3 (zh) |
JP (1) | JP5072692B2 (zh) |
CN (1) | CN101556529B (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8239653B2 (en) * | 2009-04-23 | 2012-08-07 | Netapp, Inc. | Active-active support of virtual storage management in a storage area network (“SAN”) |
JP5052592B2 (ja) * | 2009-12-28 | 2012-10-17 | 株式会社日立製作所 | ストレージ管理システム、ストレージ階層管理方法及び管理サーバ |
WO2011111093A1 (ja) * | 2010-03-09 | 2011-09-15 | 株式会社日立製作所 | ボリューム管理装置及びストレージシステム |
JP5080611B2 (ja) * | 2010-05-14 | 2012-11-21 | 株式会社日立製作所 | ThinProvisioningが適用されたストレージ装置 |
EP2535819A4 (en) * | 2010-05-18 | 2014-02-05 | Hitachi Ltd | STORAGE DEVICE AND METHOD FOR MANAGING DATA |
US9311013B2 (en) * | 2011-03-25 | 2016-04-12 | Hitachi, Ltd. | Storage system and storage area allocation method having an automatic tier location function |
JP5915378B2 (ja) | 2012-05-24 | 2016-05-11 | 富士通株式会社 | ストレージ装置およびストレージ装置の制御方法 |
JP5752327B2 (ja) * | 2012-06-26 | 2015-07-22 | 株式会社日立製作所 | ストレージシステム、及びストレージシステムの制御方法 |
WO2014013527A1 (en) | 2012-07-20 | 2014-01-23 | Hitachi, Ltd. | Storage system including multiple storage apparatuses and pool virtualization method |
JP6005446B2 (ja) * | 2012-08-31 | 2016-10-12 | 富士通株式会社 | ストレージシステム、仮想化制御装置、情報処理装置、および、ストレージシステムの制御方法 |
WO2014155493A1 (ja) * | 2013-03-25 | 2014-10-02 | 株式会社日立製作所 | 計算機システム及びアクセス制御方法 |
JP6201580B2 (ja) | 2013-09-27 | 2017-09-27 | 富士通株式会社 | ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム |
CN104516792A (zh) * | 2013-10-08 | 2015-04-15 | 杰发科技(合肥)有限公司 | 一种数据备份方法及装置 |
CN104636077B (zh) * | 2013-11-15 | 2017-10-10 | 中国电信股份有限公司 | 用于虚拟机的网络块设备存储系统与方法 |
GB2536515A (en) * | 2013-11-28 | 2016-09-21 | Hitachi Ltd | Computer system, and a computer system control method |
WO2015162663A1 (ja) | 2014-04-21 | 2015-10-29 | 株式会社日立製作所 | ストレージシステム |
JP6013420B2 (ja) * | 2014-09-17 | 2016-10-25 | 株式会社日立製作所 | ストレージシステム |
US10229055B2 (en) * | 2014-10-29 | 2019-03-12 | Seagate Technology Llc | Adaptive spanning control |
US10757175B2 (en) * | 2015-02-10 | 2020-08-25 | Vmware, Inc. | Synchronization optimization based upon allocation data |
WO2017022235A1 (ja) * | 2015-08-03 | 2017-02-09 | 日本電気株式会社 | 伝送装置、伝送制御方法、及び、記録媒体 |
CN105260129B (zh) * | 2015-09-17 | 2018-06-26 | 浪潮(北京)电子信息产业有限公司 | 一种回收卷空间的方法和装置 |
JP6569477B2 (ja) * | 2015-11-02 | 2019-09-04 | 富士通株式会社 | ストレージ制御装置、および制御プログラム |
JP2018018271A (ja) * | 2016-07-27 | 2018-02-01 | 富士通株式会社 | ストレージ制御装置、ストレージシステムおよびストレージ制御プログラム |
US10838624B2 (en) * | 2018-01-31 | 2020-11-17 | Hewlett Packard Enterprise Development Lp | Extent pool allocations based on file system instance identifiers |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1664793A (zh) * | 2005-03-11 | 2005-09-07 | 清华大学 | 基于元数据服务器的存储虚拟化管理方法 |
US7213124B2 (en) * | 2003-05-28 | 2007-05-01 | Hitachi, Ltd. | Method for allocating storage area to virtual volume |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6148414A (en) * | 1998-09-24 | 2000-11-14 | Seek Systems, Inc. | Methods and systems for implementing shared disk array management functions |
US7191304B1 (en) * | 2002-09-06 | 2007-03-13 | 3Pardata, Inc. | Efficient and reliable virtual volume mapping |
US7100089B1 (en) * | 2002-09-06 | 2006-08-29 | 3Pardata, Inc. | Determining differences between snapshots |
US7263593B2 (en) * | 2002-11-25 | 2007-08-28 | Hitachi, Ltd. | Virtualization controller and data transfer control method |
US6889305B2 (en) * | 2003-02-14 | 2005-05-03 | Hewlett-Packard Development Company, L.P. | Device identification using a memory profile |
JP2007502470A (ja) * | 2003-08-14 | 2007-02-08 | コンペレント・テクノロジーズ | 仮想ディスク・ドライブのシステムおよび方法 |
US7412583B2 (en) * | 2003-11-14 | 2008-08-12 | International Business Machines Corporation | Virtual incremental storage method |
US7149859B2 (en) * | 2004-03-01 | 2006-12-12 | Hitachi, Ltd. | Method and apparatus for data migration with the efficient use of old assets |
US7058731B2 (en) * | 2004-08-03 | 2006-06-06 | Hitachi, Ltd. | Failover and data migration using data replication |
US20060161810A1 (en) * | 2004-08-25 | 2006-07-20 | Bao Bill Q | Remote replication |
US7130960B1 (en) | 2005-04-21 | 2006-10-31 | Hitachi, Ltd. | System and method for managing disk space in a thin-provisioned storage subsystem |
US20070061540A1 (en) * | 2005-06-06 | 2007-03-15 | Jim Rafert | Data storage system using segmentable virtual volumes |
JP4927408B2 (ja) * | 2006-01-25 | 2012-05-09 | 株式会社日立製作所 | 記憶システム及びそのデータ復元方法 |
JP4963892B2 (ja) | 2006-08-02 | 2012-06-27 | 株式会社日立製作所 | 仮想ストレージシステムの構成要素となることが可能なストレージシステムの制御装置 |
JP4932390B2 (ja) * | 2006-08-31 | 2012-05-16 | 株式会社日立製作所 | 仮想化システム及び領域割当て制御方法 |
JP2008099797A (ja) | 2006-10-18 | 2008-05-01 | Mitsubishi Electric Corp | 手乾燥装置 |
-
2008
- 2008-04-07 JP JP2008099797A patent/JP5072692B2/ja not_active Expired - Fee Related
- 2008-05-30 US US12/130,071 patent/US8645658B2/en not_active Expired - Fee Related
-
2009
- 2009-01-15 EP EP09250097A patent/EP2109033A3/en not_active Withdrawn
- 2009-02-20 CN CN2009100041918A patent/CN101556529B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7213124B2 (en) * | 2003-05-28 | 2007-05-01 | Hitachi, Ltd. | Method for allocating storage area to virtual volume |
CN1664793A (zh) * | 2005-03-11 | 2005-09-07 | 清华大学 | 基于元数据服务器的存储虚拟化管理方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2109033A3 (en) | 2012-08-22 |
CN101556529A (zh) | 2009-10-14 |
JP2009251970A (ja) | 2009-10-29 |
EP2109033A2 (en) | 2009-10-14 |
JP5072692B2 (ja) | 2012-11-14 |
US20090254695A1 (en) | 2009-10-08 |
US8645658B2 (en) | 2014-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101556529B (zh) | 具有多个存储系统模块的存储系统 | |
CN101268449B (zh) | 数据记录装置以及数据记录方法 | |
CN101542447B (zh) | 一次写入记录装置 | |
CN101364164B (zh) | 存储系统 | |
CN102681789B (zh) | 在一储存系统架构下产生一虚拟卷的数据存取方法 | |
CN101604313B (zh) | 信息记录介质以及其区域管理方法 | |
US5504888A (en) | File updating system employing the temporary connection and disconnection of buffer storage to extended storage | |
EP1555615A1 (en) | File management device, file management method, file management program, and recording medium | |
CN103514249B (zh) | 一种数据自精简方法和系统及存储装置 | |
CN101799742A (zh) | 用于在存储系统之间转移精简配置卷的方法和装置 | |
CN101809551A (zh) | 自动精简配置迁移和清理 | |
CN106708968A (zh) | 分布式数据库系统和分布式数据库系统中的数据处理方法 | |
EP1351143A2 (en) | Clustering storage system | |
US20090228658A1 (en) | Management method for cache memory, storage apparatus, and computer system | |
US6832272B2 (en) | Clustering storage system | |
CN101147118A (zh) | 用于重新配置存储系统的方法和装置 | |
CN103080909A (zh) | 计算机系统及其管理方法以及程序 | |
JP2006302253A (ja) | ストレージシステム | |
CN103677660B (zh) | 信息处理设备和区域释放控制方法 | |
CN109165120B (zh) | 分布式存储系统中管理快照和差异位图生成方法和产品 | |
CN101373418B (zh) | 存储系统和访问方法 | |
US8055815B2 (en) | Optimal paths with SCSI I/O referrals | |
CN102132245B (zh) | 具有执行格式化或粉碎功能的存储系统 | |
JP6280000B2 (ja) | データベース装置およびその動作方法 | |
JP2023125073A (ja) | 記憶制御装置及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120718 Termination date: 20180220 |
|
CF01 | Termination of patent right due to non-payment of annual fee |