专利名称:存储系统的利记博彩app
技术领域:
本发明总地涉及一种存储系统,并且更详细地涉及一种用于控制在具有动态组块 分配能力的数据存储系统中的数据卷创建的方法和装置。
背景技术:
为了降低数据卷中废弃的物理块,在存储系统中采用了动态组块分配能力。这种 类型的存储系统具有特殊数据卷,这表示数据卷初始不具有物理块。当数据卷接收写命令 并且组块还没有分配给写命令中指定的适当段时,存储系统从组块池中分配组块。这里称 为“动态组块分配卷(DCAV) ”的特殊数据卷被创建而没有组块消耗。因而,可以立即创建大 量DCAV。例如,在大量虚拟服务器部署的情况下,创建并关联该大量的DCAV。然而,之后同 时地使用大量的DCAV (从主机计算机安装OS和应用软件),并且快速地消耗组块。作为组 块的快速消耗的结果,存储系统必须在短时间内中止。在例如US2007/0234109以及US专利号6,836,819中揭示了在存储系统中的动态 组块分配能力的方法。更详细地,这些参考揭示了当已使用组块的数目超过预定阈值时发 出告警的方法。然而,它们没有揭示根据已使用/未使用组块和/或容量增长信息来控制 数据卷创建的任何方法和装置。
发明内容
本发明的示例实施例提供了用于控制在数据存储系统中的数据卷创建的方法和 装置。数据存储系统具有动态组块分配能力,从而当数据卷接收到写命令并且还没有将组 块分配给适当段时将组块从组块池中分配给数据卷。控制数据卷创建。具有动态组块分配的数据存储系统具有告警能力。当已使用组块的数目超过预定 阈值时报告告警。然而,同时创建许多数据卷和执行写操作,由于缺少组块,存储系统将需 要中止。例如,在开始安装之后,多个OS和应用软件安装消耗许多组块。为了防止中止,根 据存储系统中已使用/未使用组块的数目和/或容量增长信息,禁止数据卷创建或发出不 得进行数据卷创建的告警。现有技术不禁止数据卷创建。在系统开始使用动态组块分配卷 之后可能发生组块的缺乏以及存储系统中止。本发明根据预先的估计禁止数据卷创建。存储系统中的动态组块分配程序将组块从组块池中分配给数据。组块池管理表以 及组块表由动态组块分配程序使用。存储系统具有数据卷创建禁止程序,该数据卷创建禁 止程序确定是否能够创建数据卷或是否应当禁止数据卷。数据卷禁止程序参考已使用/未 使用组块的数目和/或容量增长信息用于确定禁止。存储装置可以进一步包括快照程序,用于获得多个数据卷的生成的快照。快照生 成也消耗组块。在该情况下,数据卷禁止程序参考已使用/未使用组块的数目、容量增长信 息、和/或用于快照生成的组块数目来确定禁止。根据本发明的一方面,存储系统包括处理器;存储器;以及要分配给数据卷的多 个组块,每个组块具有一个或多个数据块。所述多个组块包括分配给一个或多个数据卷的零个或更多个已使用组块以及作为未使用组块的零个或更多个剩余组块。根据存储系统中 剩余组块的总数,在创建新数据卷之前禁止进行创建新数据卷的新数据卷创建操作或发出 不得进行创建新数据卷的新数据卷创建操作的警告。在一些实施例中,剩余组块包括没有被分配给所述一个或多个数据卷的未使用组 块以及预留用于所述一个或多个数据卷但是还没有被分配给所述一个或多个数据卷的预 留组块。如果已使用组块的总数和预留组块的总数的和大于存储系统中组块的总数,则禁 止新数据卷创建操作。如果已使用组块的总数和预留组块的总数的和大于与存储系统中 组块的总数的某一百分比相等的阈值,则使用告警来发出不得进行新数据卷创建操作的警 告,其中所述百分比小于100%。所述多个组块包括一个或多个快照组块,所述一个或多个 快照组块在特定时间被分配给所述一个或多个数据卷的数据卷图像,所述特定时间表示所 述一个或多个数据卷的快照生成。所述多个组块包括零个或更多个剩余组块,所述零个或 更多个剩余组块不是已使用组块并且不是快照组块。在特定实施例中,如果已使用组块的总数、快照组块的总数和预留组块的总数的 和大于存储系统中组块的总数,则禁止新数据卷创建操作。如果已使用组块的总数、快照组 块的总数和预留组块的总数的和大于与存储系统中组块的总数的某一百分比相等的阈值, 则通过告警来发出不得进行新数据卷创建操作的警告,其中所述百分比小于100%。存储器 包括快照模块,所述快照模块用于在接收到快照删除请求时将一个或多个快照组块转换为 未使用组块。存储器包括组块状态监视模块,所述组块状态监视模块用于监视组块、已使用 组块、未使用组块、预留组块和快照组块的数目,并且用于估计组块的未来消耗。根据估计 的组块的未来消耗,在创建新数据卷之前禁止进行新数据卷创建操作或者发出不得进行新 数据卷创建操作的警告。根据本发明的另一方面,存储系统包括处理器;存储器;以及要分配给数据卷的 多个组块,所述数据卷包括至少一个主卷和至少一个次卷,所述至少一个次卷用于存储基 于存储在所述至少一个主卷中的数据的数据,每个组块具有一个或多个数据块。所述多个 组块包括分配给一个或多个数据卷的零个或更多个已使用组块以及没有被分配给一个或 多个数据卷的零个或更多个未使用组块。根据所述至少一个主卷中已使用组块的总数,在 创建新数据卷之前禁止进行创建新数据卷的新数据卷创建操作或者发出不得进行创建新 数据卷的新数据卷创建操作的警告。在一些实施例中,根据所述至少一个主卷和所述至少一个次卷中的已使用组块的 总数,在创建新数据卷之前禁止进行创建新数据卷的新数据卷创建操作或者发出不得进行 创建新数据卷的新数据卷创建操作的警告。根据所述至少一个主卷和所述至少一个次卷中 的已使用组块的总数和预留组块的总数,在创建新数据卷之前禁止进行新数据卷创建操作 或者发出不得进行新数据卷创建操作的警告。预留组块预留给所述至少一个主卷和所述至 少一个次卷但还没有被分配给所述至少一个主卷和所述至少一个次卷。所述多个组块包括 一个或多个快照组块,所述一个或多个快照组块被在特定时间分配用于所述至少一个主卷 的数据卷图像的所述至少一个次卷,所述特定时间表示所述至少一个主卷的快照生成。响 应于存储系统接收到的写命令,执行新数据创建操作以创建新数据卷。禁止响应写命令来 进行新数据卷创建操作,直到指派给新数据卷的指定日期和时间已经到期。根据本发明的另一方面,存储系统包括处理器;存储器;以及要分配给数据卷的
6多个组块,每个组块具有一个或多个数据块。所述多个组块包括分配给一个或多个数据卷 的零个或更多个已使用组块以及作为未使用组块的零个或更多个剩余组块。根据存储系统 中剩余组块的总数,禁止对于没有接收到任何写操作数据卷的所述数据卷之一的第一写操 作或警告不进行对于没有接收到任何写操作数据卷的所述数据卷之一的第一写操作。在一些实施例中,根据存储系统中剩余组块的总数,在创建新数据卷之前禁止进 行为创建新数据卷而要执行的新数据卷创建操作或者发出不得进行为创建新数据卷而要 执行的新数据卷创建操作的警告。剩余组块包括没有被分配给所述一个或多个数据卷的未 使用组块以及预留给所述一个或多个数据卷但是还没有被分配给所述一个或多个数据卷 的预留组块。通过关于特定实施例的下述详细描述,本发明的这些和其它优势对于本领域技术 人员将显而易见。
图1 (a)示出其中可以应用本发明的方法和装置的信息系统的硬件配置的例子;图1(b)示出了图1(a)的信息系统中的存储装置的硬件配置和逻辑结构的例子;图2示出了写命令、动态组块分配卷、组块池、组块和HDD之间的关系;图3(a)_(b)示出了图1(b)的存储装置的存储器中的组块池管理表的例子;图4示出了用于动态组块分配卷的图1 (b)的存储装置的存储器中的组块表169 ;图5(a)_(c)示出了图1(b)的存储装置的存储器中的组块池状态表的例子;图6示出了用于DCAV供应处理的处理流程图的例子;图7(a)_(d)示出了用于在图1(a)的管理计算机上创建DCAV的管理屏幕的例子;图8(a)_(b)示出了在图1(a)的管理计算机中的预留组块缺省表的例子;图9示出了涉及根据第一实施例的图1(b)的存储装置的存储器中的响应程序、动 态组块分配程序以及数据卷创建禁止程序的写操作的处理流程图;图10示出了涉及图1(b)的存储装置的存储器中的响应程序的读操作的处理流程 图;图11示出了具有RAID组中的组块的RAID配置的例子;图12示出了根据第二实施例的图1(b)的存储装置的存储器中的组块表的例子;图13示出了根据第二实施例的图1(b)的存储装置的存储器中的快照目录表的例 子;图14示出了涉及根据第二实施例的图1(b)的存储装置的存储器中的响应程序、 动态组块分配程序以及数据卷创建禁止程序的写操作的处理流程图;图15示出了用于选择快照操作的管理计算机的屏幕图像的例子;图16示出了当快照生成的数目降低时已使用和未使用数据卷组块;图17示出了根据第二实施例的图1(b)的存储装置的存储器中的分类表的例子;图18示出了用于涉及快照生成的选择的管理计算机中的屏幕显示的例子;图19示出了用于选择删除生成操作屏幕的管理计算机中的屏幕显示的例子;图20示出了在图1(b)的存储装置的存储器中的组块消耗跟踪表166的例子;以 及
图21示出了从组块消耗跟踪表可视化的图。
具体实施例方式在本发明的下述具体实施方式
中,参考形成本揭示的一部分的附图,附图通过说 明示例实施例的方式而不是限制示例实施例的方式示出,通过示例实施例可以实施本发 明。在附图中,相似的附图标记描述各个图中基本相似的部件。进一步地,应该注意到尽管 如下所述并且如图所说明的具体实施方式
提供了各种示例实施例,本发明不限于这里描述 和说明的实施例,而是能够延伸到如同本领域普通技术人员所知或会知道的其它实施例。 说明书中引用的“一个实施例”、“该实施例”、或“这些实施例”的意思是联系实施例所描述 的特定特征、结构或特点包括在本发明的至少一个实施例中,并且在说明书的各个地方出 现的这些短语不是必须指的是相同的实施例。另外,在下述具体实施方式
中,提出多个特定 细节从而提供对本发明的详细理解。然而,对本领域普通技术人员来说将显而易见不是必 须所有的这些特定细节才能实施本发明。在其它环境下,公知的结构、材料、电路、处理和接 口没有详细描述,和/或可以用框图的形式说明,从而不会不必要地使本发明模糊。此外,通过计算机中操作的算法和符号表达来表述下面具体实施方式
中的一些部 分。这些算法描述和符号表达是在数据处理领域的普通技术人员使用的以最有效地将它们 的创新实质传递给本领域的其它普通技术人员的手段。算法是一系列定义的步骤以导致期 望的结束状态和结果。在本发明中,执行的步骤需要切实的物理量操作以实现切实的结果。 尽管并不必须,通常这些量采用电或磁信号的形式,或者是能够被存储、传递、合并、比较和 操作的指令的形式。为了共用的原因,已经多次被证明将这些信号参考为比特、值、元件、符 号、字符、术语、数字、指令等是方便的。然而,应该牢记所有这些和类似的术语与恰当的物 理量相关联,并且仅为施加到这些量上的方便的标签。除非另行提及,如从下面的讨论中显 而易见,应该理解到在整个说明书中,利用例如“处理”、“计算”、“确定”、“显示”等的术语的 讨论可以包括计算机系统或其它信息处理装置的行为和处理,该计算机系统或其它信息处 理装置将在计算机系统的寄存器和存储器中的表示为物理(电子)量的数据操作和转换为 计算机系统的存储器或寄存器或其它信息存储、传输和显示装置内的类似地表示为物理量 的其它数据。本发明还涉及一种用于执行这里的操作的装置。该装置可以被特别地构造用于所 需目的,或者可以包括由一个或多个计算机程序选择性地激活或重配置的一个或多个通用 计算机。这样的计算机程序可以存储在计算机可读存储介质中,例如但不限于光盘、磁盘、 只读存储器、随机访问存储器、固态设备和驱动、或任何适用于存储电子信息的其它类型的 介质。这里示出的算法和显示并不内在地与任何特定的计算机或其它装置相关。各种通用 系统可以根据这里的教示使用程序和模块,或者可以证明便于构造更加专业的装置以执行 期望的方法步骤。此外,本发明并不通过参考任何特定编程语言来描述。应当理解可以使 用多种编程语言来实施这里描述的本发明的教示。编程语言的指令可以由一个或多个处理 设备来执行,处理设备例如是中央处理单元(CPU)、处理器或控制器。下面将更加详细地说明的本发明的示例实施例提供用于控制在具有动态组块分 配能力的数据存储系统中的数据卷创建的装置、方法和计算机程序。第一实施例
A.系统配置和逻辑结构图1示出了其中可以应用本发明的方法和装置的信息系统的硬件配置的例子。信 息系统包括主机计算机10、存储装置100、管理计算机500、数据网络50以及管理网络90。至少一个主机计算机10通过数据网络50连接至存储装置100。在该实施例中,至 少一个OS(操作系统)13在主机计算机10上执行。可以在OS 13上执行应用程序14。用 于OS 13和应用程序14的文件和数据存储在数据卷中,该数据卷由存储装置100提供。OS 13和应用程序14将写和/或读命令发送至存储装置100。OS 13和应用程序14在一开始 就安装好。在开始安装之后大量的数据被写入数据卷。信息系统具有至少一个存储装置100,每个存储装置100包括存储控制器150以及 一个或多个HDD (硬盘驱动)101。存储装置100具有一个或多个组块池110,组块池110由 一个或多个HDDlOl组成。存储装置100向主机计算机10提供一个或多个数据卷。在该实 施例中,存储装置100具有动态组块分配程序16 (见图1(b))。数据卷被创建作为动态组块 分配卷(DCAV)。至少一个管理计算机500通过管理网络90连接至存储装置100。主机计算机10和存储装置100通过数据网络50相连。该实施例中的数据网络50 是光纤通道。然而,能够使用例如以太网和无线宽带的其它网络。网络交换机和集线器能 够用于连接彼此。在图1(a)中,光纤通道交换机(FCSW55)用于连接主机计算机10和存储 装置100。主机计算机10和存储装置100具有一个或多个光纤通道接口板(FCIF) 15、155 用于连接至光纤通道数据网络50。存储装置100通过管理网络90连接至管理计算机500。该实施例中的管理网络90 是以太网。然而,能够使用其它网络或连接。网络交换机和集线器能够用于连接彼此。存 储装置100和管理计算机500具有一个或多个以太网接口板(EtherIF) 159、590用于连接 至以太网管理网络90。如图1 (a)中所见,主机计算机10包括用于执行存储器12中存储的程序的CPUll 和用于连接至数据网络50的FCIF 15,其中存储器12存储程序和数据。至少两个程序由 CPU 11执行。在该实施例中,存储器12存储操作系统程序13(0S 13)和应用程序14。管理计算机500包括用于执行存储器520中存储的程序的CPU 510和用于连接至 管理网络90的EtherIF 590,其中存储器520存储程序和数据。至少两个程序由CPU 510 执行。在该实施例中,存储器520存储用于向存储装置100发出数据卷创建请求的数据卷 供应请求程序521以及用于管理快照生成的快照管理程序522 (在第二实施例中)。图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执行。在该实施例中,存储器152存储用于在接收到写请求并且没有组块时向数据卷分 配组块的动态组块分配程序160,用于响应于来自主机计算机10的至少读容量/读/写命 令的响应程序161,用于创建动态组块分配卷并将其分配给主机计算机10的数据卷分配程
9序162,用于监控组块池状态表并且将告警发送至管理计算机500的组块池状态表监控程 序163,用于根据快照删除请求指派快照数目并将快照组块转换为未使用组块的快照程序 164,以及用于确定是否能够根据已使用组块的数目和/或预留组块的数目来创建或禁止 数据卷的数据卷创建禁止程序165。存储器152还存储组块消耗跟踪表166,组块池状态表 167,组块池管理表168,组块表169,快照目录表170以及分类表171。动态组块分配卷(DCAV)初始不具有分配的数据块。图2示出了写命令、动态组块 分配卷111、组块池110、组块和HDD之间的关系。在该实施例中,DCAV 111是例如100GB ; 然而,当创建DCAV111时没有分配数据块。仅指派了数据卷的大小。当DCAV 111从主机计 算机10接收到具有数据的写命令时,数据块将被分配给DCAV 111。组块是HDD 101中的数 据块的集合。如图2所示,动态组块分配卷被划分为多个段。在该实施例中,组块的大小和 段的大小是相同的。图2也说明了组块。组块由HDD 101中的一个或多个数据块组成。在该实施例 中,组块由一个HDD 101中的块形成。每个组块具有用于识别该组块的唯一 ID。组块聚集 在组块池中。组块池由组块池管理表168管理。在该实施例中,存储装置100具有一个组 块池110。因此存储装置100具有一个组块池管理表。然而能够使用任何数目的组块池。图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的例子。图4示出了用于动态组块分配卷的图1 (b)的存储装置100的存储器152中的组 块表169。当创建DCAV 111时,每个DCAVl 11具有自己的组块表169。组块表169包括用 于存储用于识别段的段号的“段号”列16901,用于存储组块是否已经被分配的状态的“已分 配”列16902,用于存储组块号的“组块号”列16903,其中已经将组块分配给该组块号。初 始没有将组块分配给DCAV111,因而“已分配”列16902和“卷号”列16903中的所有单元必 须为空。图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。组块池状态表监控程序163周期地监控组块池状态表167并计算阈值。阈值被计算为组块总数的90%并存储在组块池状态表167中。当增加HDD时,程序更新组块总数并 重新计算阈值。组块池状态表监控程序163确定已使用组块数目是否高于阈值。如果是, 向管理计算机500和/或主机计算机10发送告警。告警指示应当立即增加HDD。组块池状 态表监控程序163进一步确定已使用组块的总数和预留组块的总数的和是否高于阈值。如 果是,向管理计算机500和/或主机计算机10发送告警。告警指示应当立即增加HDD。B.处理流程图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)。图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禁止DCAVl 11-99创建。向管理计算机500发 送错误。图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的开始日期和时间。 拒绝任何写命令直到开始日期和时间。由于数据卷是动态组块分配卷DCAV 111,创建的新数据卷初始不具有任何组块。 主机计算机10能够从存储装置100获得容量信息。即使DCAV 111不具有组块,作为读容量命令的结果,响应程序161使用容量信息向主机计算机响应。因而,主机计算机10认识 到在存储装置100中存在具有特定大小的数据卷。图9示出了涉及根据第一实施例的图1(b)的存储装置100的存储器152中的响 应程序161、动态组块分配程序160以及数据卷创建禁止程序165的存储装置的写操作的处 理流程图的例子。在步骤910,存储装置程序检查该DCAV 111是否不具有组块。如果是,程序进行 到步骤912。在步骤912,程序检查已使用组块总数与预留组块总数的和是否大于组块的总 数。如果是,程序进行到步骤919。(注意根据预定模式可以跳过步骤912。)否则,程序继 续进行到步骤914,并且检查已使用组块总数与预留组块总数的和是否大于阈值。如果是, 程序进行到步骤919。(注意根据预定模式可以跳过步骤914。)否则,程序继续进行到步 骤916,并检查指派给数据卷的日期和时间是否已经到期。(如果还没有向数据卷指派日期 和时间,可以跳过该步骤)。如果没有到期,程序进行到步骤919,并且向主机计算机10发 出接通(cutover)错误。如果到期,程序进行到步骤920。在步骤920,程序计算和写命令对应的数据卷中的段数。然后,在步骤922,程序检 查段是否具有组块。如果段已经具有组块,程序进行到步骤980。否则,程序继续进行到步 骤930,并试图从组块池获得组块。在步骤932,程序检查组块分配是否成功。如果否,程序 进行到步骤939,并向主机计算机10发出写错误。如果成功,程序继续进行到步骤950,并 更新组块池管理表168。在步骤952,程序更新组块表169。在步骤954,程序更新组块池状 态表167。这涉及如果当前值不是零则降低预留组块数目、增加已使用组块数目,更新已使 用组块总数,并更新预留组块总数。然后,在步骤960,程序检查已使用组块总数与预留组 块总数的和是否大于组块总数。如果是,程序进行到步骤969,并向管理计算机500发送告 警。否则,程序继续进行到步骤970,并检查已使用组块总数与预留组块总数的和是否大于 阈值。如果是,程序进行到步骤979,并向管理计算机500发送告警。否则,程序继续进行到 步骤980,并将数据写入分配给段的组块。在步骤999,程序发送命令完成响应。根据步骤910,912,914和919,当向DCAV执行第一写操作时,根据预留组块的总 数拒绝写命令。对于DCAV在一定时间之前(可能很长时间之前)被创建,其中在该时间中 已使用组块总数与预留组块总数的和小于或等于阈值,并且之后其它DCAV已经消耗组块 的情况,该顺序是重要的。在当前时间,已使用组块总数与预留组块总数的和大于组块总数 (步骤912);或者已使用组块总数与预留组块总数的和大于阈值(步骤914)。图10示出了涉及图1 (b)的存储装置100的存储器152中的响应程序161的读操 作的处理流程图。在步骤1010,程序计算与读命令对应的数据卷中的段数。然后,在步骤 1012,程序检查段是否具有组块。如果段已经具有组块,程序进行到步骤1070。如果段没有 组块,程序继续进行到步骤1080。在步骤1070,程序转发分配给段的组块中的数据。在步 骤1080,程序转发缺省数据图案(例如全零数据图案)。最后,在步骤1099,程序发送命令 完成响应。根据一个变型,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配置。
第二实施例在第二实施例中,提供了与快照能力组合的DCAV。快照是在指定定时的数据卷图 像之一。管理计算机500或主机计算机10可以向DCAV 111发送快照请求。否则存储装置 100本身可以周期地进行快照(周期可以是预定的)。图12示出了根据第二实施例的图 1(b)的存储装置100的存储器152中的组块表169的例子。图13示出了存储器152中的 快照目录表170的例子。快照程序164指派新的快照号并且在图13的快照目录表170中 记录日期和时间。图12的组块表169能够存储与每个快照号对应的组块号。图13的快照目录表170包括用于在存储装置100中存储数据卷号的“卷号”列 17001,用于存储指派的快照号的“快照号”列17002,以及用于存储当拍摄快照时的时间戳 的“时间戳”列17003。在第二实施例的快照操作中,在每个DCAV 111以一小时的间隔拍摄快照。快 照程序164指派新快照号并在快照目录表170中存储快照号和时间戳。图13示出了 DCAV 111-00具有10个快照图像,具有在2009/4/29日从1 OOpm至10 :pm拍摄的快照号 111-00-00 至 111-00-09。图14示出了涉及根据第二实施例的图1 (b)的存储装置100的存储器152中的响 应程序161、动态组块分配程序160以及数据卷创建禁止程序165的由存储装置程序通过快 照进行写操作1400的处理流程图的例子。和图9的流程图(第一实施例的写操作)不同 的那些特征用下划线表示。在步骤1410,存储装置程序检查该DCAV 111是否不具有组块。如果是,程序进行 到步骤1412。在步骤1412,程序检查已使用组块总数与预留组块总数的和是否大于组块总 数。如果是,程序进行到步骤1419。(注意根据预定模式可以跳过步骤1412。)否则,程序 继续进行到步骤1414,并检查已使用组块总数与预留组块总数的和是否大于阈值。如果是, 程序进行到步骤1419。(注意根据预定模式可以跳过步骤1414。)否则,程序继续进行到 步骤1416,并检查指派给数据卷的日期和时间是否已经到期。(如果还没有向数据卷指派 日期和时间,可以跳过该步骤)。如果没有到期,程序进行到步骤1419,并且向主机计算机 10发出接通错误。如果到期,程序进行到步骤1420。在步骤1420,程序计算和写命令对应的数据卷中的段数。然后,在步骤1422,程序 检查段是否具有在当前快照号的组块。如果段已经具有组块,程序进行到步骤1480。否则, 程序继续进行到步骤1430,并试图从组块池获得组块。在步骤1432,程序检查组块分配是 否成功。如果否,程序进行到步骤1439,并向主机计算机10发出写错误。如果成功,程序继 续进行到步骤1450,并更新组块池管理表168。在步骤1452,程序更新组块表169。在步骤 1454,程序更新组块池状态表167。这涉及如果当前值不是零则降低预留组块数目、增加已 使用组块数目,更新已使用组块总数,并更新预留组块总数。然后,在步骤1456,程序将先前 快照号的组块中的数据复制到指派的组块中。(如果写命令重写组块中的所有数据或者没 有先前组件,可以跳过该步骤。)在步骤1460,程序检查已使用组块总数与预留组块总数的 和是否大于组块总数。如果是,程序进行到步骤1469,并向管理计算机500发送告警。否 则,程序继续进行到步骤1470,并检查已使用组块总数与预留组块总数的和是否大于阈值。 如果是,程序进行到步骤1479,并向管理计算机500发送告警。否则,程序继续进行到步骤 1480,并将数据写入分配给段的组块。在步骤1499,程序发送命令完成响应。这些拍摄的快照用于参考数据卷的旧图像。例如,从数据卷的旧图像恢复旧文件是典型用例。在一个例子中,写数据存储在一个或多个主卷中,并且一个或多个主卷的快照存 储在存储装置100的一个或多个次卷中。在一种情况下,基于一个或多个主卷中的组块数 目并且在另一种情况下基于一个或多个主卷和一个或多个次卷中的组块数目,存储装置程 序可以禁止向新卷分配组块或者发出不得向新卷分配组块的警告。组块的数目可以是已使 用组块数目或者已使用组块数目与预留组块数目的和。组块可以包括已使用组块或者已使 用组块与预留组块二者。图15示出了用于选择快照操作的管理计算机500的屏幕图像的例子。管理计算机 500在该屏幕上显示快照目录。快照管理程序522从存储装置100请求快照目录信息(存 储在快照目录表170中)并显示该信息。在图15所示的屏幕上,管理员能够选择用于恢复 文件的图像。在图15中,对于数据卷111-00进行选择。选择了 2009/4/29日6:00pm的快 照图像。按下屏幕上的“确认”按钮,然后快照管理程序522向数据卷发送快照号。在指定 快照图像执行数据卷的读操作。参考图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)的组 块。在第二实施例中,组块被分为三类。在未使用类,组块不具有数据。在已使用类, 组块具有数据并且需要数据来响应于主机计算机作为当前卷。在快照类,组块具有数据并 且需要数据来在指定快照图像响应。图16示出了当快照生成的数目降低时数据卷的已使用组块和未使用组块。为了 周期地拍摄快照并且持续向数据卷写入数据,未使用组块将最终用完。仅在两类中分类每 个组块已使用和快照。快照类中的组块可以被转换为未使用。然而,在该情况下,如图16 中所见,快照生成的数目降低。图17示出了根据第二实施例的图1 (b)的存储装置100的存储器152中的分类表 171的例子。在分类表171中分类和登记每个组块。以快照号和时间戳来登记快照类中的 组块。分类表171用于管理组块,尤其用于删除指定快照生成。当已使用组块数目和快照组块数目的和到达阈值时,考虑两个选择。一个选择是 增加更多的HDD。另一个选择是降低快照生成的数目。为了保持快照生成的数目,必须增 加一个或多个HDD。快照程序164向管理计算机500发送告警。管理计算机500显示图18 所示的屏幕用于进行选择。如果管理员按下“减少生成”,基于从快照程序164获得的分类 表171如图19所示显示另一个管理屏幕。图19示出了用于选择删除生成操作屏幕的管理 计算机中的屏幕显示的例子。在图19的管理屏幕中,管理员能够通过选中校验框而选择生 成。在区域18001实时显示估计的释放的组块的数目。当按下删除按钮18002时,管理计 算机500向快照程序164发送快照删除请求。快照程序164根据指定快照号将快照组块转 换为未使用组块。
通过组合第一和第二实施例的特征产生本发明另一个实施例。在已使用组块总 数、快照组块数目以及预留组块数目的和大于阈值的情况下,数据卷分配程序162可以禁 止新卷创建。否则,组块池状态表监控程序163可以发送告警。组块池状态表监控程序163 参考组块池状态表167以及分类表171来进行该告警。当管理计算机500接收到该告警时, 管理计算机500可以显示如上所述图18和19中所示的屏幕。在删除一些快照生成之后, 管理员可以尝试创建新数据卷。图20示出了在图1 (b)的存储装置100的存储器152中的组块消耗跟踪表166的 例子。组块状态表监控程序163可以周期地(例如以60秒的间隔)在组块消耗跟踪表166 中记录组块总数、已使用组块、未使用组块以及快照组块。组块状态表监控程序163也可以 例如基于平均增长率估计它们的未来消耗。根据估计的组块的未来消耗,在创建新数据卷 之前,可以禁止为要创建新数据卷而进行的组块分配或发出不得进行为要创建新数据卷而 进行的组块分配的警告。图21示出了从组块消耗跟踪表166可视化的图。在时间t0,存储装置具有N个未 使用组块、不具有已使用组块、并且不具有快照组块。只执行了一些数据卷创建。预留了组 块。在时间tl,开始OS 13和应用程序14的安装。组块被快速地消耗。在t2,完成安装。 在t3,存储装置100开始拍摄快照。快照组块增加。在t4,已使用组块总数和快照组块总 数之和到达阈值。一些快照生成被释放。在t5,已使用组块总数和快照组块总数之和再次 到达阈值。增加额外的HDD并且增加未使用组块。存储装置100中的组块总数到达M。重 新计算阈值。在t6,现在执行一些数据卷创建。一些数据卷创建立即发生。在t7预留一些 数据卷创建。由于存在足够的未使用组块,不禁止在t6的数据卷创建。由于基于平均增长 率和该点的预留组块总数估计没有足够的未使用组块,禁止在距离现在的未来点t7的数 据卷创建。当然,管理员可以试图释放一些快照生成以避免禁止。当然,图1(a)所示的系统配置仅是实施本发明的纯示例性信息系统,并且本发明 不限于特定硬件配置。实施本发明的计算机和存储系统也能够具有已知I/O设备(例如CD 和DVD驱动,软盘驱动,硬驱等),这些设备能够存储和读取用于实施上述发明的模块、程序 和数据结构。这些模块、程序和数据结构能够被编码在这样的计算机可读介质上。例如,本 发明的数据结构能够在与记录了本发明中使用的程序的一个或多个计算机可读介质相独 立的计算机可读介质上。可以通过任何形式的数字数据通信介质,例如通信网络,来将系统 的这些组件相连。通信网络的例子包括局域网、广域网(例如互联网)、无线网络,存储区域 网络等。在说明书中,多个细节用于说明的目的以提供对本发明的透彻理解。然而,对本领 域普通技术人员来说,不需要全部的这些特定细节来实现本发明。也注意到本发明可以被 描述作为过程,通常被描述作为流程图、流图、结构图或框图。尽管流程图可能将操作描述 作为顺序处理,能够并行或同时执行许多操作。此外,操作的顺序可以重新安排。如本领域公知,上述操作能够由硬件、软件或软件和硬件的一些组合来执行。可以 使用电路和逻辑设备(硬件)来实施本发明实施例的各个方面,同时可以使用在机器可读 介质上存储的指令(软件)来实施本发明实施例的其它方面,如果处理器执行该指令,该指 令将使得处理器执行方法以实现本发明的实施例。另外,可以主要地在硬件中执行本发明 的一些实施例,而可以主要地在软件中执行其它实施例。此外,能够在单个单元中执行描述的各种功能,或者该各种功能能够以多种方式分布在多个组件上。当由软件执行时,可以由 处理器(例如通用计算机)基于计算机可读介质中存储的指令来执行方法。如果需要的话, 能够以压缩和/或加密格式将指令存储在介质中。 由上述显而易见,本发明提供用于控制在具有动态组块分配能力的数据存储系统 处的数据卷创建的方法、装置以及存储在计算机可读介质上的程序。另外,尽管在该说明书 中描述了特定实施例,本领域普通技术人员应当理解设计为实现相同目的的任何适当的布 置能够替代这里揭示的特定实施例。该揭示意欲覆盖本发明的任何和所有适配或变化,并 且应当理解在所附权利要求中使用的术语不应当被理解为将本发明限制为说明书中揭示 的特定实施例。相反,本发明的范围应当由所附权利要求以及这样的权利要求的等价物的 完全范围来整体地确定,应当根据权利要求解释的已制定原则来理解所附权利要求。
1权利要求
一种存储系统,包括处理器;存储器;以及要分配给数据卷的多个组块,每个组块具有一个或多个数据块;其中,所述多个组块包括分配给一个或多个数据卷的零个或更多个已使用组块以及作为未使用组块的零个或更多个剩余组块;其中,根据存储系统中剩余组块的总数,在创建新数据卷之前禁止进行创建新数据卷的新数据卷创建操作或者发出不得进行创建新数据卷的新数据卷创建操作的警告。
2.根据权利要求1所述的存储系统,其中,剩余组块包括没有被分配给所述一个或多个数据卷的未使用组块以及预留给所 述一个或多个数据卷但是还没有被分配给所述一个或多个数据卷的预留组块。
3.根据权利要求2所述的存储系统,其中,如果已使用组块的总数和预留组块的总数的和大于存储系统中组块的总数,则 禁止新数据卷创建操作;以及其中,如果已使用组块的总数和预留组块的总数的和大于与存储系统中组块的总数的 某一百分比相等的阈值,则通过告警来发出不得进行新数据卷创建操作的警告,其中所述 百分比小于100%。
4.根据权利要求2所述的存储系统,其中,所述多个组块包括一个或多个快照组块,所述一个或多个快照组块在特定时间 被分配给所述一个或多个数据卷的数据卷图像,所述特定时间表示所述一个或多个数据卷 的快照生成;以及其中,所述多个组块包括零个或更多个剩余组块,所述零个或更多个剩余组块不是已 使用组块并且不是快照组块。
5.根据权利要求4所述的存储系统,其中,如果已使用组块的总数、快照组块的总数和预留组块的总数的和大于存储系统 中组块的总数,则禁止新数据卷创建操作;以及其中,如果已使用组块的总数、快照组块的总数和预留组块的总数的和大于与存储系 统中组块的总数的某一百分比相等的阈值,则通过告警来发出不得进行新数据卷创建操作 的警告,其中所述百分比小于100%。
6.根据权利要求4所述的存储系统,其中,存储器包括快照模块,所述快照模块用于在接收到快照删除请求时将一个或多 个快照组块转换为未使用组块。
7.根据权利要求4所述的存储系统,其中,存储器包括组块状态监视模块,所述组块状态监视模块用于监视组块、已使用组 块、未使用组块、预留组块和快照组块的数目,并且用于估计组块的未来消耗;以及其中,根据估计的组块的未来消耗,在创建新数据卷之前禁止进行新数据卷创建操作 或者发出不得进行新数据卷创建操作的警告。
8.一种存储系统,包括 处理器;2存储器;以及要分配给数据卷的多个组块,所述数据卷包括至少一个主卷和至少一个次卷,所述至 少一个次卷用于存储基于存储在所述至少一个主卷中的数据的数据,每个组块具有一个或 多个数据块;其中,所述多个组块包括分配给一个或多个数据卷的零个或更多个已使用组块以及没 有被分配给一个或多个数据卷的零个或更多个未使用组块;其中,根据所述至少一个主卷中已使用组块的总数,在创建新数据卷之前禁止进行创 建新数据卷的新数据卷创建操作或者发出不得进行创建新数据卷的新数据卷创建操作的敬生目口 ο
9.根据权利要求8所述的存储系统,其中,根据所述至少一个主卷和所述至少一个次卷中的已使用组块的总数,在创建新 数据卷之前禁止进行创建新数据卷的新数据卷创建操作或者发出不得进行创建新数据卷 的新数据卷创建操作的警告。
10.根据权利要求9所述的存储系统,其中,根据所述至少一个主卷和所述至少一个次卷中的已使用组块的总数和预留组块 的总数,在创建新数据卷之前禁止进行新数据卷创建操作或者发出不得进行新数据卷创建 操作的警告;以及其中,预留组块预留给所述至少一个主卷和所述至少一个次卷但还没有被分配给所述 至少一个主卷和所述至少一个次卷。
11.根据权利要求10所述的存储系统,其中,如果已使用组块的总数和预留组块的总数的和大于存储系统中组块的总数,则 禁止新数据卷创建操作;以及其中,如果已使用组块的总数和预留组块的总数的和大于与存储系统中块的总数的某 一百分比相等的阈值,则通过告警来发出不得进行新数据卷创建操作的警告,其中所述百 分比小于100%。
12.根据权利要求10所述的存储系统,其中,存储器包括组块状态监视模块,所述组块状态监视模块用于监视组块、已使用组 块、未使用组块和预留组块的数目,并且用于估计组块的未来消耗;以及其中,根据估计的组块的未来消耗,在创建新数据卷之前禁止进行新数据卷创建操作 或者发出不得进行新数据卷创建操作的警告。
13.根据权利要求8所述的存储系统,其中,所述多个组块包括一个或多个快照组块,所述一个或多个快照组块被在特定时 间分配给用于所述至少一个主卷的数据卷图像的所述至少一个次卷,所述特定时间表示所 述至少一个主卷的快照生成。
14.根据权利要求13所述的存储系统,其中,存储器包括快照模块,所述快照模块用于在接收到快照删除请求时将次卷中的 一个或多个快照组块转换为未使用组块。
15.根据权利要求8所述的存储系统,其中,响应于存储系统接收到的写命令,执行新数据创建操作以创建新数据卷;以及其中,禁止响应写命令来进行新数据卷创建操作,直到指派给新数据卷的指定日期和 时间已经到期。
16.一种存储系统,包括处理器;存储器;以及要分配给数据卷的多个组块,每个组块具有一个或多个数据块;其中,所述多个组块包括分配给一个或多个数据卷的零个或更多个已使用组块以及作 为未使用组块的零个或更多个剩余组块;其中,根据存储系统中剩余组块的总数,禁止对所述数据卷中的没有接收到任何写操 作数据卷的一个数据卷进行第一写操作或者发出不得对所述数据卷中的没有接收到任何 写操作数据卷的一个数据卷进行第一写操作的警告。
17.根据权利要求16所述的存储系统,其中,根据存储系统中剩余组块的总数,在创建新数据卷之前禁止进行为创建新数据 卷而要执行的新数据卷创建操作或者发出不得进行为创建新数据卷而要执行的新数据卷 创建操作的警告,以及其中,剩余组块包括没有被分配给所述一个或多个数据卷的未使用组块以及预留给所 述一个或多个数据卷但是还没有被分配给所述一个或多个数据卷的预留组块。
18.根据权利要求17所述的存储系统,其中,如果已使用组块的总数和预留组块的总数的和大于存储系统中组块的总数,则 禁止新数据卷创建操作;以及其中,如果已使用组块的总数和预留组块的总数的和大于与存储系统中组块的总数的 某一百分比相等的阈值,则通过告警来发出不得进行新数据卷创建操作的警告,其中所述 百分比小于100%。
19.根据权利要求17所述的存储系统,其中,所述多个组块包括一个或多个快照组块,所述一个或多个快照组块在特定时间 被分配给一个或多个数据卷的数据卷图像,所述特定时间表示所述一个或多个数据卷的快 照生成;以及其中,所述多个组块包括零个或更多个剩余组块,所述零个或更多个剩余组块不是已 使用组块并且不是快照组块。
20.根据权利要求19所述的存储系统,其中,存储器包括组块状态监视模块,所述组块状态监视模块用于监视组块、已使用组 块、未使用组块、预留组块和快照组块的数目,并且用于估计组块的未来消耗;以及其中,根据估计的组块的未来消耗,在创建新数据卷之前禁止进行新数据卷创建操作 或者发出不得进行新数据卷创建操作的警告。
全文摘要
本发明提供了一种存储系统。本发明的实施例提供了用于控制在存储系统中的数据卷创建的方法和装置。在一个实施例中,存储系统包括处理器;存储器;以及要分配给数据卷的多个组块,每个组块具有一个或多个数据块。所述多个组块包括分配给一个或多个数据卷的零个或更多个已使用组块以及作为未使用组块的零个或更多个剩余组块。根据存储系统中剩余组块的总数,在创建新数据卷之前禁止进行新数据卷的新数据卷创建操作或者发出不得进行创建新数据卷的新数据卷创建操作的警告。剩余组块可以进一步包括预留用于一个或多个数据卷但是没有被分配的预留组块。
文档编号G06F12/06GK101907976SQ20101012390
公开日2010年12月8日 申请日期2010年2月26日 优先权日2009年6月3日
发明者兼田泰典 申请人:株式会社日立制作所