技术领域
[0001] 本发明总地涉及一种存储系统,并且更详细地涉及一种用于控制在具有动态组块分配能力的数据存储系统中的数据卷创建的方法和装置。
相关背景技术
[0002] 为了降低数据卷中废弃的物理块,在存储系统中采用了动态组块分配能力。这种类型的存储系统具有特殊数据卷,这表示数据卷初始不具有物理块。当数据卷接收写命令并且组块还没有分配给写命令中指定的适当段时,存储系统从组块池中分配组块。这里称为“动态组块分配卷(DCAV)”的特殊数据卷被创建而没有组块消耗。因而,可以立即创建大量DCAV。例如,在大量虚拟服务器部署的情况下,创建并关联该大量的DCAV。然而,之后同时地使用大量的DCAV(从主机计算机安装OS和应用软件),并且快速地消耗组块。作为组块的快速消耗的结果,存储系统必须在短时间内中止。
[0003] 在例如US2007/0234109以及US专利号6,836,819中揭示了在存储系统中的动态组块分配能力的方法。更详细地,这些参考揭示了当已使用组块的数目超过预定阈值时发出告警的方法。然而,它们没有揭示根据已使用/未使用组块和/或容量增长信息来控制数据卷创建的任何方法和装置。
具体实施方式
[0038] 在本发明的下述具体实施方式中,参考形成本揭示的一部分的附图,附图通过说明示例实施例的方式而不是限制示例实施例的方式示出,通过示例实施例可以实施本发明。在附图中,相似的附图标记描述各个图中基本相似的部件。进一步地,应该注意到尽管如下所述并且如图所说明的具体实施方式提供了各种示例实施例,本发明不限于这里描述和说明的实施例,而是能够延伸到如同本领域普通技术人员所知或会知道的其它实施例。说明书中引用的“一个实施例”、“该实施例”、或“这些实施例”的意思是联系实施例所描述的特定特征、结构或特点包括在本发明的至少一个实施例中,并且在说明书的各个地方出现的这些短语不是必须指的是相同的实施例。另外,在下述具体实施方式中,提出多个特定细节从而提供对本发明的详细理解。然而,对本领域普通技术人员来说将显而易见不是必须所有的这些特定细节才能实施本发明。在其它环境下,公知的结构、材料、电路、处理和接口没有详细描述,和/或可以用框图的形式说明,从而不会不必要地使本发明模糊。
[0039] 此外,通过计算机中操作的算法和符号表达来表述下面具体实施方式中的一些部分。这些算法描述和符号表达是在数据处理领域的普通技术人员使用的以最有效地将它们的创新实质传递给本领域的其它普通技术人员的手段。算法是一系列定义的步骤以导致期望的结束状态和结果。在本发明中,执行的步骤需要切实的物理量操作以实现切实的结果。尽管并不必须,通常这些量采用电或磁信号的形式,或者是能够被存储、传递、合并、比较和操作的指令的形式。为了共用的原因,已经多次被证明将这些信号参考为比特、值、元件、符号、字符、术语、数字、指令等是方便的。然而,应该牢记所有这些和类似的术语与恰当的物理量相关联,并且仅为施加到这些量上的方便的标签。除非另行提及,如从下面的讨论中显而易见,应该理解到在整个说明书中,利用例如“处理”、“计算”、“确定”、“显示”等的术语的讨论可以包括计算机系统或其它信息处理装置的行为和处理,该计算机系统或其它信息处理装置将在计算机系统的寄存器和存储器中的表示为物理(电子)量的数据操作和转换为计算机系统的存储器或寄存器或其它信息存储、传输和显示装置内的类似地表示为物理量的其它数据。
[0040] 本发明还涉及一种用于执行这里的操作的装置。该装置可以被特别地构造用于所需目的,或者可以包括由一个或多个计算机程序选择性地激活或重配置的一个或多个通用计算机。这样的计算机程序可以存储在计算机可读存储介质中,例如但不限于光盘、磁盘、只读存储器、随机访问存储器、固态设备和驱动、或任何适用于存储电子信息的其它类型的介质。这里示出的算法和显示并不内在地与任何特定的计算机或其它装置相关。各种通用系统可以根据这里的教示使用程序和模块,或者可以证明便于构造更加专业的装置以执行期望的方法步骤。此外,本发明并不通过参考任何特定编程语言来描述。应当理解可以使用多种编程语言来实施这里描述的本发明的教示。编程语言的指令可以由一个或多个处理设备来执行,处理设备例如是中央处理单元(CPU)、处理器或控制器。
[0041] 下面将更加详细地说明的本发明的示例实施例提供用于控制在具有动态组块分配能力的数据存储系统中的数据卷创建的装置、方法和计算机程序。
[0042] 第一实施例
[0043] A.系统配置和逻辑结构
[0044] 图1示出了其中可以应用本发明的方法和装置的信息系统的硬件配置的例子。信息系统包括主机计算机10、存储装置100、管理计算机500、数据网络50以及管理网络90。
[0045] 至少一个主机计算机10通过数据网络50连接至存储装置100。在该实施例中,至少一个OS(操作系统)13在主机计算机10上执行。可以在OS 13上执行应用程序14。用于OS 13和应用程序14的文件和数据存储在数据卷中,该数据卷由存储装置100提供。OS13和应用程序14将写和/或读命令发送至存储装置100。OS 13和应用程序14在一开始就安装好。在开始安装之后大量的数据被写入数据卷。
[0046] 信息系统具有至少一个存储装置100,每个存储装置100包括存储控制器150以及一个或多个HDD(硬盘驱动)101。存储装置100具有一个或多个组块池110,组块池110由一个或多个HDD101组成。存储装置100向主机计算机10提供一个或多个数据卷。在该实施例中,存储装置100具有动态组块分配程序16(见图1(b))。数据卷被创建作为动态组块分配卷(DCAV)。至少一个管理计算机500通过管理网络90连接至存储装置100。
[0047] 主机计算机10和存储装置100通过数据网络50相连。该实施例中的数据网络50是光纤通道。然而,能够使用例如以太网和无线宽带的其它网络。网络交换机和集线器能够用于连接彼此。在图1(a)中,光纤通道交换机(FCSW55)用于连接主机计算机10和存储装置100。主机计算机10和存储装置100具有一个或多个光纤通道接口板(FCIF)15、155用于连接至光纤通道数据网络50。
[0048] 存储装置100通过管理网络90连接至管理计算机500。该实施例中的管理网络90是以太网。然而,能够使用其它网络或连接。网络交换机和集线器能够用于连接彼此。存储装置100和管理计算机500具有一个或多个以太网接口板(EtherIF)159、590用于连接至以太网管理网络90。
[0049] 如图1(a)中所见,主机计算机10包括用于执行存储器12中存储的程序的CPU11和用于连接至数据网络50的FCIF 15,其中存储器12存储程序和数据。至少两个程序由CPU 11执行。在该实施例中,存储器12存储操作系统程序13(OS 13)和应用程序14。
[0050] 管理计算机500包括用于执行存储器520中存储的程序的CPU 510和用于连接至管理网络90的EtherIF 590,其中存储器520存储程序和数据。至少两个程序由CPU 510执行。在该实施例中,存储器520存储用于向存储装置100发出数据卷创建请求的数据卷供应请求程序521以及用于管理快照生成的快照管理程序522(在第二实施例中)。
[0051] 图1(b)示出了图1(a)的信息系统中的存储装置100的硬件配置和逻辑结构的例子。存储装置100包括用于存储数据的一个或多个HDD 101以及用于向主机计算机10提供数据卷的一个或多个存储控制器150。存储控制器150包括用于执行存储器152(存储程序和数据)中存储的程序的CPU 151,用于连接至数据网络50的FCIF 155,用于连接至HDD 101的SATAIF 156(如果HDD 101具有例如FC、SCSI SAS的另一个接口,需要实施适当的接口),用于存储从主机计算机10接收的以及从HDD 101读取的数据的缓存153,以及用于连接至管理网络90的EtherIF 159。至少六个程序由CPU 151执行。
[0052] 在该实施例中,存储器152存储用于在接收到写请求并且没有组块时向数据卷分配组块的动态组块分配程序160,用于响应于来自主机计算机10的至少读容量/读/写命令的响应程序161,用于创建动态组块分配卷并将其分配给主机计算机10的数据卷分配程序162,用于监控组块池状态表并且将告警发送至管理计算机500的组块池状态表监控程序163,用于根据快照删除请求指派快照数目并将快照组块转换为未使用组块的快照程序164,以及用于确定是否能够根据已使用组块的数目和/或预留组块的数目来创建或禁止数据卷的数据卷创建禁止程序165。存储器152还存储组块消耗跟踪表166,组块池状态表
167,组块池管理表168,组块表169,快照目录表170以及分类表171。
[0053] 动态组块分配卷(DCAV)初始不具有分配的数据块。图2示出了写命令、动态组块分配卷111、组块池110、组块和HDD之间的关系。在该实施例中,DCAV 111是例如100GB;然而,当创建DCAV111时没有分配数据块。仅指派了数据卷的大小。当DCAV 111从主机计算机10接收到具有数据的写命令时,数据块将被分配给DCAV 111。组块是HDD 101中的数据块的集合。如图2所示,动态组块分配卷被划分为多个段。在该实施例中,组块的大小和段的大小是相同的。
[0054] 图2也说明了组块。组块由HDD 101中的一个或多个数据块组成。在该实施例中,组块由一个HDD 101中的块形成。每个组块具有用于识别该组块的唯一ID。组块聚集在组块池中。组块池由组块池管理表168管理。在该实施例中,存储装置100具有一个组块池110。因此存储装置100具有一个组块池管理表。然而能够使用任何数目的组块池。
[0055] 图3(a)-(b)示出了组块池管理表168的例子。组块池管理表168包括用于存储RAID组号(在RAID配置的情况下,见图11)的“RAID组号”列16801,用于存储HDD号的“HDD号”列16802,用于存储和组块对应的LBA范围的“LBA范围”列16803,用于存储用于识别组块的组块号的“组块号”列16804,用于存储组块是(已使用)否(未使用)已经被分配给数据卷的状态的“已分配”列16805,以及用于存储卷号的“卷号”列16806,对于该卷号已经将组块分配给段。初始没有将组块分配给DCAV 111,因而“已分配”列16805和“卷号”列16806中的所有单元必须为空(NULL)。如图3(b)中所见,“RAID组号”仅用于RAID配置。图3(a)示出了没有“RAID组号”列16801的例子。
[0056] 图4示出了用于动态组块分配卷的图1(b)的存储装置100的存储器152中的组块表169。当创建DCAV 111时,每个DCAV111具有自己的组块表169。组块表169包括用于存储用于识别段的段号的“段号”列16901,用于存储组块是否已经被分配的状态的“已分配”列16902,用于存储组块号的“组块号”列16903,其中已经将组块分配给该组块号。初始没有将组块分配给DCAV111,因而“已分配”列16902和“卷号”列16903中的所有单元必须为空。
[0057] 图5(a)-(c)示出了图1(b)的存储装置100的存储器152中的组块池状态表167的例子。组块池状态表167包括用于存储存储装置100中的组块总数的“组块总数”列16701,用于存储存储装置100中的已使用组块的总数的“已使用组块总数”列16702,用于存储由组块状态表监控程序163计算的阈值(在该实施例中为组块总数的90%)的“阈值”列16703,用于存储数据卷号的“卷号”列16704,用于存储每个DCAV处使用的预留组块的总数的“预留组块”列16705,用于存储每个DCAV处已使用组块的总数的“已使用组块”列
16706,以及用于存储存储装置100中的预留组块的总数的“预留组块总数”列16707。在该实施例中,在每个DCAV保持预留组块的数目,从而数据卷创建禁止程序165能够确定是否能够创建或应当禁止DCAV。
[0058] 组块池状态表监控程序163周期地监控组块池状态表167并计算阈值。阈值被计算为组块总数的90%并存储在组块池状态表167中。当增加HDD时,程序更新组块总数并重新计算阈值。组块池状态表监控程序163确定已使用组块数目是否高于阈值。如果是,向管理计算机500和/或主机计算机10发送告警。告警指示应当立即增加HDD。组块池状态表监控程序163进一步确定已使用组块的总数和预留组块的总数的和是否高于阈值。如果是,向管理计算机500和/或主机计算机10发送告警。告警指示应当立即增加HDD。
[0059] B.处理流程
[0060] 图6示出了用于DCAV供应处理600的处理流程图的例子。当管理计算机500上的管理员通过操作数据卷供应请求程序521来向数据卷供应请求程序521请求数据卷创建时,开始该处理。在步骤610,数据卷供应请求程序521向存储控制器150上的数据卷分配程序162发送具有预留组块号的数据卷供应请求。在步骤620,数据卷分配程序162在时间上更新组块池状态表167。在步骤622,数据卷创建禁止程序165通过比较阈值和已使用组块总数与预留组块总数的和来检查是否能够创建或禁止请求的数据卷。在已使用组块总数与预留组块总数的和大于阈值的情况下,禁止数据卷创建并且撤销组块池状态表167(步骤630)。然后,在步骤632,数据卷创建禁止程序165向管理计算机500发送错误。
在已使用组块总数与预留组块总数的和小于或等于阈值的情况下,创建数据卷并创建组块表169(步骤640)。然后,数据卷分配程序162固定组块池状态表167(步骤642),然后数据卷分配程序162向管理计算机500发送数据卷创建成功状态(步骤644)。
[0061] 图5(a)-5(c)示出了组块池状态表167的例子。在该实施例中,一个组块是2MB(4096个块,每个块512字节)。在图5(a)中,在存储装置100中没有数据卷。组块的总数是1000000。已使用组块总数是0。阈值是900000。在图5(b)中,管理计算机500请求使用10000个预留组块的数据卷创建,并且数据卷是存储系统100中的第一数据卷。在该情况下数据卷创建是成功的。在图5(c)中,管理计算机500请求使用10000个预留组块的数据卷创建。由于此时的数据卷创建,预留组块的总数达到100000。已使用组块的数目现在是801000。由于已使用组块总数与预留组块总数的和超过阈值(100000+801000=
901000>900000),数据卷创建禁止程序165禁止DCAV111-99创建。向管理计算机500发送错误。
[0062] 图7(a)-(d)示出了用于在图1(a)的管理计算机500上创建DCAV的管理屏幕的例子。图8(a)-(b)示出了在图1(a)的管理计算机500中的预留组块缺省表529的例子。在图7(a)中,当创建DCAV时,管理员仅指定DCAV的大小并按下“确认”按钮。应用预定数目的预留组块(例如10000)。如图8(a)所示,预定数目的预留组块被存储在预留组块缺省表529中。在图7(b)的屏幕中,管理员指定DCAV的总大小以及DCAV的初始大小。DCAV的初始大小是例如当安装OS和应用程序时数据卷的初始大小。管理员指定两个大小并按下“确认”按钮以创建DCAV。在图7(c)的屏幕中,管理员指定DCAV的总大小以及DCAV的使用。如图8(b)所示,对于每个使用的预留组块的数目是预定的并且存储在预留组块缺省表
529中。选择的使用被转换为预留组块的数目,并且然后将其提供至数据卷分配程序162。
在图7(d)的屏幕中,管理员指定DCAV的总大小,DCAV的使用以及DCAV的开始日期和时间。
拒绝任何写命令直到开始日期和时间。
[0063] 由于数据卷是动态组块分配卷DCAV 111,创建的新数据卷初始不具有任何组块。主机计算机10能够从存储装置100获得容量信息。即使DCAV 111不具有组块,作为读容量命令的结果,响应程序161使用容量信息向主机计算机响应。因而,主机计算机10认识到在存储装置100中存在具有特定大小的数据卷。
[0064] 图9示出了涉及根据第一实施例的图1(b)的存储装置100的存储器152中的响应程序161、动态组块分配程序160以及数据卷创建禁止程序165的存储装置的写操作的处理流程图的例子。
[0065] 在步骤910,存储装置程序检查该DCAV 111是否不具有组块。如果是,程序进行到步骤912。在步骤912,程序检查已使用组块总数与预留组块总数的和是否大于组块的总数。如果是,程序进行到步骤919。(注意根据预定模式可以跳过步骤912。)否则,程序继续进行到步骤914,并且检查已使用组块总数与预留组块总数的和是否大于阈值。如果是,程序进行到步骤919。(注意根据预定模式可以跳过步骤914。)否则,程序继续进行到步骤916,并检查指派给数据卷的日期和时间是否已经到期。(如果还没有向数据卷指派日期和时间,可以跳过该步骤)。如果没有到期,程序进行到步骤919,并且向主机计算机10发出接通(cutover)错误。如果到期,程序进行到步骤920。
[0066] 在步骤920,程序计算和写命令对应的数据卷中的段数。然后,在步骤922,程序检查段是否具有组块。如果段已经具有组块,程序进行到步骤980。否则,程序继续进行到步骤930,并试图从组块池获得组块。在步骤932,程序检查组块分配是否成功。如果否,程序进行到步骤939,并向主机计算机10发出写错误。如果成功,程序继续进行到步骤950,并更新组块池管理表168。在步骤952,程序更新组块表169。在步骤954,程序更新组块池状态表167。这涉及如果当前值不是零则降低预留组块数目、增加已使用组块数目,更新已使用组块总数,并更新预留组块总数。然后,在步骤960,程序检查已使用组块总数与预留组块总数的和是否大于组块总数。如果是,程序进行到步骤969,并向管理计算机500发送告警。否则,程序继续进行到步骤970,并检查已使用组块总数与预留组块总数的和是否大于阈值。如果是,程序进行到步骤979,并向管理计算机500发送告警。否则,程序继续进行到步骤980,并将数据写入分配给段的组块。在步骤999,程序发送命令完成响应。
[0067] 根据步骤910,912,914和919,当向DCAV执行第一写操作时,根据预留组块的总数拒绝写命令。对于DCAV在一定时间之前(可能很长时间之前)被创建,其中在该时间中已使用组块总数与预留组块总数的和小于或等于阈值,并且之后其它DCAV已经消耗组块的情况,该顺序是重要的。在当前时间,已使用组块总数与预留组块总数的和大于组块总数(步骤912);或者已使用组块总数与预留组块总数的和大于阈值(步骤914)。
[0068] 图10示出了涉及图1(b)的存储装置100的存储器152中的响应程序161的读操作的处理流程图。在步骤1010,程序计算与读命令对应的数据卷中的段数。然后,在步骤1012,程序检查段是否具有组块。如果段已经具有组块,程序进行到步骤1070。如果段没有组块,程序继续进行到步骤1080。在步骤1070,程序转发分配给段的组块中的数据。在步骤1080,程序转发缺省数据图案(例如全零数据图案)。最后,在步骤1099,程序发送命令完成响应。
[0069] 根据一个变型,HDD 101能够由RAID组代替。图11示出了RAID组中具有组块(10000,10001,10002)的RAID配置的例子。通过RAID算法,RAID(独立磁盘冗余阵列)组由多个HDD(101-01,101-02,101-03,101-04,101-05)组成。RAID算法在存储控制器150中实施。图3(b)所示的组块池管理表168用于RAID配置。
[0070] 第二实施例
[0071] 在第二实施例中,提供了与快照能力组合的DCAV。快照是在指定定时的数据卷图像之一。管理计算机500或主机计算机10可以向DCAV 111发送快照请求。否则存储装置100本身可以周期地进行快照(周期可以是预定的)。图12示出了根据第二实施例的图
1(b)的存储装置100的存储器152中的组块表169的例子。图13示出了存储器152中的快照目录表170的例子。快照程序164指派新的快照号并且在图13的快照目录表170中记录日期和时间。图12的组块表169能够存储与每个快照号对应的组块号。
[0072] 图13的快照目录表170包括用于在存储装置100中存储数据卷号的“卷号”列17001,用于存储指派的快照号的“快照号”列17002,以及用于存储当拍摄快照时的时间戳的“时间戳”列17003。
[0073] 在第二实施例的快照操作中,在每个DCAV 111以一小时的间隔拍摄快照。快照程序164指派新快照号并在快照目录表170中存储快照号和时间戳。图13示出了DCAV 111-00具有10个快照图像,具有在2009/4/29日从1:00pm至10:pm拍摄的快照号
111-00-00至111-00-09。
[0074] 图14示出了涉及根据第二实施例的图1(b)的存储装置100的存储器152中的响应程序161、动态组块分配程序160以及数据卷创建禁止程序165的由存储装置程序通过快照进行写操作1400的处理流程图的例子。和图9的流程图(第一实施例的写操作)不同的那些特征用下划线表示。
[0075] 在步骤1410,存储装置程序检查该DCAV 111是否不具有组块。如果是,程序进行到步骤1412。在步骤1412,程序检查已使用组块总数与预留组块总数的和是否大于组块总数。如果是,程序进行到步骤1419。(注意根据预定模式可以跳过步骤1412。)否则,程序继续进行到步骤1414,并检查已使用组块总数与预留组块总数的和是否大于阈值。如果是,程序进行到步骤1419。(注意根据预定模式可以跳过步骤1414。)否则,程序继续进行到步骤1416,并检查指派给数据卷的日期和时间是否已经到期。(如果还没有向数据卷指派日期和时间,可以跳过该步骤)。如果没有到期,程序进行到步骤1419,并且向主机计算机10发出接通错误。如果到期,程序进行到步骤1420。
[0076] 在步骤1420,程序计算和写命令对应的数据卷中的段数。然后,在步骤1422,程序检查段是否具有在当前快照号的组块。如果段已经具有组块,程序进行到步骤1480。否则,程序继续进行到步骤1430,并试图从组块池获得组块。在步骤1432,程序检查组块分配是否成功。如果否,程序进行到步骤1439,并向主机计算机10发出写错误。如果成功,程序继续进行到步骤1450,并更新组块池管理表168。在步骤1452,程序更新组块表169。在步骤1454,程序更新组块池状态表167。这涉及如果当前值不是零则降低预留组块数目、增加已使用组块数目,更新已使用组块总数,并更新预留组块总数。然后,在步骤1456,程序将先前快照号的组块中的数据复制到指派的组块中。(如果写命令重写组块中的所有数据或者没有先前组件,可以跳过该步骤。)在步骤1460,程序检查已使用组块总数与预留组块总数的和是否大于组块总数。如果是,程序进行到步骤1469,并向管理计算机500发送告警。否则,程序继续进行到步骤1470,并检查已使用组块总数与预留组块总数的和是否大于阈值。
如果是,程序进行到步骤1479,并向管理计算机500发送告警。否则,程序继续进行到步骤
1480,并将数据写入分配给段的组块。在步骤1499,程序发送命令完成响应。这些拍摄的快照用于参考数据卷的旧图像。例如,从数据卷的旧图像恢复旧文件是典型用例。
[0077] 在一个例子中,写数据存储在一个或多个主卷中,并且一个或多个主卷的快照存储在存储装置100的一个或多个次卷中。在一种情况下,基于一个或多个主卷中的组块数目并且在另一种情况下基于一个或多个主卷和一个或多个次卷中的组块数目,存储装置程序可以禁止向新卷分配组块或者发出不得向新卷分配组块的警告。组块的数目可以是已使用组块数目或者已使用组块数目与预留组块数目的和。组块可以包括已使用组块或者已使用组块与预留组块二者。
[0078] 图15示出了用于选择快照操作的管理计算机500的屏幕图像的例子。管理计算机500在该屏幕上显示快照目录。快照管理程序522从存储装置100请求快照目录信息(存储在快照目录表170中)并显示该信息。在图15所示的屏幕上,管理员能够选择用于恢复文件的图像。在图15中,对于数据卷111-00进行选择。选择了2009/4/29日6:00pm的快照图像。按下屏幕上的“确认”按钮,然后快照管理程序522向数据卷发送快照号。在指定快照图像执行数据卷的读操作。
[0079] 参考图10说明在指定快照号的读操作(第一实施例中的读操作)。第二实施例和第一实施例的唯一差异发生在步骤1070。在步骤1070,程序转发分配给段的组块中的数据。在第二实施例中,选择最靠近指定快照号的组块。如果段具有在111-00-002(3:00pm)和111-00-004(5:00pm)的两个组块,并且指定了快照号111-00-05(6:00pm),则选择在111-00-004(5:00pm)的组块。如果段具有在111-00-002(3:00pm)和111-00-006(7:00pm)的两个组块,并且指定了快照号111-00-05(6:00pm),则选择在111-00-002(3:00pm)的组块。
[0080] 在第二实施例中,组块被分为三类。在未使用类,组块不具有数据。在已使用类,组块具有数据并且需要数据来响应于主机计算机作为当前卷。在快照类,组块具有数据并且需要数据来在指定快照图像响应。
[0081] 图16示出了当快照生成的数目降低时数据卷的已使用组块和未使用组块。为了周期地拍摄快照并且持续向数据卷写入数据,未使用组块将最终用完。仅在两类中分类每个组块:已使用和快照。快照类中的组块可以被转换为未使用。然而,在该情况下,如图16中所见,快照生成的数目降低。
[0082] 图17示出了根据第二实施例的图1(b)的存储装置100的存储器152中的分类表171的例子。在分类表171中分类和登记每个组块。以快照号和时间戳来登记快照类中的组块。分类表171用于管理组块,尤其用于删除指定快照生成。
[0083] 当已使用组块数目和快照组块数目的和到达阈值时,考虑两个选择。一个选择是增加更多的HDD。另一个选择是降低快照生成的数目。为了保持快照生成的数目,必须增加一个或多个HDD。快照程序164向管理计算机500发送告警。管理计算机500显示图18所示的屏幕用于进行选择。如果管理员按下“减少生成”,基于从快照程序164获得的分类表171如图19所示显示另一个管理屏幕。图19示出了用于选择删除生成操作屏幕的管理计算机中的屏幕显示的例子。在图19的管理屏幕中,管理员能够通过选中校验框而选择生成。在区域18001实时显示估计的释放的组块的数目。当按下删除按钮18002时,管理计算机500向快照程序164发送快照删除请求。快照程序164根据指定快照号将快照组块转换为未使用组块。
[0084] 通过组合第一和第二实施例的特征产生本发明另一个实施例。在已使用组块总数、快照组块数目以及预留组块数目的和大于阈值的情况下,数据卷分配程序162可以禁止新卷创建。否则,组块池状态表监控程序163可以发送告警。组块池状态表监控程序163参考组块池状态表167以及分类表171来进行该告警。当管理计算机500接收到该告警时,管理计算机500可以显示如上所述图18和19中所示的屏幕。在删除一些快照生成之后,管理员可以尝试创建新数据卷。
[0085] 图20示出了在图1(b)的存储装置100的存储器152中的组块消耗跟踪表166的例子。组块状态表监控程序163可以周期地(例如以60秒的间隔)在组块消耗跟踪表166中记录组块总数、已使用组块、未使用组块以及快照组块。组块状态表监控程序163也可以例如基于平均增长率估计它们的未来消耗。根据估计的组块的未来消耗,在创建新数据卷之前,可以禁止为要创建新数据卷而进行的组块分配或发出不得进行为要创建新数据卷而进行的组块分配的警告。
[0086] 图21示出了从组块消耗跟踪表166可视化的图。在时间t0,存储装置具有N个未使用组块、不具有已使用组块、并且不具有快照组块。只执行了一些数据卷创建。预留了组块。在时间t1,开始OS 13和应用程序14的安装。组块被快速地消耗。在t2,完成安装。在t3,存储装置100开始拍摄快照。快照组块增加。在t4,已使用组块总数和快照组块总数之和到达阈值。一些快照生成被释放。在t5,已使用组块总数和快照组块总数之和再次到达阈值。增加额外的HDD并且增加未使用组块。存储装置100中的组块总数到达M。重新计算阈值。在t6,现在执行一些数据卷创建。一些数据卷创建立即发生。在t7预留一些数据卷创建。由于存在足够的未使用组块,不禁止在t6的数据卷创建。由于基于平均增长率和该点的预留组块总数估计没有足够的未使用组块,禁止在距离现在的未来点t7的数据卷创建。当然,管理员可以试图释放一些快照生成以避免禁止。
[0087] 当然,图1(a)所示的系统配置仅是实施本发明的纯示例性信息系统,并且本发明不限于特定硬件配置。实施本发明的计算机和存储系统也能够具有已知I/O设备(例如CD和DVD驱动,软盘驱动,硬驱等),这些设备能够存储和读取用于实施上述发明的模块、程序和数据结构。这些模块、程序和数据结构能够被编码在这样的计算机可读介质上。例如,本发明的数据结构能够在与记录了本发明中使用的程序的一个或多个计算机可读介质相独立的计算机可读介质上。可以通过任何形式的数字数据通信介质,例如通信网络,来将系统的这些组件相连。通信网络的例子包括局域网、广域网(例如互联网)、无线网络,存储区域网络等。
[0088] 在说明书中,多个细节用于说明的目的以提供对本发明的透彻理解。然而,对本领域普通技术人员来说,不需要全部的这些特定细节来实现本发明。也注意到本发明可以被描述作为过程,通常被描述作为流程图、流图、结构图或框图。尽管流程图可能将操作描述作为顺序处理,能够并行或同时执行许多操作。此外,操作的顺序可以重新安排。
[0089] 如本领域公知,上述操作能够由硬件、软件或软件和硬件的一些组合来执行。可以使用电路和逻辑设备(硬件)来实施本发明实施例的各个方面,同时可以使用在机器可读介质上存储的指令(软件)来实施本发明实施例的其它方面,如果处理器执行该指令,该指令将使得处理器执行方法以实现本发明的实施例。另外,可以主要地在硬件中执行本发明的一些实施例,而可以主要地在软件中执行其它实施例。此外,能够在单个单元中执行描述的各种功能,或者该各种功能能够以多种方式分布在多个组件上。当由软件执行时,可以由处理器(例如通用计算机)基于计算机可读介质中存储的指令来执行方法。如果需要的话,能够以压缩和/或加密格式将指令存储在介质中。
[0090] 由上述显而易见,本发明提供用于控制在具有动态组块分配能力的数据存储系统处的数据卷创建的方法、装置以及存储在计算机可读介质上的程序。另外,尽管在该说明书中描述了特定实施例,本领域普通技术人员应当理解设计为实现相同目的的任何适当的布置能够替代这里揭示的特定实施例。该揭示意欲覆盖本发明的任何和所有适配或变化,并且应当理解在所附权利要求中使用的术语不应当被理解为将本发明限制为说明书中揭示的特定实施例。相反,本发明的范围应当由所附权利要求以及这样的权利要求的等价物的完全范围来整体地确定,应当根据权利要求解释的已制定原则来理解所附权利要求。