专利名称:实时地将lun转换为文件或将文件转换为lun的制作方法
实时地将LUN转换为文件或将文件转换为LUN
背景技术:
计算机数据存储是指用于将数字数据保留一些时间的组件、设备和/或记录介质。存在各种类型的物理存储设备,包括诸如随机存取存储器(RAM)设备和只读存储器 (ROM)设备之类的存储器设备(例如,半导体存储),以及诸如光盘和磁存储器(硬盘、磁带等等)之类的大容量存储设备,以及其他类型的存储。可以以各种方式汇合这样的存储设备以提供较高级别的存储,以及较高级别的存储可靠性。例如,可以组合许多存储设备以构成RAID(独立磁盘冗余阵列)阵列、存储区域网络(SAN),及其他存储的集合。存储器虚拟化是从物理存储中抽象虚拟或逻辑存储的一种方式。被配置成提供虚拟存储的存储系统可以向计算机提供计算机可以访问的逻辑存储位置。存储系统被配置成将逻辑存储位置映射到物理存储中的物理存储位置。在一种类型的虚拟存储中,逻辑存储设备可以被称为LUN(逻辑单元号)。一个计算机可以具有由该计算机可以访问的存储系统向它展示的一个或多个LUN。可在LUN中通过该LUN内的偏移或位置来对数据块进行寻址,其可以被称为逻辑块地址(LBA)。各种类型的数据可以被存储在虚拟存储中,包括虚拟机。虚拟机是物理计算机的软件实现,其类似于物理计算机执行程序。“系统虚拟机”可以提供完整的计算机平台,包括操作系统。这样的系统虚拟机可以执行一个或多个程序。“进程虚拟机”被设计成运行单个程序。代表虚拟机的一个或多个文件可以被称为“虚拟硬驱动器”。当前,对应于虚拟机的虚拟映象通常被部署在虚拟存储系统的孤立的LUN中。存储系统向主机计算机展示,以使得主机计算机能够执行虚拟机。当由主机计算机实现了大量的虚拟机(例如,数百、数千,或更多虚拟机)时,主机计算机花费大量的资源来管理和索引虚拟机。例如,一个当前计算机文件系统不能够支持超过255个分配的LUN。此外,在给计算机文件系统分配了 50个LUN之后,该计算机文件系统的性能还可能会变差。如此,根据传统技术利用在LUN中实现的虚拟机来管理大量的虚拟机现实上是不可能的。
发明内容
提供本发明内容以便以简化的形式介绍将在以下具体实施方式
中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。提供了用于将多个数据集存储在逻辑单元号(LUN)中以提高性能的方法、系统, 以及计算机程序产品。提供了可以存储多个数据集(例如,作为虚拟硬驱动器来存储的虚拟机)的LUN。可以将LUN划分为多个分区。一个或多个数据集可以被存储在每一个分区中。结果,可以通过单一 LUN,而并非通过与数据集的数量成比例的数量的LUN来访问多个数据集。此外,还可以旋转存储在LUN中的数据集。在一种实现中,提供了存储阵列控制器中的系统和方法。从存储阵列向第一主机计算机展示第一 LUN。从第一主机计算机接收关于第一LUN的多个分区中的一个分区的旋转请求(该分区可以是多个分区中的任何一个)。该分区存储被存储在多个分区中的多个数据集中的一个数据集。确定第一 LUN中的分区的大小。生成指示第二分区的位置和大小的分区表。生成存储阵列的第二 LUN以具有被配置成容纳第二 LUN的签名、分区表,以及第二分区的大小。签名和分区表被存储在第二 LUN 中。第一 LUN的分区被从第一 LUN复制到第二 LUN中的由第二分区的分区表中所指示的位置处。第二 LUN被映射到第二主机计算机。随后,可以从第二主机计算机接收使第二 LUN引退的请求。确定第二分区的大小。 第二分区的副本被存储在第一 LUN中。第一 LUN的分区表被更新以指出对应于第一 LUN的存储了第二分区的副本的存储区域的分区。如果第二分区的大小不超过第一 LUN中的最初旋转的分区的大小,则第二分区的副本可以被存储在第一 LUN的该分区中。如果第二分区的大小超过第一 LUN中的最初旋转的分区的大小,则可以通过一个存储区域追加到第一 LUN来扩展第一 LUN的大小,而第二分区的副本可以被存储在第一 LUN的所追加的存储区域中。在另一种实现中,提供了第一主机计算机中的系统和方法。接收由存储阵列向第一主机计算机展示的第一逻辑单元号(LUN)的指示。签名和分区表被存储在第一 LUN中。 将第一 LUN分区划分为多个分区。多个数据集被存储在多个分区中。对多个分区中的存储了多个数据集中的一数据集的一分区的访问被关闭。将关于关闭的分区的旋转请求传送到存储阵列。存储阵列被配置成响应于旋转请求,将该分区复制到第二 LUN,并将第二 LUN映射到第二主机计算机。此处还描述了能够执行和/或实现上文以及此处别处所描述的方法的,并用于实现如此处所描述的更进一步的实施例的计算机系统和计算机程序产品(存储在计算机可读介质中)。下面将参考各个附图,详细描述本发明的进一步特点和优点,以及本发明的各实施例的结构和操作。值得注意的是,本发明不仅限于此处所描述的特定实施例。这样的实施例只是出于例示的目的。基于此处所包含的原理,另外的实施例对那些相关领域技术人员是显而易见的。附图简述结合到本说明书并构成本说明书的一部分的附图示出了本发明,且与描述一起, 进一步用于说明本发明的原理,并允许那些精通相关的技术人员实施和使用本发明。
图1示出了其中多个计算设备访问共享存储的计算和数据存储系统。图2示出了图1的计算和数据存储系统的框图,其中存储阵列被以虚拟存储的形式呈现给主机计算机。图3示出了以逻辑单元号(LUN)的形式提供虚拟存储的存储设备的框图。图4示出了执行多个虚拟机的主机计算机的框图。图5示出了根据示例实施例的具有多个分区的LUN的框图。图6示出了根据示例实施例的主机计算机的框图。图7示出了根据示例实施例的提供用于划分LUN的过程的流程图。图8示出了根据示例实施例的存储阵列控制器的框图。图9示出了根据示例实施例的用于将对数据集的访问从第一主机计算机旋转 (pivot)到第二主机计算机的过程。
图10示出了根据示例实施例的提供了用于将数据集从第一主机计算机旋转到第二主机计算机的过程的流程图。图11示出了根据示例实施例的阵列控制器的框图。图12示出了根据示例实施例的计算和数据存储系统的框图。图13示出了根据示例实施例的提供用于允许分区被旋转的过程的流程图。图14示出了根据示例实施例的提供在接收对旋转的LUN的访问的第二主机计算机上实现的过程的流程图。图15示出了根据示例实施例的用于将对数据集的访问从第二主机计算机旋转到第一主机计算机的过程。图16示出了根据示例实施例的提供了用于将数据集从第二主机计算机旋转到第一主机计算机的过程的流程图。图17示出了根据示例实施例的图12的计算和数据存储系统的框图。图18示出了根据示例实施例的提供用于允许分区被旋转的过程的流程图。图19示出了可以被用来实现本发明的各实施例的示例计算机的框图。通过下面的结合附图对本发明进行的详细说明,本发明的特点和优点将变得更加显而易见,在附图形中,类似的附图标记在整个说明书中标识对应的元素。在附图中,相同的附图标记一般指示相同的、功能上类似的和/或在结构上类似的元素。元素首先在其中出现的附图由对应的附图标记中最左边的数字来指示。
具体实施例方式I.引言本说明书公开了包括本发明的特征的一个或多个实施例。所公开的实施例只例示了本发明。本发明的范围不仅限于所公开的实施例。本发明由所附的权利要求进行定义。说明书中对“一个实施例”、“实施例”、“示例实施例”等等的引用表示所描述的实施例可包括特定特征、结构或特性,但是,每一个实施例可以不一定包括该特定特征、结构, 或特征。此外,这样的短语不一定是指同一个实施例。此外,当参考一个实施例描述特定特征、结构或特性时,假定在本领域技术人员学识范围内,可以与其他实施例一起实施这样的特征、结构或特性。此外,还应该理解,此处所使用的空间描述(例如,“上方”、“下面”、“向上”、“向左”、“向右”、“向下”、“顶部”、“底部”、“垂直”、“水平”等等)只用于说明目的,此处所描述的结构的实际实施方式可以以任何定向或方式排列。II.存储系统实施例本发明的各实施例涉及用于存储数据和访问存储在计算机数据存储器中的数据的技术。例如,图1示出了其中多个计算设备访问共享存储的计算和数据存储系统100。如图ι所示,系统100包括第一-第三主机计算机10加-102(3,通信网络104,以及存储阵列 106。存储阵列106包括多个存储器单元/存储设备IHa-IHn和存储器通信网络108。在图1的示例中,第一-第三主机计算机102a-102c共享对存储阵列106的访问,包括被允许将数据存储在存储阵列106的存储设备IHa-IHn中,并检索存储在其中的数据。虽然在图1中示出了三个主机计算机10加-102(3,但是,可以有任意数量的主机计算机102耦合到网络100以共享存储阵列106,包括数百、数千或者甚至更多数量的计算设备。主机计算机102的示例包括固定的和移动计算设备。例如,主机计算机10加-102(3中的每一个都可以是服务器、台式计算机(例如,个人计算机)、移动计算机(例如,个人数字助理(PDA)、膝上型计算机、笔记本计算机、智能电话等等),或其他类型的计算设备。主机计算机10加-102(3中的每一个在图1中都被示为通过网络104和相对应的通信链路与存储阵列106进行通信。例如,如图1所示,主机计算机10 可通过第一通信链路 IlOa与网络104通信地耦合,主机计算机10 可通过第二通信链路IlOb与网络104通信地耦合,而主机计算机102c可通过第三通信链路IlOc与网络104通信地耦合。存储阵列 106被示为通过第四通信链路IlOd与网络104通信地耦合。网络104可以是LAN、WAN(广域网),或诸如因特网之类的网络的组合。第一-第四通信链路IlOa-IlOd可包括任何类型的通信链路或其组合,包括有线和/或无线链路,如IEEE802.il无线局域网(WLAN)无线链路、全球微波互联接入(Wi-MAX)链路、蜂窝网络链路、无线个域网(PAN)链路(例如, Bluetooth 链路)、以太网链路、USB链路等等。虽然在图1中示出了存储设备lHa-114n,但是,在存储阵列106中可以包括任意数量的用于存储数据的存储设备114,包括数百、数千,或者甚至更多数量的存储设备。在图 1中阵列控制器112和存储设备IHa-IHn被示为通过存储器通信网络108通信地耦合在一起。存储设备IHa-IHn和存储器通信网络108可以以任何配置在存储阵列106中排列或相关联,包括以存储区域网络(SAN)、光纤通道阵列、网络附连存储(NAS)等等。存储设备 114可以是任何类型的存储设备,易失性和/或非易失性,包括存储器设备和/或大容量存储设备。存储设备114的示例包括存储器设备(例如,半导体存储器),如随机存取存储器 (RAM)设备(易失性或非易失性),以及只读存储器(ROM)设备,以及诸如光盘和磁存储器 (硬盘、磁带等等)之类的大容量存储设备,以及其他类型的存储器。存储虚拟化是从物理存储中抽象逻辑存储的一种方式。被配置成提供虚拟存储的存储系统可以向计算机提供计算机可以访问的逻辑存储位置。存储系统被配置成将逻辑存储位置映射到物理存储中的物理存储位置。例如,如图1所示,存储阵列106可包括阵列控制器112。阵列控制器112可以被配置成基于存储设备IHa-IHn的物理存储来向主机计算机102a-102c分配逻辑存储。例如,阵列控制器112可以被配置成组合存储阵列106的物理存储设备集来创建RAID(独立磁盘冗余阵列)阵列或集。RAID集是存储设备IHa-IHn的逻辑构造。可以在用于存储阵列106的各种类型的RAID集中配置存储阵列106。RAID集的一个示例是“RAID 1”,其中, 存储设备IHa-IHn包括镜像存储设备。更多类型的RAID集可以可另选地被包括在存储阵列106中,包括RAID 0、RAID 5,RAID 6,以及RAID 10配置,这些对相关领域技术人员是已知的。阵列控制器112可以使用RAID集中的可使用存储空间的某些部分来生成硬驱动器的叫做LUN(逻辑单元号)的虚拟表示。计算机10加-102(3中的每一个都可以具有通过阵列控制器112向它展示的一个或多个LUN,以便进行存储访问。例如,图2示出了图1的计算和数据存储系统100的框图,其中,存储阵列106通过阵列控制器106以虚拟存储202的形式被呈现给主机计算机10加-102(3。如图2所示,虚拟存储202包括多个LUN 204a-2(Mm。LUN204a_2(Mm各自由阵列控制器112作为存储设备 lHa-114n(在图1中所示出的)的存储的一部分来生成的,该部分可以作为虚拟存储呈现给计算机10加-102(3中的一个。例如,图3示出了存储设备300的框图,这是图1所示的存储设备IHa-IHn中的一个的示例。如图3所示,存储设备300在逻辑上被分成多个LUN 302a-302oo每一个LUN 302都可以是存储设备300的任何部分,包括完整的硬盘、硬盘的一部分(例如,块的范围)、主轴、存储器设备的存储器区域,等等。每一个LUN 302都可以被展示给主机计算机。主机计算机的操作系统与LUN 302进行交互,好像它是物理存储。回顾图2,虽然示出了 LUN 204a-204m,但是,在存储阵列106中可以包括任何数量的LUN 204,包括数百、数千,或者甚至更多数量的LUN204。此外,还可以向计算机 102a-102c中的每一个呈现任何数量的LUN204。每一个LUN 204都包括多个可寻址的数据块。LUN 2(Ma-204中的特定数据块可以由计算机102通过标识特定LUN,并通过以一个或多个逻辑块地址(LBA)的形式提供该特定LUN内的偏移或位置来寻址。各种类型的数据和/或应用程序都可以被存储在虚拟存储202中。这样的数据和应用程序此处被称为“数据集”。数据集的一个示例是虚拟机。虚拟机是物理计算机的软件实现,其类似于物理计算机执行程序。“系统虚拟机”可以提供完整的计算机平台,包括操作系统。这样的系统虚拟机可以执行一个或多个程序。“进程虚拟机”被设计成运行单个程序。虚拟机的示例包括SQL服务器、web服务器等等。表示虚拟机的一个或多个文件可以被称为“虚拟映象”。当前,对应于虚拟机的虚拟映象被部署在虚拟存储系统的孤立的LUN(例如,图2 所示出的LUN 204中的一个)中。在这样的虚拟存储系统中,LUN被展示给主机计算机,以使得主机计算机能够执行虚拟机。当由主机计算机实现大量的虚拟机(例如,数百、数千, 或更多虚拟机)时,向主机计算机展示相等数量的包含虚拟机映像的LUN。例如,图4示出了执行多个虚拟机40加-402 的主机计算机10 的框图。此外,图 4还示出了包括作为虚拟机40h-402p的存储被分配给计算机10 的多个LUN 204a-204p 的虚拟存储202。如图4所示,LUN 204a-204p中的每一个都包括虚拟硬驱动器4(Ma_404p 中的相对应的虚拟硬驱动器。虚拟硬驱动器4(Ma-404p是用于对应于虚拟机40h-402p的数据的虚拟存储位置。例如,虚拟硬驱动器4(Ma-404p可各自存储由计算机10 作为虚拟机40h-402p中的相对应的一个虚拟机来执行的一个或多个文件。此外,虚拟硬驱动器 404a-404p中每一个还可以为虚拟机4(^a-402p中的相对应的虚拟机提供虚拟存储。虚拟机通过若干抽象级别来访问存储,从虚拟存储到物理存储器。某些虚拟机也可以被称为“虚拟服务器”。在操作期间,虚拟机40 可能试图向其虚拟硬驱动器40 中写入一数据块。计算机10 的操作系统(OS)可以拦截该数据块写操作,并可以执行转换以确定应该相对于LUN 204a在哪里写入该数据块。例如,虚拟机40 可能试图向虚拟硬驱动器40 中写入具有394的LBA的数据块。OS可以确定虚拟硬驱动器40 中的数据块偏移394相当于LUN 204a中的9942的LBA。如此,OS可能试图向LUN 204a的LBA 9942写入数据块。阵列控制器112(在图1中)可以从主机计算机10 的OS接收对于LBA 9942 的写入请求,并可以将数据块写入到存储阵列106中对应于LBA 9拟4的实际物理位置(例如,在存储设备IHa的主轴47和主轴48上的实际主轴块12345)。主机计算机10 花费大量的资源来管理和索引LUN 204a-204p以及虚拟机 40加-402 ,其数量可以达数百、数千,或者甚至更大的数量。将LUN204a-204p当作好像它们是物理存储的主机计算机10 监视LUN2(Ma-204p以确保它们正常操作,从而实质上管理LUN 204a-204po此外,还可能存在许多到存储阵列106中的每一个存储设备的路径,而主机计算机102也可能试图管理管理每一个路径。这导致主机计算机10 要维持需要大量开销。带有单个附接的LUN的服务器管理8个相关的设备是常见的。如果向服务器展示大量的LUN(以及相对应的多个路径),则服务器可能要花费大量时间发现路径和存储设备集。在带有足够数量的展示的LUN的情况下,服务器可能变得没有响应和/或可能崩溃。如此,利用在孤立的LUN中实现的虚拟机来管理极大量的虚拟机在现实上是不可能的。在一个实施例中,提供了可以存储多个数据集的LUN,包括多个虚拟机(作为虚拟硬驱动器来存储)。可以将LUN划分为多个分区。一个或多个数据集可以被存储在每一个分区中。结果,需要访问多个数据集的主机计算机可以通过单个LUN,而并非通过与数据集的数量成比例的数量的LUN来访问多个数据集。以此方式,由主机计算机跟踪的硬件量(例如,被主机计算机视为硬件的LUN)被减少。例如,图5示出了根据示例实施例的LUN 500的框图。如图5所示,LUN 500包括多个分区506a-606p。此外,每一个分区存储数据集508a_508p中的相对应的数据集。替换地,可以有一个以上的数据集508被存储在每一个分区506中。通过允许多个数据集被存储在一个LUN中,可以向主机计算机分配较少数量的LUN,以使得该主机计算机能够访问相同数量或更大数量的数据集(例如,每LUN分区数量的倍数)。在各实施例中,阵列控制器或主机计算机可以划分一 LUN,如图5所示。例如,图6 示出了根据示例实施例的主机计算机602的框图。主机计算机602是计算机10加-102(3中的一个的示例。如图6所示,主机计算机602包括LUN分区器(partitioner)604。LUN分区器604被配置成允许主机计算机602将诸如图5的LUN 500之类的LUN划分为多个分区 506。LUN分区器604可以被配置成以各种方式来划分LUN。例如,图7示出了根据示例实施例的提供用于划分LUN的过程的流程图700。在一个实施例中,流程图700可以由图6 所示出的主机计算机602来执行。基于关于流程图700的讨论,其他结构和操作实施例对相关领域技术人员是显而易见的。下面描述了流程图700。如图7所示,流程图700从步骤702开始。在步骤702中,接收由存储阵列向第一主机计算机展示的逻辑单元号(LUN)的指示。例如,在一个实施例中,主机计算机602可以从诸如图2所示出的阵列控制器112之类的阵列控制器接收向主机计算机602展示诸如图 5所示出的LUN 500之类的LUN的指示。LUN 500被展示给主机计算机602,以便主机计算机602可以访问作为虚拟存储的LUN 500。可以通过LUN标识符(例如,标识号码)和由 LUN 500所提供的存储量来向主机计算机602指示LUN 500。例如,可以向主机计算机602 提供逻辑块地址(LBA)的范围以指示LUN 500的存储量。在步骤704中,签名和分区表被存储在LUN中。例如,如图5所示,LUN分区器604 可以将签名502和分区表504存储在LUN 500中。签名502是LUN 500的数字和/或盘签名,并可包括各种信息,包括LUN 500的标识信息。分区表504是被配置成指示由LUN分区器604在LUN 500中形成的分区的位置和大小的数据结构。在步骤706中,将LUN分区划分为多个分区。在一实施例中,LUN分区器604被配置成将LUN 500划分为多个分区506a-506p。根据主机计算机602的需要,LUN 500可以具有任何数量的分区506,并可以符合LUN500的存储量。LUN分区器604生成分区506,并在分区表504中指示分区506。例如,LUN分区器604可以以与基LBA(例如,LBA 0)的LBA 偏移的形式在分区表504中指示分区506a-506p。例如,分区表504可以指示签名502在 LUN 500中的LBA范围(例如,LBA 0到LBA 600),分区表504的LBA范围(例如,LBA 601 到 LBA 10000),分区 506a 的 LBA 范围(例如,LBA 10001 到 LBA 123456),分区 506b 的 LBA 范围(例如,LBA 123457 到 LBA 654321),分区 506c 的 LBA 范围(例如,LBA 654322LBA 999999)等等。在步骤708中,多个数据集被存储在多个分区中。例如,如图5所示,主机计算机 602可以将数据集508a-508p中的一个(或多个)存储在分区506a_506p中的每一个中。 如上文所描述的,数据集508可以是形成诸如虚拟机(虚拟机硬驱动器)之类的数据和/ 或应用程序等等的一个或多个文件。例如,类似于图4所示出的主机计算机10 ,主机计算机602可以操作多个虚拟机40加-402 ,每一个虚拟机都具有被作为图5所示出的数据集 508a-508p中的一个数据集存储的相对应的虚拟硬驱动器。由于多个虚拟硬驱动器可以被存储在LUN 500中(作为数据集508),因此,对于相同或者甚至较大数量的虚拟机,主机计算机602具有较少的LUN来管理,从而允许主机计算机602以较高级别的存储性能支持较大数量的虚拟机。此外,实现从存储多个数据集的LUN “旋转”数据集和/或分区的能力。例如,LUN 500可以将数据集508a-508p作为数据存储的形式存储在多个分区中,数据集508a_508p中的个体数据集可以被从LUN 500复制到与进一步的主机计算机相关联的相应的LUN。进一步的主机计算机可以访问相应的LUN中的数据集。如此,数据集的所有权可以被从第一主机计算机旋转到第二主机计算机,给该主机计算机提供了对专用LUN的形式的数据集的访问。此外,当第二主机计算机不再需要访问数据集时,通过将数据集从专用LUN复制回多分区LUN,第二主机计算机可以将数据集的所有权旋转回第一主机计算机。将多个数据集存储在LUN中,以及将对数据集的访问旋转到其他LUN的能力,使得主机计算机的虚拟机管理器能将从管理相对少数量的虚拟机扩展到管理数万,成千上万, 或者甚至更大数量的虚拟机。此外,存储阵列还被允许将当前没有被使用的LUN放回多分区LUN中。当前,市场上销售的存储阵列可以存储固定数量的LUN。例如,由位于麻省霍普金顿(Hopkinton)市的EMC公司生产的EMC CLARiiON 系列只能支持4096个LUN。根据此处所描述的允许数据集在被需要之前暂停的各实施例,存储阵列可以比按常规方式存储多 10倍的LUN。例如,在特定时间,可以由存储阵列展示4096个LUN,但是,允许对于40,000 个数据集的长期存储。值得注意的是,标准文件服务器可以将许多数据集存储在可以被用来分发数据集的网络共享上。然而,如上文所描述的,当与对文件系统的粗(例如,块级别)访问相比时, 网络附加的文件系统缺乏速度和功能。许多高级功能对块级别访问系统可用而在网络附连的文件系统上不可用。例如,网络附连的文件系统可以将一组虚拟硬驱动器分散到一组驱动器中,以使得虚拟硬驱动器不再是连续的。相比之下,在块级别访问系统中,可以将不同的虚拟硬驱动器置于LUN的每一个分区中。由于每一个分区的起始块和末端块是已知的, 因此,实现了完整的块级别局部性。结果,向主机计算机展示的LUN的数量被减少,并实现了性能的连续性和局部性。在下一节描述了将多分区LUN的数据集/分区旋转到进一步的LUN的示例,并在随后的一节描述了将LUN的数据集旋转到多分区LUN的分区的示例。III.用于将数据集/LUN分区旋转到LUN的示例实施例在一个实施例中,对数据集的访问可以从第一主机计算机旋转到第二主机计算机。例如,可以执行对数据集的旋转以提供对第二主机计算机处数据集的访问,因为第二主机计算机不比第一主机计算机繁忙,或由于其他理由。可以以各种方式执行这样的旋转,包括配置存储阵列的阵列控制器来执行旋转。例如,图8示出了根据示例实施例的阵列控制器802的框图。阵列控制器802类似于上文所描述的阵列控制器112 (图1和幻,带有如下文所描述的区别。如图8所示,阵列控制器802包括数据集旋转模块804。数据集旋转模块 804使阵列控制器802能旋转对数据集的访问。例如,数据集旋转模块804可以被配置成执行图9所示出的步骤902。在步骤902中,通过将包含数据集的LUN分区映射到第二 LUN, 将对数据集的访问从第一主机计算机旋转到第二主机计算机。可以以各种方式来配置阵列控制器802以执行步骤902,并可以以各种方式来执行步骤902。例如,图10示出了根据示例实施例的提供用于将数据集从第一主机计算机旋转到第二主机计算机的过程的流程图1000。流程图1000是图9所示出的步骤902的示例, 在一个实施例中,可以由图8所示出的阵列控制器802来执行。例如,图11示出了根据示例实施例的阵列控制器802的框图。为了说明,参考图11所示出的阵列控制器802的示例描述了流程图1000。如图11所示,阵列控制器802包括LUN分配器1102和数据集旋转模块804。数据集旋转模块804包括旋转请求接收器1104、LUN生成器1106,以及分区复制器 1108。基于关于流程图1000的讨论,其他结构和操作实施例对相关领域技术人员是显而易见的。出于例示的目的,下面参考图12描述了流程图1000,该图示出了根据示例实施例的计算和数据存储系统1200的框图。如图12所示,系统1200包括第一和第二主机计算机 102a和102b,以及存储阵列1202。存储阵列1202包括虚拟存储1204和阵列控制器802。 虚拟存储1204包括第一 LUN500和第二 LUN 1206 (为了简洁起见,可以存在在图12中未示出的额外的LUN)。图12示出了从第一主机计算机10 旋转到第二主机计算机102b的数据集508a。如图10所示,流程图1000从步骤1002开始。在步骤1002中,第一逻辑单元号 (LUN)从存储阵列向第一主机计算机展示。例如,在一个实施例中,可以由LUN分配器1102 来执行步骤1002。参考图12,LUN分配器1102可以将展示的LUN指示信号1218传输到计算机102a(例如,通过诸如图1和2所示出的通信介质),该指示信号指示第一 LUN 500被分配给计算机10加。例如,展示的LUN指示信号1218可包括第一 LUN 500的标识符(例如,标识号码、地址等等)和第一 LUN 500中所包括的存储量。在步骤1002之后,第一主机计算机10 可以访问第一 LUN 500的存储器,包括将数据存储在LUN 500中,以及从LUN 500检索数据。例如,第一主机计算机10 可以执行上文所描述的流程图700(图7),包括接收LUN 500的指示(步骤70 ,将签名502和分区表504存储在LUN 500中(步骤704),划分LUN 500以创建分区506a、506b等等(步骤 706),以及将数据集508a、508b等等分别存储在分区506a、506b等等中(步骤708)。在特定时间,第一主机计算机10 可以确定LUN 500的数据集将被旋转到另一主机计算机。例如,可能希望将数据集旋转到不太繁忙的主机计算机。如此,第一主机计算机10 可以执行图13所示出的流程图1300。下面描述了流程图1300。在流程图1300的步骤1302中,对多个分区中的存储了多个数据集中的一个数据集的分区的访问被关闭。例如,第一主机计算机10 可以关闭对存储数据集508a的第一分区506a的访问,以准备要被旋转的数据集508a。在一个实施例中,第一主机计算机10 可以关闭其到数据集508a 的打开的句柄,一旦数据集508a不再被访问,第一主机计算机10 的逻辑盘管理器就可以移除驱动器号以及到分区506a的映射。这确保了第一主机计算机10 停止读取和/或向第一分区506a的写入。在步骤1304中,将关于存储数据集的分区的旋转请求传送到存储阵列。例如,如图12所示,第一主机计算机10 可以将旋转请求信号1702传送到存储阵列1202(例如,通过诸如图1和2所示出的通信介质)以请求将数据集508a旋转到另一主机计算机。回顾流程图1000(图10),在步骤1004中,从第一主机计算机接收关于存储第一 LUN的多个分区中的数据集的第一分区的旋转请求。例如,在一个实施例中,步骤1004可以由旋转请求接收器1104来执行。如图12所示,旋转请求接收器1104可以从第一主机计算机10 接收指示第一分区506a的数据集508a将被旋转的旋转请求信号1220。结果,旋转请求接收器1104可以向LUN生成器1106指示,LUN被生成以容纳数据集508a。在步骤1006中,确定第一 LUN中的第一分区的大小。例如,在一个实施例中,可以由LUN生成器1106来执行步骤1006。LUN生成器1106可以以任何方式来确定第一分区 506a的大小。例如,参考图12,LUN生成器1106可以访问分区表504来确定分配给第一分区506a的LBA的偏移和/或范围。在另一实施例中,第一主机计算机10 可包括由旋转请求接收器1104接收到的旋转请求信号1220中的第一分区506a的指示,而旋转请求接收器1104可以向LUN生成器1106提供大小指示。在步骤1008中,生成指示第二分区的位置和大小的分区表。例如,在一个实施例中,可以由LUN生成器1106执行步骤1008。LUN生成器1106可以被配置成生成指示被配置成将数据集508a存储在新LUN中的第二分区的分区表。生成分区表以指示新LUN中的第二分区的位置(例如,LBA偏移)和大小(例如,起始LBA和结束LBA)。在一个实施例中,分区表包括对第二分区的引用,但没有对其他分区的引用,而所生成的分区表中的第二分区的指示紧随在为新LUN所生成的签名之后。在步骤1010中,生成存储阵列的第二 LUN以具有被配置成容纳第二 LUN的签名、 分区表,以及第二分区的大小。例如,在一个实施例中,可以由LUN生成器1106执行步骤 1010。LUN生成器1106被配置成分配要被包括在虚拟存储1204中的第二 LUN中的存储阵列1202的物理存储量。例如,如图12所示,LUN生成器1106可以生成第二 LUN 1206。生成第二 LUN 1206以具有被配置成容纳签名、在步骤1008中所生成的分区表,以及第二分区的大小。在步骤1012中,签名和分区表被存储在第二 LUN中。例如,在一个实施例中,可以由LUN生成器1106执行步骤1012。例如,如图12所示,LUN生成器1106将签名1208和分区表1210存储在第二 LUN 1206中。签名1208包括第二 LUN 1206的标识信息,而分区表 1210是在步骤1008中所生成的。在步骤1014中,第一分区被从第一 LUN复制到第二 LUN中的由第二分区的分区表中指示的位置处。例如,在一个实施例中,步骤1014可以由分区复制器1108来执行。分区复制器1108被配置成将分区从源LUN复制到目的地LUN。为启动复制,LUN生成器1106 可以向分区复制器1108指示目的地LUN已经被生成。例如,参考图12,分区复制器1108 将第一 LUN500的第一分区506a(包括数据集508a)复制到第二 LUN 1206中的第二分区 1212。如图12所示,数据集508a被复制到第二 LUN 1206的分区1212中(如由虚线所指示的)。分区复制器1108可以以任何方式执行分区复制,包括通过那些本领域技术人员已知的技术。例如,分区复制器1108可以对第一分区506a执行快照拍摄(例如,使用写时复制(copy-on-write)快照技术)或克隆以生成分区1212。例如,可以以“snapshot LUN 500 :Partition506a (快照拍摄 LUN 500 分区 506a) ”或"LUN 500 LBA start-LBA end (LUN 500 :LBA起始-LBA结束)”的形式发出复制命令,其中,“LBA start (LBA起始)”和“LBA end (LBA结束),,是第一 LUN 500中的第一分区506a的相应的起始和结束LBA。这样的复制操作可以相对快速地执行,诸如在约为几秒内执行。在一个实施例中,LUN 1206完全由签名1208,分区表1210 (可以在签名1208之后),以及分区1212 (可以在分区表1210之后) 来填充,虽然在其他实施例中,LUN 1206可包括另外的存储空间。在步骤1016中,第二 LUN被映射到第二主机计算机。例如,在一实施例中,可以由 LUN分配器1102来执行步骤1016。例如,类似于步骤1002,LUN分配器1102可以将展示的 LUN的指示信号传送到第二主机计算机102b (例如,通过诸如图1和2所示出的通信介质), 该指示信号指示第二 LUN 1206被分配给第二主机计算机102b。例如,展示的LUN的指示信号1222可包括第二 LUN 1206的标识符(例如,标识号码、地址等等)和第二 LUN 1206中所包括的存储量。在一个实施例中,第二主机计算机102b可以发出重复扫描命令以检测第二 LUN 1206,并可以通过展示的LUN的指示信号1222请求其导入第二 LUN 1206。在导入第二 LUN 1206之后,第二 LUN 1206是可以安装,并可由第二主机计算机 102b按与直接访问设备类似的方式使用。例如,在一个实施例中,第二主机计算机102b可以执行图14所示出的流程图1400。流程图1400提供在第二主机计算机102b上实现的示例过程。在流程图1400的步骤1402中,第二主机计算机被允许安装第二 LUN。例如,LUN 分配器1102使第二主机计算机102b能安装第二 LUN 1206。如此,第二主机计算机102b可以访问存储在第二 LUN 1206的分区1212中的数据集508a。例如,如果数据集508a是虚拟机硬驱动器,则第二主机计算机102b可以执行数据集508a的虚拟机文件以操作相对应的虚拟机。如此,在流程图1400的步骤1404中,第二主机计算机被允许执行虚拟机并访问作为虚拟机的存储的虚拟硬驱动器。IV.用于将LUN旋转到数据集/LUN分区的示例实施例在一个实施例中,对数据集的访问可以从第二主机计算机旋转回第一主机计算机 (或另一主机计算机)。对数据集的这样的旋转可以被执行,因为第二主机计算机不需要进一步地与数据集进行交互,且如此,数据集引退(retire)(例如,临时或最后),或由于其他理由。可以以各种方式执行这样的旋转,包括使用存储阵列的阵列控制器来执行旋转。例如,图8所示出的阵列控制器802可以被配置成在一个实施例中执行旋转。数据集旋转模块 804可以使阵列控制器802能将对数据集的访问旋转回第一主机计算机(或另一主机计算机)。例如,数据集旋转模块804可以被配置成执行图15所示出的步骤1502。在步骤1502 中,通过将包含数据集的LUN映射到LUN分区,对数据集的访问被从第二主机计算机旋转到第一主机计算机。
可以以各种方式来配置数据集旋转模块804以执行步骤1502,并可以以各种方式执行步骤1502。例如,图16示出了根据示例实施例的提供用于将数据集从第二主机计算机旋转到第一主机计算机(或另一主机计算机)的过程的流程图1600。流程图1600是图15 所示出的步骤1502的示例,且在一个实施例中,可以由图11所示出的阵列控制器802来执行。基于关于流程图1600的讨论,其他结构和操作实施例对相关领域技术人员是显而易见的。出于例示的目的,下面参考图17描述了流程图1600,该图示出了根据示例实施例的图12的计算和数据存储系统1200的框图。图17示出了从第二主机计算机102b旋转到第一主机计算机10 的数据集508a。如图16所示,流程图1600从步骤1602开始。在步骤1602中,存储阵列的第一 LUN被展示给第一主机计算机,而存储阵列的第二 LUN被展示给第二主机计算机。例如,参考图17,第一 LUN 500可以被展示给第一主机计算机10加,而第二 LUN 1206可以被展示给第二主机计算机102b。在一个实施例中,如上文所描述的第一 LUN 500可能已经根据流程图1000的步骤1002(图10)被展示给第一主机计算机102a,而第二 LUN 1206可能已经根据流程图1000的步骤1016被展示给第二主机计算机102b。在特定时间,第二主机计算机102b可以确定数据集508a将被旋转回第一主机计算机10 (或另一主机计算机)。如此,第二主机计算机102b可以执行图18所示出的流程图1800。下面描述了流程图1800。在流程图1800的步骤1802中,关闭对将数据集存储在向第二主机展示的逻辑单元号(LUN)中的分区的访问。例如,第二主机计算机102b可以关闭对第二 LUN 1206的存储数据集508a的分区1212的访问,以准备要被旋转的数据集 508a。在一个实施例中,第二主机计算机102b可以关闭到数据集508a的任何打开的句柄, 并且一旦数据集508a不再被访问,第二主机计算机102b的逻辑盘管理器就可以删除驱动器号以及到分区1212的映射。这确保了第二主机计算机102b停止读取和/或向分区1212 的写入。在步骤1804中,可以将使LUN引退的请求传送到存储阵列。例如,如图18所示, 第二主机计算机102b可以将引退或旋转请求信号1702传送到存储阵列1202(例如,通过诸如图1和2所示出的通信介质)以请求使数据集508a引退和/或旋转到另一主机计算机。回顾流程图1600(图16),在步骤1604中,从第二主机计算机接收使第二 LUN引退的请求。例如,在一个实施例中,步骤1604可以由旋转请求接收器1104来执行。如图17 所示,旋转请求接收器1104可以从第二主机计算机102b接收引退请求信号1702。引退请求信号1702可以展示被存储在分区1212中的数据集508a将被旋转回作为存储库来操作的多分区LUN。在步骤1606中,确定第二 LUN中的分区的大小。例如,在一个实施例中,可以由LUN 生成器1106执行步骤1606。LUN生成器1106可以以任何方式确定分区(例如,分区1212) 的大小。例如,参考图17,LUN生成器1106可以访问LUN 1206的分区表1210来确定分配给分区1212的LBA的偏移和/或范围。在另一实施例中,第二主机计算机102b可包括由旋转请求接收器1104接收到的引退请求信号1702中的分区1212的大小的指示,而旋转请求接收器1104可以向LUN生成器1106提供大小指示。在步骤1608中,数据集的副本被存储在第一 LUN中。例如,在一个实施例中,步骤
141608可以由分区复制器1108来执行。如上文所描述的,分区复制器1108可以被配置成将分区从源LUN复制到目的地LUN。例如,参考图17,如果分区1212具有不超过(例如,等于或小于)分区506a的大小的大小(在步骤1606中确定的),则分区复制器1108可以将第二 LUN1206的分区1212(包括数据集508a)复制到第一 LUN 500中的第一分区506a,或者也可以将分区1212复制到第一 LUN 500的另一个分区。在一个实施例中,如果第二 LUN 1206中的分区1212的大小超过第一 LUN 500中的第一分区506a的大小,则可以由阵列控制器802通过将存储阵列1202的存储区域追加到第一 LUN 500来增大第一 LUN 500的大小(例如,可以使第一 LUN的大小扩大)。在这样的情况下,数据集508a的副本可以被存储在追加到第一 LUN 500的存储区域中。第一主机计算机10 可以卸载和重新安装第一 LUN 500以便能够访问追加的存储区域。在图17的示例中,数据集508a被复制到第一 LUN 500的第一分区506a中(如由虚线所指示的)。分区复制器1108可以执行以任何方式执行分区复制,如那些本领域技术人员所知的,包括上文参考流程图1000(图10)的步骤1014所描述的技术。这样的复制操作可以相对快速地执行,包括在约为几秒内执行。在步骤1610中,第一 LUN的分区表被更新以包括对应于第一 LUN的存储了数据集的副本的存储区域的分区。例如,在一个实施例中,可以由LUN生成器1106执行步骤1610。 在图17的示例中,LUN生成器1106可以被配置成根据数据集508a被复制到第一 LUN 500 的第一分区506a或其他分区来更新第一 LUN 500的分区表504。如果第一 LUN 500被扩展以创建用于存储数据集508a的新分区,则由LUN生成器1106在分区表504中展示新分区的位置和/或大小。然后,第一主机计算机10 可以取消安装和重新安装第一 LUN 500,以更新第一主机计算机10 的存储器/缓存中的分区表——如果需要的话。此处所描述的实施例使诸如虚拟机文件之类的数据集能被存储在多分区LUN中, 并实时地作为一个或多个文件被存储在专用LUN中,该专用LUN可以向主机计算机展示。多分区LUN可以作为虚拟硬驱动器的合并库来操作。当希望部署数据集时,数据集被转换为 LUN并被分配给目的地主机。多分区LUN的包含所希望的数据集的分区可以被相对快速地复制(例如,每T字节数秒)到专用LUN(例如,使用硬件写时复制快照技术)。然后,被复制到专用LUN中的数据集可以被展示给新服务器,并作为直接附连的LUN被访问。此技术可以被用来迅速部署虚拟机,可以被用来在较大的数据库上进行数据挖掘,和/或可以被用来允许存储阵列扩展到其常规LUN映射限制的10倍或100倍,使存储阵列能用作长期储存库。这样的存储阵列可以被允许模拟虚拟磁带库,因为可以在存储阵列内重新映射自动加载器命令,以允许分区被重新填充回离散的LUN中。V.其他示例实施例可以以硬件、软件、固件,或其任何组合来实现阵列控制器(图1,2)、LUN分区器 604(图6)、阵列控制器802(图8、11、12、17)、数据集旋转模块804(图8、11、12、17)、LUN 分配器1102(图11、12、17)、旋转请求接收器1104(图11、12、17)、LUN生成器1106(图11、 12、17),以及分区复制器1108(图11、12、17)。例如,阵列控制器112、LUN分区器604、阵列控制器802、数据集旋转模块804、LUN分配器1102、旋转请求接收器1104、LUN生成器1106 和/或分区复制器1108可以被实现为被配置成在一个或多个处理器中执行的计算机程序代码。可另选地,阵列控制器112、LUN分区器604、阵列控制器802、数据集旋转模块804、LUN分配器1102、旋转请求接收器1104、LUN生成器1106和/或分区复制器1108可以被实现为硬件逻辑/电路。图19描绘了其中可以实现本发明的各实施例的计算机1900的示例性实现。例如, 可以类似于计算机1900实现计算机10加-102(3(图1、12、17)和/或计算机602 (图6),并可包括计算机1900的一个或多个特征和/或替换性特征。计算机1900可以是例如常规个人计算机、移动计算机或工作站形式的通用计算设备,或者,计算机1900可以是特殊用途的计算设备。此处所提供的对计算机1900的描述只是为了说明,并不是限制性的。如相关领域的技术人员所知道的,本发明的各实施例可以在其他类型的计算机系统中实现。如图19所示,计算机1900包括处理单元1902、系统存储器1904,以及将包括系统存储器1904的各种系统组件耦合到处理单元1902的总线1906。系统总线1906表示若干类型的总线结构中的任何一种总线结构的一个或多个,包括存储器总线或存储器控制器、 外围总线、加速图形端口,以及使用各种总线体系结构中的任何一种的处理器或局部总线。 系统存储器1904包括只读存储器(ROM) 1908和随机存取存储器(RAM) 1910。基本输入/输出系统1912 (BIOS)存储在ROM 1908中。计算机1900还具有一个或多个以下驱动器用于读写硬盘的硬盘驱动器1914、用于读或写可移动磁盘1918的磁盘驱动器1916、以及用于读或写诸如⑶R0M、DVD ROM或其他光介质之类的可移动光盘1922的光盘驱动器1920。硬盘驱动器1914、磁盘驱动器1916, 以及光驱动器1920分别通过硬盘驱动器接口 1924、磁盘驱动器接口 1926,以及光学驱动器接口 1拟8连接到系统总线1906。驱动器以及它们相关联的计算机可读介质为计算机提供了对计算机可读指令、数据结构、程序模块,及其他数据的非易失存储器。虽然描述了硬盘、可移动磁盘和可移动光盘,但是,也可以使用诸如闪存卡、数字视频盘、随机存取存储器 (RAM)、只读存储器(ROM)等等之类的其他类型的计算机可读介质来存储数据。多个程序模块可被存储在硬盘、磁盘、光盘、ROM,或RAM上。这些程序包括操作系统1930、一个或多个应用程序1932、其他程序模块1934,以及程序数据1936。应用程序1932 或程序模块1934可包括,例如,用于实现/启用阵列控制器112、LUN分区器604、阵列控制器802、数据集旋转模块804、LUN分配器1102、旋转请求接收器1104、LUN生成器1106和 /或分区复制器1108、流程图700、步骤902、流程图1000、流程图1300、流程图1400、步骤 1502、流程图1600、流程图1800 (包括流程图700、1000、1300、1400、1600、以及1800的任一步骤),和/或如上文所描述的任何进一步的实施例的计算机程序逻辑。用户可以通过诸如键盘1938和定点设备1940之类的输入设备向计算机1900中输入命令和信息。其他输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些及其他输入设备常常通过耦合到总线1906的串行端口接口 1942连接到处理单元1902,但是,也可以通过其他接口,诸如并行端口、游戏端口、通用串行总线(USB) 端口,来进行连接。监视器1944或其他类型的显示设备也可以经由诸如视频适配器1946之类的接口来连接到系统总线1906。除了监视器之外,计算机1900还可包括其他外围输出设备(未示出),如扬声器和打印机。计算机1900通过网络适配器或接口 1950、调制解调器1952、或用于通过网络建立通信的其他装置连接到网络1948(例如,因特网)。调制解调器1952(可以是内置的或外置的),通过串行端口接口 1942连接到系统总线1906。如此处所用的,术语“计算机程序介质”以及“计算机可读介质”被用于泛指介质, 诸如与硬盘驱动器1914相关联的硬盘、可移动磁盘1918、可移动光盘1922,以及其他介质, 诸如闪存卡、数字视频盘、随机读取存储器(RAM)、只读存储器(ROM)等。如上文所指示的,计算机程序和模块(包括应用程序1932及其他程序模块1934) 可以存储在硬盘、磁盘、光盘、ROM或RAM上。这样的计算机程序也可以通过网络接口 1950 或串行端口接口 1942来接收。这样的计算机程序,当由应用程序执行或加载时,使得计算机1900能实现此处所讨论的本发明的特征。相应地,这样的计算机程序表示计算机1900 的控制器。本发明还涉及包括存储在任何计算机可使用介质上的软件的计算机程序产品。这样的软件,当在一个或多个数据处理设备中执行时,使数据处理设备如此处所描述的那样操作。本发明的各实施例使用现在已知的或将来已知的任何计算机可使用或计算机可读介质。计算机可读介质的示例包括,但不仅限于,诸如RAM、硬盘驱动器、软盘、⑶ROM、DVD ROM、zip磁盘、磁带、磁存储设备、光存储设备、MEM(存储器)、基于纳米技术的存储设备等等之类的存储设备。VI.结论尽管上文描述了本发明的各实施例,但是,应该理解,它们只是作为示例来呈现的,而不作为限制。那些精通有关技术的人员将理解,在不偏离如所附权利要求书所定义的本发明的精神和范围的情况下,可以在形式和细节方面进行各种修改。因此,本发明的范围不应该受到上述示例性实施例的任一个的限制,而只应根据下面的权利要求和它们的等效内容进行定义。
权利要求
1.一种存储阵列控制器中的方法(1000),包括将来自存储阵列的第一逻辑单元号(LUN)展示(100 给第一主机计算机; 接收(1004)来自所述第一主机计算机的关于所述第一 LUN的多个分区中的第一分区的旋转请求,所述第一分区存储被存储在所述多个分区中的多个数据集的一数据集; 确定(1006)所述第一 LUN中的所述第一分区的大小;生成(1008)指示第二分区的位置和大小的分区表,所述第二分区的所述大小大于或等于(>)所确定的第一分区大小;生成(1010)所述存储阵列的第二 LUN以具有被配置成容纳所述第二 LUN的签名、所述分区表,以及所述第二分区的大小;将所述签名和所述分区表存储(101 在所述第二 LUN上;将所述第一分区从所述第一 LUN复制(1014)到所述第二 LUN中的由所述第二分区表的所述分区表中所指示的位置处;并且将所述第二 LUN映射(1016)到第二主机计算机。
2.如权利要求1所述的方法,其特征在于,所述数据集是虚拟机的虚拟硬驱动器。
3.如权利要求2所述的方法,其特征在于,所述映射包括 允许所述第二主机计算机安装所述第二 LUN ;并且允许所述第二主机计算机执行所述虚拟机,并访问作为所述虚拟机的存储的所述虚拟硬驱动器。
4.如权利要求1所述的方法,其特征在于,所述确定所述第一LUN中的所述第一分区的大小包括确定所述分区的所述第一 LUN中的起始逻辑块地址(LBA)和结束LBA。
5.如权利要求1所述的方法,其特征在于,所述复制包括对所述第一分区执行写时复制快照拍摄或克隆,以将所述第一分区从所述第一 LUN复制到所述第二 LUN。
6.如权利要求1所述的方法,其特征在于,还包括接收来自所述第二主机计算机的使所述第二 LUN引退的请求; 确定所述第二分区的大小;将所述第二分区的副本存储在所述第一 LUN中;并且更新所述第一 LUN的分区表以包括对应于所述第一 LUN的存储了所述第二分区的所述副本的存储区域的分区。
7.如权利要求6所述的方法,其特征在于,所述将第二分区的副本存储在第一LUN中包括如果所述第二分区的所确定的大小不超过所述第一 LUN中的所述第一分区的大小,则将所述第二分区的所述副本存储在所述第一 LUN的所述第一分区中。
8.如权利要求7所述的方法,其特征在于,所述将第二分区的副本存储在第一LUN中还包括如果所述第二分区的所确定的大小超过所述第一 LUN中的所述第一分区的所述大小, 则通过将存储区域追加到所述第一 LUN,来扩展所述第一 LUN的大小,并且将所述第二分区的所述副本存储在所述第一 LUN的所述追加的存储区域中。
9.一种包括其上记录有计算机程序逻辑的计算机可读介质的计算机程序产品,包括 用于允许处理器执行权利要求1-8中的任一项权利要求的计算机程序逻辑装置(1934)。
10.一种存储阵列控制器(802),包括用于向第一主机计算机(102a)展示(110 来自存储阵列(120 的第一逻辑单元号 (LUN) (500)的装置;用于从所述第一主机计算机(102a)接收(1104)关于所述第一 LUN(500)的多个分区 (506a-506p)中的第一分区(506a)的旋转请求(1220)的装置,所述第一分区(506a)存储被存储在所述多个分区(506a-506p)中的多个数据集(508a_508p)中的数据集(508a); 用于确定(1106)所述第一 LUN(500)中的所述第一分区(506a)的大小的装置; 用于生成(1106)指示第二分区(1212)的位置和大小的分区表(1210)的装置,所述第二分区(1212)的所述大小大于或等于(》)所确定的第一分区大小;用于生成(1106)所述存储阵列(1202)的第二 LUN(1206)以具有被配置成容纳所述第二 LUN(1206)的签名(1208)、所述分区表(1210),以及所述第二分区(1212)的大小的装置;用于将所述签名(1208)和所述分区表(1210)存储(1106)在所述第二 LUN(1206)上的装置;用于将所述第一分区(506a)从所述第一 LUN (500)复制(1108)到所述第二 LUN (1206) 中的由所述第二分区表(1212)的所述分区表(1210)中所指示的位置处的装置;以及用于将所述第二 LUN(1206)映射到第二主机计算机(102b)的装置。
11.如权利要求10所述的存储阵列控制器,其特征在于,所述数据集是虚拟机的虚拟硬驱动器。
12.如权利要求11所述的存储阵列控制器,其特征在于,所述用于映射的装置包括 用于允许所述第二主机计算机安装所述第二 LUN的装置;以及用于允许所述第二主机计算机执行所述虚拟机,并访问作为所述虚拟机的存储的所述虚拟硬驱动器的装置。
13.如权利要求10所述的存储阵列控制器,其特征在于,所述用于确定的装置包括 用于确定所述分区的所述第一 LUN中的起始逻辑块地址(LBA)和结束LBA的装置。
14.如权利要求10所述的存储阵列控制器,其特征在于,所述用于复制的装置包括 用于对所述第一分区执行写时复制快照拍摄或克隆,以将所述第一分区从所述第一LUN复制到所述第二 LUN的装置。
15.如权利要求10所述的存储阵列控制器,其特征在于,进一步包括 用于接收来自所述第二主机计算机的使所述第二 LUN引退的请求的装置; 用于确定所述第二分区的大小的装置;用于将所述第二分区的副本存储在所述第一 LUN中的装置;以及用于更新所述第一 LUN的分区表以包括对应于所述第一 LUN的存储了所述第二分区的所述副本的存储区域的分区的装置。
全文摘要
提供了可以存储多个数据集(例如,诸如作为虚拟硬驱动器来存储的虚拟机之类的数据和/或应用程序)的LUN。LUN被划分为多个分区。一个或多个数据集可以被存储在每一个分区中。结果,可以通过单个LUN,而并非通过与数据集的数量成比例的数量的LUN来访问多个数据集。此外,还可以旋转存储在LUN中的数据集。可以生成专用于存储被存储在第一LUN中的多个数据集中的一数据集的第二LUN。该数据集被复制到第二LUN,而第二LUN被展示给主机计算机以使得主机计算机能够与该数据集进行交互。更进一步,数据集可以被从第二LUN旋转回到第一LUN的分区。
文档编号G06F15/167GK102422277SQ201080021485
公开日2012年4月18日 申请日期2010年5月10日 优先权日2009年5月12日
发明者C·廖内蒂, R·派克 申请人:微软公司